using LitJson; using System.Collections.Generic; using System.Linq; public class BoneBattleField : BattleField { protected JsonData extendData; protected MainLevelConfig levelConfig; public BoneBattleField(string _guid) : base(_guid) { } public override void Init(int MapID, int FuncLineID, JsonData _extendData, List _redTeamList, List _blueTeamList, byte turnMax) { base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax); int level = FuncLineID;// 关卡 extendData = _extendData; levelConfig = MainLevelConfig.Get(level); SetBattleMode(BattleMode.Record); } public override void AutoSetBattleMode() { SetBattleMode(BattleMode.Record); } public override void TurnFightState(int TurnNum, int State, uint FuncLineID, JsonData extendData) { base.TurnFightState(TurnNum, State, FuncLineID, extendData); switch (State) { // 起始状态标记 case 0: break; case 1://准备完毕 break; case 2://战斗中 break; case 3://战斗结束 break; case 4://结算奖励 break; case 5://结束状态标记 break; default: BattleDebug.LogError("recieve a unknown State"); break; } } protected override void OnSettlement(JsonData turnFightStateData) { base.OnSettlement(turnFightStateData); } public override void WhaleFall() { AutoFightModel.Instance.isPause = false; Destroy(); if (UIManager.Instance.IsOpened()) { UIManager.Instance.CloseWindow(); UIManager.Instance.OpenWindow(); } } public override void Run() { if (operationAgent == null) { //防范异常 return; } base.Run(); } public override void DistributeNextPackage() { if (IsBattleFinish) return; // 不要调用base的函数 BattleManager.Instance.DistributeNextReportPackage(guid); } public override void ShowWindow(HB424_tagSCTurnFightInit vNetData) { BoneFieldBattleWin fsBattleWin = UIManager.Instance.GetUI();// as FullScreenBattleWin; if (null == fsBattleWin) { fsBattleWin = UIManager.Instance.OpenWindow(); } fsBattleWin.SetBattleField(this); if (UIManager.Instance.IsOpened()) { UIManager.Instance.CloseWindow(); } } public NPCLineupConfig GetBossLineupConfig() { if (!DungeonConfig.TryGetDungeonID(MapID, FuncLineID, out int dungeonID)) return null; if (!DungeonConfig.HasKey(dungeonID)) return null; int[] lineupIDList = DungeonConfig.Get(dungeonID).LineupIDList; if (lineupIDList.IsNullOrEmpty()) return null; int lineupID = lineupIDList[0]; if (!NPCLineupConfig.HasKey(lineupID)) return null; NPCLineupConfig nPCLineupConfig = NPCLineupConfig.Get(lineupID); return nPCLineupConfig; } public override BattleObject FindBoss() { var config = GetBossLineupConfig(); if (config != null) { int bossId = config.BossID; BattleObject bo = battleObjMgr.allBattleObjDict.Values.FirstOrDefault(bo => bo.teamHero.NPCID == bossId); return bo; } return null; } }