Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/BossRushLobbyData.cs
gamer147 0d9d8acae0 feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
2026-06-05 16:57:20 -04:00

121 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using LitJson;
namespace Wizard;
public class BossRushLobbyData
{
public enum BossRushStatus
{
BATTLE,
FINISH_WIN,
FINISH_LOSE
}
public const int MAX_TURN = 9999;
public List<BossRushLobbyBossData> BossDataList { get; }
public List<BossRushLobbyAbilityData> AbilityList { get; }
public BossRushLobbyBossData CurrentBattleBossData { get; }
public List<BossRushLobbyAbilityCandidateData> AbilityCandidateData { get; }
public List<ShopCommonRewardInfo> RewardList { get; }
public int CurrentLife { get; }
public int MaxLife { get; }
public int WinCount { get; }
public DeckData Deck { get; }
public int TreasureBoxGrade { get; }
public bool IsAlreadyGetReward { get; }
public bool NeedAbilityDecideFinish { get; }
public int NextBattleCount { get; }
public BossRushStatus Status { get; }
public string AnnounceId { get; }
public int TotalTurn { get; }
public BossRushLobbyData(JsonData json)
{
if (json["total_turns"] != null)
{
TotalTurn = Math.Min(json["total_turns"].ToInt(), 9999);
}
NeedAbilityDecideFinish = !json["is_finished_special_ability_select"].ToBoolean();
int num = json["bossrush_progress"].ToInt();
NextBattleCount = num + 1;
BossDataList = new List<BossRushLobbyBossData>();
JsonData jsonData = json["bossrush_opponent_list"];
bool flag = json["is_lose"].ToBoolean();
WinCount = 0;
for (int i = 0; i < jsonData.Count; i++)
{
BossRushLobbyBossData bossRushLobbyBossData = new BossRushLobbyBossData(jsonData[i], i, num, flag);
BossDataList.Add(bossRushLobbyBossData);
if (bossRushLobbyBossData.Status == BossRushLobbyBossData.BattleStatus.WIN)
{
int winCount = WinCount;
WinCount = winCount + 1;
}
}
Status = BossRushStatus.BATTLE;
if (WinCount == BossDataList.Count)
{
Status = BossRushStatus.FINISH_WIN;
}
if (flag)
{
Status = BossRushStatus.FINISH_LOSE;
NeedAbilityDecideFinish = false;
}
CurrentBattleBossData = BossDataList[num];
JsonData jsonData2 = json["special_ability_list"];
AbilityList = new List<BossRushLobbyAbilityData>();
for (int j = 0; j < jsonData2.Count; j++)
{
AbilityList.Add(new BossRushLobbyAbilityData(jsonData2[j]));
}
JsonData jsonData3 = json["user_bossrush_deck"][0];
Deck = new DeckData(Data.ParseApiFormat(jsonData3["deck_format"].ToInt()));
Deck.Initialize(jsonData3);
CurrentLife = json["current_life"].ToInt();
MaxLife = json["max_life"].ToInt();
AbilityCandidateData = new List<BossRushLobbyAbilityCandidateData>();
JsonData jsonData4 = json["special_ability_candidate_list"];
for (int k = 0; k < jsonData4.Count; k++)
{
BossRushLobbyAbilityCandidateData item = new BossRushLobbyAbilityCandidateData(jsonData4[k]);
AbilityCandidateData.Add(item);
}
RewardList = new List<ShopCommonRewardInfo>();
JsonData jsonData5 = json["reward_info"];
for (int l = 0; l < jsonData5.Count; l++)
{
JsonData jsonData6 = jsonData5[l];
ShopCommonRewardInfo item2 = new ShopCommonRewardInfo
{
Type = jsonData6["reward_type"].ToInt(),
UserGoodsId = jsonData6["reward_detail_id"].ToLong(),
Num = jsonData6["reward_num"].ToInt(),
IsAlreadyGet = jsonData6["is_received"].ToBoolean()
};
RewardList.Add(item2);
}
TreasureBoxGrade = json["reward_grade"].ToInt();
IsAlreadyGetReward = json["is_received_all_rewards"].ToBoolean();
AnnounceId = json.GetValueOrDefault("announce_id", string.Empty);
}
}