Add support for character serialization

This commit is contained in:
lcdr
2021-01-18 21:15:07 +01:00
parent 41b6019487
commit 847cbffb94
4 changed files with 31 additions and 2 deletions
+2 -1
View File
@@ -12,7 +12,7 @@ use lu_packets::{
ComponentConstruction, ComponentSerialization, ReplicaContext,
bbb::BbbConstruction,
buff::BuffConstruction,
character::CharacterConstruction,
character::{CharacterConstruction, CharacterSerialization},
controllable_physics::{ControllablePhysicsConstruction, ControllablePhysicsSerialization},
destroyable::{DestroyableConstruction, DestroyableSerialization},
fx::FxConstruction,
@@ -79,6 +79,7 @@ impl ReplicaContext for PlayerContext<'_> {
|x| Ok(Box::new(PossessionControlSerialization::deserialize(x)?)),
|x| Ok(Box::new(LevelProgressionSerialization::deserialize(x)?)),
|x| Ok(Box::new(PlayerForcedMovementSerialization::deserialize(x)?)),
|x| Ok(Box::new(CharacterSerialization::deserialize(x)?)),
]
}
}
+14 -1
View File
@@ -5,7 +5,7 @@ use endio_bit::{BEBitReader, BEBitWriter};
use lu_packets_derive::{BitVariantTests, ReplicaSerde};
use crate::common::{LuVarWString, ObjId};
use super::ComponentConstruction;
use super::{ComponentConstruction, ComponentSerialization};
#[derive(Debug, PartialEq)]
pub enum TransitionState {
@@ -119,8 +119,21 @@ pub struct CharacterConstruction {
pub social_info: Option<SocialInfo>,
}
#[derive(BitVariantTests, Debug, PartialEq, ReplicaSerde)]
pub struct CharacterSerialization {
pub gm_pvp_info: Option<GmPvpInfo>,
pub current_activity: Option<GameActivity>,
pub social_info: Option<SocialInfo>,
}
impl ComponentConstruction for CharacterConstruction {
fn ser(&self, writer: &mut BEBitWriter<Vec<u8>>) -> Res<()> {
self.serialize(writer)
}
}
impl ComponentSerialization for CharacterSerialization {
fn ser(&self, writer: &mut BEBitWriter<Vec<u8>>) -> Res<()> {
self.serialize(writer)
}
}
@@ -0,0 +1,15 @@
CharacterSerialization {
gm_pvp_info: Some(GmPvpInfo {
pvp_enabled: true,
is_gm: true,
gm_level: 44,
editor_enabled: true,
editor_level: 45,
}),
current_activity: Some(GameActivity::Quickbuilding),
social_info: Some(SocialInfo {
guild_id: 46,
guild_name: lu!("guild"),
is_lego_club_member: true,
}),
}