1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-20 06:37:45 +00:00

Move player stat sending function to ZoneConnection

This commit is contained in:
Joshua Goins 2025-04-14 16:18:03 -04:00
parent 10c1369119
commit 79f3ac73b6
4 changed files with 43 additions and 43 deletions

View file

@ -336,40 +336,7 @@ async fn client_loop(
.await; .await;
// Stats // Stats
{ connection.send_stats(&chara_details).await;
let attributes;
{
let mut game_data = game_data.lock().unwrap();
attributes = game_data.get_racial_base_attributes(
chara_details.chara_make.customize.subrace,
);
}
let ipc = ServerZoneIpcSegment {
op_code: ServerZoneIpcType::PlayerStats,
timestamp: timestamp_secs(),
data: ServerZoneIpcData::PlayerStats(PlayerStats {
strength: attributes.strength,
dexterity: attributes.dexterity,
vitality: attributes.vitality,
intelligence: attributes.intelligence,
mind: attributes.mind,
hp: connection.player_data.max_hp,
mp: connection.player_data.max_mp as u32,
..Default::default()
}),
..Default::default()
};
connection
.send_segment(PacketSegment {
source_actor: connection.player_data.actor_id,
target_actor: connection.player_data.actor_id,
segment_type: SegmentType::Ipc { data: ipc },
})
.await;
}
// Player Setup // Player Setup
{ {

View file

@ -151,7 +151,7 @@ impl LoginDatabase {
.prepare("SELECT user_id FROM sessions WHERE sid = ?1") .prepare("SELECT user_id FROM sessions WHERE sid = ?1")
.ok() .ok()
.unwrap(); .unwrap();
user_id = stmt.query_row((sid,), |row| Ok(row.get(0)?)).unwrap(); user_id = stmt.query_row((sid,), |row| row.get(0)).unwrap();
} }
// service accounts // service accounts
@ -185,7 +185,7 @@ impl LoginDatabase {
.ok() .ok()
.unwrap(); .unwrap();
let selected_row: Result<u32, rusqlite::Error> = let selected_row: Result<u32, rusqlite::Error> =
stmt.query_row((username,), |row| Ok(row.get(0)?)); stmt.query_row((username,), |row| row.get(0));
selected_row.is_ok() selected_row.is_ok()
} }
@ -197,7 +197,7 @@ impl LoginDatabase {
.prepare("SELECT user_id FROM sessions WHERE sid = ?1") .prepare("SELECT user_id FROM sessions WHERE sid = ?1")
.ok() .ok()
.unwrap(); .unwrap();
stmt.query_row((sid,), |row| Ok(row.get(0)?)).unwrap() stmt.query_row((sid,), |row| row.get(0)).unwrap()
} }
pub fn get_username(&self, user_id: u32) -> String { pub fn get_username(&self, user_id: u32) -> String {
@ -207,6 +207,6 @@ impl LoginDatabase {
.prepare("SELECT username FROM users WHERE id = ?1") .prepare("SELECT username FROM users WHERE id = ?1")
.ok() .ok()
.unwrap(); .unwrap();
stmt.query_row((user_id,), |row| Ok(row.get(0)?)).unwrap() stmt.query_row((user_id,), |row| row.get(0)).unwrap()
} }
} }

View file

@ -4,7 +4,7 @@ use crate::{
opcodes::ServerZoneIpcType, opcodes::ServerZoneIpcType,
packet::{PacketSegment, SegmentType}, packet::{PacketSegment, SegmentType},
world::{ world::{
Actor, Event, Event,
ipc::{ ipc::{
ActorControl, ActorControlCategory, BattleNpcSubKind, CommonSpawn, DisplayFlag, ActorControl, ActorControlCategory, BattleNpcSubKind, CommonSpawn, DisplayFlag,
EventStart, NpcSpawn, ObjectKind, OnlineStatus, PlayerSpawn, PlayerSubKind, EventStart, NpcSpawn, ObjectKind, OnlineStatus, PlayerSpawn, PlayerSubKind,

View file

@ -18,13 +18,13 @@ use crate::{
}; };
use super::{ use super::{
Actor, Event, Inventory, Item, LuaPlayer, StatusEffects, WorldDatabase, Zone, Actor, CharacterData, Event, Inventory, Item, LuaPlayer, StatusEffects, WorldDatabase, Zone,
inventory::Container, inventory::Container,
ipc::{ ipc::{
ActorControlSelf, ActorMove, ActorSetPos, ClientZoneIpcSegment, CommonSpawn, ContainerInfo, ActorControlSelf, ActorMove, ActorSetPos, ClientZoneIpcSegment, CommonSpawn, ContainerInfo,
ContainerType, DisplayFlag, Equip, InitZone, ItemInfo, NpcSpawn, ObjectKind, PlayerSubKind, ContainerType, DisplayFlag, Equip, InitZone, ItemInfo, NpcSpawn, ObjectKind, PlayerStats,
ServerZoneIpcData, ServerZoneIpcSegment, StatusEffect, StatusEffectList, UpdateClassInfo, PlayerSubKind, ServerZoneIpcData, ServerZoneIpcSegment, StatusEffect, StatusEffectList,
WeatherChange, UpdateClassInfo, WeatherChange,
}, },
}; };
@ -833,4 +833,37 @@ impl ZoneConnection {
..Default::default() ..Default::default()
} }
} }
pub async fn send_stats(&mut self, chara_details: &CharacterData) {
let attributes;
{
let mut game_data = self.gamedata.lock().unwrap();
attributes =
game_data.get_racial_base_attributes(chara_details.chara_make.customize.subrace);
}
let ipc = ServerZoneIpcSegment {
op_code: ServerZoneIpcType::PlayerStats,
timestamp: timestamp_secs(),
data: ServerZoneIpcData::PlayerStats(PlayerStats {
strength: attributes.strength,
dexterity: attributes.dexterity,
vitality: attributes.vitality,
intelligence: attributes.intelligence,
mind: attributes.mind,
hp: self.player_data.max_hp,
mp: self.player_data.max_mp as u32,
..Default::default()
}),
..Default::default()
};
self.send_segment(PacketSegment {
source_actor: self.player_data.actor_id,
target_actor: self.player_data.actor_id,
segment_type: SegmentType::Ipc { data: ipc },
})
.await;
}
} }