From 1aec9ae9ce858b2f96804490ec5c41933bf942ad Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Thu, 26 Oct 2023 22:22:45 -0700 Subject: [PATCH] Stand-in pick-up/put-down movement. Next: animationsgit diff HEAD~1 --- src/display2d.rs | 4 +--- src/display3d.rs | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/display2d.rs b/src/display2d.rs index 557a5d9..67e1365 100644 --- a/src/display2d.rs +++ b/src/display2d.rs @@ -28,9 +28,7 @@ impl Plugin for Display2dPlugin { ( active_tile.run_if(in_state(GameState::Display2d)), menu::exit_to_menu.run_if(in_state(GameState::Display2d)), - select_piece - .run_if(in_state(GameState::Display2d)) - .run_if(not(any_with_component::())), + select_piece.run_if(in_state(GameState::Display2d)), move_piece .run_if(in_state(GameState::Display2d)) .run_if(any_with_component::()), diff --git a/src/display3d.rs b/src/display3d.rs index 7846970..95d252a 100644 --- a/src/display3d.rs +++ b/src/display3d.rs @@ -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::{ game::{Board, BoardIndex, Piece, Side}, prelude::*, }; use bevy::{ core_pipeline::Skybox, + ecs::removal_detection::RemovedComponentReader, input::mouse::{MouseButtonInput, MouseMotion, MouseWheel}, render::render_resource::{TextureViewDescriptor, TextureViewDimension}, window::PrimaryWindow, @@ -29,6 +33,8 @@ impl Plugin for Display3dPlugin { select_3d .run_if(in_state(GameState::Display3d)) .run_if(on_event::()), + pick_up.run_if(any_component_added::), + put_down.run_if(any_component_removed::()), ), ) .add_systems( @@ -379,7 +385,7 @@ fn select_3d( mut events: EventReader, query: Query<(Entity, &Handle, &GlobalTransform)>, meshes: Res>, - cameras: Query<(&Camera, &GlobalTransform), With>, + cameras: Query<(&Camera, &GlobalTransform)>, windows: Query<&Window, With>, parents: Query, With)>, children: Query<&Children>, @@ -440,6 +446,25 @@ fn selected_gizmo( }) } +fn pick_up( + mut events: Query<&mut Transform, (With, With, Added)>, +) { + events.iter_mut().for_each(|mut transform| { + transform.translation += Vec3::Y; + }); +} + +fn put_down( + mut events: RemovedComponents, + mut query: Query<&mut Transform, (With, With)>, +) { + events.iter().for_each(|entity| { + if let Ok(mut transform) = query.get_mut(entity) { + transform.translation -= Vec3::Y; + } + }) +} + // Animations // * QueenPickup // * QueenPutDown