using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using GCGame.Table; using System; using Module.Log; public class BossBookPanel : UIControllerBase { public UIContainerBase _BossInfoContainer; public UIContainerBase _AttrContainer; public GameObject _RedTips; public static Dictionary _BossDictionary; private Dictionary _AttrDictionary; private static List _ActedSuidIDs; public static List ActedSuidIDs { get { return _ActedSuidIDs; } } public void OnEnable() { SetInstance(this); ReqInfo(); } public void OnDisable() { SetInstance(null); } private void ReqInfo() { ReqHandbookBossList reqPacket = new ReqHandbookBossList(); reqPacket.SendMsg(); _BossDictionary = new Dictionary(); var bossTables = TableManager.GetBossHandBook(); foreach (var bossTab in bossTables) { if (!_BossDictionary.ContainsKey(bossTab.Value.BossId)) { _BossDictionary.Add(bossTab.Value.BossId, new HandbookBossInfo() { BossId = bossTab.Value.BossId , Level = 0}); } } } public static void InitInfoStatic(RespHandbookBossList binaryMsg) { _BossDictionary = new Dictionary(); var bossTables = TableManager.GetBossHandBook(); foreach (var bossTab in bossTables) { if (!_BossDictionary.ContainsKey(bossTab.Value.BossId)) { _BossDictionary.Add(bossTab.Value.BossId, new HandbookBossInfo() { BossId = bossTab.Value.BossId, Level = 0 }); } } for (int i = 0; i < binaryMsg.HandbookList.Count; ++i) { if (_BossDictionary.ContainsKey(binaryMsg.HandbookList[i].BossId)) { _BossDictionary[binaryMsg.HandbookList[i].BossId].Level = binaryMsg.HandbookList[i].Level; _BossDictionary[binaryMsg.HandbookList[i].BossId].Exp = binaryMsg.HandbookList[i].Exp; } } _ActedSuidIDs = binaryMsg.CombineList; } public void InitInfo(RespHandbookBossList binaryMsg) { for (int i = 0; i < binaryMsg.HandbookList.Count; ++i) { if (_BossDictionary.ContainsKey(binaryMsg.HandbookList[i].BossId)) { _BossDictionary[binaryMsg.HandbookList[i].BossId].Level = binaryMsg.HandbookList[i].Level; _BossDictionary[binaryMsg.HandbookList[i].BossId].Exp = binaryMsg.HandbookList[i].Exp; } } _ActedSuidIDs = binaryMsg.CombineList; _BossInfoContainer.InitContentItem(_BossDictionary.Values); _AttrDictionary = new Dictionary(); _BossInfoContainer.ForeachActiveItem((bossItem) => { if (bossItem.CurTab != null) { if (!_AttrDictionary.ContainsKey(bossItem.CurTab.PropId[0])) { RoleViewAttrPair.AttrPair attrPair = new RoleViewAttrPair.AttrPair((PropID.PropertyID)bossItem.CurTab.PropId[0], 0); _AttrDictionary.Add(bossItem.CurTab.PropId[0], attrPair); } _AttrDictionary[bossItem.CurTab.PropId[0]]._Value1 += bossItem.CurTab.PropVal[0]; } }); for (int i = 0; i < _ActedSuidIDs.Count; ++i) { var combineTab = TableManager.GetBossHandBookCombineByID(_ActedSuidIDs[i]); for (int j = 0; j < combineTab.PropId.Length; ++j) { if (combineTab.PropId[j] > 0) { if (!_AttrDictionary.ContainsKey(combineTab.PropId[j])) { RoleViewAttrPair.AttrPair attrPair = new RoleViewAttrPair.AttrPair((PropID.PropertyID)combineTab.PropId[j], 0); _AttrDictionary.Add(combineTab.PropId[j], attrPair); } _AttrDictionary[combineTab.PropId[j]]._Value1 += combineTab.PropVal[j]; } } } _AttrContainer.InitContentItem(_AttrDictionary.Values); if (BossBookSuit.Instance()) { BossBookSuit.Instance().Refresh(); } _RedTips.SetActive(IsCanAnyBossSuitAct()); } public void OnBtnHelper() { MessageHelpLogic.ShowHelpMessage(58); } public void OnBtnSuit() { UIManager.ShowUI(UIInfo.BossBookSuit); } public static Tab_BossHandBook GetBossBookTab(int bossID, int bossLevel) { var bossTables = TableManager.GetBossHandBook(); Tab_BossHandBook bossBookTab = null; foreach (var bossTab in bossTables) { if (bossTab.Value.BossId == bossID && bossTab.Value.Level == bossLevel) { bossBookTab = bossTab.Value; break; } } return bossBookTab; } public static bool IsBoosLevel(int bossID, int bossLevel) { if (!_BossDictionary.ContainsKey(bossID)) return false; return _BossDictionary[bossID].Level >= bossLevel; } public static bool IsBossBookCanLevelUp(HandbookBossInfo bossBookInfo) { var bossTables = TableManager.GetBossHandBook(); Tab_BossHandBook nextTab = null; foreach (var bossTab in bossTables) { if (bossTab.Value.BossId == bossBookInfo.BossId && bossTab.Value.Level == bossBookInfo.Level + 1) { nextTab = bossTab.Value; } } if (nextTab == null) return false; return bossBookInfo.Exp >= nextTab.CostExpTotal; } public static bool IsNeedShowTips() { return IsAnyBossBookCanLevelUp() || IsCanAnyBossSuitAct(); } public static bool IsAnyBossBookCanLevelUp() { if (_BossDictionary == null || _BossDictionary.Count == 0) return false; foreach (var bossBook in _BossDictionary.Values) { if (IsBossBookCanLevelUp(bossBook)) return true; } return false; } public static bool IsBossSuitCanAct(Tab_BossHandBookCombine suitTab) { List bossTabs = new List(); for (int i = 0; i < suitTab.BossId.Length; ++i) { if (suitTab.BossId[i] > 0) { var bossTab = BossBookPanel.GetBossBookTab(suitTab.BossId[i], suitTab.Level[i]); bossTabs.Add(bossTab); } } if (BossBookPanel.ActedSuidIDs == null || BossBookPanel.ActedSuidIDs.Contains(suitTab.Id)) { return false; } else { var bossCanAct = true; foreach (var bossTab in bossTabs) { if (!BossBookPanel.IsBoosLevel(bossTab.BossId, bossTab.Level)) { bossCanAct = false; break; } } return bossCanAct; } } public static bool IsCanAnyBossSuitAct() { var suitTables = TableManager.GetBossHandBookCombine(); foreach (var suitTab in suitTables.Values) { if (IsBossSuitCanAct(suitTab)) { return true; } } return false; } }