mirror of
https://codeberg.org/schrottkatze/mgd2-tram-championships.git
synced 2025-07-02 01:27:39 +00:00
add a debug mode
This commit is contained in:
parent
da4c6172d4
commit
fcc4ebeba8
2 changed files with 57 additions and 7 deletions
45
src/debug.rs
45
src/debug.rs
|
@ -19,9 +19,16 @@ pub fn plugin(app: &mut App) {
|
||||||
enable_multipass_for_primary_context: true,
|
enable_multipass_for_primary_context: true,
|
||||||
})
|
})
|
||||||
.add_event::<DebugEvent>()
|
.add_event::<DebugEvent>()
|
||||||
|
.init_state::<DebugMode>()
|
||||||
.add_systems(
|
.add_systems(
|
||||||
Update,
|
Update,
|
||||||
(handle_debug_logs, start_game, run_file.pipe(exec_script)).in_set(DebugSet),
|
(
|
||||||
|
handle_debug_logs,
|
||||||
|
handle_enable_debug_mode.run_if(not(in_state(DebugMode::Enabled))),
|
||||||
|
start_game,
|
||||||
|
run_file.pipe(exec_script),
|
||||||
|
)
|
||||||
|
.in_set(DebugSet),
|
||||||
)
|
)
|
||||||
.add_systems(Startup, startup_file.pipe(exec_script))
|
.add_systems(Startup, startup_file.pipe(exec_script))
|
||||||
.add_plugins(console::plugin);
|
.add_plugins(console::plugin);
|
||||||
|
@ -60,6 +67,23 @@ enum DebugEvent {
|
||||||
/// Run a tx file (the games debug scripting lang :3)
|
/// Run a tx file (the games debug scripting lang :3)
|
||||||
#[command(name = "run")]
|
#[command(name = "run")]
|
||||||
RunFile { file: PathBuf },
|
RunFile { file: PathBuf },
|
||||||
|
|
||||||
|
/// Enable debug mode.
|
||||||
|
/// Will cause the game to behave differently (mostly, not do things by default it otherwise would.)
|
||||||
|
///
|
||||||
|
/// Do note while all of this is part of the debug tooling, debug mode just gives the debug tools more controls of the game.
|
||||||
|
///
|
||||||
|
/// Read: In debug mode, a lot of features of the normal game aren't enabled, and might have to be turned on explicitly.
|
||||||
|
/// This is to allow for easier testing. The console etc. will still stay available regardless, just might complain that debug mode isn't enabled on some commands.
|
||||||
|
///
|
||||||
|
/// For best results, enable debug mode before starting the game.
|
||||||
|
///
|
||||||
|
/// Debug mode cannot be disabled. Just restart the game lmao.
|
||||||
|
///
|
||||||
|
/// Current debug mode behaviour:
|
||||||
|
/// - Nothing
|
||||||
|
#[command(name = "enable-debug", aliases = ["debug-enable"])]
|
||||||
|
EnableDebugMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start_game(
|
fn start_game(
|
||||||
|
@ -80,6 +104,25 @@ fn start_game(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(States, Default, Debug, Clone, PartialEq, Eq, Hash, Reflect)]
|
||||||
|
pub enum DebugMode {
|
||||||
|
#[default]
|
||||||
|
Disabled,
|
||||||
|
Enabled,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_enable_debug_mode(
|
||||||
|
mut dbg_reader: EventReader<DebugEvent>,
|
||||||
|
mut debug_state: ResMut<NextState<DebugMode>>,
|
||||||
|
) {
|
||||||
|
for ev in dbg_reader.read() {
|
||||||
|
if matches!(ev, DebugEvent::EnableDebugMode) {
|
||||||
|
info!("Enabling debug mode. There be demons (hopefully the cute ones :3)!");
|
||||||
|
debug_state.set(DebugMode::Enabled)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn handle_debug_logs(mut dbg_reader: EventReader<DebugEvent>) {
|
fn handle_debug_logs(mut dbg_reader: EventReader<DebugEvent>) {
|
||||||
for ev in dbg_reader.read() {
|
for ev in dbg_reader.read() {
|
||||||
if let DebugEvent::Log { error, text } = ev {
|
if let DebugEvent::Log { error, text } = ev {
|
||||||
|
|
19
src/game.rs
19
src/game.rs
|
@ -3,21 +3,28 @@ use bevy::prelude::*;
|
||||||
use crate::{
|
use crate::{
|
||||||
AppState,
|
AppState,
|
||||||
cleanup::{self, despawn},
|
cleanup::{self, despawn},
|
||||||
|
debug::DebugMode,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod camera;
|
mod camera;
|
||||||
mod scene;
|
mod scene;
|
||||||
|
mod debug {}
|
||||||
|
|
||||||
/// Gameplay system set. All functions in this control the gameplay (duh).
|
/// Gameplay system set. All functions in this control the gameplay (duh).
|
||||||
#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
struct GameplaySet;
|
struct GameplaySet;
|
||||||
|
|
||||||
pub fn plugin(app: &mut App) {
|
pub fn plugin(app: &mut App) {
|
||||||
app.add_systems(OnEnter(AppState::Ingame), scene::setup.in_set(GameplaySet))
|
app.add_systems(
|
||||||
.add_systems(
|
OnEnter(AppState::Ingame),
|
||||||
OnExit(AppState::Ingame),
|
scene::setup
|
||||||
despawn::<cleanup::Scene>.in_set(GameplaySet),
|
.in_set(GameplaySet)
|
||||||
)
|
.run_if(in_state(DebugMode::Disabled)),
|
||||||
.add_plugins(camera::plugin);
|
)
|
||||||
|
.add_systems(
|
||||||
|
OnExit(AppState::Ingame),
|
||||||
|
despawn::<cleanup::Scene>.in_set(GameplaySet),
|
||||||
|
)
|
||||||
|
.add_plugins(camera::plugin);
|
||||||
app.configure_sets(Update, GameplaySet.run_if(in_state(AppState::Ingame)));
|
app.configure_sets(Update, GameplaySet.run_if(in_state(AppState::Ingame)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue