412 lines
12 KiB
C#
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);
|
|||
|
// }
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
}
|