Skip to content

Commit

Permalink
Changed the input setters and key definitions
Browse files Browse the repository at this point in the history
  • Loading branch information
kitao committed Dec 28, 2021
1 parent 48b16fb commit e892737
Show file tree
Hide file tree
Showing 9 changed files with 448 additions and 474 deletions.
8 changes: 4 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Change Log

## 1.5.5
- Fixed to record the screen video more accurately
- Renamed the move_mouse to set_mouse_pos
- Changed the set_mouse_pos and set_btnv to get floating numbers
- Changed the capture scale of the example #7
- Fixed to record the screen video with collect interval
- Renamed the input setters to setbtn, setbtnv and setmpos
- Changed the input setters to get floating numbers
- Changed the key definitions to SDL2 Keycode base
- Updated the example videos
- Updated the Pyxel editor videos
- Modified the melody of the example #10
Expand Down
4 changes: 2 additions & 2 deletions lib/engine/src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ pub enum Event {

// Key events
KeyDown {
key: u32,
keycode: u32,
},
KeyUp {
key: u32,
keycode: u32,
},
TextInput {
text: String,
Expand Down
60 changes: 24 additions & 36 deletions lib/engine/src/input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,19 @@ impl Input {
Event::Minimized => {}

// Key events
Event::KeyDown { key } => {
if (KEY_MIN_VALUE..=KEY_MAX_VALUE).contains(&key) {
self.press_key(key, frame_count);
self.input_keys.push(key);
if let Some(key) = Self::get_common_key(key) {
self.press_key(key, frame_count);
}
Event::KeyDown { keycode } => {
self.press_key(keycode, frame_count);
if let Some(keycode) = to_integrated_key(keycode) {
self.press_key(keycode, frame_count);
}
if is_keyboard_key(keycode) {
self.input_keys.push(keycode);
}
}
Event::KeyUp { key } => {
if (KEY_MIN_VALUE..=KEY_MAX_VALUE).contains(&key) {
self.release_key(key, frame_count);
if let Some(key) = Self::get_common_key(key) {
self.release_key(key, frame_count);
}
Event::KeyUp { keycode } => {
self.release_key(keycode, frame_count);
if let Some(keycode) = to_integrated_key(keycode) {
self.release_key(keycode, frame_count);
}
}
Event::TextInput { text } => {
Expand Down Expand Up @@ -132,16 +130,6 @@ impl Input {
}
}

fn get_common_key(key: Key) -> Option<Key> {
match key {
KEY_LSHIFT | KEY_RSHIFT => Some(KEY_SHIFT),
KEY_LCTRL | KEY_RCTRL => Some(KEY_CTRL),
KEY_LALT | KEY_RALT => Some(KEY_ALT),
KEY_LGUI | KEY_RGUI => Some(KEY_GUI),
_ => None,
}
}

fn press_key(&mut self, key: Key, frame_count: u32) {
self.key_states
.insert(key, KeyState::Pressed { frame_count });
Expand Down Expand Up @@ -226,29 +214,29 @@ impl Pyxel {
self.input.is_mouse_visible = is_visible;
}

pub fn set_btnp(&mut self, key: Key) {
self.input.press_key(key, self.frame_count());
if (KEY_MIN_VALUE..=KEY_MAX_VALUE).contains(&key) {
self.input.input_keys.push(key);
if let Some(key) = Input::get_common_key(key) {
pub fn setbtn(&mut self, key: Key, key_state: bool) {
if key_state {
self.input.press_key(key, self.frame_count());
if let Some(key) = to_integrated_key(key) {
self.input.press_key(key, self.frame_count());
}
}
}

pub fn set_btnr(&mut self, key: Key) {
self.input.release_key(key, self.frame_count());
if let Some(key) = Input::get_common_key(key) {
if is_keyboard_key(key) {
self.input.input_keys.push(key);
}
} else {
self.input.release_key(key, self.frame_count());
if let Some(key) = to_integrated_key(key) {
self.input.release_key(key, self.frame_count());
}
}
}

pub fn set_btnv(&mut self, key: Key, key_value: f64) {
pub fn setbtnv(&mut self, key: Key, key_value: f64) {
let key_value = as_i32(key_value);
self.input.key_values.insert(key, key_value);
}

pub fn set_mouse_pos(&mut self, x: f64, y: f64) {
pub fn setmpos(&mut self, x: f64, y: f64) {
let x = as_i32(x);
let y = as_i32(y);
self.input.key_values.insert(MOUSE_POS_X, x);
Expand Down
Loading

0 comments on commit e892737

Please sign in to comment.