using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace vnxbqy.UI
|
{
|
|
public class BattleHint : Singleton<BattleHint>
|
|
{
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
public BattleHint()
|
{
|
SysNotifyMgr.Instance.OnSystemNotifyEvent += OnSystemNotifyEvent;
|
}
|
|
public void OnStageLoadFinish()
|
{
|
Clear();
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
if (cacheMapId != 0 && cacheMapId != 31160
|
&& mapId == 31160)
|
{
|
SnxxzGame.Instance.StartCoroutine(Co_LoadFinish());
|
}
|
var help = dungeonModel.mission;
|
ancientKing = mapId != 31160 ? 0 : help.topPlayerID;
|
cacheMapId = PlayerDatas.Instance.baseData.MapID;
|
}
|
|
public event Action battleHintUpdate;
|
public event Action evenKillUpdate;
|
|
List<int> battleHints = new List<int>();
|
Queue<string> evenKills = new Queue<string>();
|
|
int ancientKing = 0;
|
int cacheMapId = 0;
|
|
IEnumerator Co_LoadFinish()
|
{
|
yield return WaitingForSecondConst.WaitMS300;
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
if (mapId == 31160)
|
{
|
Receive(3);
|
}
|
}
|
|
public void UpdateDungeonHelp()
|
{
|
var help = dungeonModel.mission;
|
if (DTC0403_tagPlayerLoginLoadOK.finishedLogin)
|
{
|
if (PlayerDatas.Instance.baseData.MapID == 31160
|
&& help.topPlayerID == PlayerDatas.Instance.baseData.PlayerID
|
&& ancientKing != help.topPlayerID)
|
{
|
ancientKing = help.topPlayerID;
|
Receive(1);
|
}
|
}
|
ancientKing = help.topPlayerID;
|
}
|
|
private void OnSystemNotifyEvent(string msg)
|
{
|
if (!(StageLoad.Instance.currentStage is DungeonStage)
|
|| StageLoad.Instance.isLoading)
|
{
|
return;
|
}
|
if (msg.Equals("AncientBattlefield_8"))
|
{
|
Receive(2);
|
}
|
}
|
|
public void Receive(int ancientType)
|
{
|
if (battleHints.Contains(ancientType)
|
|| WindowCenter.Instance.IsOpen<TreasureBaseWin>()
|
|| WindowCenter.Instance.IsOpen<TreasureSelectWin>())
|
{
|
return;
|
}
|
battleHints.Add(ancientType);
|
if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
|
{
|
WindowCenter.Instance.Open<BattleHintWin>();
|
}
|
else
|
{
|
if (battleHintUpdate != null)
|
{
|
battleHintUpdate();
|
}
|
}
|
}
|
|
public void ReceiveEvenKill(string message, ArrayList list)
|
{
|
if (PlayerDatas.Instance.baseData.MapID != 31160
|
|| !(StageLoad.Instance.currentStage is DungeonStage)
|
|| StageLoad.Instance.isLoading
|
|| WindowCenter.Instance.IsOpen<TreasureBaseWin>()
|
|| WindowCenter.Instance.IsOpen<TreasureSelectWin>())
|
{
|
return;
|
}
|
var evenKillCount = 0;
|
if (list != null && list.Count > 0)
|
{
|
int.TryParse(list[0].ToString(), out evenKillCount);
|
}
|
if (evenKillCount == 0)
|
{
|
return;
|
}
|
message = message.Replace("%s0", evenKillCount.ToString());
|
evenKills.Enqueue(message);
|
if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
|
{
|
WindowCenter.Instance.Open<BattleHintWin>();
|
}
|
else
|
{
|
if (evenKillUpdate != null)
|
{
|
evenKillUpdate();
|
}
|
}
|
}
|
|
public bool TryGetBattleHint(out int ancientType)
|
{
|
ancientType = 0;
|
if (battleHints.Count > 0)
|
{
|
ancientType = battleHints[0];
|
battleHints.RemoveAt(0);
|
return true;
|
}
|
return false;
|
}
|
|
public bool TryGetEvenKill(out string message)
|
{
|
message = string.Empty;
|
if (evenKills.Count > 0)
|
{
|
message = evenKills.Dequeue();
|
return true;
|
}
|
return false;
|
}
|
|
public void Clear()
|
{
|
battleHints.Clear();
|
evenKills.Clear();
|
}
|
}
|
}
|
|