using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using GCGame.Table; using Games.Mission; using Module.Log; //世界BOSS和BOSS之家的副本也用这个UI显示 public class CrossServerBossInfo : MonoBehaviour { public static CrossServerBossInfo Instance; private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } public UIContainerBase _BossContainer; public Text Title; //oneboss 信息 public GameObject ExitBtn; public GameObject BossDetialObj; public Text BossDetialName; public TimeDownText TimeDown; public Text[] ServerAttackText; //天 地 人 private void OnEnable() { OnBtnShow(); GCGame.Table.Tab_SceneClass sceneClass = GCGame.Table.TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0); if (sceneClass == null) { UIManager.CloseUI(UIInfo.CrossServerBossInfo); return; } WorldBossData.Instance.InitSceneBossList(); if(WorldBossData.Instance.SceneBossCount()<=0) { UIManager.CloseUI(UIInfo.CrossServerBossInfo); return; } if (WorldBossData.Instance.BossSceneType == 1) { //世界BOSS Title.text = StrDictionary.GetClientDictionaryString("#{49145}"); } else if(WorldBossData.Instance.BossSceneType == 2) { //BOSS之家 Title.text = StrDictionary.GetClientDictionaryString("#{49146}"); } else if(WorldBossData.Instance.BossSceneType == 3) { // 跨服BOSS Title.text = StrDictionary.GetClientDictionaryString("#{49115}"); _LastFreshTime = Time.time; //左侧界面显示跨服BOSS位置 if(CrossServerMap.Instance!=null) { CrossServerMap.Instance.InitCrossServerBoss(); } } Close_Detial(); InitList(); ReqBossHomeBossState cmd = new ReqBossHomeBossState(); cmd.fubenid = GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID; cmd.SendMsg(); } float _LastFreshTime = 0; private void Update() { if(WorldBossData.Instance.BossSceneType == 3) { if (_LastFreshTime <= 0 || Time.time - _LastFreshTime >= 1) { _LastFreshTime = Time.time; ReqBossHomeBossState cmd = new ReqBossHomeBossState(); cmd.fubenid = GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID; cmd.SendMsg(); if(m_CurrentShowDetial!=null) { ReqCrossWBGroupList cmdc = new ReqCrossWBGroupList(); cmdc.fubenid = GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID; cmdc.bossid = m_CurrentShowDetial.BossID; cmdc.SendMsg(); } } } } //BOSS之家和世界BOSS信息 跨服BOSS public void HomeBossInfo() { _BossContainer.RefreshItems(); if(m_CurrentShowDetial!=null) BossDetialName.text = string.Format("{0} {1}%", m_CurrentShowDetial.BossName, m_CurrentShowDetial.LeaveBlood); } private void InitList() { if (_BossContainer.gameObject.activeInHierarchy == false) return; List bossInfos = WorldBossData.Instance.GetSceneBossList(); _BossContainer.InitContentItem(bossInfos, OnSelectBoss); } private WorldBossData.SceneBossInfo m_CurrentShowDetial; public void OnSelectBoss(object obj) { m_CurrentShowDetial = (WorldBossData.SceneBossInfo)obj; if (m_CurrentShowDetial == null) return; if(m_CurrentShowDetial.BossType == 3) { ReqCrossWBGroupList cmdc = new ReqCrossWBGroupList(); cmdc.fubenid = GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID; cmdc.bossid = m_CurrentShowDetial.BossID; cmdc.SendMsg(); _BossContainer.gameObject.SetActive(false); BossDetialObj.SetActive(true); BossDetialName.text = string.Format("{0} {1}%", m_CurrentShowDetial.BossName, m_CurrentShowDetial.LeaveBlood); int OverTime = ActivityDataManager.Instance.GetActivityOverTime((int)ActivityDataManager.Activity_Type.ACTIVITY_TYPE_CROSSSERVERBOSS); if (OverTime > 0) TimeDown.Init("",Time.realtimeSinceStartup + OverTime, 0, -1, null, TimeDownText.TimeFormat.english); else TimeDown.Init(StrDictionary.GetClientDictionaryString("#{27025}")); ServerAttackValue(); } else { Tab_WorldBoss worldBoss = TableManager.GetWorldBossByID(m_CurrentShowDetial.BossID, 0); if(worldBoss!=null) { AutoSearchPoint point = new AutoSearchPoint(worldBoss.SceneID, worldBoss.PosX, worldBoss.PosZ, -1, AutoSearchPoint.ChangeMap_Type.WORLDMAP); if (GameManager.gameManager && GameManager.gameManager.AutoSearch) { GameManager.gameManager.AutoSearch.BuildPath(point); GameManager.gameManager.AutoSearch.Path.autoSearchRadius = 1.5f; GameManager.gameManager.AutoSearch.Path.AutoSearchTargetName = m_CurrentShowDetial.BossName; } } } } public void Close_Detial() { _BossContainer.gameObject.SetActive(true); BossDetialObj.SetActive(false); InitList(); m_CurrentShowDetial = null; } public void ServerAttackData(RetCrossWBGroupList binaryMsg) { if (binaryMsg.fubenid != GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID) return; ServerAttackValue(); } private void ServerAttackValue() { if (m_CurrentShowDetial == null || BossDetialObj.activeSelf == false) return; List indexs = new List(); Dictionary> valueTexts = new Dictionary>(); for(int i=0;i i) { ServerAttackText[i].text = m_CurrentShowDetial.ServerAttacksValue[i].ToString(); } if (valueTexts.ContainsKey(m_CurrentShowDetial.ServerAttacksValue[i])) valueTexts[m_CurrentShowDetial.ServerAttacksValue[i]].Add(ServerAttackText[i]); else { valueTexts[m_CurrentShowDetial.ServerAttacksValue[i]] = new List(); valueTexts[m_CurrentShowDetial.ServerAttacksValue[i]].Add(ServerAttackText[i]); } } List keys = new List(valueTexts.Keys); keys.Sort(); for(int i=0;i