use std::num::NonZeroU16; #[derive(Default)] pub struct Controller { pub(crate) vector: u16, pub(crate) button: u8, pub(crate) key: u8, } impl Controller { pub fn vector(&self) -> Option { NonZeroU16::new(self.vector) } pub fn set_button(&mut self, mask: u8) { self.button |= mask; } pub fn reset_button(&mut self, mask: u8) { self.button &= !mask; } pub fn set_key(&mut self, key: u8) { self.key = key; } }