Files
JJBB/Assets/Project/Script/GUI/Marry/RingPanelCtr.cs
2024-08-23 15:49:34 +08:00

412 lines
12 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using GCGame.Table;
using GCGame;
public class RingPanelCtr : MonoBehaviour {
public static RingPanelCtr Instance;
private void Awake()
{
GetMaxLevel();
GetLevelNeedExp();
if (Instance == null)
{
Instance = this;
}
}
private void OnDestroy()
{
Instance = null;
}
private void OnEnable()
{
ReqCurRingInfo();
}
// 用于红点更新,用于确保红点更新数据完整
// 正式打开页面会重新执行一遍,待优化
public void PreInit()
{
Awake();
ReqCurRingInfo();
}
#region
public RingItem ringItem;
public Text ringName;
public Text ringLevel;
public Text curLevelDesc;
public Text nextLevelDesc;
public GameObject consumeObj;
public Slider ringExpSlider;
public Image consumeItemIcon;
public Image consumeItemQuality;
public Text consumeItemName;
public Text consumeItemOwnValue;
public UIImgText combatValue;
public Text sliderValue;
public GameObject btnRedTip; // 按钮上的红点提示
public List<Text> attrList;
public GameObject _GainBtn;
public GameObject _LevelUpPanel;
#endregion
//当前的进度
public void ReqCurRingInfo()
{
ReqGetMarryRingInfo req = new ReqGetMarryRingInfo();
req.flag = 1;
req.SendMsg();
}
private int curRingLevel; //戒指等级
private MarryRingCtr.RingType curRingType; //戒指类型
private Tab_MarryRingBase curRingBase = null;
private int curRingExp = 0;
//戒指类型 等级 当前经验
public void OnReceivePacket(RespGetMarryRingInfo packet)
{
curRingLevel = packet.ringlevel;
curRingType = (MarryRingCtr.RingType)packet.ringType;
curRingExp = packet.ringExp;
int ringBaseId = ((int)curRingType + 1) * 1000 + curRingLevel;
curRingBase = TableManager.GetMarryRingBaseByID(ringBaseId, 0);
if (curRingBase == null)
{
return;
}
MaxLevelOpt();
InitRingItem(); //初始化戒指的相关信息
InitRingPanelInfo();
InitSliderAndConsumeItem();
InitAttrList();
InitSliderAndConsumeItem();
UpdataRedTips();
}
public void MaxLevelOpt()
{
if (maxLevel == 0)
GetMaxLevel();
_LevelUpPanel.SetActive(curRingLevel != maxLevel);
}
public void InitRingPanelInfo()
{
if (curRingBase == null)
{
return;
}
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(curRingBase.ItemId, 0);
if (commonItem == null)
{
return;
}
ringName.text = commonItem.Name;
ringLevel.text = StrDictionary.GetClientDictionaryString("#{46524}", curRingBase.RingLevel);
}
private int consumeItemId = -1;
public void InitSliderAndConsumeItem()
{
if (curRingLevel < maxLevel)
{
consumeObj.gameObject.SetActive(true);
curLevelDesc.text = curRingLevel.ToString();
nextLevelDesc.text = (curRingLevel + 1).ToString();
if (curRingBase == null)
{
return;
}
sliderValue.text = StrDictionary.GetClientDictionaryString("#{3318}", curRingExp - GetCurLevelNeedExp(curRingLevel), curRingBase.NexctLevelNeedExp);
ringExpSlider.value = (float)(curRingExp - GetCurLevelNeedExp(curRingLevel)) / (float)curRingBase.NexctLevelNeedExp;
Tab_MarryBase marryBase = TableManager.GetMarryBaseByID(1, 0);
if (marryBase == null)
{
return;
}
consumeItemId = marryBase.ConsumeItemId;
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(marryBase.ConsumeItemId, 0);
if (commonItem == null)
{
return;
}
LoadAssetBundle.Instance.SetImageSprite(consumeItemIcon, commonItem.Icon);
LoadAssetBundle.Instance.SetImageSprite(consumeItemQuality, Utils.GetItemQualityFrame(commonItem.Quality));
if (commonItem.QualityEffect > 0)
{
CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, consumeItemIcon.transform);
}
else
{
CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, consumeItemIcon.transform);
}
consumeItemName.text = commonItem.Name;
var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
if (backPack != null)
{
consumeItemOwnValue.text = backPack.GetItemCountByDataId(consumeItemId).ToString();
_GainBtn.SetActive(backPack.GetItemCountByDataId(consumeItemId) <= 0);
}
else
{
consumeItemOwnValue.text = "0";
_GainBtn.SetActive(true);
}
}
else
{
consumeObj.gameObject.SetActive(false);
}
}
public void OnGainBtnClick()
{
ItemTooltipsLogic.ShowItemTooltip(consumeItemId, ItemTooltipsLogic.ShowType.GetPath, _GainBtn.transform.position);
}
private Dictionary<int, int> ringLevelNeedExpDic;
private int expCount = 0;
public void GetLevelNeedExp()
{
if(ringLevelNeedExpDic != null)
{
return;
}
expCount = 0;
ringLevelNeedExpDic = new Dictionary<int, int>();
ringLevelNeedExpDic.Add(1, 0);
var tabDic = TableManager.GetMarryRingBase().Values;
foreach (var info in tabDic)
{
if (info.Type == (int)MarryRingCtr.RingType.Marry)
{
expCount += info.NexctLevelNeedExp;
if (ringLevelNeedExpDic.ContainsKey(info.RingLevel + 1))
{
ringLevelNeedExpDic[info.RingLevel + 1] = expCount;
}
else
{
ringLevelNeedExpDic.Add(info.RingLevel + 1, expCount);
}
}
}
}
public int GetCurLevelNeedExp(int level)
{
if (ringLevelNeedExpDic.ContainsKey(level))
{
return ringLevelNeedExpDic[level];
} else
{
return 0;
}
}
public void RefreshConsumeRemain()
{
var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
if (backPack != null)
{
consumeItemOwnValue.text = backPack.GetItemCountByDataId(consumeItemId).ToString();
}
else
{
consumeItemOwnValue.text = "0";
}
_GainBtn.SetActive(backPack.GetItemCountByDataId(consumeItemId) <= 0);
}
public void OnConsumeItemClick()
{
if (consumeItemId == -1)
{
return;
}
ItemTooltipsLogic.ShowItemTooltip(consumeItemId, ItemTooltipsLogic.ShowType.Info, consumeItemIcon.transform.position);
}
public void InitAttrList()
{
if (curRingBase == null)
{
return;
}
combatValue.text = curRingBase.CombatValue.ToString();// StrDictionary.GetClientDictionaryString("#{2462}", curRingBase.CombatValue.ToString());
for (int index = 0; index < attrList.Count; index++)
{
if (curRingBase.GetAttrIdbyIndex(index) != -1)
{
attrList[index].gameObject.SetActive(true);
string attrId = "#{" + (curRingBase.GetAttrIdbyIndex(index) + 10000) + "}";
attrList[index].text = StrDictionary.GetClientDictionaryString("#{46217}", StrDictionary.GetClientDictionaryString(attrId), curRingBase.GetAttrValuebyIndex(index));
}
else
{
attrList[index].gameObject.SetActive(false);
}
}
}
public void OnTrainBtnClick()
{
var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
if (backPack != null)
{
if (backPack.GetItemCountByDataId(consumeItemId) < 1)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42696}"));
return;
}
} else
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42696}"));
return;
}
//没有结婚
//if(!GameManager.gameManager.PlayerDataPool.IsMarried)
//{
// GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{46514}"));
// return;
//}
if (curRingLevel >= maxLevel)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{46519}"));
return;
}
ReqUpgradeMarryRing req = new ReqUpgradeMarryRing();
req.flag = 1;
req.SendMsg();
}
private int maxLevel = -1;
public void GetMaxLevel()
{
if(maxLevel != -1)
{
return;
}
var tabDic = TableManager.GetMarryRingBase().Values;
foreach (var info in tabDic)
{
maxLevel = maxLevel > info.RingLevel ? maxLevel : info.RingLevel;
}
}
public void InitRingItem()
{
ringItem.InitRingItem();
}
public void OnItemClick()
{
if (consumeItemId == -1)
{
return;
}
ItemTooltipsLogic.ShowItemTooltip(consumeItemId, ItemTooltipsLogic.ShowType.Info, consumeItemIcon.transform.position);
}
// 红点更新,并触发外层红点检查
public static bool HasRedPoint()
{
//if(!GameManager.gameManager.PlayerDataPool.IsMarried)
//{
// return false;
//}
Tab_MarryBase marryBase = TableManager.GetMarryBaseByID(1, 0);
int temp_CurRingLevel = GameManager.gameManager.PlayerDataPool.MyRingInfoData.GetRingInfo().ringLevel;
int temp_ConsumeItemId = marryBase.ConsumeItemId;
int temp_MaxLevel = 0;
var tabDic = TableManager.GetMarryRingBase().Values;
foreach (var info in tabDic)
{
temp_MaxLevel = temp_MaxLevel > info.RingLevel ? temp_MaxLevel : info.RingLevel;
}
var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
if (backPack != null)
{
if (backPack.GetItemCountByDataId(temp_ConsumeItemId) >= 1 && temp_CurRingLevel < temp_MaxLevel)
{
return true;
}
}
return false;
}
// 红点更新,并触发外层红点检查
public void UpdataRedTips(Hashtable addparam = null, Hashtable Sendparam = null)
{
if (btnRedTip != null)
{
if (HasRedPoint())
{
btnRedTip.SetActive(true);
MarryRoot.Instance.UpdateRedTips(MarryRoot.RedTipType.Ring, true);
}
else
{
btnRedTip.SetActive(false);
MarryRoot.Instance.UpdateRedTips(MarryRoot.RedTipType.Ring, false);
}
}
}
//public void UpdataRedTips(Hashtable addparam = null, Hashtable Sendparam = null)
//{
// var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
// if (backPack != null && btnRedTip != null)
// {
// if (backPack.GetItemCountByDataId(consumeItemId) >= 1 && curRingLevel < maxLevel)
// {
// btnRedTip.SetActive(true);
// MarryRoot.Instance.UpdateRedTips(MarryRoot.RedTipType.Ring, true);
// }
// else
// {
// btnRedTip.SetActive(false);
// MarryRoot.Instance.UpdateRedTips(MarryRoot.RedTipType.Ring, false);
// }
// }
// else if (btnRedTip != null)
// {
// btnRedTip.SetActive(false);
// MarryRoot.Instance.UpdateRedTips(MarryRoot.RedTipType.Ring, false);
// }
//}
}