From 92c8c288bcbb3a3792977045031e696fa71fbf33 Mon Sep 17 00:00:00 2001 From: gyoder <70408179+gyoder@users.noreply.github.com> Date: Thu, 18 Dec 2025 13:13:32 -0500 Subject: [PATCH] added input subsystem --- Cargo.lock | 62 +++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 30 +++++++++++++---- src/utils/input.rs | 82 ++++++++++++++++++++++++++++++++++++++++++++++ src/utils/mod.rs | 1 + 5 files changed, 169 insertions(+), 7 deletions(-) create mode 100644 src/utils/input.rs create mode 100644 src/utils/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 91c7935..99446b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1310,6 +1310,7 @@ name = "bevy_stock_photo" version = "0.1.0" dependencies = [ "bevy", + "enumset", "rand", ] @@ -2013,6 +2014,40 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "dasp_sample" version = "0.11.0" @@ -2146,6 +2181,27 @@ dependencies = [ "syn", ] +[[package]] +name = "enumset" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b07a8dfbbbfc0064c0a6bdf9edcf966de6b1c33ce344bdeca3b41615452634" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43e744e4ea338060faee68ed933e46e722fb7f3617e722a5772d7e856d8b3ce" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -2637,6 +2693,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "image" version = "0.25.9" diff --git a/Cargo.toml b/Cargo.toml index e7c936b..2771225 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,4 +5,5 @@ edition = "2024" [dependencies] bevy = "0.17.3" +enumset = "1.1.10" rand = "0.9.2" diff --git a/src/main.rs b/src/main.rs index 914d251..2c851de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,33 @@ use bevy::{post_process::bloom::Bloom, prelude::*, sprite::Anchor}; use rand::Rng; +use crate::utils::input::{GameInputPlugin, InputButton, InputPressStatus}; + +mod utils; + #[derive(Component)] pub struct PlayerVWBus; +#[derive(States, Default, Debug, Clone, PartialEq, Eq, Hash)] +pub enum GameState { + #[default] + Navi, + Pause, + Combat, +} + const PLAYER_SPEED: f32 = 100.; fn main() { println!("Hello, world!"); App::new() - .add_plugins(DefaultPlugins) + .add_plugins((DefaultPlugins, GameInputPlugin)) + .init_state::() .add_systems(Startup, (setup_scene, spawn_bus, spawn_enemy)) - .add_systems(Update, (move_player, follow_player)) + .add_systems( + Update, + (move_player.run_if(in_state(GameState::Navi)), follow_player), + ) .run(); } @@ -65,23 +81,23 @@ fn move_player( mut player: Single<&mut Transform, With>, mut player_sprite: Single<&mut Sprite, With>, time: Res