Files
shinespark/src/input/map.rs
T
EIREXE 97f2fe7065
CI / build-and-test (push) Successful in 2m42s
CI / production-build (push) Successful in 13m1s
Implement up smash, dacus and further improve input system. (#88)
Reviewed-on: #88
Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
2026-10-09 09:15:18 +00:00

88 lines
1.9 KiB
Rust

use bevy::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Copy, Clone, PartialEq, Default)]
pub enum InputActionState {
JustPressed,
Pressed,
JustReleased,
#[default]
Released,
}
#[derive(Debug)]
pub enum InputMapAction {
AttackXDir(i32),
AttackYDir(i32),
MovementXDir(i32),
MovementYDir(i32),
Jump,
Shield,
Attack,
}
impl InputMapAction {
pub const fn digital_action(&self) -> Option<crate::input::DigitalAction> {
match self {
Self::Jump => Some(crate::input::DigitalAction::Jump),
Self::Shield => Some(crate::input::DigitalAction::Shield),
Self::Attack => Some(crate::input::DigitalAction::Attack),
Self::MovementXDir(_) | Self::MovementYDir(_) => None,
Self::AttackYDir(_) | Self::AttackXDir(_) => None,
}
}
}
#[derive(Debug)]
pub enum MenuInputMapAction {
MovementXDir(i32),
MovementYDir(i32),
Accept,
Back,
Start,
}
#[derive(Debug)]
pub struct KeyboardInputMapElement {
pub key: KeyCode,
pub action: InputMapAction,
pub binding_slot: u8,
}
#[derive(Debug)]
pub enum GamepadBinding {
Button(GamepadButton),
Axis(GamepadAxis, i32),
}
#[derive(Debug)]
pub struct GamepadInputMapElement {
pub binding: GamepadBinding,
pub action: InputMapAction,
pub binding_slot: u8,
}
#[derive(Debug)]
pub struct MenuKeyboardInputMapElement {
pub key: KeyCode,
pub action: MenuInputMapAction,
}
#[derive(Debug)]
pub struct MenuGamepadInputMapElement {
pub binding: GamepadBinding,
pub action: MenuInputMapAction,
}
#[derive(Resource)]
pub struct BaseInputMap {
pub keyboard: Vec<KeyboardInputMapElement>,
pub gamepad: Vec<GamepadInputMapElement>,
}
#[derive(Resource)]
pub struct MenuInputMap {
pub keyboard: Vec<MenuKeyboardInputMapElement>,
pub gamepad: Vec<MenuGamepadInputMapElement>,
}