62 lines
1.6 KiB
Rust
62 lines
1.6 KiB
Rust
use super::*;
|
|
|
|
pub async fn on_get_item_data(
|
|
_session: &NetSession,
|
|
player: &mut Player,
|
|
_req: GetItemDataCsReq,
|
|
) -> NetResult<GetItemDataScRsp> {
|
|
let item_model = &player.item_model;
|
|
|
|
Ok(GetItemDataScRsp {
|
|
retcode: Retcode::RetSucc.into(),
|
|
resource_list: item_model.resources.iter().map(|i| i.to_client()).collect(),
|
|
weapon_list: item_model.weapons.iter().map(|w| w.to_client()).collect(),
|
|
..Default::default()
|
|
})
|
|
}
|
|
|
|
pub async fn on_weapon_dress(
|
|
session: &NetSession,
|
|
player: &mut Player,
|
|
req: WeaponDressCsReq,
|
|
) -> NetResult<WeaponDressScRsp> {
|
|
player.dress_weapon(req.avatar_id, req.weapon_uid.into())?;
|
|
|
|
session
|
|
.notify(PlayerSyncScNotify {
|
|
avatar: Some(player.role_model.avatar_sync()),
|
|
item_sync: Some(player.item_model.item_sync()),
|
|
..Default::default()
|
|
})
|
|
.await?;
|
|
|
|
Ok(WeaponDressScRsp {
|
|
retcode: Retcode::RetSucc.into(),
|
|
})
|
|
}
|
|
|
|
pub async fn on_weapon_un_dress(
|
|
session: &NetSession,
|
|
player: &mut Player,
|
|
req: WeaponUnDressCsReq,
|
|
) -> NetResult<WeaponUnDressScRsp> {
|
|
let avatar = player
|
|
.role_model
|
|
.avatar_list
|
|
.iter_mut()
|
|
.find(|a| a.template_id == req.avatar_id)
|
|
.ok_or(Retcode::RetFail)?;
|
|
|
|
avatar.weapon_uid = None;
|
|
|
|
session
|
|
.notify(PlayerSyncScNotify {
|
|
avatar: Some(player.role_model.avatar_sync()),
|
|
..Default::default()
|
|
})
|
|
.await?;
|
|
|
|
Ok(WeaponUnDressScRsp {
|
|
retcode: Retcode::RetSucc.into(),
|
|
})
|
|
}
|