Merge branch 'doukutsu-rs:master' into ballos
This commit is contained in:
commit
85b1b71a0f
|
@ -835,6 +835,10 @@ impl GameEntity<&NPCList> for Player {
|
|||
return Ok(());
|
||||
}
|
||||
|
||||
if state.textscript_vm.reset_invicibility {
|
||||
self.shock_counter = 0;
|
||||
}
|
||||
|
||||
if self.damage_counter != 0 {
|
||||
self.damage_counter -= 1;
|
||||
}
|
||||
|
|
|
@ -272,12 +272,13 @@ impl GameScene {
|
|||
let (x, y) = (x * state.scale, y * state.scale);
|
||||
let canvas_w_scaled = state.canvas_size.0 as f32 * state.scale;
|
||||
let canvas_h_scaled = state.canvas_size.1 as f32 * state.scale;
|
||||
let level_width = (self.stage.map.width as f32 - 1.0) * self.stage.map.tile_size.as_float();
|
||||
let level_height = (self.stage.map.height as f32 - 1.0) * self.stage.map.tile_size.as_float();
|
||||
let left_side = -x;
|
||||
let right_side = -x + level_width * state.scale;
|
||||
let upper_side = -y;
|
||||
let lower_side = -y + level_height * state.scale;
|
||||
let half_block = self.stage.map.tile_size.as_float() * 0.5 * state.scale;
|
||||
let level_width = (self.stage.map.width as f32) * self.stage.map.tile_size.as_float();
|
||||
let level_height = (self.stage.map.height as f32) * self.stage.map.tile_size.as_float();
|
||||
let left_side = -x - half_block;
|
||||
let right_side = left_side + level_width * state.scale;
|
||||
let upper_side = -y - half_block;
|
||||
let lower_side = upper_side + level_height * state.scale;
|
||||
|
||||
if left_side > 0.0 {
|
||||
let rect = Rect::new(0, 0, left_side as isize, canvas_h_scaled as isize);
|
||||
|
@ -962,11 +963,20 @@ impl GameScene {
|
|||
325 => {
|
||||
let size = 0.5 * (npc.anim_num as f32 + 1.0);
|
||||
self.draw_light(
|
||||
interpolate_fix9_scale(npc.prev_x - self.frame.prev_x, npc.x - self.frame.x, state.frame_time),
|
||||
interpolate_fix9_scale(npc.prev_y - self.frame.prev_y, npc.y - self.frame.y, state.frame_time),
|
||||
interpolate_fix9_scale(
|
||||
npc.prev_x - self.frame.prev_x,
|
||||
npc.x - self.frame.x,
|
||||
state.frame_time,
|
||||
),
|
||||
interpolate_fix9_scale(
|
||||
npc.prev_y - self.frame.prev_y,
|
||||
npc.y - self.frame.y,
|
||||
state.frame_time,
|
||||
),
|
||||
size,
|
||||
(255, 255, 255),
|
||||
batch,)
|
||||
batch,
|
||||
)
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
@ -1203,6 +1213,7 @@ impl GameScene {
|
|||
};
|
||||
self.player1.tick(state, &self.npc_list)?;
|
||||
self.player2.tick(state, &self.npc_list)?;
|
||||
state.textscript_vm.reset_invicibility = false;
|
||||
|
||||
if self.player1.damage > 0 {
|
||||
let xp_loss = self.player1.damage * if self.player1.equip.has_arms_barrier() { 1 } else { 2 };
|
||||
|
|
|
@ -119,6 +119,7 @@ pub struct TextScriptVM {
|
|||
/// while parsing no one noticed them.
|
||||
pub strict_mode: bool,
|
||||
pub suspend: bool,
|
||||
pub reset_invicibility: bool,
|
||||
pub numbers: [u16; 4],
|
||||
pub face: u16,
|
||||
pub item: u16,
|
||||
|
@ -184,6 +185,7 @@ impl TextScriptVM {
|
|||
executor_player: TargetPlayer::Player1,
|
||||
strict_mode: false,
|
||||
suspend: true,
|
||||
reset_invicibility: false,
|
||||
numbers: [0; 4],
|
||||
face: 0,
|
||||
item: 0,
|
||||
|
@ -253,6 +255,7 @@ impl TextScriptVM {
|
|||
|
||||
pub fn start_script(&mut self, event_num: u16) {
|
||||
self.reset();
|
||||
self.reset_invicibility = true;
|
||||
self.state = TextScriptExecutionState::Running(event_num, 0);
|
||||
|
||||
log::info!("Started script: #{:04}", event_num);
|
||||
|
|
|
@ -98,7 +98,12 @@ impl OggPlaybackEngine {
|
|||
|
||||
let mut buf = match music.read_dec_packet_itl() {
|
||||
Ok(Some(buf)) => buf,
|
||||
Ok(None) | Err(_) => {
|
||||
Ok(None) => {
|
||||
self.playing_intro = false;
|
||||
return;
|
||||
}
|
||||
Err(e) => {
|
||||
log::error!("Error decoding intro: {}", e);
|
||||
self.playing_intro = false;
|
||||
return;
|
||||
}
|
||||
|
@ -175,7 +180,7 @@ impl OggPlaybackEngine {
|
|||
let s2 =
|
||||
(*data.get_unchecked(clamp(upos + 1, 0, data.len() - 1)) as f32) / 32768.0;
|
||||
|
||||
(s1 + (s2 - s1) * pos.fract()) as i16
|
||||
((s1 + (s2 - s1) * pos.fract()) * 32768.0) as i16
|
||||
};
|
||||
tmp_data.push(s);
|
||||
|
||||
|
|
Loading…
Reference in New Issue