small refactoring

This commit is contained in:
Alula 2020-08-26 01:37:42 +02:00
parent f1e1d41931
commit 31db4bcc80
No known key found for this signature in database
GPG Key ID: 3E00485503A1D8BA
3 changed files with 32 additions and 37 deletions

View File

@ -31,7 +31,7 @@ use crate::ggez::graphics::DrawParam;
use crate::ggez::input::keyboard; use crate::ggez::input::keyboard;
use crate::ggez::mint::ColumnMatrix4; use crate::ggez::mint::ColumnMatrix4;
use crate::ggez::nalgebra::Vector2; use crate::ggez::nalgebra::Vector2;
use crate::live_debugger::LiveDebugger;
use crate::rng::RNG; use crate::rng::RNG;
use crate::scene::loading_scene::LoadingScene; use crate::scene::loading_scene::LoadingScene;
use crate::scene::Scene; use crate::scene::Scene;
@ -112,7 +112,7 @@ pub struct SharedGameState {
impl SharedGameState { impl SharedGameState {
pub fn update_key_trigger(&mut self) { pub fn update_key_trigger(&mut self) {
let mut trigger = self.key_state.0 ^ self.key_old; let mut trigger = self.key_state.0 ^ self.key_old;
trigger = self.key_state.0 & trigger; trigger &= self.key_state.0;
self.key_old = self.key_state.0; self.key_old = self.key_state.0;
self.key_trigger = KeyState(trigger); self.key_trigger = KeyState(trigger);
} }
@ -267,33 +267,30 @@ pub fn main() -> GameResult {
ctx.process_event(&event); ctx.process_event(&event);
game.ui.handle_events(ctx, &event); game.ui.handle_events(ctx, &event);
match event { if let Event::WindowEvent { event, .. } = event { match event {
Event::WindowEvent { event, .. } => match event { WindowEvent::CloseRequested => event::quit(ctx),
WindowEvent::CloseRequested => event::quit(ctx), WindowEvent::KeyboardInput {
WindowEvent::KeyboardInput { input:
input: KeyboardInput {
KeyboardInput { state: el_state,
state: el_state, virtual_keycode: Some(keycode),
virtual_keycode: Some(keycode), modifiers,
modifiers,
..
},
.. ..
} => { },
match el_state { ..
ElementState::Pressed => { } => {
let repeat = keyboard::is_key_repeated(ctx); match el_state {
game.key_down_event(ctx, keycode, modifiers.into(), repeat); ElementState::Pressed => {
} let repeat = keyboard::is_key_repeated(ctx);
ElementState::Released => { game.key_down_event(ctx, keycode, modifiers.into(), repeat);
game.key_up_event(ctx, keycode, modifiers.into()); }
} ElementState::Released => {
game.key_up_event(ctx, keycode, modifiers.into());
} }
} }
_ => {} }
},
_ => {} _ => {}
} } }
}); });
game.update(ctx)?; game.update(ctx)?;

View File

@ -105,12 +105,12 @@ pub struct Player {
} }
impl Player { impl Player {
pub fn new(state: &mut SharedGameState, ctx: &mut Context) -> GameResult<Player> { pub fn new(state: &mut SharedGameState) -> Self {
let constants = &state.constants; let constants = &state.constants;
let tex_player_name = str!("MyChar"); let tex_player_name = str!("MyChar");
Ok(Player { Self {
x: 0, x: 0,
y: 0, y: 0,
vel_x: 0, vel_x: 0,
@ -122,7 +122,7 @@ impl Player {
cond: Cond(constants.my_char.cond), cond: Cond(constants.my_char.cond),
flags: Flags(constants.my_char.flags), flags: Flags(constants.my_char.flags),
equip: Equip(constants.my_char.equip), equip: Equip(constants.my_char.equip),
direction: constants.my_char.direction.clone(), direction: constants.my_char.direction,
view: constants.my_char.view, view: constants.my_char.view,
hit: constants.my_char.hit, hit: constants.my_char.hit,
unit: constants.my_char.unit, unit: constants.my_char.unit,
@ -143,7 +143,7 @@ impl Player {
anim_wait: 0, anim_wait: 0,
anim_rect: constants.my_char.animations_right[0], anim_rect: constants.my_char.animations_right[0],
tex_player_name, tex_player_name,
}) }
} }
fn tick_normal(&mut self, state: &mut SharedGameState) -> GameResult { fn tick_normal(&mut self, state: &mut SharedGameState) -> GameResult {
@ -285,11 +285,9 @@ impl Player {
self.up = state.key_state.up(); self.up = state.key_state.up();
self.down = state.key_state.down() && !self.flags.flag_x08(); self.down = state.key_state.down() && !self.flags.flag_x08();
if state.key_trigger.jump() && (self.flags.flag_x08() || self.flags.flag_x10() || self.flags.flag_x20()) { if state.key_trigger.jump() && (self.flags.flag_x08() || self.flags.flag_x10() || self.flags.flag_x20()) && !self.flags.force_up() {
if !self.flags.force_up() { self.vel_y = -physics.jump;
self.vel_y = -physics.jump; // todo: PlaySoundObject(15, SOUND_MODE_PLAY);
// todo: PlaySoundObject(15, SOUND_MODE_PLAY);
}
} }
} }
@ -393,9 +391,9 @@ impl Player {
} }
let max_move = if self.flags.underwater() && !(self.flags.force_left() || self.flags.force_up() || self.flags.force_right() || self.flags.force_down()) { let max_move = if self.flags.underwater() && !(self.flags.force_left() || self.flags.force_up() || self.flags.force_right() || self.flags.force_down()) {
physics.max_move state.constants.my_char.water_physics.max_move
} else { } else {
physics.max_move state.constants.my_char.air_physics.max_move
}; };
self.vel_x = clamp(self.vel_x, -max_move, max_move); self.vel_x = clamp(self.vel_x, -max_move, max_move);

View File

@ -56,7 +56,7 @@ impl GameScene {
Ok(Self { Ok(Self {
tick: 0, tick: 0,
stage, stage,
player: Player::new(state, ctx)?, player: Player::new(state),
frame: Frame { frame: Frame {
x: 0, x: 0,
y: 0, y: 0,