diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index e78cfe8..ef57c78 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -10,7 +10,7 @@ on: jobs: build-and-test: runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: 30 steps: - name: Check out source uses: actions/checkout@v4 diff --git a/src/debug_tools.rs b/src/debug_tools.rs index 9ad23db..28e27f2 100644 --- a/src/debug_tools.rs +++ b/src/debug_tools.rs @@ -3,11 +3,12 @@ use std::{collections::HashMap, time::Duration}; use bevy::{ + input::InputSystems, prelude::*, settings::{ReflectSettingsGroup, SaveSettingsDeferred, SettingsGroup}, }; use bevy_egui::{EguiContexts, EguiPrimaryContextPass, egui}; -use bevy_ggrs::RollbackFrameRate; +use bevy_ggrs::{RollbackFrameRate, RunGgrsSystems}; use enum_cycling::EnumCycle; use enum_cycling_derive::EnumCycle; @@ -114,6 +115,7 @@ enum DebugFlag { Hurtboxes, Camera, DrawThroughGeometry, + FrameStepping, } #[derive(Clone, Copy)] @@ -174,6 +176,10 @@ const WORLD_MENU: &[DebugMenuEntry] = &[ DebugMenuEntry::GameSpeed { label: "Game speed", }, + DebugMenuEntry::Toggle { + label: "Frame stepping", + flag: DebugFlag::FrameStepping, + }, ]; const DIAGNOSTICS_MENU: &[DebugMenuEntry] = &[DebugMenuEntry::Toggle { @@ -233,6 +239,8 @@ pub struct DebugSettings { selections: Vec, #[reflect(ignore)] pub player_rows: HashMap, + #[reflect(ignore)] + pub frame_stepping: bool, pub network: bool, pub ecb: bool, pub stage_collision: bool, @@ -253,6 +261,7 @@ impl Default for DebugSettings { pages: vec![DebugMenuPage::Static(ROOT_MENU)], selections: vec![0], player_rows: HashMap::new(), + frame_stepping: false, network: false, ecb: false, stage_collision: false, @@ -325,6 +334,7 @@ impl DebugSettings { DebugFlag::Hurtboxes => self.hurtboxes, DebugFlag::DrawThroughGeometry => self.draw_through_geometry, DebugFlag::Camera => self.camera, + DebugFlag::FrameStepping => self.frame_stepping, } } @@ -340,6 +350,7 @@ impl DebugSettings { self.draw_through_geometry = !self.draw_through_geometry } DebugFlag::Camera => self.camera = !self.camera, + DebugFlag::FrameStepping => self.frame_stepping = !self.frame_stepping, } } @@ -356,9 +367,25 @@ impl DebugSettings { pub struct DebugToolsPlugin; +#[derive(Resource, Default)] +struct FrameStepState { + requested: bool, + time_backup: Option