|
|
using System.Collections.Generic;
|
using System.Linq;
|
using LitJson;
|
|
public partial class BattleSettlementManager : GameSystemManager<BattleSettlementManager>
|
{
|
//结算后需清除 <battleName,JsonData>
|
Dictionary<string, JsonData> battleSettlementDic = new Dictionary<string, JsonData>();
|
|
// public string notifyGuid = string.Empty;
|
|
public override void Init()
|
{
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
|
EventBroadcast.Instance.AddListener<string, JsonData>(EventName.BATTLE_END, OnSettlement);
|
|
}
|
|
public override void Release()
|
{
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize;
|
EventBroadcast.Instance.RemoveListener<string, JsonData>(EventName.BATTLE_END, OnSettlement);
|
}
|
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
battleSettlementDic.Clear();
|
}
|
|
public void AddPop(string battleName, int result)
|
{
|
bool isWin = result == 1;
|
switch (battleName)
|
{
|
case "ArenaBattleField":
|
PopupWindowsProcessor.Instance.Add(isWin ? "ArenaBattleVictoryWin" : "ArenaBattleFailWin", false);
|
break;
|
default:
|
PopupWindowsProcessor.Instance.Add(isWin ? "BattleVictoryWin" : "BattleFailWin", false);
|
break;
|
}
|
}
|
|
public void ShowResultWin(string battleName, int result)
|
{
|
bool isWin = result == 1;
|
switch (battleName)
|
{
|
case "ArenaBattleField":
|
if (isWin)
|
{
|
UIManager.Instance.OpenWindow<ArenaBattleVictoryWin>();
|
}
|
else
|
{
|
UIManager.Instance.OpenWindow<ArenaBattleFailWin>();
|
}
|
break;
|
default:
|
if (isWin)
|
{
|
UIManager.Instance.OpenWindow<BattleVictoryWin>();
|
}
|
else
|
{
|
UIManager.Instance.OpenWindow<BattleFailWin>();
|
}
|
break;
|
}
|
}
|
|
//"Msg":{"itemInfo":[{"ItemID":5,"Count":2},{"ItemID":3,"Count":40}],"winFaction":1,"statInfo":{"1":{"1":{"1":{"NPCID":0,"DefHurt":727,"CureHP":0,"AtkHurt":1891,"ObjID":1,"HeroID":530004},"3":{"NPCID":0,"DefHurt":483,"CureHP":1511,"AtkHurt":782,"ObjID":6,"HeroID":520001},"2":{"NPCID":0,"DefHurt":953,"CureHP":0,"AtkHurt":1712,"ObjID":5,"HeroID":510003}}},"2":{"1":{"1":{"NPCID":10101091,"DefHurt":638,"CureHP":0,"AtkHurt":140,"ObjID":2,"HeroID":610001},"3":{"NPCID":10101092,"DefHurt":625,"CureHP":0,"AtkHurt":126,"ObjID":3,"HeroID":610001},"5":{"NPCID":10101093,"DefHurt":3122,"CureHP":0,"AtkHurt":1897,"ObjID":4,"HeroID":510003}}}}}
|
public void OnSettlement(string _guid, JsonData _data)
|
{
|
if (string.Empty == _guid)
|
return;
|
var battle = BattleManager.Instance.GetBattleField(_guid);
|
if (battle == null)
|
return;
|
var battleName = battle.ToString();
|
battleSettlementDic[battleName] = _data;
|
|
string activeBattleName = BattleManager.Instance.GetActiveBattleName();
|
|
if (_data.ContainsKey("winFaction"))
|
{
|
var result = (int)_data["winFaction"];
|
if (battleName == activeBattleName)
|
{
|
//自己场景结算
|
ShowResultWin(battleName, result);
|
}
|
else
|
{
|
AddPop(battleName, result);
|
}
|
|
}
|
}
|
|
public void WinShowOver(string battleName)
|
{
|
battleSettlementDic.Remove(battleName);
|
|
var battle = BattleManager.Instance.GetActiveBattleFieldByName(battleName);
|
if (battle != null)
|
battle.WhaleFall();
|
}
|
|
public JsonData GetBattleSettlement(string battleName)
|
{
|
if (!battleSettlementDic.ContainsKey(battleName))
|
{
|
return null;
|
}
|
return battleSettlementDic[battleName];
|
}
|
}
|