Files
robinsr/gameserver/src/net/handlers/inventory.rs
T
amizing25 de22105514 refactor: Refactor json loading mechanism & more
- Move json loading into separate crate `common`
- Add new http route for handling SRTools API
- Listen to `freesr-data.json` file change, and sync with client immediately
- Move json loading into `PlayerSession`, instead of load it everytime
- Implement global buff for Castorice
- Implement `GetBigDataAllRecommendCsReq`
2025-03-03 08:03:52 +07:00

107 lines
2.9 KiB
Rust

use proto::{get_big_data_all_recommend_sc_rsp::RecommendType, *};
use crate::net::PlayerSession;
use super::UNLOCKED_AVATARS;
pub async fn on_get_bag_cs_req(
session: &mut PlayerSession,
_req: &GetBagCsReq,
res: &mut GetBagScRsp,
) {
let Some(player) = session.json_data.get() else {
tracing::error!("data is not set!");
return;
};
res.equipment_list = player
.lightcones
.iter()
.map(|v| v.to_equipment_proto())
.collect();
res.relic_list = player.relics.iter().map(|v| v.to_relic_proto()).collect();
res.material_list = vec![
Material {
tid: 101, // Normal Pass
num: 999999,
..Default::default()
},
Material {
tid: 102, // Special Pass
num: 999999,
..Default::default()
},
];
}
pub async fn on_get_archive_data_cs_req(
_session: &mut PlayerSession,
_: &GetArchiveDataCsReq,
res: &mut GetArchiveDataScRsp,
) {
res.archive_data = Some(ArchiveData::default());
}
pub async fn on_dress_relic_avatar_cs_req(
_session: &mut PlayerSession,
_req: &DressRelicAvatarCsReq,
_res: &mut DressRelicAvatarScRsp,
) {
}
pub async fn on_take_off_relic_cs_req(
_session: &mut PlayerSession,
_req: &TakeOffRelicCsReq,
_res: &mut TakeOffRelicScRsp,
) {
}
pub async fn on_dress_avatar_cs_req(
_session: &mut PlayerSession,
_req: &DressAvatarCsReq,
_res: &mut DressAvatarScRsp,
) {
}
pub async fn on_take_off_equipment_cs_req(
_session: &mut PlayerSession,
_req: &TakeOffEquipmentCsReq,
_res: &mut TakeOffEquipmentScRsp,
) {
}
pub async fn on_get_big_data_all_recommend_cs_req(
_: &mut PlayerSession,
req: &GetBigDataAllRecommendCsReq,
res: &mut GetBigDataAllRecommendScRsp,
) {
res.big_data_recommend_type = req.big_data_recommend_type;
match req.big_data_recommend_type() {
BigDataRecommendType::RelicAvatar => {
res.recommend_type = Some(RecommendType::RelicAvatar(BigDataRecommendRelicAvatar {
recommended_avatar_info_list: UNLOCKED_AVATARS
.into_iter()
.map(|recommend_avatar_id| RecomendedAvatarInfo {
avatar_id_list: vec![],
recommend_avatar_id,
relic_set_id: 0,
})
.collect(),
}))
}
BigDataRecommendType::AvatarRelic => {
res.recommend_type = Some(RecommendType::AvatarRelic(BigDataRecommendAvatarRelic {
recomended_relic_info_list: UNLOCKED_AVATARS
.into_iter()
.map(|avatar_id| RecommendedRelicInfo {
avatar_id,
..Default::default()
})
.collect(),
}))
}
_ => {}
}
}