mirror of
https://github.com/doukutsu-rs/doukutsu-rs
synced 2025-12-04 02:47:50 +00:00
add missing caret
This commit is contained in:
parent
d2c5f2161a
commit
f00f0e39cc
30
src/caret.rs
30
src/caret.rs
|
|
@ -1,7 +1,7 @@
|
||||||
use std::fs::read_to_string;
|
use std::fs::read_to_string;
|
||||||
|
|
||||||
use crate::bitfield;
|
use crate::bitfield;
|
||||||
use crate::common::{Condition, Direction, Rect};
|
use crate::common::{Condition, Direction, Rect, CDEG_RAD};
|
||||||
use crate::engine_constants::EngineConstants;
|
use crate::engine_constants::EngineConstants;
|
||||||
use crate::rng::RNG;
|
use crate::rng::RNG;
|
||||||
|
|
||||||
|
|
@ -40,6 +40,7 @@ pub struct Caret {
|
||||||
pub cond: Condition,
|
pub cond: Condition,
|
||||||
pub direction: Direction,
|
pub direction: Direction,
|
||||||
pub anim_rect: Rect<u16>,
|
pub anim_rect: Rect<u16>,
|
||||||
|
action_num: u16,
|
||||||
anim_num: u16,
|
anim_num: u16,
|
||||||
anim_counter: u16,
|
anim_counter: u16,
|
||||||
}
|
}
|
||||||
|
|
@ -61,6 +62,7 @@ impl Caret {
|
||||||
cond: Condition(0x80),
|
cond: Condition(0x80),
|
||||||
direction: direct,
|
direction: direct,
|
||||||
anim_rect: Rect::new(0, 0, 0, 0),
|
anim_rect: Rect::new(0, 0, 0, 0),
|
||||||
|
action_num: 0,
|
||||||
anim_num: 0,
|
anim_num: 0,
|
||||||
anim_counter: 0,
|
anim_counter: 0,
|
||||||
}
|
}
|
||||||
|
|
@ -233,7 +235,31 @@ impl Caret {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CaretType::HurtParticles => {}
|
CaretType::HurtParticles => {
|
||||||
|
if self.action_num == 0 {
|
||||||
|
self.action_num = 1;
|
||||||
|
let angle = rng.range(0..255) as f64 * CDEG_RAD;
|
||||||
|
self.vel_x = (angle.cos() * 1024.0) as isize;
|
||||||
|
self.vel_y = (angle.sin() * 1024.0) as isize;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.x += self.vel_x;
|
||||||
|
self.y += self.vel_y;
|
||||||
|
|
||||||
|
if self.anim_counter == 0 {
|
||||||
|
self.anim_rect = constants.caret.hurt_particles_rects[self.anim_num as usize];
|
||||||
|
}
|
||||||
|
|
||||||
|
self.anim_counter += 1;
|
||||||
|
if self.anim_counter > 2 {
|
||||||
|
self.anim_counter = 0;
|
||||||
|
self.anim_num += 1;
|
||||||
|
|
||||||
|
if self.anim_num >= constants.caret.hurt_particles_rects.len() as u16 {
|
||||||
|
self.cond.set_alive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
CaretType::Explosion => {
|
CaretType::Explosion => {
|
||||||
if self.anim_counter == 0 {
|
if self.anim_counter == 0 {
|
||||||
self.anim_rect = constants.caret.explosion_rects[self.anim_num as usize];
|
self.anim_rect = constants.caret.explosion_rects[self.anim_num as usize];
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@ use case_insensitive_hashmap::CaseInsensitiveHashMap;
|
||||||
use log::info;
|
use log::info;
|
||||||
|
|
||||||
use crate::case_insensitive_hashmap;
|
use crate::case_insensitive_hashmap;
|
||||||
use crate::common::{Flag, Rect, BulletFlag};
|
use crate::common::{BulletFlag, Flag, Rect};
|
||||||
|
use crate::engine_constants::npcs::NPCConsts;
|
||||||
use crate::player::ControlMode;
|
use crate::player::ControlMode;
|
||||||
use crate::str;
|
use crate::str;
|
||||||
use crate::text_script::TextScriptEncoding;
|
use crate::text_script::TextScriptEncoding;
|
||||||
use crate::engine_constants::npcs::NPCConsts;
|
|
||||||
|
|
||||||
mod npcs;
|
mod npcs;
|
||||||
|
|
||||||
|
|
@ -59,6 +59,7 @@ pub struct CaretConsts {
|
||||||
pub drowned_quote_right_rect: Rect<u16>,
|
pub drowned_quote_right_rect: Rect<u16>,
|
||||||
pub level_up_rects: Vec<Rect<u16>>,
|
pub level_up_rects: Vec<Rect<u16>>,
|
||||||
pub level_down_rects: Vec<Rect<u16>>,
|
pub level_down_rects: Vec<Rect<u16>>,
|
||||||
|
pub hurt_particles_rects: Vec<Rect<u16>>,
|
||||||
pub explosion_rects: Vec<Rect<u16>>,
|
pub explosion_rects: Vec<Rect<u16>>,
|
||||||
pub little_particles_rects: Vec<Rect<u16>>,
|
pub little_particles_rects: Vec<Rect<u16>>,
|
||||||
pub exhaust_rects: Vec<Rect<u16>>,
|
pub exhaust_rects: Vec<Rect<u16>>,
|
||||||
|
|
@ -81,6 +82,7 @@ impl Clone for CaretConsts {
|
||||||
drowned_quote_right_rect: self.drowned_quote_right_rect,
|
drowned_quote_right_rect: self.drowned_quote_right_rect,
|
||||||
level_up_rects: self.level_up_rects.clone(),
|
level_up_rects: self.level_up_rects.clone(),
|
||||||
level_down_rects: self.level_down_rects.clone(),
|
level_down_rects: self.level_down_rects.clone(),
|
||||||
|
hurt_particles_rects: self.hurt_particles_rects.clone(),
|
||||||
explosion_rects: self.explosion_rects.clone(),
|
explosion_rects: self.explosion_rects.clone(),
|
||||||
little_particles_rects: self.little_particles_rects.clone(),
|
little_particles_rects: self.little_particles_rects.clone(),
|
||||||
exhaust_rects: self.exhaust_rects.clone(),
|
exhaust_rects: self.exhaust_rects.clone(),
|
||||||
|
|
@ -383,6 +385,15 @@ impl EngineConstants {
|
||||||
Rect { left: 0, top: 96, right: 56, bottom: 112 },
|
Rect { left: 0, top: 96, right: 56, bottom: 112 },
|
||||||
Rect { left: 0, top: 112, right: 56, bottom: 128 },
|
Rect { left: 0, top: 112, right: 56, bottom: 128 },
|
||||||
],
|
],
|
||||||
|
hurt_particles_rects: vec![
|
||||||
|
Rect { left: 56, top: 8, right: 64, bottom: 16 },
|
||||||
|
Rect { left: 64, top: 8, right: 72, bottom: 16 },
|
||||||
|
Rect { left: 72, top: 8, right: 80, bottom: 16 },
|
||||||
|
Rect { left: 80, top: 8, right: 88, bottom: 16 },
|
||||||
|
Rect { left: 88, top: 8, right: 96, bottom: 16 },
|
||||||
|
Rect { left: 96, top: 8, right: 104, bottom: 16 },
|
||||||
|
Rect { left: 104, top: 8, right: 112, bottom: 16 },
|
||||||
|
],
|
||||||
explosion_rects: vec![
|
explosion_rects: vec![
|
||||||
Rect { left: 112, top: 0, right: 144, bottom: 32 },
|
Rect { left: 112, top: 0, right: 144, bottom: 32 },
|
||||||
Rect { left: 144, top: 0, right: 176, bottom: 32 },
|
Rect { left: 144, top: 0, right: 176, bottom: 32 },
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue