mirror of
https://github.com/kristoferssolo/maze-ascension.git
synced 2025-10-21 19:20:34 +00:00
refactor(player): remove triggers
This commit is contained in:
parent
77407f7a90
commit
ef9bb50fba
@ -1,7 +1,7 @@
|
||||
use crate::{
|
||||
floor::components::{CurrentFloor, Floor},
|
||||
maze::{commands::RespawnMaze, components::MazeConfig, GlobalMazeConfig},
|
||||
player::events::RespawnPlayer,
|
||||
player::commands::RespawnPlayer,
|
||||
screens::Screen,
|
||||
};
|
||||
use bevy::{prelude::*, window::PrimaryWindow};
|
||||
@ -77,7 +77,7 @@ pub fn maze_controls_ui(world: &mut World) {
|
||||
config: maze_config,
|
||||
}
|
||||
.apply(world);
|
||||
world.trigger(RespawnPlayer);
|
||||
RespawnPlayer.apply(world);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -9,7 +9,7 @@ use crate::{
|
||||
maze::{commands::SpawnMaze, components::MazeConfig},
|
||||
};
|
||||
|
||||
pub(super) fn spawn_floor(
|
||||
pub fn spawn_floor(
|
||||
mut commands: Commands,
|
||||
query: Query<(&mut Floor, &MazeConfig), (With<CurrentFloor>, Without<FloorYTarget>)>,
|
||||
mut event_reader: EventReader<TransitionFloor>,
|
||||
|
||||
@ -9,5 +9,5 @@ pub(super) fn plugin(app: &mut App) {
|
||||
}
|
||||
|
||||
pub fn spawn_hint_command(world: &mut World) {
|
||||
let _ = world.run_system_once(systems::setup::setup);
|
||||
let _ = world.run_system_once(systems::spawn::spawn_hints);
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
mod check;
|
||||
pub mod setup;
|
||||
pub mod spawn;
|
||||
|
||||
use bevy::prelude::*;
|
||||
use check::check_player_hints;
|
||||
|
||||
@ -5,7 +5,7 @@ use crate::hint::{
|
||||
components::{Hint, IdleTimer},
|
||||
};
|
||||
|
||||
pub fn setup(mut commands: Commands, hint_assets: Res<HintAssets>) {
|
||||
pub fn spawn_hints(mut commands: Commands, hint_assets: Res<HintAssets>) {
|
||||
commands.spawn((
|
||||
Name::new("Movement hint"),
|
||||
Hint::Movement,
|
||||
30
src/player/commands.rs
Normal file
30
src/player/commands.rs
Normal file
@ -0,0 +1,30 @@
|
||||
use bevy::{ecs::system::RunSystemOnce, prelude::*};
|
||||
|
||||
use super::systems::{despawn::despawn_players, respawn::respawn_player, spawn::spawn_player};
|
||||
|
||||
#[derive(Debug, Reflect)]
|
||||
pub struct SpawnPlayer;
|
||||
|
||||
#[derive(Debug, Reflect)]
|
||||
pub struct RespawnPlayer;
|
||||
|
||||
#[derive(Debug, Reflect)]
|
||||
pub struct DespawnPlayer;
|
||||
|
||||
impl Command for SpawnPlayer {
|
||||
fn apply(self, world: &mut World) {
|
||||
let _ = world.run_system_once(spawn_player);
|
||||
}
|
||||
}
|
||||
|
||||
impl Command for RespawnPlayer {
|
||||
fn apply(self, world: &mut World) {
|
||||
let _ = world.run_system_once(respawn_player);
|
||||
}
|
||||
}
|
||||
|
||||
impl Command for DespawnPlayer {
|
||||
fn apply(self, world: &mut World) {
|
||||
let _ = world.run_system_once(despawn_players);
|
||||
}
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Debug, Event)]
|
||||
pub struct SpawnPlayer;
|
||||
|
||||
#[derive(Debug, Event)]
|
||||
pub struct RespawnPlayer;
|
||||
|
||||
#[derive(Debug, Event)]
|
||||
pub struct DespawnPlayer;
|
||||
@ -1,25 +1,20 @@
|
||||
mod assets;
|
||||
pub mod commands;
|
||||
pub mod components;
|
||||
pub mod events;
|
||||
mod systems;
|
||||
mod triggers;
|
||||
|
||||
use assets::PlayerAssets;
|
||||
use bevy::{ecs::system::RunSystemOnce, prelude::*};
|
||||
use components::Player;
|
||||
use events::{DespawnPlayer, RespawnPlayer, SpawnPlayer};
|
||||
|
||||
use crate::asset_tracking::LoadResource;
|
||||
|
||||
pub(super) fn plugin(app: &mut App) {
|
||||
app.register_type::<Player>()
|
||||
.load_resource::<PlayerAssets>()
|
||||
.add_event::<SpawnPlayer>()
|
||||
.add_event::<RespawnPlayer>()
|
||||
.add_event::<DespawnPlayer>()
|
||||
.add_plugins((triggers::plugin, systems::plugin));
|
||||
.add_plugins(systems::plugin);
|
||||
}
|
||||
|
||||
pub fn spawn_player_command(world: &mut World) {
|
||||
let _ = world.run_system_once(systems::setup::setup);
|
||||
let _ = world.run_system_once(systems::spawn::spawn_player);
|
||||
}
|
||||
|
||||
8
src/player/systems/despawn.rs
Normal file
8
src/player/systems/despawn.rs
Normal file
@ -0,0 +1,8 @@
|
||||
use crate::player::components::Player;
|
||||
use bevy::prelude::*;
|
||||
|
||||
pub fn despawn_players(mut commands: Commands, query: Query<Entity, With<Player>>) {
|
||||
for entity in query.iter() {
|
||||
commands.entity(entity).despawn_recursive();
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,9 @@
|
||||
pub mod despawn;
|
||||
mod input;
|
||||
mod movement;
|
||||
pub mod setup;
|
||||
pub mod respawn;
|
||||
mod sound_effect;
|
||||
pub mod spawn;
|
||||
mod vertical_transition;
|
||||
|
||||
use crate::{screens::Screen, AppSet};
|
||||
|
||||
7
src/player/systems/respawn.rs
Normal file
7
src/player/systems/respawn.rs
Normal file
@ -0,0 +1,7 @@
|
||||
use crate::player::commands::{DespawnPlayer, SpawnPlayer};
|
||||
use bevy::prelude::*;
|
||||
|
||||
pub fn respawn_player(mut commands: Commands) {
|
||||
commands.queue(DespawnPlayer);
|
||||
commands.queue(SpawnPlayer);
|
||||
}
|
||||
@ -1,6 +0,0 @@
|
||||
use crate::player::events::SpawnPlayer;
|
||||
use bevy::prelude::*;
|
||||
|
||||
pub fn setup(mut commands: Commands) {
|
||||
commands.trigger(SpawnPlayer);
|
||||
}
|
||||
@ -4,14 +4,12 @@ use crate::{
|
||||
player::{
|
||||
assets::{blue_material, generate_pill_mesh},
|
||||
components::{CurrentPosition, Player},
|
||||
events::SpawnPlayer,
|
||||
},
|
||||
screens::Screen,
|
||||
};
|
||||
use bevy::prelude::*;
|
||||
|
||||
pub(super) fn spawn_player(
|
||||
_trigger: Trigger<SpawnPlayer>,
|
||||
pub fn spawn_player(
|
||||
mut commands: Commands,
|
||||
mut meshes: ResMut<Assets<Mesh>>,
|
||||
mut materials: ResMut<Assets<StandardMaterial>>,
|
||||
@ -1,12 +0,0 @@
|
||||
use crate::player::{components::Player, events::DespawnPlayer};
|
||||
use bevy::prelude::*;
|
||||
|
||||
pub(super) fn despawn_players(
|
||||
_trigger: Trigger<DespawnPlayer>,
|
||||
mut commands: Commands,
|
||||
query: Query<Entity, With<Player>>,
|
||||
) {
|
||||
for entity in query.iter() {
|
||||
commands.entity(entity).despawn_recursive();
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
mod despawn;
|
||||
mod respawn;
|
||||
mod spawn;
|
||||
|
||||
use bevy::prelude::*;
|
||||
use despawn::despawn_players;
|
||||
use respawn::respawn_player;
|
||||
use spawn::spawn_player;
|
||||
|
||||
pub(super) fn plugin(app: &mut App) {
|
||||
app.add_observer(spawn_player)
|
||||
.add_observer(respawn_player)
|
||||
.add_observer(despawn_players);
|
||||
}
|
||||
@ -1,7 +0,0 @@
|
||||
use crate::player::events::{DespawnPlayer, RespawnPlayer, SpawnPlayer};
|
||||
use bevy::prelude::*;
|
||||
|
||||
pub(super) fn respawn_player(_trigger: Trigger<RespawnPlayer>, mut commands: Commands) {
|
||||
commands.trigger(DespawnPlayer);
|
||||
commands.trigger(SpawnPlayer);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user