diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-14 16:17:20 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-14 16:17:20 +0100 |
commit | 6c1870c9405a80cb9f08e7fbb2db0b504522e1b2 (patch) | |
tree | d8db061bf9ae2ad6e67013e9cb378bca51303f55 /src/to_clt/obj.rs | |
parent | 3cb97b94d3e3d83fbbbefde9c0a40cdd27ea5416 (diff) | |
download | mt_net-6c1870c9405a80cb9f08e7fbb2db0b504522e1b2.tar.xz |
Implement NodeMeta and add Inventory stub
Diffstat (limited to 'src/to_clt/obj.rs')
-rw-r--r-- | src/to_clt/obj.rs | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/src/to_clt/obj.rs b/src/to_clt/obj.rs new file mode 100644 index 0000000..9e88fff --- /dev/null +++ b/src/to_clt/obj.rs @@ -0,0 +1,168 @@ +use super::*; + +#[mt_derive(to = "clt", repr = "str")] +pub enum ObjVisual { + Cube, + Sprite, + UprightSprite, + Mesh, + Wielditem, + Item, +} + +#[mt_derive(to = "clt")] +pub struct ObjProps { + #[mt(const_before = "4u8")] // version + pub max_hp: u16, // player only + pub collide_with_nodes: bool, + pub weight: f32, // deprecated + pub collision_box: ([f32; 3], [f32; 3]), + pub selection_box: ([f32; 3], [f32; 3]), + pub pointable: bool, + pub visual: ObjVisual, + pub visual_size: [f32; 3], + pub textures: Vec<String>, + pub sprite_sheet_size: [i16; 2], // in sprites + pub sprite_pos: [i16; 2], // in sprite sheet + pub visible: bool, + pub make_footstep_sounds: bool, + pub rotate_speed: f32, // in radians per second + pub mesh: String, + pub colors: Vec<Color>, + pub collide_with_objs: bool, + pub step_height: f32, + pub face_rotate_dir: bool, + pub face_rotate_dir_off: f32, // in degrees + pub backface_cull: bool, + pub nametag: String, + pub nametag_color: Color, + pub face_rotate_speed: f32, // in degrees per second + pub infotext: String, + pub itemstring: String, + pub glow: i8, + pub max_breath: u16, // player only + pub eye_height: f32, // player only + pub zoom_fov: f32, // in degrees. player only + pub use_texture_alpha: bool, + pub dmg_texture_mod: String, // suffix + pub shaded: bool, + pub show_on_minimap: bool, + pub nametag_bg: Color, +} + +#[mt_derive(to = "clt")] +pub struct ObjPos { + pub pos: [f32; 3], + pub vel: [f32; 3], + pub acc: [f32; 3], + pub rot: [f32; 3], + pub interpolate: bool, + pub end: bool, + pub update_interval: f32, +} + +#[mt_derive(to = "clt")] +pub struct ObjSprite { + pub frame0: [i16; 2], + pub frames: u16, + pub frame_duration: f32, + pub view_angle_frames: bool, +} + +#[mt_derive(to = "clt")] +pub struct ObjAnim { + pub frames: [i32; 2], + pub speed: f32, + pub blend: f32, + pub no_loop: bool, +} + +#[mt_derive(to = "clt")] +pub struct ObjBonePos { + pub pos: [f32; 3], + pub rot: [f32; 3], +} + +#[mt_derive(to = "clt")] +pub struct ObjAttach { + pub parent_id: u16, + pub bone: String, + pub pos: [f32; 3], + pub rot: [f32; 3], + pub force_visible: bool, +} + +#[mt_derive(to = "clt")] +pub struct ObjPhysicsOverride { + pub walk: f32, + pub jump: f32, + pub gravity: f32, + // the following are player only + pub no_sneak: bool, + pub no_sneak_glitch: bool, + pub old_sneak: bool, +} + +pub const GENERIC_CAO: u8 = 101; + +#[mt_derive(to = "clt", repr = "u8", tag = "type", content = "data")] +pub enum ObjMsg { + Props(Box<ObjProps>) = 0, + Pos(ObjPos), + TextureMod { + #[serde(rename = "mod")] + texture_mod: String, + }, + Sprite(ObjSprite), + Hp { + hp: u16, + }, + ArmorGroups { + armor: HashMap<String, u16>, + }, + Anim(ObjAnim), + BonePos { + bone: String, + pos: ObjBonePos, + }, + Attach(ObjAttach), + PhysicsOverride(ObjPhysicsOverride), + SpawnInfant { + #[mt(const_after = "GENERIC_CAO")] + id: u16, + } = 11, + AnimSpeed { + speed: f32, + }, +} + +#[mt_derive(to = "clt")] +pub struct ObjIdMsg { + pub id: u16, + #[mt(size = "u16")] + pub msg: ObjMsg, +} + +#[mt_derive(to = "clt")] +pub struct ObjInitMsg(#[mt(size = "u32")] pub ObjMsg); + +#[mt_derive(to = "clt")] +pub struct ObjInitData { + #[mt(const_before = "1u8")] // version + pub name: String, + pub is_player: bool, + pub id: u16, + pub pos: [f32; 3], + pub rot: [f32; 3], + pub hp: u16, + #[mt(len = "u8")] + pub msgs: Vec<ObjInitMsg>, +} + +#[mt_derive(to = "clt")] +pub struct ObjAdd { + pub id: u16, + #[mt(const_before = "GENERIC_CAO")] + #[mt(size = "u32")] + pub init_data: ObjInitData, +} |