cloudiful_bevy_input/
device.rs1use bevy::prelude::*;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
4pub enum PrimaryGamepadMode {
5 #[default]
6 Auto,
7 Manual,
8}
9
10#[derive(Resource, Debug, Clone, Copy, PartialEq, Eq, Default)]
11pub struct PrimaryGamepad {
12 selected: Option<Entity>,
13 mode: PrimaryGamepadMode,
14}
15
16impl PrimaryGamepad {
17 pub fn selected(self) -> Option<Entity> {
18 self.selected
19 }
20
21 pub fn mode(self) -> PrimaryGamepadMode {
22 self.mode
23 }
24
25 pub fn select(&mut self, entity: Entity) {
26 self.selected = Some(entity);
27 self.mode = PrimaryGamepadMode::Manual;
28 }
29
30 pub fn clear_manual(&mut self) {
31 self.mode = PrimaryGamepadMode::Auto;
32 }
33
34 pub(crate) fn set_selected(&mut self, entity: Option<Entity>) {
35 self.selected = entity;
36 }
37}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq)]
40pub enum InputDevice {
41 KeyboardMouse,
42 Gamepad(Entity),
43}
44
45#[derive(Resource, Debug, Clone, Copy, PartialEq, Eq, Default)]
46pub struct ActiveInputDevice {
47 current: Option<InputDevice>,
48}
49
50impl ActiveInputDevice {
51 pub fn current(self) -> Option<InputDevice> {
52 self.current
53 }
54
55 pub(crate) fn set_current(&mut self, current: Option<InputDevice>) {
56 self.current = current;
57 }
58}