Stand-in pick-up/put-down movement. Next: animationsgit diff HEAD~1

selection-refactor
Elijah Voigt 2 years ago
parent 9cb7043eed
commit 1aec9ae9ce

@ -28,9 +28,7 @@ impl Plugin for Display2dPlugin {
( (
active_tile.run_if(in_state(GameState::Display2d)), active_tile.run_if(in_state(GameState::Display2d)),
menu::exit_to_menu.run_if(in_state(GameState::Display2d)), menu::exit_to_menu.run_if(in_state(GameState::Display2d)),
select_piece select_piece.run_if(in_state(GameState::Display2d)),
.run_if(in_state(GameState::Display2d))
.run_if(not(any_with_component::<game::Selected>())),
move_piece move_piece
.run_if(in_state(GameState::Display2d)) .run_if(in_state(GameState::Display2d))
.run_if(any_with_component::<game::Selected>()), .run_if(any_with_component::<game::Selected>()),

@ -1,9 +1,13 @@
// TODO: Unify the selection logic
// If you select in 2d, it should "be" selected in 3d.
// And if you select in 3d, 2d is selected.
use crate::{ use crate::{
game::{Board, BoardIndex, Piece, Side}, game::{Board, BoardIndex, Piece, Side},
prelude::*, prelude::*,
}; };
use bevy::{ use bevy::{
core_pipeline::Skybox, core_pipeline::Skybox,
ecs::removal_detection::RemovedComponentReader,
input::mouse::{MouseButtonInput, MouseMotion, MouseWheel}, input::mouse::{MouseButtonInput, MouseMotion, MouseWheel},
render::render_resource::{TextureViewDescriptor, TextureViewDimension}, render::render_resource::{TextureViewDescriptor, TextureViewDimension},
window::PrimaryWindow, window::PrimaryWindow,
@ -29,6 +33,8 @@ impl Plugin for Display3dPlugin {
select_3d select_3d
.run_if(in_state(GameState::Display3d)) .run_if(in_state(GameState::Display3d))
.run_if(on_event::<MouseButtonInput>()), .run_if(on_event::<MouseButtonInput>()),
pick_up.run_if(any_component_added::<game::Selected>),
put_down.run_if(any_component_removed::<game::Selected>()),
), ),
) )
.add_systems( .add_systems(
@ -379,7 +385,7 @@ fn select_3d(
mut events: EventReader<MouseButtonInput>, mut events: EventReader<MouseButtonInput>,
query: Query<(Entity, &Handle<Mesh>, &GlobalTransform)>, query: Query<(Entity, &Handle<Mesh>, &GlobalTransform)>,
meshes: Res<Assets<Mesh>>, meshes: Res<Assets<Mesh>>,
cameras: Query<(&Camera, &GlobalTransform), With<Display3d>>, cameras: Query<(&Camera, &GlobalTransform)>,
windows: Query<&Window, With<PrimaryWindow>>, windows: Query<&Window, With<PrimaryWindow>>,
parents: Query<Entity, (With<game::Piece>, With<Display3d>)>, parents: Query<Entity, (With<game::Piece>, With<Display3d>)>,
children: Query<&Children>, children: Query<&Children>,
@ -440,6 +446,25 @@ fn selected_gizmo(
}) })
} }
fn pick_up(
mut events: Query<&mut Transform, (With<game::Piece>, With<Display3d>, Added<game::Selected>)>,
) {
events.iter_mut().for_each(|mut transform| {
transform.translation += Vec3::Y;
});
}
fn put_down(
mut events: RemovedComponents<game::Selected>,
mut query: Query<&mut Transform, (With<game::Piece>, With<Display3d>)>,
) {
events.iter().for_each(|entity| {
if let Ok(mut transform) = query.get_mut(entity) {
transform.translation -= Vec3::Y;
}
})
}
// Animations // Animations
// * QueenPickup // * QueenPickup
// * QueenPutDown // * QueenPutDown

Loading…
Cancel
Save