Make stages data-driven

This commit is contained in:
2026-08-27 20:35:03 +02:00
parent fb5775fdcd
commit 46c29857ac
10 changed files with 251 additions and 57 deletions
+14 -2
View File
@@ -28,8 +28,7 @@ use clap::Parser;
use jackdaw_runtime::EditorCategory;
use crate::{
fighter::manifest::FighterManifest, game_settings::GameSettings,
schedule::GameplaySchedulePlugin,
fighter::manifest::FighterManifest, game_settings::GameSettings, schedule::GameplaySchedulePlugin, stage::manifest::{StageManifest, StageManifestAssets},
};
mod args;
@@ -49,6 +48,8 @@ pub enum AppState {
LoadCommonAssets,
LoadFighterManifests,
PrepareFighterManifests,
LoadStageManifests,
PrepareStageManifests,
CommonAssetLoadFailed,
Idle,
LoadingMatch,
@@ -78,6 +79,7 @@ impl Plugin for GamePlugin {
fighter::FighterPlugin,
stage::StagePlugin,
bevy_common_assets::ron::RonAssetPlugin::<FighterManifest>::new(&["fighter.ron"]),
bevy_common_assets::ron::RonAssetPlugin::<StageManifest>::new(&["stage.ron"]),
bevy_common_assets::ron::RonAssetPlugin::<GameSettings>::new(&["ron"]),
))
.add_loading_state(
@@ -99,10 +101,20 @@ impl Plugin for GamePlugin {
.on_failure_continue_to_state(AppState::CommonAssetLoadFailed)
.load_collection::<fighter::manifest::FighterManifestAssets>(),
)
.add_loading_state(
LoadingState::new(AppState::LoadStageManifests)
.continue_to_state(AppState::PrepareStageManifests)
.on_failure_continue_to_state(AppState::CommonAssetLoadFailed)
.load_collection::<stage::manifest::StageManifestAssets>(),
)
.add_systems(
OnEnter(AppState::PrepareFighterManifests),
fighter::manifest::prepare_fighter_manifests,
)
.add_systems(
OnEnter(AppState::PrepareStageManifests),
stage::manifest::prepare_stage_manifests,
)
.add_systems(
OnEnter(AppState::Idle),
match_loading::initiate_default_match,