refactor(player): remove triggers

This commit is contained in:
Kristofers Solo 2025-01-06 11:37:21 +02:00
parent 77407f7a90
commit ef9bb50fba
16 changed files with 58 additions and 67 deletions

View File

@ -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);
}
}
});

View File

@ -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>,

View File

@ -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);
}

View File

@ -1,5 +1,5 @@
mod check;
pub mod setup;
pub mod spawn;
use bevy::prelude::*;
use check::check_player_hints;

View File

@ -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
View 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);
}
}

View File

@ -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;

View File

@ -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);
}

View 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();
}
}

View File

@ -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};

View 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);
}

View File

@ -1,6 +0,0 @@
use crate::player::events::SpawnPlayer;
use bevy::prelude::*;
pub fn setup(mut commands: Commands) {
commands.trigger(SpawnPlayer);
}

View File

@ -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>>,

View File

@ -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();
}
}

View File

@ -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);
}

View File

@ -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);
}