aoe_djin/dat/
sprite.rs

1use crate::dat::common::DeString;
2
3#[derive(Protocol, Debug, Clone, PartialEq)]
4pub struct SpriteTable {
5    pub size: u16,
6    #[protocol(length_prefix(elements(size)))]
7    pub sprite_enabled: Vec<u32>,
8    #[protocol(length_prefix(pointers(sprite_enabled)))]
9    pub sprites: Vec<Sprite>,
10}
11
12#[derive(Protocol, Debug, Clone, PartialEq)]
13pub struct Sprite {
14    pub name: DeString,
15    pub filename: DeString,
16    pub particle_effect_name: DeString,
17    pub slp_id: i32,
18    pub is_loaded: bool,
19    pub force_player_color: u8,
20    pub layer: u8,
21    pub color_table: u16,
22    pub transparent_selection: bool,
23    pub bounding_box: (i16, i16, i16, i16),
24    pub num_deltas: u16,
25    pub sound_id: i16,
26    pub w_wise_sound_id: i32,
27    pub angle_sound_used: u8,
28    pub num_frames: u16,
29    pub num_angles: u16,
30    pub base_speed: f32,
31    pub frame_rate: f32,
32    pub replay_delay: f32,
33    pub sequence_type: u8,
34    pub id: i16,
35    pub mirror_flag: i8,
36    pub editor_flag: i8,
37    #[protocol(length_prefix(elements(num_deltas)))]
38    pub deltas: Vec<SpriteDelta>,
39    #[protocol(skip_if("angle_sound_used == 0"))]
40    #[protocol(length_prefix(elements(num_angles)))]
41    pub attack_sounds: Option<Vec<AngleSound>>,
42}
43
44#[derive(Protocol, Debug, Clone, PartialEq)]
45pub struct SpriteDelta {
46    pub graphic_id: i16,
47    pub padding_1: i16,
48    pub sprite_ptr: i32,
49    pub offset_x: i16,
50    pub offset_y: i16,
51    pub display_angle: i16,
52    pub padding_2: i16,
53}
54
55#[derive(Protocol, Debug, Clone, PartialEq)]
56pub struct AngleSound {
57    pub sound_delay: i16,
58    pub sound_id: u16,
59    pub wwise_sound_id: u32,
60    pub sound_delay_: i16,
61    pub sound_id_: u16,
62    pub wwise_sound_id_: u32,
63    pub sound_delay__: i16,
64    pub sound_id__: u16,
65    pub wwise_sound_id__: u32,
66}
67
68#[derive(Protocol, Debug, Clone, PartialEq)]
69pub struct SoundProp {
70    pub sound_delay: i16,
71    pub sound_id: u16,
72    pub wwise_sound_id: i32,
73}