From 152ad240d0cde6dd034a0bfac12b46fb7dbb613f Mon Sep 17 00:00:00 2001 From: "NG (Graham)" Date: Mon, 11 Aug 2025 20:51:37 -0400 Subject: [PATCH] Fix game event not getting saved to DB until first game switc #36h --- rc_core/src/persist/config/cubes_json.rs | 1 + rc_core/src/persist/config/traits.rs | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) 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),