diff --git a/src/game_state.rs b/src/game_state.rs index ec0f898557b0f0efb5673f5319572c40d437f7c8..efe52e080ca00d20d8d007bc1e2536fc0ae3066d 100644 --- a/src/game_state.rs +++ b/src/game_state.rs @@ -402,35 +402,27 @@ impl GameState { fn draw_exit(&mut self, x: usize, y: usize, ctx: &mut Context) { GameState::draw_tile(self, Color::WHITE, x, y, ctx); - self.textures.exit.draw(ctx, DrawParams { - position: Vec2::new(x as f32 * 33.0, y as f32 * 33.0), - scale: Vec2::new(1.0, 1.0), - origin: Vec2::new(0.0, 0.0), + self.draw_texture(&self.textures.exit, x, y, 1.0, 0.0, Color::WHITE, ctx); + } + + fn draw_texture(&self, texture: &Texture, x: usize, y: usize, scale: f32, inset: f32, color: Color, ctx: &mut Context) { + texture.draw(ctx, DrawParams { + position: Vec2::new(inset + (x as f32 * 33.0), inset + (y as f32 * 33.0)), + scale: Vec2::new(scale, scale), + origin: Vec2::new(inset, inset), rotation: 0.0, - color: Color::WHITE, + color, }) } fn draw_treasure(&mut self, x: usize, y: usize, ctx: &mut Context) { GameState::draw_tile(self, Color::WHITE, x, y, ctx); - self.textures.treasure.draw(ctx, DrawParams { - position: Vec2::new(x as f32 * 33.0, y as f32 * 33.0), - scale: Vec2::new(1.0, 1.0), - origin: Vec2::new(0.0, 0.0), - rotation: 0.0, - color: Color::WHITE, - }) + self.draw_texture(&self.textures.treasure, x, y, 1.0, 0.0, Color::WHITE, ctx); } fn draw_tile(&mut self, color: Color, x: usize, y: usize, ctx: &mut Context) { - self.textures.tile.draw(ctx, DrawParams { - position: Vec2::new(x as f32 * 33.0, y as f32 * 33.0), - scale: Vec2::new(1.0, 1.0), - origin: Vec2::new(0.0, 0.0), - rotation: 0.0, - color, - }) + self.draw_texture(&self.textures.tile, x, y, 1.0, 0.0, color, ctx); } fn draw_wall(&mut self, x: usize, y: usize, ctx: &mut Context) { @@ -442,13 +434,7 @@ impl GameState { 11111111 => tex = self.textures.tile.clone(), _ => {} } - tex.draw(ctx, DrawParams { - position: Vec2::new(x as f32 * 33.0, y as f32 * 33.0), - scale: Vec2::new(1.0, 1.0), - origin: Vec2::new(0.0, 0.0), - rotation: 0.0, - color: Color::WHITE, - }) + self.draw_texture(&tex, x, y, 1.0, 0.0, Color::WHITE, ctx); } fn calc_walltype(&self, x: usize, y: usize) -> u32 { @@ -496,25 +482,13 @@ impl GameState { fn draw_player(&mut self, x: usize, y: usize, ctx: &mut Context) { GameState::draw_tile(self, Color::WHITE, x, y, ctx); - let draw_params = GameState::create_entity_draw_params(x, y); - self.textures.player.draw(ctx, draw_params) + self.draw_texture(&self.textures.player, x, y, 1.15, 16.0, Color::WHITE, ctx); } fn draw_enemy(&mut self, x: usize, y: usize, ctx: &mut Context) { GameState::draw_tile(self, Color::WHITE, x, y, ctx); - let draw_params = GameState::create_entity_draw_params(x, y); - self.textures.enemy.draw(ctx, draw_params) - } - - fn create_entity_draw_params(x: usize, y: usize) -> DrawParams { - DrawParams { - position: Vec2::new(16.0 + (x as f32) * 33.0, 16.0 + (y as f32) * 33.0), - scale: Vec2::new(1.0, 1.0), - origin: Vec2::new(16.0, 16.0), - rotation: 0.0, - color: Color::WHITE, - } + self.draw_texture(&self.textures.enemy, x, y, 1.15, 14.0, Color::WHITE, ctx); } fn draw_stats(&self, ctx: &mut Context) {