diff --git a/rc_core/src/persist/config/cubes_json.rs b/rc_core/src/persist/config/cubes_json.rs index 0f3f30e..ad57ff5 100644 --- a/rc_core/src/persist/config/cubes_json.rs +++ b/rc_core/src/persist/config/cubes_json.rs @@ -302,6 +302,7 @@ impl super::ConfigProvider for CubeConfig { }).collect(), index: first, started: chrono::Utc::now().timestamp(), + needs_to_be_saved: true, } } diff --git a/rc_core/src/persist/config/traits.rs b/rc_core/src/persist/config/traits.rs index 4b71c41..93440bd 100644 --- a/rc_core/src/persist/config/traits.rs +++ b/rc_core/src/persist/config/traits.rs @@ -160,17 +160,22 @@ pub struct GameEventSequence { pub modes: Vec, pub index: usize, pub started: i64, + pub(crate) needs_to_be_saved: bool, } impl GameEventSequence { pub fn now(&mut self, updater: Box) -> GameEventTransmissible { let time_now = chrono::Utc::now().timestamp(); let mut item_now = &self.modes[self.index]; - if time_now >= (item_now.duration.as_secs() as i64) + self.started { - // needs refresh - self.index = self.strategy.next(self.index, self.modes.len()); + let needs_refresh = time_now >= (item_now.duration.as_secs() as i64) + self.started; + if self.needs_to_be_saved || needs_refresh { + if needs_refresh { + self.index = self.strategy.next(self.index, self.modes.len()); + self.started = time_now; + } else { + self.needs_to_be_saved = false; + } item_now = &self.modes[self.index]; - self.started = time_now; let mp = crate::persist::user::CurrentGameEvent { map: crate::data::game_mode::GameMap::from_persist(item_now.multiplayer.map).as_str().to_owned(), visibility: crate::data::game_mode::MapVisibility::from_persist(item_now.multiplayer.visibility),