fox32+fox32rom: Add EVENT_TYPE_MOUSE_RELEASE

This commit is contained in:
Ry 2022-04-16 15:15:03 -07:00
parent e7f81afa50
commit fb3d681f55
3 changed files with 19 additions and 11 deletions

View File

@ -51,15 +51,17 @@ impl Bus {
0x00 => {
// we're reading the button states
let mut byte: u8 = 0x00;
let mut mouse_lock = self.mouse.lock().expect("failed to lock the mouse mutex");
if mouse_lock.click {
byte |= 0b01;
mouse_lock.click = false;
let mouse_lock = self.mouse.lock().expect("failed to lock the mouse mutex");
if mouse_lock.clicked {
byte |= 0b001;
}
if mouse_lock.released {
byte |= 0b010;
}
if mouse_lock.held {
byte |= 0b10;
byte |= 0b100;
} else {
byte &= !0b10;
byte &= !0b100;
}
byte as u32
}
@ -145,8 +147,9 @@ impl Bus {
0x00 => {
// we're setting the button states
let mut mouse_lock = self.mouse.lock().expect("failed to lock the mouse mutex");
mouse_lock.click = word & (1 << 0) != 0;
mouse_lock.held = word & (1 << 1) != 0;
mouse_lock.clicked = word & (1 << 0) != 0;
mouse_lock.released = word & (1 << 1) != 0;
mouse_lock.held = word & (1 << 2) != 0;
}
0x01 => {
// we're setting the position

View File

@ -217,9 +217,13 @@ fn main() {
let mut mouse_lock = mouse.lock().expect("failed to lock the mouse mutex");
mouse_lock.x = mouse_pixel.0;
mouse_lock.y = mouse_pixel.1;
if mouse_lock.held && !input.mouse_held(0) {
// mouse button was released this frame
mouse_lock.released = true;
}
mouse_lock.held = input.mouse_held(0);
if input.mouse_pressed(0) {
mouse_lock.click = true;
mouse_lock.clicked = true;
}
}
});

View File

@ -3,12 +3,13 @@
pub struct Mouse {
pub x: u16,
pub y: u16,
pub click: bool,
pub clicked: bool,
pub released: bool,
pub held: bool,
}
impl Mouse {
pub fn new() -> Self {
Mouse { x: 0, y: 0, click: false, held: false }
Mouse { x: 0, y: 0, clicked: false, released: false, held: false }
}
}