//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, December 22, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using LitJson; namespace vnxbqy.UI { // boss伤害排行榜和协助系统结合 public class DemonJarDamageRankWin : Window { [SerializeField] BossHurtRankBehaviour m_RankBehaviour; [SerializeField] Button HurtRank; [SerializeField] Button AssistHurtRank; [SerializeField] Button SendAssist; [SerializeField] Text SendAssistText; [SerializeField] Button ShowAssistTips; // 快速查看当前协助信息 如奖励等 [SerializeField] Transform AssistInfoBG; [SerializeField] TextEx AssistInfo; [SerializeField] TextEx FuncInfo; // 额外小提示 DateTime startCoolTime = DateTime.Now; //冷却时间 int CoolTimeSecond = 0; DungeonModel model { get { return ModelCenter.Instance.GetModel(); } } DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel(); } } private bool isAssistInfoButtonClick = false; #region Built-in protected override void BindController() { } protected override void AddListeners() { HurtRank.SetListener(ShowBossRank); AssistHurtRank.SetListener(ShowAssistRank); ShowAssistTips.SetListener(ShowAssistInfo); } private void ShowButton() { //ShowAssistTips.SetActive(!CrossServerUtility.IsCrossServer()); //SendAssist.SetActive(!CrossServerUtility.IsCrossServer()); if (PlayerDatas.Instance.baseData.ExAttr1 > 0) { SendAssist.SetColorful(null, false); SendAssist.RemoveAllListeners(); } else { SendAssist.SetColorful(null, true); SendAssist.SetListener(SendAssistPack); } } protected override void OnPreOpen() { model.selectHurtModel = 1; // 选择显示1.伤害排行 2.协助伤害 ShowForm(); FuncInfo.text = ""; if (PlayerDatas.Instance.baseData.MapID == DemonJarModel.DATA_MAPID) { FuncInfo.text = Language.Get("DemonJar17"); } SendAssistText.text = Language.Get("QuestAssist"); CoolTimeSecond = 0; PlayerDatas.Instance.playerDataRefreshEvent += OnCloseAssist; } private void ShowForm() { var dungeonModel = ModelCenter.Instance.GetModel(); var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); m_RankBehaviour.Init(dataMapId); AssistInfoBG.SetActive(false); } protected override void OnAfterOpen() { ShowButton(); if (PlayerMainDate.DemonJarDamageRankWinChange != null) PlayerMainDate.DemonJarDamageRankWinChange(); } protected override void OnPreClose() { PlayerDatas.Instance.playerDataRefreshEvent -= OnCloseAssist; } private void OnCloseAssist(PlayerDataType type) { //只处理取消 if (type != PlayerDataType.ExAttr1) return; ShowButton(); } protected override void OnAfterClose() { if (PlayerMainDate.DemonJarDamageRankWinChange != null) PlayerMainDate.DemonJarDamageRankWinChange(); } protected override void LateUpdate() { base.LateUpdate(); if (GAMgr.Instance.GetBySID(model.BossHurtRank.npcObjID) == null) { if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } } if (CoolTimeSecond > 0) { var seconds = (int)(CoolTimeSecond - (float)(DateTime.Now - startCoolTime).TotalSeconds); if (seconds <= 0) { CoolTimeSecond = 0; SendAssistText.text = Language.Get("QuestAssist"); } else { SendAssistText.text = Language.Get("JadeDynastyCD", seconds); } } if (!isAssistInfoButtonClick && AssistInfoBG.gameObject.activeSelf && Input.GetMouseButtonUp(0)) { AssistInfoBG.SetActive(false); } isAssistInfoButtonClick = false; } #endregion private void ShowBossRank() { model.selectHurtModel = 1; HurtRank.transform.Find("Text").GetComponent().color = UIHelper.GetUIColor(TextColType.LightYellow); AssistHurtRank.transform.Find("Text").GetComponent().color = UIHelper.GetUIColor(TextColType.NavyBrown); ShowForm(); } private void ShowAssistRank() { model.selectHurtModel = 2; HurtRank.transform.Find("Text").GetComponent().color = UIHelper.GetUIColor(TextColType.NavyBrown); AssistHurtRank.transform.Find("Text").GetComponent().color = UIHelper.GetUIColor(TextColType.LightYellow); ShowForm(); } private void SendAssistPack() { if (PlayerDatas.Instance.baseData.FamilyId == 0 && !CrossServerUtility.IsCrossServer()) { SysNotifyMgr.Instance.ShowTip("DailyQuestwinUnionLimit"); return; } if (CoolTimeSecond > 0) return; assistModel.SendRequestAssistBoss(model.BossHurtRank.npcObjID); startCoolTime = DateTime.Now; CoolTimeSecond = 10; } private void ShowAssistInfo() { isAssistInfoButtonClick = true; if (AssistInfoBG.gameObject.activeSelf) { AssistInfoBG.SetActive(false); } else { AssistInfoBG.SetActive(true); GActor actore = GAMgr.Instance.GetBySID(model.BossHurtRank.npcObjID); int funcID = findPreciousModel.GetBossFuncIDByBossID((actore as GActorNpcFight).NpcConfig.NPCID); int activeCnt = 0; if (GeneralDefine.FBAssistAward.ContainsKey(PlayerDatas.Instance.baseData.MapID)) { activeCnt = GeneralDefine.FBAssistAward[PlayerDatas.Instance.baseData.MapID][1]; } else if (GeneralDefine.BossAssistAward.ContainsKey(funcID)) { activeCnt = GeneralDefine.BossAssistAward[funcID][1]; } AssistInfo.text = UIHelper.ReplaceNewLine(Language.Get("AssistAwardInfo", activeCnt, assistModel.m_TodayAssistMoney.ToString() + "/" + FuncConfigConfig.Get("AssistAward").Numerical4)); } } } }