178 lines
5.5 KiB
C#
178 lines
5.5 KiB
C#
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
using System.Collections;
|
||
using GCGame.Table;
|
||
using Games.Item;
|
||
using Games.GlobeDefine;
|
||
using Module.Log;
|
||
using System.Collections.Generic;
|
||
|
||
public class SysShopPageItem : UIItemSelect
|
||
{
|
||
#region
|
||
|
||
public class ShopItemInfo
|
||
{
|
||
public Tab_CommonItem TabItem;
|
||
public MONEYTYPE MoneyType;
|
||
public int Price;
|
||
public int GroupCount;
|
||
public int ItemIdxInShop;
|
||
public int LimitID;
|
||
public int LimitCount;
|
||
public int BuyCnt;
|
||
public int isNeed = 0;
|
||
public bool needShowLv = false;
|
||
}
|
||
|
||
#endregion
|
||
|
||
public Text LabelName;
|
||
public RewardItem ItemIcon;
|
||
public UICurrencyItem ItemPrice;
|
||
public Text LabelLimit;
|
||
public Image isNeedIcon;
|
||
public Text LabelLvRequire; // 物品使用需要的最小等级
|
||
public GameObject professionLimit; // 物品的使用职业限制
|
||
|
||
public ShopItemInfo _ShopItemInfo;
|
||
private GameItem m_curGameItem;
|
||
public override void Show(Hashtable hash)
|
||
{
|
||
base.Show(hash);
|
||
|
||
var shopItem = (ShopItemInfo)hash["InitObj"];
|
||
if (shopItem == _ShopItemInfo)
|
||
return;
|
||
|
||
ShowItem(shopItem);
|
||
}
|
||
|
||
public void ShowItem(ShopItemInfo shopItemInfo)
|
||
{
|
||
if (shopItemInfo == null)
|
||
{
|
||
return;
|
||
}
|
||
isNeedIcon.gameObject.SetActive(shopItemInfo.isNeed > 0);
|
||
|
||
_ShopItemInfo = shopItemInfo;
|
||
|
||
ItemPrice.ShowCurrency(_ShopItemInfo.MoneyType, _ShopItemInfo.Price);
|
||
|
||
|
||
int groupCount = _ShopItemInfo.GroupCount;
|
||
if (groupCount < 0)
|
||
{
|
||
groupCount = 1;
|
||
}
|
||
ItemIcon.SetData(_ShopItemInfo.TabItem, groupCount);
|
||
|
||
LabelName.text = _ShopItemInfo.TabItem.Name;// +"*" + groupCount.ToString();
|
||
|
||
|
||
m_curGameItem = new GameItem();
|
||
m_curGameItem.DataID = _ShopItemInfo.TabItem.Id;
|
||
|
||
if (LabelLvRequire != null)
|
||
{
|
||
// 当需要显示等级的时候,也通过遮罩显示装备是否和目前职业相匹配
|
||
if (_ShopItemInfo.needShowLv)
|
||
{
|
||
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= _ShopItemInfo.TabItem.MinLevelRequire)
|
||
{
|
||
LabelLvRequire.text = "<color=#0e9100>" + "Lv." + _ShopItemInfo.TabItem.MinLevelRequire.ToString() + "</color>";
|
||
}
|
||
else
|
||
{
|
||
LabelLvRequire.text = "<color=#DD3742>" + "Lv." + _ShopItemInfo.TabItem.MinLevelRequire.ToString() + "</color>";
|
||
}
|
||
|
||
if (LabelLvRequire.gameObject.activeSelf == false)
|
||
{
|
||
LabelLvRequire.gameObject.SetActive(true);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (LabelLvRequire.gameObject.activeSelf == true)
|
||
{
|
||
LabelLvRequire.gameObject.SetActive(false);
|
||
}
|
||
}
|
||
}
|
||
|
||
if(professionLimit != null)
|
||
{
|
||
professionLimit.SetActive(false);
|
||
|
||
if (_ShopItemInfo.needShowLv)
|
||
{
|
||
int equipProfession = m_curGameItem.GetProfessionRequire();
|
||
if (equipProfession > 0)
|
||
{
|
||
int nPlayerProfession = Singleton<ObjManager>.Instance.MainPlayer.Profession;
|
||
if (((equipProfession >> nPlayerProfession) & 1) == 0)
|
||
{
|
||
professionLimit.SetActive(true);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SetLimit(shopItemInfo.BuyCnt);
|
||
}
|
||
|
||
public GameItem GetGameItem()
|
||
{
|
||
return m_curGameItem;
|
||
}
|
||
|
||
public void SetLimit(int buyCount)
|
||
{
|
||
if (LabelLimit == null)
|
||
return;
|
||
|
||
LabelLimit.gameObject.SetActive(false);
|
||
|
||
// 该函数可被服务器触发,所以需要更新BuyCount;
|
||
_ShopItemInfo.BuyCnt = buyCount;
|
||
|
||
Tab_ShopItemLimit shopLimit = TableManager.GetShopItemLimitByID(_ShopItemInfo.LimitID, 0);
|
||
if(shopLimit!=null)
|
||
{
|
||
if(Singleton<ObjManager>.Instance== null || Singleton<ObjManager>.Instance.MainPlayer == null)
|
||
{
|
||
LogModule.ErrorLog("Instance is null");
|
||
return;
|
||
}
|
||
|
||
var _curVipLevel = Singleton<ObjManager>.Instance.MainPlayer.VipCost;
|
||
var limitCount = 0;
|
||
if (_curVipLevel <= 0)
|
||
{
|
||
limitCount = shopLimit.GetVipLvbyIndex(0);
|
||
}else
|
||
{
|
||
limitCount = shopLimit.GetVipLvbyIndex(_curVipLevel);
|
||
}
|
||
|
||
var remainLimitCount = limitCount - buyCount + (_ShopItemInfo.MoneyType == MONEYTYPE.MONEYTYPE_YUANBAO ? GlobalData.GetVipLimitBuyCount() : 0);
|
||
if (shopLimit.LimitType == 0)
|
||
{
|
||
LabelLimit.text = StrDictionary.GetClientDictionaryString("#{1306}") + (remainLimitCount > 0 ? remainLimitCount : 0).ToString();
|
||
}
|
||
else if(shopLimit.LimitType == 1)
|
||
{
|
||
LabelLimit.text = StrDictionary.GetClientDictionaryString("#{1307}") + (remainLimitCount > 0 ? remainLimitCount : 0).ToString();
|
||
}
|
||
else if (shopLimit.LimitType == 2)
|
||
{
|
||
LabelLimit.text = StrDictionary.GetClientDictionaryString("#{63000}") + (remainLimitCount > 0 ? remainLimitCount : 0).ToString();
|
||
}
|
||
LabelLimit.gameObject.SetActive(true);
|
||
}
|
||
}
|
||
}
|