mirror of
https://github.com/redstrate/Kawari.git
synced 2025-04-19 22:36:49 +00:00
Move player stat sending function to ZoneConnection
This commit is contained in:
parent
10c1369119
commit
79f3ac73b6
4 changed files with 43 additions and 43 deletions
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue