replay controls
This commit is contained in:
parent
e6d1d69241
commit
d517b78a8c
@ -276,9 +276,60 @@ impl InstructionConsumer<Instruction<'_>> for Session{
|
|||||||
}
|
}
|
||||||
_=self.simulation.timer.set_paused(ins.time,false);
|
_=self.simulation.timer.set_paused(ins.time,false);
|
||||||
},
|
},
|
||||||
Instruction::Playback(_)=>{
|
Instruction::Playback(SessionPlaybackInstruction::IncreaseTimescale)=>{
|
||||||
println!("[session] todo: Playback instructions");
|
match &self.view_state{
|
||||||
|
ViewState::Play=>{
|
||||||
|
// allow simulation timescale for fun
|
||||||
|
let scale=self.simulation.timer.get_scale();
|
||||||
|
self.simulation.timer.set_scale(ins.time,scale*5/4);
|
||||||
|
},
|
||||||
|
ViewState::Replay(bot_id)=>if let Some(replay)=self.replays.get_mut(bot_id){
|
||||||
|
let scale=replay.simulation.timer.get_scale();
|
||||||
|
replay.simulation.timer.set_scale(ins.time,scale*5/4);
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
Instruction::Playback(SessionPlaybackInstruction::DecreaseTimescale)=>{
|
||||||
|
match &self.view_state{
|
||||||
|
ViewState::Play=>{
|
||||||
|
// allow simulation timescale for fun
|
||||||
|
let scale=self.simulation.timer.get_scale();
|
||||||
|
self.simulation.timer.set_scale(ins.time,scale*4/5);
|
||||||
|
},
|
||||||
|
ViewState::Replay(bot_id)=>if let Some(replay)=self.replays.get_mut(bot_id){
|
||||||
|
let scale=replay.simulation.timer.get_scale();
|
||||||
|
replay.simulation.timer.set_scale(ins.time,scale*4/5);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Instruction::Playback(SessionPlaybackInstruction::SkipForward)=>{
|
||||||
|
match &self.view_state{
|
||||||
|
ViewState::Play=>(),
|
||||||
|
ViewState::Replay(bot_id)=>if let Some(replay)=self.replays.get_mut(bot_id){
|
||||||
|
let time=replay.simulation.timer.time(ins.time+SessionTime::from_secs(5));
|
||||||
|
replay.simulation.timer.set_time(ins.time,time);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Instruction::Playback(SessionPlaybackInstruction::SkipBack)=>{
|
||||||
|
match &self.view_state{
|
||||||
|
ViewState::Play=>(),
|
||||||
|
ViewState::Replay(bot_id)=>if let Some(replay)=self.replays.get_mut(bot_id){
|
||||||
|
let time=replay.simulation.timer.time(ins.time+SessionTime::from_secs(5));
|
||||||
|
replay.simulation.timer.set_time(ins.time,time);
|
||||||
|
// resimulate the entire playback lol
|
||||||
|
replay.last_instruction_id=0;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Instruction::Playback(SessionPlaybackInstruction::TogglePaused)=>{
|
||||||
|
match &self.view_state{
|
||||||
|
ViewState::Play=>(),
|
||||||
|
ViewState::Replay(bot_id)=>if let Some(replay)=self.replays.get_mut(bot_id){
|
||||||
|
_=replay.simulation.timer.set_paused(ins.time,!replay.simulation.timer.is_paused());
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
Instruction::ChangeMap(complete_map)=>{
|
Instruction::ChangeMap(complete_map)=>{
|
||||||
self.clear_recording();
|
self.clear_recording();
|
||||||
self.change_map(complete_map);
|
self.change_map(complete_map);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user