Skip to main content

cloudiful_bevy_input/
device.rs

1use 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}