From 4055fef911ca7bd1afcdc3928e0162464ecd7b85 Mon Sep 17 00:00:00 2001 From: dawnDus <96957561+dawndus@users.noreply.github.com> Date: Mon, 28 Feb 2022 21:45:43 -0500 Subject: [PATCH] Difficulty changes Quote NPC and original graphics sprites --- src/menu/mod.rs | 2 +- src/npc/ai/misc.rs | 7 +++++++ src/npc/ai/quote.rs | 35 +++++++++++++++++++++++++---------- src/shared_game_state.rs | 2 +- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/menu/mod.rs b/src/menu/mod.rs index cce7c54..658da21 100644 --- a/src/menu/mod.rs +++ b/src/menu/mod.rs @@ -436,7 +436,7 @@ impl Menu { )?; // Difficulty - if state.constants.is_cs_plus && !state.settings.original_textures { + if state.constants.is_cs_plus { let difficulty = GameDifficulty::from_primitive(save.difficulty); let batch = state.texture_set.get_or_load_batch(ctx, &state.constants, "MyChar")?; diff --git a/src/npc/ai/misc.rs b/src/npc/ai/misc.rs index ea479a1..eaf33e3 100644 --- a/src/npc/ai/misc.rs +++ b/src/npc/ai/misc.rs @@ -2573,7 +2573,14 @@ impl NPC { } } + let quote_offset = if self.spritesheet_id == 16 { + state.get_skinsheet_offset() * state.tile_size.as_int() as u16 * 2 + } else { + 0 + }; self.anim_rect = state.constants.npc.n355_quote_and_curly_on_balrog[self.anim_num as usize]; + self.anim_rect.top += quote_offset; + self.anim_rect.bottom += quote_offset; Ok(()) } diff --git a/src/npc/ai/quote.rs b/src/npc/ai/quote.rs index 1f1e76d..35f8eb8 100644 --- a/src/npc/ai/quote.rs +++ b/src/npc/ai/quote.rs @@ -8,7 +8,11 @@ use crate::rng::RNG; use crate::shared_game_state::SharedGameState; impl NPC { - pub fn tick_n111_quote_teleport_out(&mut self, state: &mut SharedGameState, players: [&mut Player; 2]) -> GameResult { + pub fn tick_n111_quote_teleport_out( + &mut self, + state: &mut SharedGameState, + players: [&mut Player; 2], + ) -> GameResult { match self.action_num { 0 => { self.action_num = 1; @@ -61,7 +65,8 @@ impl NPC { let dir_offset = if self.direction == Direction::Left { 0 } else { 2 }; self.anim_rect = state.constants.npc.n111_quote_teleport_out[self.anim_num as usize + dir_offset]; - let offset = players[state.textscript_vm.executor_player.index()].get_texture_offset(); + let offset = players[state.textscript_vm.executor_player.index()].get_texture_offset() + + (state.get_skinsheet_offset() * state.tile_size.as_int() as u16 * 2); self.anim_rect.top += offset; self.anim_rect.bottom += offset; @@ -76,7 +81,11 @@ impl NPC { Ok(()) } - pub fn tick_n112_quote_teleport_in(&mut self, state: &mut SharedGameState, players: [&mut Player; 2]) -> GameResult { + pub fn tick_n112_quote_teleport_in( + &mut self, + state: &mut SharedGameState, + players: [&mut Player; 2], + ) -> GameResult { match self.action_num { 0 => { self.action_num = 1; @@ -118,7 +127,8 @@ impl NPC { let dir_offset = if self.direction == Direction::Left { 0 } else { 2 }; self.anim_rect = state.constants.npc.n111_quote_teleport_out[self.anim_num as usize + dir_offset]; - let offset = players[state.textscript_vm.executor_player.index()].get_texture_offset(); + let offset = players[state.textscript_vm.executor_player.index()].get_texture_offset() + + (state.get_skinsheet_offset() * state.tile_size.as_int() as u16 * 2); self.anim_rect.top += offset; self.anim_rect.bottom += offset; @@ -133,7 +143,12 @@ impl NPC { Ok(()) } - pub(crate) fn tick_n150_quote(&mut self, state: &mut SharedGameState, players: [&mut Player; 2], npc_list: &NPCList) -> GameResult { + pub(crate) fn tick_n150_quote( + &mut self, + state: &mut SharedGameState, + players: [&mut Player; 2], + npc_list: &NPCList, + ) -> GameResult { match self.action_num { 0 => { self.action_num = 1; @@ -144,11 +159,10 @@ impl NPC { self.x = player.x; self.y = player.y; - self.direction = Direction::from_int(self.tsc_direction.saturating_sub(10) as usize) - .unwrap_or(Direction::Left); + self.direction = + Direction::from_int(self.tsc_direction.saturating_sub(10) as usize).unwrap_or(Direction::Left); } else { - self.direction = Direction::from_int(self.tsc_direction as usize) - .unwrap_or(Direction::Left); + self.direction = Direction::from_int(self.tsc_direction as usize).unwrap_or(Direction::Left); } } 2 => { @@ -280,7 +294,8 @@ impl NPC { self.anim_rect.bottom = self.anim_rect.top + self.action_counter / 4; } - let offset = players[state.textscript_vm.executor_player.index()].get_texture_offset(); + let offset = players[state.textscript_vm.executor_player.index()].get_texture_offset() + + (state.get_skinsheet_offset() * state.tile_size.as_int() as u16 * 2); self.anim_rect.top += offset; self.anim_rect.bottom += offset; diff --git a/src/shared_game_state.rs b/src/shared_game_state.rs index 60ddf7f..3039ebb 100644 --- a/src/shared_game_state.rs +++ b/src/shared_game_state.rs @@ -608,7 +608,7 @@ impl SharedGameState { } pub fn get_skinsheet_offset(&self) -> u16 { - if !self.constants.is_cs_plus || self.settings.original_textures { + if !self.constants.is_cs_plus { return 0; }