feat(battle): allow more than 4 avatar in battle

This commit is contained in:
amizing25 2024-08-06 05:09:21 +07:00
parent 60651768d0
commit 88f3025333
3 changed files with 5 additions and 30 deletions

View File

@ -79,14 +79,10 @@ async fn create_battle_info() -> SceneBattleInfo {
}; };
// avatars // avatars
for i in 0..4 { for (i, avatar_id) in player.lineups.iter() {
let avatar_id = &player.lineups.get(&i).unwrap_or(&0);
if **avatar_id == 0 {
continue;
}
if let Some(avatar) = player.avatars.get(avatar_id) { if let Some(avatar) = player.avatars.get(avatar_id) {
let (battle_avatar, techs) = avatar.to_battle_avatar_proto( let (battle_avatar, techs) = avatar.to_battle_avatar_proto(
i, *i,
player player
.lightcones .lightcones
.iter() .iter()
@ -108,7 +104,7 @@ async fn create_battle_info() -> SceneBattleInfo {
id: 122401, id: 122401,
level: 3, level: 3,
wave_flag: 0xffffffff, wave_flag: 0xffffffff,
owner_id: i, owner_id: *i,
dynamic_values: HashMap::from([ dynamic_values: HashMap::from([
(String::from("#ADF_1"), 3f32), (String::from("#ADF_1"), 3f32),
(String::from("#ADF_2"), 3f32), (String::from("#ADF_2"), 3f32),

View File

@ -35,7 +35,7 @@ pub async fn on_get_cur_lineup_data_cs_req(
_body: &GetCurLineupDataCsReq, _body: &GetCurLineupDataCsReq,
) -> Result<()> { ) -> Result<()> {
let player = tools::FreesrData::load().await; let player = tools::FreesrData::load().await;
let mut lineup = LineupInfo { let lineup = LineupInfo {
extra_lineup_type: ExtraLineupType::LineupNone.into(), extra_lineup_type: ExtraLineupType::LineupNone.into(),
name: "Squad 1".to_string(), name: "Squad 1".to_string(),
mp: 5, mp: 5,
@ -46,27 +46,6 @@ pub async fn on_get_cur_lineup_data_cs_req(
..Default::default() ..Default::default()
}; };
let avatar_ids = player
.avatars
.values()
.map(|v| v.avatar_id)
.collect::<Vec<_>>();
let mut avatars = player
.lineups
.iter()
.filter(|(_slot, v)| v > &&0 && avatar_ids.contains(v))
.map(|(slot, avatar_id)| {
player
.avatars
.get(avatar_id)
.unwrap()
.to_lineup_avatar_proto(*slot)
})
.collect::<Vec<LineupAvatar>>();
lineup.avatar_list.append(&mut avatars);
session session
.send( .send(
CMD_GET_CUR_LINEUP_DATA_SC_RSP, CMD_GET_CUR_LINEUP_DATA_SC_RSP,

View File

@ -139,7 +139,7 @@ impl AvatarJson {
player player
.lineups .lineups
.iter() .iter()
.filter(|(_slot, v)| v > &&0 && avatar_ids.contains(v)) .filter(|(slot, v)| **slot < 4 && v > &&0 && avatar_ids.contains(v))
.map(|(slot, avatar_id)| { .map(|(slot, avatar_id)| {
player player
.avatars .avatars