57 lines
1.5 KiB
Rust
57 lines
1.5 KiB
Rust
use crate::mouse::MouseState;
|
|
use crate::gameplay_modes::{ModeId,StageId};
|
|
|
|
#[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)]
|
|
pub enum TimeInner{}
|
|
pub type Time=crate::integer::Time<TimeInner>;
|
|
|
|
#[derive(Clone,Debug)]
|
|
pub enum Instruction{
|
|
Mouse(MouseInstruction),
|
|
SetControl(SetControlInstruction),
|
|
Mode(ModeInstruction),
|
|
Misc(MiscInstruction),
|
|
/// Idle: there were no input events, but the simulation is safe to advance to this timestep
|
|
Idle,
|
|
}
|
|
impl Instruction{
|
|
pub const IDLE:Self=Self::Idle;
|
|
}
|
|
#[derive(Clone,Debug)]
|
|
pub enum MouseInstruction{
|
|
/// Replace the entire interpolation state to avoid dividing by zero when replacing twice
|
|
ReplaceMouse{
|
|
m0:MouseState<TimeInner>,
|
|
m1:MouseState<TimeInner>,
|
|
},
|
|
SetNextMouse(MouseState<TimeInner>),
|
|
}
|
|
#[derive(Clone,Debug)]
|
|
pub enum SetControlInstruction{
|
|
SetMoveRight(bool),
|
|
SetMoveUp(bool),
|
|
SetMoveBack(bool),
|
|
SetMoveLeft(bool),
|
|
SetMoveDown(bool),
|
|
SetMoveForward(bool),
|
|
SetJump(bool),
|
|
SetZoom(bool),
|
|
}
|
|
#[derive(Clone,Debug)]
|
|
pub enum ModeInstruction{
|
|
/// Reset: fully replace the physics state.
|
|
/// This forgets all inputs and settings which need to be reapplied.
|
|
Reset,
|
|
/// Restart: Teleport to the start zone.
|
|
/// This runs when you press R or teleport to a bonus
|
|
Restart(ModeId),
|
|
/// Spawn: Teleport to a specific mode's spawn
|
|
/// This runs when the map loads to put you at the map lobby
|
|
Spawn(ModeId,StageId),
|
|
}
|
|
#[derive(Clone,Debug)]
|
|
pub enum MiscInstruction{
|
|
PracticeFly,
|
|
SetSensitivity(crate::integer::Ratio64Vec2),
|
|
}
|