diff --git a/src/scene/game_scene.rs b/src/scene/game_scene.rs index 9217b17..476c6ca 100644 --- a/src/scene/game_scene.rs +++ b/src/scene/game_scene.rs @@ -36,7 +36,7 @@ use crate::npc::boss::BossNPC; use crate::npc::list::NPCList; use crate::npc::{NPCLayer, NPC}; use crate::physics::{PhysicalEntity, OFFSETS}; -use crate::player::{Player, TargetPlayer}; +use crate::player::{ControlMode, Player, TargetPlayer}; use crate::rng::XorShift; use crate::scene::title_scene::TitleScene; use crate::scene::Scene; @@ -1693,6 +1693,17 @@ impl Scene for GameScene { fn draw(&self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult { //graphics::set_canvas(ctx, Some(&state.game_canvas)); + + if self.player1.control_mode == ControlMode::IronHead { + let clip_rect: Rect = Rect::new_size( + (((state.canvas_size.0 - 320.0) * 0.5) * state.scale) as _, + (((state.canvas_size.1 - 240.0) * 0.5) * state.scale) as _, + (320.0 * state.scale) as _, + (240.0 * state.scale) as _, + ); + graphics::set_clip_rect(ctx, Some(clip_rect))?; + } + let stage_textures_ref = &*self.stage_textures.deref().borrow(); self.background.draw(state, ctx, &self.frame, stage_textures_ref, &self.stage)?; self.tilemap.draw(state, ctx, &self.frame, TileLayer::Background, stage_textures_ref, &self.stage)?; @@ -1731,6 +1742,10 @@ impl Scene for GameScene { self.draw_black_bars(state, ctx)?; + if self.player1.control_mode == ControlMode::IronHead { + graphics::set_clip_rect(ctx, None)?; + } + if self.inventory_dim > 0.0 { let rect = Rect::new(0, 0, state.screen_size.0 as isize + 1, state.screen_size.1 as isize + 1); let mut dim_color = state.constants.inventory_dim_color;