96 lines
3.1 KiB
Rust
96 lines
3.1 KiB
Rust
use super::*;
|
|
|
|
pub static BASE_AVATAR_IDS: [u32; 87] = [
|
|
8001, 1001, //
|
|
//
|
|
1002, 1003, 1004, 1005, 1006, 1008, 1009, 1013, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,
|
|
1109, 1110, 1111, 1112, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212,
|
|
1213, 1214, 1215, 1217, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1312, 1315, 1310,
|
|
1314, 1218, 1221, 1220, 1222, 1223, 1317, 1313, 1225, 1402, 1401, 1404, 1403, 1405, 1407, 1406,
|
|
1409, 1014, 1015, 1408, 1410, 1412, 1413, 1414, 1415, 1321, 1501, 1502, 1504, 1505, 1506, 1507,
|
|
1508, 1509, 1510, 1512, 1513,
|
|
];
|
|
|
|
pub async fn on_get_avatar_data_cs_req(
|
|
session: &mut PlayerSession,
|
|
body: &GetAvatarDataCsReq,
|
|
res: &mut GetAvatarDataScRsp,
|
|
) {
|
|
let Some(json) = session.json_data.get() else {
|
|
tracing::error!("data is not set!");
|
|
return;
|
|
};
|
|
|
|
res.is_get_all = body.is_get_all;
|
|
res.avatar_list = BASE_AVATAR_IDS
|
|
.into_iter()
|
|
.map(|id| {
|
|
json.avatars
|
|
.get(&id)
|
|
.map(|v| {
|
|
v.to_avatar_proto(
|
|
json.lightcones.iter().find(|v| v.equip_avatar == id),
|
|
json.main_character as u32,
|
|
json.march_type as u32,
|
|
)
|
|
})
|
|
.unwrap_or(Avatar {
|
|
base_avatar_id: id,
|
|
level: 80,
|
|
promotion: 6,
|
|
first_met_time_stamp: 1712924677,
|
|
cur_multi_path_avatar_type: 0,
|
|
equipment_unique_id: 0,
|
|
has_taken_promotion_reward_list: vec![1, 3, 5],
|
|
is_marked: false,
|
|
exp: 0,
|
|
})
|
|
})
|
|
.collect();
|
|
|
|
res.avatar_path_data_info_list = json
|
|
.avatars
|
|
.values()
|
|
.map(|avatar| {
|
|
avatar.to_avatar_path_data_proto(
|
|
json.lightcones
|
|
.iter()
|
|
.find(|l| l.equip_avatar == avatar.avatar_id),
|
|
json.relics
|
|
.iter()
|
|
.filter(|r| r.equip_avatar == avatar.avatar_id)
|
|
.collect(),
|
|
)
|
|
})
|
|
.collect();
|
|
}
|
|
|
|
pub async fn on_take_promotion_reward_cs_req(
|
|
_session: &mut PlayerSession,
|
|
_req: &TakePromotionRewardCsReq,
|
|
_res: &mut TakePromotionRewardScRsp,
|
|
) {
|
|
// retcode defaults to 0, reward_list defaults to empty
|
|
// All avatars already report has_taken_promotion_reward_list = [0..=6] in GetAvatarData
|
|
}
|
|
|
|
pub async fn on_set_avatar_enhanced_id_cs_req(
|
|
_session: &mut PlayerSession,
|
|
_req: &SetAvatarEnhancedIdCsReq,
|
|
_res: &mut SetAvatarEnhancedIdScRsp,
|
|
) {
|
|
// let Some(json) = session.json_data.get_mut() else {
|
|
// return;
|
|
// };
|
|
// let Some(avatar) = json.avatars.get_mut(&req.avatar_id) else {
|
|
// return;
|
|
// };
|
|
// avatar.enhanced_id = if req.enhanced_id == 0 {
|
|
// Option::<u32>::None
|
|
// } else {
|
|
// Some(req.enhanced_id)
|
|
// };
|
|
// res.growth_avatar_id = avatar.avatar_id;
|
|
// res.unk_enhanced_id = req.enhanced_id;
|
|
}
|