From 0bf4cd1264d8aac0195d4145e090aa9c616fdc44 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 16 Mar 2025 14:13:26 -0400 Subject: [PATCH] Create CharacterMode enum --- src/bin/kawari-world.rs | 1 - src/world/chat_handler.rs | 3 +-- src/world/mod.rs | 1 + src/world/player_spawn.rs | 15 +++++++++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/bin/kawari-world.rs b/src/bin/kawari-world.rs index 4107391..aaff236 100644 --- a/src/bin/kawari-world.rs +++ b/src/bin/kawari-world.rs @@ -286,7 +286,6 @@ async fn main() { mp_curr: 100, mp_max: 100, model_type: 1, - state: 1, gm_rank: 3, look: CUSTOMIZE_DATA, fc_tag: "LOCAL".to_string(), diff --git a/src/world/chat_handler.rs b/src/world/chat_handler.rs index 6f7b069..1a8f260 100644 --- a/src/world/chat_handler.rs +++ b/src/world/chat_handler.rs @@ -3,7 +3,7 @@ use crate::{ ipc::{IPCOpCode, IPCSegment, IPCStructData}, packet::{PacketSegment, SegmentType}, timestamp_secs, - world::PlayerSpawn, + world::{CharacterMode, PlayerSpawn}, }; use super::{ChatMessage, Position, ZoneConnection}; @@ -53,7 +53,6 @@ impl ChatHandler { mp_curr: 100, mp_max: 100, model_type: 1, - state: 1, gm_rank: 3, spawn_index: connection.get_free_spawn_index(), look: CUSTOMIZE_DATA, diff --git a/src/world/mod.rs b/src/world/mod.rs index 2711e4d..0ec0d6f 100644 --- a/src/world/mod.rs +++ b/src/world/mod.rs @@ -1,4 +1,5 @@ mod player_spawn; +pub use player_spawn::CharacterMode; pub use player_spawn::PlayerSpawn; mod position; diff --git a/src/world/player_spawn.rs b/src/world/player_spawn.rs index 54a2c80..bf3ebad 100644 --- a/src/world/player_spawn.rs +++ b/src/world/player_spawn.rs @@ -7,6 +7,17 @@ use crate::common::{read_string, write_string}; use super::position::Position; use super::status_effect::StatusEffect; +#[binrw] +#[brw(little)] +#[brw(repr = u8)] +#[derive(Debug, Clone, Default, PartialEq)] +pub enum CharacterMode { + None = 0x0, + #[default] + Normal = 0x1, + Dead = 0x2, +} + #[binrw] #[brw(little)] #[derive(Debug, Clone, Default)] @@ -64,7 +75,7 @@ pub struct PlayerSpawn { pub u25: u8, pub u26: u8, pub spawn_index: u8, - pub state: u8, + pub mode: CharacterMode, pub persistent_emote: u8, pub model_type: u8, pub subtype: u8, @@ -124,7 +135,7 @@ mod tests { assert_eq!(player_spawn.hp_max, 159); assert_eq!(player_spawn.mp_curr, 10000); assert_eq!(player_spawn.mp_max, 10000); - assert_eq!(player_spawn.state, 1); + assert_eq!(player_spawn.mode, CharacterMode::Normal); assert_eq!(player_spawn.spawn_index, 0); assert_eq!(player_spawn.level, 1); assert_eq!(player_spawn.class_job, 1); // adventurer