Files
JJBB/Assets/Project/Script/GUI/MeridiaSoul/BossBookPanel.cs

255 lines
7.5 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00
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;
}
}