From 5111a384241df3b95723812d1abb2777dd42b87e Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Fri, 2 May 2025 00:47:11 -0400 Subject: [PATCH] Re-organize IPC segments into the ipc module These were kind of scattered everywhere, instead we should move them into their own module. Kawari's custom IPC is moved here too. --- src/bin/kawari-lobby.rs | 10 ++++---- src/bin/kawari-login.rs | 2 +- src/bin/kawari-world.rs | 24 +++++++++---------- src/common/mod.rs | 2 -- src/{world/chat.rs => ipc/chat/mod.rs} | 0 .../custom_ipc.rs => ipc/kawari/mod.rs} | 6 ++--- .../ipc => ipc/lobby}/character_action.rs | 0 .../ipc => ipc/lobby}/character_list.rs | 0 .../ipc => ipc/lobby}/client_version_info.rs | 0 src/{lobby/ipc => ipc/lobby}/mod.rs | 0 src/{lobby/ipc => ipc/lobby}/server_list.rs | 0 .../ipc => ipc/lobby}/service_account_list.rs | 0 src/ipc/mod.rs | 4 ++++ src/{world/ipc => ipc/zone}/action_request.rs | 0 src/{world/ipc => ipc/zone}/action_result.rs | 0 src/{world/ipc => ipc/zone}/actor_control.rs | 0 src/{world/ipc => ipc/zone}/actor_move.rs | 0 src/{world/ipc => ipc/zone}/actor_set_pos.rs | 0 src/{world/ipc => ipc/zone}/chat_message.rs | 0 src/{world/ipc => ipc/zone}/common_spawn.rs | 0 src/{world/ipc => ipc/zone}/container_info.rs | 0 src/{world/ipc => ipc/zone}/equip.rs | 0 src/{world/ipc => ipc/zone}/event_play.rs | 0 src/{world/ipc => ipc/zone}/event_start.rs | 0 src/{world/ipc => ipc/zone}/init_zone.rs | 0 .../ipc => ipc/zone}/inventory_modify.rs | 0 src/{world/ipc => ipc/zone}/item_info.rs | 0 src/{world/ipc => ipc/zone}/mod.rs | 0 src/{world/ipc => ipc/zone}/npc_spawn.rs | 0 src/{world/ipc => ipc/zone}/player_setup.rs | 0 src/{world/ipc => ipc/zone}/player_spawn.rs | 0 src/{world/ipc => ipc/zone}/player_stats.rs | 0 src/{world/ipc => ipc/zone}/social_list.rs | 0 src/{world/ipc => ipc/zone}/status_effect.rs | 0 .../ipc => ipc/zone}/status_effect_list.rs | 0 .../ipc => ipc/zone}/update_class_info.rs | 0 src/{world/ipc => ipc/zone}/weather_change.rs | 0 src/lib.rs | 3 +++ src/lobby/connection.rs | 16 +++++-------- src/lobby/mod.rs | 3 --- src/login/database.rs | 2 +- src/packet/parsing.rs | 3 ++- src/world/chat_handler.rs | 16 ++++++------- src/world/connection.rs | 14 +++++------ src/world/database.rs | 2 +- src/world/inventory.rs | 2 +- src/world/lua.rs | 12 ++++------ src/world/mod.rs | 4 ---- src/world/status_effects.rs | 2 +- 49 files changed, 57 insertions(+), 70 deletions(-) rename src/{world/chat.rs => ipc/chat/mod.rs} (100%) rename src/{common/custom_ipc.rs => ipc/kawari/mod.rs} (98%) rename src/{lobby/ipc => ipc/lobby}/character_action.rs (100%) rename src/{lobby/ipc => ipc/lobby}/character_list.rs (100%) rename src/{lobby/ipc => ipc/lobby}/client_version_info.rs (100%) rename src/{lobby/ipc => ipc/lobby}/mod.rs (100%) rename src/{lobby/ipc => ipc/lobby}/server_list.rs (100%) rename src/{lobby/ipc => ipc/lobby}/service_account_list.rs (100%) create mode 100644 src/ipc/mod.rs rename src/{world/ipc => ipc/zone}/action_request.rs (100%) rename src/{world/ipc => ipc/zone}/action_result.rs (100%) rename src/{world/ipc => ipc/zone}/actor_control.rs (100%) rename src/{world/ipc => ipc/zone}/actor_move.rs (100%) rename src/{world/ipc => ipc/zone}/actor_set_pos.rs (100%) rename src/{world/ipc => ipc/zone}/chat_message.rs (100%) rename src/{world/ipc => ipc/zone}/common_spawn.rs (100%) rename src/{world/ipc => ipc/zone}/container_info.rs (100%) rename src/{world/ipc => ipc/zone}/equip.rs (100%) rename src/{world/ipc => ipc/zone}/event_play.rs (100%) rename src/{world/ipc => ipc/zone}/event_start.rs (100%) rename src/{world/ipc => ipc/zone}/init_zone.rs (100%) rename src/{world/ipc => ipc/zone}/inventory_modify.rs (100%) rename src/{world/ipc => ipc/zone}/item_info.rs (100%) rename src/{world/ipc => ipc/zone}/mod.rs (100%) rename src/{world/ipc => ipc/zone}/npc_spawn.rs (100%) rename src/{world/ipc => ipc/zone}/player_setup.rs (100%) rename src/{world/ipc => ipc/zone}/player_spawn.rs (100%) rename src/{world/ipc => ipc/zone}/player_stats.rs (100%) rename src/{world/ipc => ipc/zone}/social_list.rs (100%) rename src/{world/ipc => ipc/zone}/status_effect.rs (100%) rename src/{world/ipc => ipc/zone}/status_effect_list.rs (100%) rename src/{world/ipc => ipc/zone}/update_class_info.rs (100%) rename src/{world/ipc => ipc/zone}/weather_change.rs (100%) diff --git a/src/bin/kawari-lobby.rs b/src/bin/kawari-lobby.rs index ffffb78..48f4c8b 100644 --- a/src/bin/kawari-lobby.rs +++ b/src/bin/kawari-lobby.rs @@ -1,12 +1,12 @@ use kawari::RECEIVE_BUFFER_SIZE; use kawari::common::GameData; -use kawari::common::custom_ipc::CustomIpcData; -use kawari::common::custom_ipc::CustomIpcSegment; -use kawari::common::custom_ipc::CustomIpcType; use kawari::config::get_config; +use kawari::ipc::kawari::CustomIpcData; +use kawari::ipc::kawari::CustomIpcSegment; +use kawari::ipc::kawari::CustomIpcType; +use kawari::ipc::lobby::ServiceAccount; +use kawari::ipc::lobby::{ClientLobbyIpcData, ServerLobbyIpcSegment}; use kawari::lobby::LobbyConnection; -use kawari::lobby::ipc::ServiceAccount; -use kawari::lobby::ipc::{ClientLobbyIpcData, ServerLobbyIpcSegment}; use kawari::lobby::send_custom_world_packet; use kawari::oodle::OodleNetwork; use kawari::packet::ConnectionType; diff --git a/src/bin/kawari-login.rs b/src/bin/kawari-login.rs index e07bf4b..f9f57dc 100644 --- a/src/bin/kawari-login.rs +++ b/src/bin/kawari-login.rs @@ -6,8 +6,8 @@ use axum::routing::post; use axum::{Form, Router, routing::get}; use axum_extra::extract::CookieJar; use axum_extra::extract::cookie::{Cookie, Expiration}; -use kawari::common::custom_ipc::{CustomIpcData, CustomIpcSegment, CustomIpcType}; use kawari::config::get_config; +use kawari::ipc::kawari::{CustomIpcData, CustomIpcSegment, CustomIpcType}; use kawari::lobby::send_custom_world_packet; use kawari::login::{LoginDatabase, LoginError}; use minijinja::{Environment, context}; diff --git a/src/bin/kawari-world.rs b/src/bin/kawari-world.rs index a8e1b25..d321026 100644 --- a/src/bin/kawari-world.rs +++ b/src/bin/kawari-world.rs @@ -3,33 +3,31 @@ use std::net::SocketAddr; use std::sync::{Arc, Mutex}; use kawari::RECEIVE_BUFFER_SIZE; -use kawari::common::custom_ipc::{CustomIpcData, CustomIpcSegment, CustomIpcType}; use kawari::common::workdefinitions::CharaMake; use kawari::common::{GameData, ObjectId, timestamp_secs}; use kawari::common::{Position, determine_initial_starting_zone}; use kawari::config::get_config; +use kawari::ipc::chat::{ServerChatIpcData, ServerChatIpcSegment}; +use kawari::ipc::kawari::{CustomIpcData, CustomIpcSegment, CustomIpcType}; +use kawari::ipc::zone::{ + ActionEffect, ActionResult, ClientZoneIpcData, EffectKind, GameMasterCommandType, + GameMasterRank, OnlineStatus, ServerZoneIpcData, ServerZoneIpcSegment, SocialListRequestType, +}; +use kawari::ipc::zone::{ + ActorControlCategory, ActorControlSelf, CommonSpawn, PlayerEntry, PlayerSetup, PlayerSpawn, + SocialList, +}; use kawari::oodle::OodleNetwork; use kawari::opcodes::{ServerChatIpcType, ServerZoneIpcType}; use kawari::packet::{ CompressionType, ConnectionType, PacketSegment, PacketState, SegmentData, SegmentType, send_keep_alive, send_packet, }; -use kawari::world::chat::{ServerChatIpcData, ServerChatIpcSegment}; -use kawari::world::ipc::{ - ActionEffect, ActionResult, ClientZoneIpcData, EffectKind, GameMasterCommandType, - GameMasterRank, OnlineStatus, ServerZoneIpcData, ServerZoneIpcSegment, SocialListRequestType, -}; use kawari::world::{ Actor, ClientHandle, ClientId, EffectsBuilder, FromServer, Inventory, Item, LuaPlayer, PlayerData, ServerHandle, StatusEffects, ToServer, WorldDatabase, }; -use kawari::world::{ - ChatHandler, Zone, ZoneConnection, - ipc::{ - ActorControlCategory, ActorControlSelf, CommonSpawn, PlayerEntry, PlayerSetup, PlayerSpawn, - SocialList, - }, -}; +use kawari::world::{ChatHandler, Zone, ZoneConnection}; use mlua::{Function, Lua}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; diff --git a/src/common/mod.rs b/src/common/mod.rs index 572e508..999fcf1 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -7,8 +7,6 @@ mod customize_data; use binrw::binrw; pub use customize_data::CustomizeData; -pub mod custom_ipc; - mod position; pub use position::Position; diff --git a/src/world/chat.rs b/src/ipc/chat/mod.rs similarity index 100% rename from src/world/chat.rs rename to src/ipc/chat/mod.rs diff --git a/src/common/custom_ipc.rs b/src/ipc/kawari/mod.rs similarity index 98% rename from src/common/custom_ipc.rs rename to src/ipc/kawari/mod.rs index f94880e..9dde60c 100644 --- a/src/common/custom_ipc.rs +++ b/src/ipc/kawari/mod.rs @@ -1,13 +1,11 @@ use binrw::binrw; use crate::{ - common::{CHAR_NAME_MAX_LENGTH, read_bool_from, read_string, write_bool_as}, - lobby::ipc::CharacterDetails, + common::{CHAR_NAME_MAX_LENGTH, read_bool_from, read_string, write_bool_as, write_string}, + ipc::lobby::CharacterDetails, packet::{IpcSegment, ReadWriteIpcSegment}, }; -use super::write_string; - pub type CustomIpcSegment = IpcSegment; impl ReadWriteIpcSegment for CustomIpcSegment { diff --git a/src/lobby/ipc/character_action.rs b/src/ipc/lobby/character_action.rs similarity index 100% rename from src/lobby/ipc/character_action.rs rename to src/ipc/lobby/character_action.rs diff --git a/src/lobby/ipc/character_list.rs b/src/ipc/lobby/character_list.rs similarity index 100% rename from src/lobby/ipc/character_list.rs rename to src/ipc/lobby/character_list.rs diff --git a/src/lobby/ipc/client_version_info.rs b/src/ipc/lobby/client_version_info.rs similarity index 100% rename from src/lobby/ipc/client_version_info.rs rename to src/ipc/lobby/client_version_info.rs diff --git a/src/lobby/ipc/mod.rs b/src/ipc/lobby/mod.rs similarity index 100% rename from src/lobby/ipc/mod.rs rename to src/ipc/lobby/mod.rs diff --git a/src/lobby/ipc/server_list.rs b/src/ipc/lobby/server_list.rs similarity index 100% rename from src/lobby/ipc/server_list.rs rename to src/ipc/lobby/server_list.rs diff --git a/src/lobby/ipc/service_account_list.rs b/src/ipc/lobby/service_account_list.rs similarity index 100% rename from src/lobby/ipc/service_account_list.rs rename to src/ipc/lobby/service_account_list.rs diff --git a/src/ipc/mod.rs b/src/ipc/mod.rs new file mode 100644 index 0000000..600d78e --- /dev/null +++ b/src/ipc/mod.rs @@ -0,0 +1,4 @@ +pub mod chat; +pub mod kawari; +pub mod lobby; +pub mod zone; diff --git a/src/world/ipc/action_request.rs b/src/ipc/zone/action_request.rs similarity index 100% rename from src/world/ipc/action_request.rs rename to src/ipc/zone/action_request.rs diff --git a/src/world/ipc/action_result.rs b/src/ipc/zone/action_result.rs similarity index 100% rename from src/world/ipc/action_result.rs rename to src/ipc/zone/action_result.rs diff --git a/src/world/ipc/actor_control.rs b/src/ipc/zone/actor_control.rs similarity index 100% rename from src/world/ipc/actor_control.rs rename to src/ipc/zone/actor_control.rs diff --git a/src/world/ipc/actor_move.rs b/src/ipc/zone/actor_move.rs similarity index 100% rename from src/world/ipc/actor_move.rs rename to src/ipc/zone/actor_move.rs diff --git a/src/world/ipc/actor_set_pos.rs b/src/ipc/zone/actor_set_pos.rs similarity index 100% rename from src/world/ipc/actor_set_pos.rs rename to src/ipc/zone/actor_set_pos.rs diff --git a/src/world/ipc/chat_message.rs b/src/ipc/zone/chat_message.rs similarity index 100% rename from src/world/ipc/chat_message.rs rename to src/ipc/zone/chat_message.rs diff --git a/src/world/ipc/common_spawn.rs b/src/ipc/zone/common_spawn.rs similarity index 100% rename from src/world/ipc/common_spawn.rs rename to src/ipc/zone/common_spawn.rs diff --git a/src/world/ipc/container_info.rs b/src/ipc/zone/container_info.rs similarity index 100% rename from src/world/ipc/container_info.rs rename to src/ipc/zone/container_info.rs diff --git a/src/world/ipc/equip.rs b/src/ipc/zone/equip.rs similarity index 100% rename from src/world/ipc/equip.rs rename to src/ipc/zone/equip.rs diff --git a/src/world/ipc/event_play.rs b/src/ipc/zone/event_play.rs similarity index 100% rename from src/world/ipc/event_play.rs rename to src/ipc/zone/event_play.rs diff --git a/src/world/ipc/event_start.rs b/src/ipc/zone/event_start.rs similarity index 100% rename from src/world/ipc/event_start.rs rename to src/ipc/zone/event_start.rs diff --git a/src/world/ipc/init_zone.rs b/src/ipc/zone/init_zone.rs similarity index 100% rename from src/world/ipc/init_zone.rs rename to src/ipc/zone/init_zone.rs diff --git a/src/world/ipc/inventory_modify.rs b/src/ipc/zone/inventory_modify.rs similarity index 100% rename from src/world/ipc/inventory_modify.rs rename to src/ipc/zone/inventory_modify.rs diff --git a/src/world/ipc/item_info.rs b/src/ipc/zone/item_info.rs similarity index 100% rename from src/world/ipc/item_info.rs rename to src/ipc/zone/item_info.rs diff --git a/src/world/ipc/mod.rs b/src/ipc/zone/mod.rs similarity index 100% rename from src/world/ipc/mod.rs rename to src/ipc/zone/mod.rs diff --git a/src/world/ipc/npc_spawn.rs b/src/ipc/zone/npc_spawn.rs similarity index 100% rename from src/world/ipc/npc_spawn.rs rename to src/ipc/zone/npc_spawn.rs diff --git a/src/world/ipc/player_setup.rs b/src/ipc/zone/player_setup.rs similarity index 100% rename from src/world/ipc/player_setup.rs rename to src/ipc/zone/player_setup.rs diff --git a/src/world/ipc/player_spawn.rs b/src/ipc/zone/player_spawn.rs similarity index 100% rename from src/world/ipc/player_spawn.rs rename to src/ipc/zone/player_spawn.rs diff --git a/src/world/ipc/player_stats.rs b/src/ipc/zone/player_stats.rs similarity index 100% rename from src/world/ipc/player_stats.rs rename to src/ipc/zone/player_stats.rs diff --git a/src/world/ipc/social_list.rs b/src/ipc/zone/social_list.rs similarity index 100% rename from src/world/ipc/social_list.rs rename to src/ipc/zone/social_list.rs diff --git a/src/world/ipc/status_effect.rs b/src/ipc/zone/status_effect.rs similarity index 100% rename from src/world/ipc/status_effect.rs rename to src/ipc/zone/status_effect.rs diff --git a/src/world/ipc/status_effect_list.rs b/src/ipc/zone/status_effect_list.rs similarity index 100% rename from src/world/ipc/status_effect_list.rs rename to src/ipc/zone/status_effect_list.rs diff --git a/src/world/ipc/update_class_info.rs b/src/ipc/zone/update_class_info.rs similarity index 100% rename from src/world/ipc/update_class_info.rs rename to src/ipc/zone/update_class_info.rs diff --git a/src/world/ipc/weather_change.rs b/src/ipc/zone/weather_change.rs similarity index 100% rename from src/world/ipc/weather_change.rs rename to src/ipc/zone/weather_change.rs diff --git a/src/lib.rs b/src/lib.rs index 6df41f7..e937251 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,6 +36,9 @@ pub mod patch; /// Opcodes, see `resources/opcodes.json` pub mod opcodes; +/// IPC +pub mod ipc; + /// Used in the encryption key. const GAME_VERSION: u16 = 7000; diff --git a/src/lobby/connection.rs b/src/lobby/connection.rs index 4a5d519..cb72104 100644 --- a/src/lobby/connection.rs +++ b/src/lobby/connection.rs @@ -5,11 +5,7 @@ use tokio::{io::AsyncReadExt, net::TcpStream}; use crate::{ RECEIVE_BUFFER_SIZE, blowfish::Blowfish, - common::{ - custom_ipc::{CustomIpcData, CustomIpcSegment, CustomIpcType}, - timestamp_secs, - workdefinitions::CharaMake, - }, + common::{timestamp_secs, workdefinitions::CharaMake}, config::get_config, oodle::OodleNetwork, opcodes::ServerLobbyIpcType, @@ -19,12 +15,12 @@ use crate::{ }, }; -use super::ipc::{ - CharacterDetails, LobbyCharacterAction, LobbyCharacterActionKind, LobbyCharacterList, - LobbyServerList, LobbyServiceAccountList, Server, ServerLobbyIpcData, ServerLobbyIpcSegment, - ServiceAccount, +use crate::ipc::kawari::{CustomIpcData, CustomIpcSegment, CustomIpcType}; +use crate::ipc::lobby::{ + CharacterDetails, ClientLobbyIpcSegment, LobbyCharacterAction, LobbyCharacterActionKind, + LobbyCharacterList, LobbyServerList, LobbyServiceAccountList, Server, ServerLobbyIpcData, + ServerLobbyIpcSegment, ServiceAccount, }; -use crate::lobby::ipc::ClientLobbyIpcSegment; /// Represents a single connection between an instance of the client and the lobby server. pub struct LobbyConnection { diff --git a/src/lobby/mod.rs b/src/lobby/mod.rs index 78043eb..d7d8db1 100644 --- a/src/lobby/mod.rs +++ b/src/lobby/mod.rs @@ -1,5 +1,2 @@ mod connection; pub use connection::{LobbyConnection, send_custom_world_packet}; - -/// The IPC packets for the Lobby connection. -pub mod ipc; diff --git a/src/login/database.rs b/src/login/database.rs index c8ae9a9..b8c612d 100644 --- a/src/login/database.rs +++ b/src/login/database.rs @@ -4,7 +4,7 @@ use rand::Rng; use rand::distr::Alphanumeric; use rusqlite::Connection; -use crate::lobby::ipc::ServiceAccount; +use crate::ipc::lobby::ServiceAccount; pub struct LoginDatabase { connection: Mutex, diff --git a/src/packet/parsing.rs b/src/packet/parsing.rs index 9fe9c78..cf7c322 100644 --- a/src/packet/parsing.rs +++ b/src/packet/parsing.rs @@ -4,8 +4,9 @@ use binrw::{BinRead, BinWrite, binrw}; use tokio::{io::AsyncWriteExt, net::TcpStream}; use crate::{ - common::{custom_ipc::CustomIpcSegment, read_string, timestamp_msecs, write_string}, + common::{read_string, timestamp_msecs, write_string}, config::get_config, + ipc::kawari::CustomIpcSegment, oodle::OodleNetwork, packet::{compression::compress, encryption::decrypt}, }; diff --git a/src/world/chat_handler.rs b/src/world/chat_handler.rs index 20d1dba..e4f141c 100644 --- a/src/world/chat_handler.rs +++ b/src/world/chat_handler.rs @@ -1,19 +1,17 @@ use crate::{ common::{CustomizeData, ObjectId, ObjectTypeId, Position, timestamp_secs}, config::get_config, + ipc::zone::{ + ActorControl, ActorControlCategory, BattleNpcSubKind, ChatMessage, CommonSpawn, + DisplayFlag, EventStart, NpcSpawn, ObjectKind, OnlineStatus, PlayerSpawn, PlayerSubKind, + ServerZoneIpcData, ServerZoneIpcSegment, + }, opcodes::ServerZoneIpcType, packet::{PacketSegment, SegmentData, SegmentType}, - world::{ - Actor, Event, - ipc::{ - ActorControl, ActorControlCategory, BattleNpcSubKind, CommonSpawn, DisplayFlag, - EventStart, NpcSpawn, ObjectKind, OnlineStatus, PlayerSpawn, PlayerSubKind, - ServerZoneIpcData, ServerZoneIpcSegment, - }, - }, + world::{Actor, Event}, }; -use super::{LuaPlayer, ZoneConnection, ipc::ChatMessage}; +use super::{LuaPlayer, ZoneConnection}; pub const CUSTOMIZE_DATA: CustomizeData = CustomizeData { race: 4, diff --git a/src/world/connection.rs b/src/world/connection.rs index 372fa22..d35e484 100644 --- a/src/world/connection.rs +++ b/src/world/connection.rs @@ -12,6 +12,13 @@ use crate::{ OBFUSCATION_ENABLED_MODE, common::{GameData, ObjectId, Position, timestamp_secs}, config::get_config, + ipc::chat::ServerChatIpcSegment, + ipc::zone::{ + ActorControlSelf, ActorMove, ActorSetPos, ClientZoneIpcSegment, CommonSpawn, ContainerInfo, + ContainerType, DisplayFlag, Equip, InitZone, ItemInfo, NpcSpawn, ObjectKind, PlayerStats, + PlayerSubKind, ServerZoneIpcData, ServerZoneIpcSegment, StatusEffect, StatusEffectList, + UpdateClassInfo, WeatherChange, + }, opcodes::ServerZoneIpcType, packet::{ CompressionType, ConnectionType, PacketSegment, PacketState, SegmentData, SegmentType, @@ -21,14 +28,7 @@ use crate::{ use super::{ Actor, CharacterData, Event, Inventory, Item, LuaPlayer, StatusEffects, WorldDatabase, Zone, - chat::ServerChatIpcSegment, inventory::Container, - ipc::{ - ActorControlSelf, ActorMove, ActorSetPos, ClientZoneIpcSegment, CommonSpawn, ContainerInfo, - ContainerType, DisplayFlag, Equip, InitZone, ItemInfo, NpcSpawn, ObjectKind, PlayerStats, - PlayerSubKind, ServerZoneIpcData, ServerZoneIpcSegment, StatusEffect, StatusEffectList, - UpdateClassInfo, WeatherChange, - }, }; #[derive(Debug, Default, Clone)] diff --git a/src/world/database.rs b/src/world/database.rs index c55c6b5..1073d05 100644 --- a/src/world/database.rs +++ b/src/world/database.rs @@ -8,7 +8,7 @@ use crate::{ CustomizeData, GameData, Position, workdefinitions::{CharaMake, ClientSelectData, RemakeMode}, }, - lobby::ipc::{CharacterDetails, CharacterFlag}, + ipc::lobby::{CharacterDetails, CharacterFlag}, }; use super::{Inventory, PlayerData}; diff --git a/src/world/inventory.rs b/src/world/inventory.rs index aa4587e..b33b3a9 100644 --- a/src/world/inventory.rs +++ b/src/world/inventory.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use crate::common::GameData; -use super::ipc::{ContainerType, InventoryModify}; +use crate::ipc::zone::{ContainerType, InventoryModify}; // TODO: rename to storage? pub trait Container { diff --git a/src/world/lua.rs b/src/world/lua.rs index fac0e31..7308599 100644 --- a/src/world/lua.rs +++ b/src/world/lua.rs @@ -2,17 +2,15 @@ use mlua::{FromLua, Lua, LuaSerdeExt, UserData, UserDataMethods, Value}; use crate::{ common::{ObjectId, ObjectTypeId, Position, timestamp_secs}, + ipc::zone::{ + ActionEffect, ActorSetPos, DamageElement, DamageKind, DamageType, EffectKind, EventPlay, + ServerZoneIpcData, ServerZoneIpcSegment, + }, opcodes::ServerZoneIpcType, packet::{PacketSegment, SegmentData, SegmentType}, }; -use super::{ - PlayerData, StatusEffects, Zone, - ipc::{ - ActionEffect, ActorSetPos, DamageElement, DamageKind, DamageType, EffectKind, EventPlay, - ServerZoneIpcData, ServerZoneIpcSegment, - }, -}; +use super::{PlayerData, StatusEffects, Zone}; pub struct ChangeTerritoryTask { pub zone_id: u16, diff --git a/src/world/mod.rs b/src/world/mod.rs index 462f818..f704ee0 100644 --- a/src/world/mod.rs +++ b/src/world/mod.rs @@ -1,5 +1,3 @@ -pub mod ipc; - mod zone; pub use zone::Zone; @@ -28,5 +26,3 @@ pub use actor::Actor; mod status_effects; pub use status_effects::StatusEffects; - -pub mod chat; diff --git a/src/world/status_effects.rs b/src/world/status_effects.rs index 3a7e730..db405e3 100644 --- a/src/world/status_effects.rs +++ b/src/world/status_effects.rs @@ -1,4 +1,4 @@ -use crate::world::ipc::StatusEffect; +use crate::ipc::zone::StatusEffect; #[derive(Debug, Default, Clone)] pub struct StatusEffects {