JJBB/Assets/Project/Script/GUI/Advance/AdvancePanelCtr.cs

855 lines
30 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using GCGame.Table;
using Module.Log;
using UnityEngine.UI;
public class AdvancePanelCtr : MonoBehaviour {
public List<AdvanceIncAttrItem> incAttrItemList;
public AdvanceInfo advanceInfo; // 页面初始化使用的进阶信息,每次接收到新的协议会更新
public AdvanceWishPanelCtr wishPanel;
public AdvanceItemPanelCtr itemPanel;
public GameObject modelPanel;
public GameObject canAdvancePanel;
public GameObject cantAdcancePanel;
public List<GameObject> attrIncList;
public GameObject advanceWishPanel;
public GameObject advanceItemPanel;
public GameObject maxLevelIcon;
public UICameraTexture curModelCameraTexture;
public UIImgText _CurCombatVal;
public UICameraTexture nextModelCameraTexture;
public UIImgText _NextCombatVal;
public UICameraTexture maxModelCmaeraTexture;
public UIImgText _MaxCombatVal;
//翅膀高度问题 上调80
public Transform _CurModelRawIamgeTrans;
public Transform _NextModelRawIamgeTrans;
public Text curModelGrade;
public Text curModelName;
public Text nextModelGrade;
public Text nextModelName;
public Text maxModelGrade;
public Text maxModelName;
public Transform wishValueTextParent;
public GameObject wishValueTextPrefab;
public bool isMaxLevel = false;
public static AdvancePanelCtr Instance;
private void Awake()
{
Instance = this;
InitWishFloatTextPool();
}
public void PreInit()
{
Awake();
}
public void InitAdvancePanel(AdvanceInfo info)
{
advanceInfo = info;
InitAdvancePanel(advanceInfo.baseId, advanceInfo.type, advanceInfo._RemainAdvanceItemCount);
}
private List<int> curTypeLevelBaseIdList;
private Dictionary<int, int> curTypeGradeModelIdDic;
private Tab_AdvanceBase maxAdvanceBase = null;
public Tab_AdvanceBase MaxAdvanceBase
{
get { return maxAdvanceBase; }
}
private int curAdvanceLevel; //当前进阶等级
public int CurAdvanceLevel
{
get { return curAdvanceLevel; }
}
private int curAdvanceGrade; //当前进阶等阶
public int CurAdvanceGrade
{
get { return curAdvanceGrade; }
}
private int curAdvanceBaseId;
public int CurAdvanceBaseId
{
get { return curAdvanceBaseId; }
}
private int curAdvanceType;//当前进阶类型
public void InitAdvancePanel(int baseId, int type, int remainItemCount)
{
curAdvanceType = type;
maxModelCmaeraTexture._CanDrag = AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Ride || AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Wing;
curTypeLevelBaseIdList = new List<int>();
curTypeGradeModelIdDic = new Dictionary<int, int>();
var allBaseDic = TableManager.GetAdvanceBase().Values;
foreach (var baseInfo in allBaseDic)
{
if (baseInfo.Id / 1000 - 1 == type)
{
curTypeLevelBaseIdList.Add(baseInfo.Id);
if (!curTypeGradeModelIdDic.ContainsKey(baseInfo.Grade))
{
curTypeGradeModelIdDic.Add(baseInfo.Grade, baseInfo.Id);
}
}
}
curTypeLevelBaseIdList.Sort(SortByLevel);
if (curTypeLevelBaseIdList.Count > 0)
maxAdvanceBase = TableManager.GetAdvanceBaseByID(curTypeLevelBaseIdList[curTypeLevelBaseIdList.Count - 1], 0);
if (maxAdvanceBase == null)
{
return;
}
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0);
if (advanceBase == null)
{
return;
}
advanceWishPanel.gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? true : false);
advanceItemPanel.gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? true : false);
maxLevelIcon.gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? false : true);
//初始化AttrItem
InitAttrItem(baseId, (curTypeLevelBaseIdList.IndexOf(baseId) + 1) < curTypeLevelBaseIdList.Count ? curTypeLevelBaseIdList[curTypeLevelBaseIdList.IndexOf(baseId) + 1] : 0);
if (advanceWishPanel.activeInHierarchy)
{
wishPanel.InitWishPanel(advanceInfo);
}
//if (advanceItemPanel.activeInHierarchy)
//{
itemPanel.InitItemPanel(advanceInfo);
//}
modelPanel.SetActive(true);
canAdvancePanel.SetActive(advanceBase.Grade < maxAdvanceBase.Grade ? true : false);
cantAdcancePanel.SetActive(advanceBase.Grade < maxAdvanceBase.Grade ? false : true);
if (canAdvancePanel.activeInHierarchy)
{
if (curTypeGradeModelIdDic.ContainsKey(advanceBase.Grade) && curTypeGradeModelIdDic.ContainsKey(advanceBase.Grade + 1))
{
StartCoroutine(ShowMountModel(curTypeGradeModelIdDic[advanceBase.Grade], curTypeGradeModelIdDic[advanceBase.Grade + 1]));
}
}
else
{
if (cantAdcancePanel.activeInHierarchy && curTypeGradeModelIdDic.ContainsKey(advanceBase.Grade))
{
StartCoroutine(ShowMountModel(curTypeGradeModelIdDic[advanceBase.Grade]));
}
}
curAdvanceLevel = advanceBase.Level;
curAdvanceGrade = advanceBase.Grade;
curAdvanceBaseId = baseId;
RecordCurAdvanceInfo(advanceBase.Id);
UpdateRedPoint();
}
public bool UpdateRedPoint()
{
if(itemPanel != null)
{
return itemPanel.UpdateRedPoint();
}
else
{
LogModule.ErrorLog("Can't get advanceItemPanelCtr, can't update red point tips !!!");
return false;
}
}
//刷新界面
private bool _IsAutoAdvanceCauseAdvance = false;
public void RefreshAdvancePanelInfo(AdvanceRetInfo info)
{
int curBaseId = (info.type + 1) * 1000 + info.level;
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(curBaseId, 0);
if (advanceBase == null)
{
return;
}
if (maxAdvanceBase == null)
{
return;
}
if (advanceBase.Level > curAdvanceLevel)
{
for (int index = 0; index < attrIncList.Count; index++)
{
attrIncList[index].gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? true : false);
}
advanceWishPanel.gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? true : false);
advanceItemPanel.gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? true : false);
maxLevelIcon.gameObject.SetActive(advanceBase.Level < maxAdvanceBase.Level ? false : true);
}
if (advanceBase.Level > curAdvanceLevel) //等级提升才刷新属性
{
curAdvanceLevel = advanceBase.Level;
InitAttrItem(curBaseId, (curTypeLevelBaseIdList.IndexOf(curBaseId) + 1) < curTypeLevelBaseIdList.Count ? curTypeLevelBaseIdList[curTypeLevelBaseIdList.IndexOf(curBaseId) + 1] : 0);
itemPanel.RefreshNeedCostPanel(advanceBase.Id + 1);
}
//金钱不足停止
if (info.incWish <= 0 && info.wish >= 0)
{
if (itemPanel.isOnAdvance == true) //当前金钱不足
{
JudgeMoneyLogic.IsMoneyEnough(MONEYTYPE.MONEYTYPE_YUANBAO, itemPanel.lackItemCount * itemPanel.curNeedCostItemPrice);
}
}
if (advanceBase.Grade > curAdvanceGrade)
{
if(itemPanel.isOnAdvance)
{
_IsAutoAdvanceCauseAdvance = true;
}else
{
_IsAutoAdvanceCauseAdvance = false;
}
//关闭进阶界面的自动进阶
itemPanel.isOnAdvance = false;
itemPanel.SetAdvanceBtnState();
}
if (advanceItemPanel.activeInHierarchy)
itemPanel.RefreshPanelInfo(advanceBase.Id, info.wish, info.remainAdvanceItemCount);
if (advanceWishPanel.activeInHierarchy)
wishPanel.RefreshWishPanel(info);
if (info.incWish > 0)
{
CreateWishValueText(info.incWish, info.isCrit);
}
int type = (advanceBase.Id - advanceBase.Level) / 1000 - 1;
if (advanceBase.Grade >= maxAdvanceBase.Grade)
{
if (!modelPanel.activeInHierarchy)
{
modelPanel.SetActive(true);
}
canAdvancePanel.gameObject.SetActive(false);
cantAdcancePanel.gameObject.SetActive(true);
if (advanceBase.Grade > curAdvanceGrade)
{
curAdvanceGrade = advanceBase.Grade;
StartCoroutine(ShowMountModel(curBaseId));
}
}
else
{
canAdvancePanel.gameObject.SetActive(true);
//cantAdcancePanel.gameObject.SetActive(false);
//进阶刷新模型
if (advanceBase.Grade > curAdvanceGrade)
{
ShowGainNewAnimation(curBaseId);
curAdvanceGrade = advanceBase.Grade;
if(gameObject.activeInHierarchy)
StartCoroutine(ShowMountModel(curTypeGradeModelIdDic[curAdvanceGrade], curTypeGradeModelIdDic[curAdvanceGrade + 1]));
}
RecordCurAdvanceInfo(advanceBase.Id);
}
}
public void ShowCurAndNextAnimation(int curBaseId, int nextBaseId)
{
//Tab_AdvanceBase curAdvanceBase = TableManager.GetAdvanceBaseByID(curBaseId, 0);
//Tab_AdvanceBase nextAdvanceBase = TableManager.GetAdvanceBaseByID(nextBaseId, 0);
//if(curAdvanceBase != null && nextAdvanceBase != null)
//{
// Tab_CharModel curCharModel = TableManager.GetCharModelByID(curAdvanceBase.ModelId, 0);
// Tab_CharModel nextCharModel = TableManager.GetCharModelByID(nextAdvanceBase.ModelId, 0);
// if(curCharModel != null && nextCharModel != null)
// {
// }
//}
//curAnimation.ShowAnimation(curBaseId);
//nextAnimation.ShowAnimation(nextBaseId);
}
public void ShowMaxAnimation(int maxBaseId)
{
//maxAnimation.ShowAnimation(maxBaseId);
}
private int lastBaseId = -1;
/// <summary>
/// 通过id记录保存当前进阶信息
/// </summary>
/// <param name="baseId">进阶id</param>
public void RecordCurAdvanceInfo(int baseId)
{
if (lastBaseId == baseId)
{
return;
}
lastBaseId = baseId;
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0);
if (advanceBase == null)
{
return;
}
int type = (advanceBase.Id - advanceBase.Level) / 1000 - 1;
switch (type)
{
case (int)AdvanceBase.AdvanceType.Ride:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideLevel = advanceBase.Level;
break;
case (int)AdvanceBase.AdvanceType.Wing:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingLevel = advanceBase.Level;
break;
case (int)AdvanceBase.AdvanceType.Piano:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponLevel = advanceBase.Level;
break;
case (int)AdvanceBase.AdvanceType.Qilinbi:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishLevel = advanceBase.Level;
break;
case (int)AdvanceBase.AdvanceType.Soul:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealLevel = advanceBase.Level;
break;
case (int)AdvanceBase.AdvanceType.Mask:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskLevel = advanceBase.Level;
break;
case (int)AdvanceBase.AdvanceType.Huopao:
GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownGrade = advanceBase.Grade;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownLevel = advanceBase.Level;
break;
}
}
//当前正在显示的FloatText
private List<GameObject> _AllShowingWishFloatTextList = new List<GameObject>();
public void CreateWishValueText(int incWish, bool isCrit)
{
if (!gameObject.activeInHierarchy)
return;
_AllShowingWishFloatTextList.Add(GetWishFloatTextFromPool());
_AllShowingWishFloatTextList[_AllShowingWishFloatTextList.Count - 1].SetActive(true);
_AllShowingWishFloatTextList[_AllShowingWishFloatTextList.Count - 1].transform.localPosition = Vector3.zero;
_AllShowingWishFloatTextList[_AllShowingWishFloatTextList.Count - 1].GetComponent<AdvanceWishValueFloatText>().InitText(incWish, isCrit);
}
public List<GameObject> _AllWishFloatTexPool;
public void InitWishFloatTextPool()
{
_AllWishFloatTexPool = new List<GameObject>();
for (int index = 0; index < 10; index ++)
{
CreateWishFloatTextAndAddToPool();
}
}
public void CreateWishFloatTextAndAddToPool()
{
GameObject textPrefab = GameObject.Instantiate(wishValueTextPrefab);
textPrefab.transform.SetParent(wishValueTextParent);
textPrefab.transform.localPosition = Vector3.zero;
textPrefab.transform.localScale = Vector3.one;
textPrefab.transform.localRotation = Quaternion.Euler(Vector3.zero);
AddWishFloatTextToPool(textPrefab);
}
public void AddWishFloatTextToPool(GameObject obj)
{
obj.SetActive(false);
obj.transform.localPosition = Vector3.zero;
if(!_AllWishFloatTexPool.Contains(obj))
_AllWishFloatTexPool.Add(obj);
}
public GameObject GetWishFloatTextFromPool()
{
if(_AllWishFloatTexPool.Count > 0)
{
var obj = _AllWishFloatTexPool[_AllWishFloatTexPool.Count - 1];
_AllWishFloatTexPool.Remove(obj);
return obj;
}else
{
CreateWishFloatTextAndAddToPool();
return GetWishFloatTextFromPool();
}
}
private void OnDisable()
{
ClearAllFloatText();
CloseAutoAdvanceBtn();
}
private void OnDestroy()
{
Instance = null;
for (int index = 0; index < _AllWishFloatTexPool.Count; index++)
{
Destroy(_AllWishFloatTexPool[index]);
}
_AllWishFloatTexPool.Clear();
}
public bool IsCleanWish()
{
if (!isMaxLevel)
{
int curAdvanceLevel = AdvanceCanadvanceCtr.GetInstance().GetAdvanceLevel((AdvanceBase.AdvanceType)curAdvanceType);
int advanceBaseId = (curAdvanceType + 1) * 1000 + curAdvanceLevel;
var advanceBaseTab = TableManager.GetAdvanceBaseByID(advanceBaseId, 0);
if (advanceBaseTab != null)
{
if (advanceBaseTab.DayDecWishValuePercent > 0)
{
return true;
}
}
}
return false;
}
public bool IsCloseAdvancePanel()
{
bool isClose = true;
if (!isMaxLevel)
{
int curAdvanceLevel = AdvanceCanadvanceCtr.GetInstance().GetAdvanceLevel((AdvanceBase.AdvanceType)curAdvanceType);
int advanceBaseId = (curAdvanceType + 1) * 1000 + curAdvanceLevel;
var advanceBaseTab = TableManager.GetAdvanceBaseByID(advanceBaseId, 0);
if(advanceBaseTab != null)
{
if(advanceBaseTab.DayDecWishValuePercent > 0)
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{46225}"), "", delegate() {
UIManager.CloseUI(UIInfo.MessageBox);
isClose = false;
}, delegate() {
UIManager.CloseUI(UIInfo.MessageBox);
isClose = true;
});
}
}
}
return isClose;
}
public void ClearAllFloatText()
{
for(int index = 0; index < _AllShowingWishFloatTextList.Count; index++)
{
AddWishFloatTextToPool(_AllShowingWishFloatTextList[index]);
}
_AllShowingWishFloatTextList.Clear();
for (int index = 0; index < _AllWishFloatTexPool.Count; index++)
{
_AllWishFloatTexPool[index].transform.localPosition = Vector3.zero;
if (_AllWishFloatTexPool[index].activeInHierarchy)
{
_AllWishFloatTexPool[index].SetActive(false);
}
}
}
public void CloseAutoAdvanceBtn()
{
itemPanel.isOnAdvance = false;
itemPanel.SetAdvanceBtnState();
}
//获得新坐骑动画
public void ShowGainNewAnimation(int baseId)
{
UIManager.ShowUI(UIInfo.PopAdvanceTip, delegate(bool bSucess, object param) {
if(bSucess)
{
PopAdvanceTipCtr.Instance.InitAdvancePanel(baseId, _IsAutoAdvanceCauseAdvance);
}
});
}
IEnumerator ShowMountModel(int curBaseId, int nextBaseId)
{
curModelCameraTexture._CanDrag = AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Ride || AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Wing;
nextModelCameraTexture._CanDrag = AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Ride || AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Wing;
Tab_AdvanceBase curBase = TableManager.GetAdvanceBaseByID(curBaseId, 0);
Tab_AdvanceBase nextBase = TableManager.GetAdvanceBaseByID(nextBaseId, 0);
if(curBase == null || nextBase == null)
{
yield break;
}
_CurCombatVal.text = curBase.CombatValue + "";
_NextCombatVal.text = nextBase.CombatValue + "";
switch (curAdvanceType)
{
case (int)AdvanceBase.AdvanceType.Ride:
Tab_MountBase curMountBase = TableManager.GetMountBaseByID(curBase.ModelId, 0);
Tab_MountBase nextMountBase = TableManager.GetMountBaseByID(nextBase.ModelId, 0);
if (curMountBase == null || nextMountBase == null)
{
yield break;
}
Tab_CharMount curCharmount = TableManager.GetCharMountByID(curMountBase.ModelID, 0);
Tab_CharMount nextCharMount = TableManager.GetCharMountByID(nextMountBase.ModelID, 0);
if (curCharmount == null || nextCharMount == null)
{
yield break;
}
curModelCameraTexture.InitMountModelPath(curCharmount, delegate() {
curModelCameraTexture.gameObject.SetActive(true);
});
nextModelCameraTexture.InitMountModelPath(nextCharMount, delegate() {
nextModelCameraTexture.gameObject.SetActive(true);
});
curModelName.text = curMountBase.Name;
nextModelName.text = nextMountBase.Name;
break;
case (int)AdvanceBase.AdvanceType.Wing:
{
Tab_AdvanceBase curAdvanceBase = TableManager.GetAdvanceBaseByID(curBaseId, 0);
if (curAdvanceBase == null)
{
yield break;
}
Tab_AdvanceBase nextAdvanceBase = TableManager.GetAdvanceBaseByID(nextBaseId, 0);
if(nextAdvanceBase == null)
{
yield break;
}
curModelCameraTexture.InitWingModelPath(curAdvanceBase, null, delegate() {
curModelCameraTexture.gameObject.SetActive(true);
});
nextModelCameraTexture.InitWingModelPath(nextAdvanceBase, null, delegate() {
nextModelCameraTexture.gameObject.SetActive(true);
});
curModelName.text = curAdvanceBase.Name;
nextModelName.text = nextAdvanceBase.Name;
}
break;
default:
Tab_CharModel curCharModel = TableManager.GetCharModelByID(curBase.ModelId, 0);
Tab_CharModel nextCharModel = TableManager.GetCharModelByID(nextBase.ModelId, 0);
if(curCharModel == null || nextCharModel == null)
{
yield break;
}
curModelCameraTexture.InitModelPath(curCharModel.ResPath, curCharModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true,
delegate() { curModelCameraTexture.gameObject.SetActive(true); });
nextModelCameraTexture.InitModelPath(nextCharModel.ResPath, nextCharModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true,
delegate () { nextModelCameraTexture.gameObject.SetActive(true); });
curModelName.text = curCharModel.Name;
nextModelName.text = nextCharModel.Name;
break;
}
curModelGrade.text = GCGame.Utils.GetGradeString(curBase.Grade);
nextModelGrade.text = GCGame.Utils.GetGradeString(nextBase.Grade);
yield break;
}
IEnumerator ShowMountModel(int baseId)
{
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0);
if(advanceBase == null)
{
yield break;
}
_MaxCombatVal.text = advanceBase.CombatValue + "";
switch (curAdvanceType)
{
case (int)AdvanceBase.AdvanceType.Ride:
Tab_MountBase mountBase = TableManager.GetMountBaseByID(advanceBase.ModelId, 0);
if (mountBase == null)
{
yield break;
}
Tab_CharMount charMount = TableManager.GetCharMountByID(mountBase.ModelID, 0);
if (charMount == null)
{
yield break;
}
maxModelCmaeraTexture.InitMountModelPath(charMount, delegate (){
maxModelCmaeraTexture.gameObject.SetActive(true);
});
maxModelName.text = mountBase.Name;
break;
case (int)AdvanceBase.AdvanceType.Wing:
{
maxModelCmaeraTexture.InitWingModelPath(advanceBase, null, delegate (){
maxModelCmaeraTexture.gameObject.SetActive(true);
});
maxModelName.text = advanceBase.Name;
}
break;
default:
Tab_CharModel charModel = TableManager.GetCharModelByID(advanceBase.ModelId, 0);
if(charModel == null)
{
break;
}
maxModelCmaeraTexture.InitModelPath(charModel.ResPath, charModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true, delegate ()
{
maxModelCmaeraTexture.gameObject.SetActive(true);
});
maxModelName.text = charModel.Name;
break;
}
maxModelGrade.text = GCGame.Utils.GetGradeString(advanceBase.Grade);
yield break;
}
public void InitAttrItem(int curBaseId, int nextBaseId)
{
Tab_AdvanceBase curBase = TableManager.GetAdvanceBaseByID(curBaseId, 0);
Tab_AdvanceBase nextBase = TableManager.GetAdvanceBaseByID(nextBaseId, 0);
if(curBase != null)
{
for(int index = 0; index < curBase.getAttrIdCount(); index++)
{
if(curBase.GetAttrIdbyIndex(index) > 0)
{
if(nextBase != null)
{
isMaxLevel = false;
incAttrItemList[index].gameObject.SetActive(true);
incAttrItemList[index].InitIncAttrItem(curBase.GetAttrIdbyIndex(index) + 10000,
curBase.GetAttrValuebyIndex(index),
nextBase.GetAttrValuebyIndex(index) - curBase.GetAttrValuebyIndex(index));
}else //达到最高等级
{
isMaxLevel = true;
incAttrItemList[index].gameObject.SetActive(true);
incAttrItemList[index].InitIncAttrItem(curBase.GetAttrIdbyIndex(index) + 10000,
curBase.GetAttrValuebyIndex(index),
0);
}
}else
{
incAttrItemList[index].gameObject.SetActive(false);
}
}
}
}
public static int SortByLevel(int baseIdA, int baseIdB)
{
Tab_AdvanceBase baseA = TableManager.GetAdvanceBaseByID(baseIdA, 0);
Tab_AdvanceBase baseB = TableManager.GetAdvanceBaseByID(baseIdB, 0);
if(baseA != null && baseB != null)
{
if(baseA.Level < baseB.Level)
{
return -1;
}else
{
return 1;
}
}
return 0;
}
public void OnHelpBtnClick()
{
switch(AdvanceMountPanelCtr.Instance.m_AdvanceType)
{
case AdvanceBase.AdvanceType.Ride:
MessageHelpLogic.ShowHelpMessage(25);
break;
case AdvanceBase.AdvanceType.Piano:
MessageHelpLogic.ShowHelpMessage(26);
break;
case AdvanceBase.AdvanceType.Wing:
MessageHelpLogic.ShowHelpMessage(27);
break;
case AdvanceBase.AdvanceType.Qilinbi:
MessageHelpLogic.ShowHelpMessage(28);
break;
case AdvanceBase.AdvanceType.Soul:
MessageHelpLogic.ShowHelpMessage(29);
break;
case AdvanceBase.AdvanceType.Mask:
MessageHelpLogic.ShowHelpMessage(30);
break;
case AdvanceBase.AdvanceType.Huopao:
MessageHelpLogic.ShowHelpMessage(31);
break;
}
}
/// <summary>
/// 进阶界面内是否有显示的红点
/// </summary>
/// <returns></returns>
public bool hasRedPoint()
{
//if(AdvanceMountPanelCtr.Instance.advancePanel.gameObject.activeInHierarchy)
//{
// if (itemPanel.canAdvanceRedIcon != null)
// {
// return itemPanel.canAdvanceRedIcon.activeSelf;
// }
//}
//else
//{
// if(HasRedPoint(AdvanceMountPanelCtr.Instance.m_AdvanceType))
// {
// return true;
// }
//}
//同步物品的时候还没有刷新状态,实际不能显示红点的也会显示
if (HasRedPoint(AdvanceMountPanelCtr.Instance.m_AdvanceType))
{
return true;
}
return false;
}
/// <summary>
/// 检测并更新进阶界面红点信息(不包括菜单)
/// </summary>
/// <returns>
/// true有红点信息
/// fasle: 无红点信息,或存在错误
/// </returns>
public static bool HasRedPoint(AdvanceBase.AdvanceType adType)
{
// 当进阶界面正在显示,直接使用结果
//if(AdvanceMountPanelCtr.Instance != null
// && AdvanceMountPanelCtr.Instance.advancePanel.gameObject.activeInHierarchy
// && AdvanceMountPanelCtr.Instance.m_AdvanceType == adType)
//{
// return Instance.hasRedPoint();
//}
// 页面不存在时,从头计算
AdvanceInfo adInfo;
GameManager.gameManager.PlayerDataPool.m_AdvanceData.AdvanceDataDic.TryGetValue((int)adType, out adInfo);
// 当前进阶数据不存在,或没开启该项时,退出
if (adInfo == null || adInfo.level <= 0)
{
return false;
}
Tab_AdvanceBase tab_abBase = TableManager.GetAdvanceBaseByID(adInfo.baseId, 0);
if(tab_abBase == null)
{
return false;
}
if(tab_abBase.DayDecWishValuePercent > 0)
{
return false;
}
// 寻找最大等级
Tab_AdvanceBase maxAdBase = null;
List<int> baseIdList = new List<int>();
var allBaseDic = TableManager.GetAdvanceBase().Values;
foreach (var baseInfo in allBaseDic)
{
if (baseInfo.Id / 1000 - 1 == (int)adType)
{
baseIdList.Add(baseInfo.Id);
}
}
baseIdList.Sort(SortByLevel);
if (baseIdList.Count > 0)
{
maxAdBase = TableManager.GetAdvanceBaseByID(baseIdList[baseIdList.Count - 1], 0);
}
if (maxAdBase == null)
{
return false;
}
if (tab_abBase.Level < maxAdBase.Level)
{
Tab_AdvanceBase nextAdvanceBase = TableManager.GetAdvanceBaseByID(adInfo.baseId + 1, 0); //本级升下级 读取下级的消耗
if (nextAdvanceBase == null || (nextAdvanceBase.Id - nextAdvanceBase.Level) / 1000 - 1 != adInfo.type)
{
return false;
}
var bagPack = GameManager.gameManager.PlayerDataPool.BackPack;
if (bagPack == null)
return false;
if (bagPack.GetItemCountByDataId(nextAdvanceBase.AdvanceCostItemId) >= nextAdvanceBase.AdvanceCostItemNum)
{
return true;
}
}
return false;
}
}