255 lines
7.5 KiB
C#
255 lines
7.5 KiB
C#
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using GCGame.Table;
|
|||
|
using System;
|
|||
|
using Module.Log;
|
|||
|
|
|||
|
public class BossBookPanel : UIControllerBase<BossBookPanel>
|
|||
|
{
|
|||
|
public UIContainerBase _BossInfoContainer;
|
|||
|
public UIContainerBase _AttrContainer;
|
|||
|
public GameObject _RedTips;
|
|||
|
|
|||
|
public static Dictionary<int, HandbookBossInfo> _BossDictionary;
|
|||
|
private Dictionary<int, RoleViewAttrPair.AttrPair> _AttrDictionary;
|
|||
|
private static List<int> _ActedSuidIDs;
|
|||
|
|
|||
|
public static List<int> 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<int, HandbookBossInfo>();
|
|||
|
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<int, HandbookBossInfo>();
|
|||
|
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<int, RoleViewAttrPair.AttrPair>();
|
|||
|
_BossInfoContainer.ForeachActiveItem<BossBookInfoItem>((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<Tab_BossHandBook> bossTabs = new List<Tab_BossHandBook>();
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|