71 lines
2.1 KiB
Rust
71 lines
2.1 KiB
Rust
use prometeu_abi::model::Button;
|
|
use prometeu_hardware_contract::{InputSignals, PadBridge};
|
|
|
|
#[derive(Default, Clone, Copy, Debug)]
|
|
pub struct Pad {
|
|
pub up: Button,
|
|
pub down: Button,
|
|
pub left: Button,
|
|
pub right: Button,
|
|
|
|
pub a: Button, // ps: square
|
|
pub b: Button, // ps: circle
|
|
pub x: Button, // ps: triangle
|
|
pub y: Button, // ps: cross
|
|
pub l: Button, // ps: R
|
|
pub r: Button, // ps: L
|
|
|
|
pub start: Button,
|
|
pub select: Button,
|
|
}
|
|
|
|
impl PadBridge for Pad {
|
|
fn begin_frame(&mut self, signals: &InputSignals) { self.begin_frame(signals) }
|
|
fn any(&self) -> bool { self.any() }
|
|
|
|
fn up(&self) -> &Button { &self.up }
|
|
fn down(&self) -> &Button { &self.down }
|
|
fn left(&self) -> &Button { &self.left }
|
|
fn right(&self) -> &Button { &self.right }
|
|
fn a(&self) -> &Button { &self.a }
|
|
fn b(&self) -> &Button { &self.b }
|
|
fn x(&self) -> &Button { &self.x }
|
|
fn y(&self) -> &Button { &self.y }
|
|
fn l(&self) -> &Button { &self.l }
|
|
fn r(&self) -> &Button { &self.r }
|
|
fn start(&self) -> &Button { &self.start }
|
|
fn select(&self) -> &Button { &self.select }
|
|
}
|
|
|
|
impl Pad {
|
|
pub fn begin_frame(&mut self, signals: &InputSignals) {
|
|
self.up.begin_frame(signals.up_signal);
|
|
self.down.begin_frame(signals.down_signal);
|
|
self.left.begin_frame(signals.left_signal);
|
|
self.right.begin_frame(signals.right_signal);
|
|
|
|
self.a.begin_frame(signals.a_signal);
|
|
self.b.begin_frame(signals.b_signal);
|
|
self.x.begin_frame(signals.x_signal);
|
|
self.y.begin_frame(signals.y_signal);
|
|
self.l.begin_frame(signals.l_signal);
|
|
self.r.begin_frame(signals.r_signal);
|
|
|
|
self.start.begin_frame(signals.start_signal);
|
|
self.select.begin_frame(signals.select_signal);
|
|
}
|
|
|
|
pub fn any(&self) -> bool {
|
|
self.a.down
|
|
|| self.b.down
|
|
|| self.x.down
|
|
|| self.y.down
|
|
|| self.l.down
|
|
|| self.r.down
|
|
|| self.start.down
|
|
|| self.select.down
|
|
}
|
|
}
|
|
|
|
|