using Snxxz.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class BuyWingsTip : MonoBehaviour
|
{
|
#region TopUI
|
[SerializeField]
|
Button closeBtn;
|
[SerializeField]
|
Text titleText;
|
[SerializeField]
|
Text equipScoreDes;
|
[SerializeField]
|
Text equipScoreValue;
|
[SerializeField]
|
Text conditionText;
|
[SerializeField]
|
Image conditionValueText;
|
[SerializeField]
|
Text dateText;
|
[SerializeField]
|
ItemCell itemCell;
|
#endregion
|
|
#region MidUI
|
[SerializeField]
|
RectTransform attrContent;
|
[SerializeField]
|
ScrollRect scrollRect;
|
[SerializeField]
|
LayoutElement scrollLayout;
|
|
[SerializeField]
|
GameObject basicAttr;
|
[SerializeField]
|
Text basicTitleText;
|
[SerializeField]
|
Text basicAttrDes;
|
|
[SerializeField]
|
GameObject legendAttr;
|
[SerializeField]
|
Text legendTitleText;
|
[SerializeField]
|
Text legendCntPreview;
|
[SerializeField]
|
Text legendAttrDes;
|
[SerializeField] List<GameObject> attrCutLinelist = new List<GameObject>();
|
#endregion
|
|
#region BottomUI
|
[SerializeField]
|
GameObject bottomPart;
|
[SerializeField]
|
EquipSource equipSource;
|
[SerializeField]
|
RectTransform numberGo;
|
|
[SerializeField]
|
Text vipInfoText;
|
|
[SerializeField]
|
Text buyCountText;
|
|
[SerializeField]
|
Text buyPriceText;
|
|
[SerializeField]
|
RectTransform moneyRect;
|
|
[SerializeField]
|
Image moneyIcon;
|
|
[SerializeField]
|
Button reduceBtn;
|
|
[SerializeField]
|
Button plusBtn;
|
|
[SerializeField]
|
Button buyCountBtn;
|
#endregion
|
|
[SerializeField]
|
Button buyBtn;
|
[SerializeField] Text buyBtnText;
|
[SerializeField]
|
NumKeyBoard numKeyboard;
|
|
[SerializeField]
|
CanvasGroup tipAlpha;
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel
|
{
|
get
|
{
|
return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
|
}
|
}
|
|
StoreModel _storeModel;
|
StoreModel m_storeModel
|
{
|
get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel<StoreModel>()); }
|
}
|
|
ItemAttrData itemAttrData;
|
BuyItemPopModel buyItem;
|
BuyShopItemLimit shopItemLimit;
|
int canBuyCnt = 0;
|
int buyCnt = 0;
|
int curVipIndex = -1;
|
bool isVipBuy = false;
|
private int curAttrTypeNum = 0;
|
|
public void InitModel(ItemAttrData attrData)
|
{
|
curAttrTypeNum = 0;
|
itemAttrData = attrData;
|
buyItem = BuyItemPopModel.Instance;
|
shopItemLimit = m_storeModel.GetBuyShopLimit((uint)buyItem.storeConfig.ID);
|
InitUI();
|
closeBtn.AddListener(OnClickCloseBtn);
|
buyBtn.AddListener(OnClickBuyBtn);
|
reduceBtn.onClick.AddListener(OnClickReduceBuyNum);
|
plusBtn.onClick.AddListener(OnClickPlusBuyNum);
|
buyCountBtn.onClick.AddListener(OnClickCountBtn);
|
numKeyboard.onConfirm.AddListener(OnClickConfirmBtn);
|
numKeyboard.onValueChange.AddListener(OnClickNum);
|
}
|
|
private void OnEnable()
|
{
|
bottomPart.gameObject.SetActive(false);
|
StartCoroutine(SetScrollSize());
|
}
|
|
private void OnDisable()
|
{
|
closeBtn.RemoveAllListeners();
|
buyBtn.RemoveAllListeners();
|
reduceBtn.RemoveAllListeners();
|
plusBtn.RemoveAllListeners();
|
buyCountBtn.RemoveAllListeners();
|
numKeyboard.onConfirm.RemoveAllListeners();
|
numKeyboard.onValueChange.RemoveAllListeners();
|
}
|
|
IEnumerator SetScrollSize()
|
{
|
yield return null;
|
yield return null;
|
attrContent.anchoredPosition3D = new Vector3(attrContent.anchoredPosition3D.x, 0, 0);
|
SetMidUIHeight(attrContent.rect.height);
|
StartCoroutine(ShowBottomPart());
|
}
|
|
IEnumerator ShowBottomPart()
|
{
|
yield return null;
|
SetBottomUI();
|
StartCoroutine(SetPanelScale());
|
}
|
|
IEnumerator SetPanelScale()
|
{
|
yield return null;
|
if(itemAttrData.isCompare)
|
{
|
if (itemAttrData.packType != PackType.Equip)
|
{
|
itemTipsModel.SetCurTips(this.GetComponent<RectTransform>());
|
}
|
else
|
{
|
itemTipsModel.SetCompareTips(this.GetComponent<RectTransform>());
|
}
|
}
|
else
|
{
|
itemTipsModel.SetCurTips(this.GetComponent<RectTransform>());
|
}
|
|
tipAlpha.alpha = 1;
|
}
|
|
private void InitUI()
|
{
|
#region 设置TopUI
|
titleText.text = itemTipsModel.GetItemTipsTitle(itemAttrData);
|
titleText.color = UIHelper.GetUIColor(itemAttrData.itemConfig.ItemColor);
|
ItemCellModel cellModel = new ItemCellModel(itemAttrData.itemId,itemAttrData.isPreview , (ulong)itemAttrData.count,
|
itemAttrData.guid,itemAttrData.packType ,itemAttrData.isCompare, itemAttrData.useDataDict);
|
itemCell.Init(cellModel);
|
equipScoreDes.text = Language.Get("EquipWin_EquipPointText_1");
|
equipScoreValue.text = itemAttrData.score.ToString();
|
if (itemAttrData.isHavePutLimit)
|
{
|
conditionText.gameObject.SetActive(true);
|
conditionValueText.gameObject.SetActive(true);
|
var _realmLv = itemAttrData.itemConfig.RealmLimit;
|
var _realmCfg = RealmConfig.Get(_realmLv);
|
if (PlayerDatas.Instance.baseData.realmLevel < _realmLv)
|
{
|
conditionText.text = UIHelper.AppendColor(TextColType.Red, Language.Get("RealmLimit1"));
|
if (_realmLv != 0)
|
{
|
conditionValueText.SetSprite(_realmCfg.Img);
|
}
|
else
|
{
|
conditionText.gameObject.SetActive(false);
|
conditionValueText.gameObject.SetActive(false);
|
}
|
}
|
else
|
{
|
if(_realmLv != 0)
|
{
|
conditionText.text = StringUtility.Contact("<color=#FFF4CDFF>", Language.Get("RealmLimit1"), "</color>");
|
conditionValueText.SetSprite(_realmCfg.Img);
|
}
|
else
|
{
|
conditionText.gameObject.SetActive(false);
|
conditionValueText.gameObject.SetActive(false);
|
}
|
|
}
|
conditionValueText.SetNativeSize();
|
}
|
else
|
{
|
conditionText.gameObject.SetActive(false);
|
conditionValueText.gameObject.SetActive(false);
|
}
|
|
|
if (itemAttrData.itemConfig.ExpireTime > 0)
|
{
|
SetDateLimitUI(itemAttrData.itemConfig.ExpireTime);
|
}
|
else
|
{
|
dateText.gameObject.SetActive(false);
|
}
|
#endregion
|
|
#region 设置MidUI
|
SetBasicAttrUI();
|
SetLegendAttrUI();
|
for (int i = 0; i < attrCutLinelist.Count; i++)
|
{
|
if (i == curAttrTypeNum - 1)
|
{
|
attrCutLinelist[curAttrTypeNum - 1].SetActive(false);
|
}
|
else
|
{
|
attrCutLinelist[i].SetActive(true);
|
}
|
}
|
#endregion
|
}
|
|
private void SetDateLimitUI(double time)
|
{
|
dateText.gameObject.SetActive(true);
|
TimeSpan t = TimeSpan.FromSeconds(time);
|
if (t.TotalDays > 1)
|
{
|
dateText.text = Language.Get("EquipInfo_OverdueDay", (int)t.TotalDays);
|
}
|
else if (t.TotalHours > 1)
|
{
|
dateText.text = Language.Get("EquipInfo_OverdueHour", (int)t.TotalHours);
|
}
|
else if (t.TotalMinutes > 1)
|
{
|
dateText.text = Language.Get("EquipInfo_OverdueMin", (int)t.TotalMinutes);
|
}
|
else if (t.TotalMinutes > 0)
|
{
|
dateText.text = Language.Get("EquipInfo_OverdueMin", 1);
|
}
|
else if (t.TotalSeconds <= 0)
|
{
|
dateText.text = Language.Get("EquipInfo_Overdued");
|
}
|
}
|
|
#region 设置属性UI
|
private void SetBasicAttrUI()
|
{
|
basicAttr.SetActive(true);
|
basicTitleText.text = Language.Get("RolePanel_BaseAttrText_1");
|
basicAttrDes.text = itemTipsModel.GetBasicAttr(itemAttrData);
|
curAttrTypeNum = 1;
|
}
|
|
private void SetLegendAttrUI()
|
{
|
if(itemAttrData.legendDataDict == null)
|
{
|
legendAttr.SetActive(false);
|
return;
|
}
|
curAttrTypeNum = 2;
|
legendAttr.SetActive(true);
|
legendTitleText.text = Language.Get("EquipWin_LegendPropObj_Text_1");
|
legendAttrDes.text = itemTipsModel.GetLegendAttr(itemAttrData);
|
|
if (itemAttrData.isPreview)
|
{
|
legendCntPreview.gameObject.SetActive(true);
|
legendCntPreview.text = itemTipsModel.GetWingsLegendAttrCntPreview(itemAttrData);
|
}
|
else
|
{
|
legendCntPreview.gameObject.SetActive(false);
|
}
|
}
|
|
private void SetMidUIHeight(float midHeight)
|
{
|
scrollRect.enabled = false;
|
|
if (midHeight < itemTipsModel.equipMidHeights[0])
|
{
|
scrollLayout.preferredHeight = itemTipsModel.equipMidHeights[0];
|
}
|
else if (midHeight > itemTipsModel.equipMidHeights[1])
|
{
|
scrollRect.enabled = true;
|
scrollLayout.preferredHeight = itemTipsModel.equipMidHeights[1];
|
}
|
else
|
{
|
scrollLayout.preferredHeight = midHeight;
|
}
|
}
|
#endregion
|
|
private void SetBottomUI()
|
{
|
bottomPart.gameObject.SetActive(true);
|
SetBottomText(equipSource);
|
numKeyboard.gameObject.SetActive(false);
|
curVipIndex = -1;
|
int nextVipIndex = -1;
|
isVipBuy = buyItem.CheckIsVipBuy(buyItem.storeConfig, out curVipIndex, out nextVipIndex);
|
canBuyCnt = 0;
|
int addBuyCnt = 0;
|
bool isLimitCnt = buyItem.CheckIsLimitBuyCnt(buyItem.storeConfig, out canBuyCnt, out addBuyCnt);
|
bool isReachUpper = false;
|
buyCnt = buyItem.GetCurBuyCnt(1, buyItem.GetRemainBuyCnt(canBuyCnt, shopItemLimit, isVipBuy), out isReachUpper);
|
if (isVipBuy)
|
{
|
if (nextVipIndex != -1)
|
{
|
vipInfoText.gameObject.SetActive(true);
|
vipInfoText.text = Language.Get("StoreWin108", canBuyCnt, StringUtility.Contact("V", buyItem.storeConfig.VIPLV[nextVipIndex]), addBuyCnt);
|
}
|
else
|
{
|
vipInfoText.gameObject.SetActive(false);
|
}
|
|
if (curVipIndex != -1)
|
{
|
buyBtn.gameObject.SetActive(true);
|
}
|
else
|
{
|
buyBtn.gameObject.SetActive(false);
|
buyCnt = buyItem.GetCurBuyCnt(0, canBuyCnt, out isReachUpper);
|
}
|
}
|
else
|
{
|
vipInfoText.gameObject.SetActive(false);
|
buyBtn.gameObject.SetActive(true);
|
}
|
|
buyCountText.text = buyCnt.ToString();
|
RefreshBuyPrice(buyCnt);
|
moneyIcon.SetIconWithMoneyType(buyItem.storeConfig.MoneyType);
|
}
|
|
private void SetBottomText(EquipSource source)
|
{
|
source.jobTitleText.text = Language.Get("EquipWin_JobTitleText_1");
|
source.jobText.text = itemTipsModel.GetEquipJobName(itemAttrData);
|
source.partTitleText.text = Language.Get("EquipWin_PartTitleText_1");
|
source.partText.text = Language.Get("KnapS125");
|
source.itemDesText.text = itemAttrData.itemConfig.Description;
|
}
|
|
private ulong _price;
|
private void RefreshBuyPrice(int buyCnt)
|
{
|
if (buyCnt < 1)
|
{
|
_price = (ulong)buyItem.storeConfig.MoneyNumber;
|
}
|
else
|
{
|
_price = (ulong)buyItem.GetBuyPrice(buyItem.storeConfig, buyCnt);
|
}
|
|
if (!m_storeModel.MoneyIsEnough(buyItem.storeConfig.MoneyType, _price))
|
{
|
buyPriceText.text = UIHelper.AppendColor(TextColType.Red, _price.ToString());
|
}
|
else
|
{
|
buyPriceText.text = UIHelper.AppendColor(TextColType.Green, _price.ToString());
|
}
|
|
if (_price <= 0)
|
{
|
moneyRect.gameObject.SetActive(false);
|
buyBtnText.text = Language.Get("MailReceive");
|
}
|
else
|
{
|
moneyRect.gameObject.SetActive(true);
|
buyBtnText.text = Language.Get("ItemHandle_buy");
|
}
|
|
if(_price <= 0 || itemAttrData.itemConfig.PackCount < 2)
|
{
|
numberGo.gameObject.SetActive(false);
|
}
|
else
|
{
|
numberGo.gameObject.SetActive(true);
|
|
}
|
}
|
#region 点击事件
|
private void OnClickCountBtn()
|
{
|
numKeyboard.gameObject.SetActive(true);
|
}
|
|
private void OnClickNum()
|
{
|
bool isReachUpper = false;
|
buyCnt = buyItem.GetCurBuyCnt(int.Parse(numKeyboard.Value), buyItem.GetRemainBuyCnt(canBuyCnt, shopItemLimit, isVipBuy), out isReachUpper);
|
RefreshBuyPrice(buyCnt);
|
numKeyboard.Value = buyCnt.ToString();
|
if (isReachUpper)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("StoreWin109"));
|
}
|
}
|
|
private void OnClickConfirmBtn(bool arg0)
|
{
|
if (arg0)
|
{
|
buyCountText.text = buyCnt.ToString();
|
numKeyboard.gameObject.SetActive(false);
|
}
|
}
|
|
private void OnClickPlusBuyNum()
|
{
|
buyCnt += 1;
|
bool isReachUpper = false;
|
buyCnt = buyItem.GetCurBuyCnt(buyCnt, buyItem.GetRemainBuyCnt(canBuyCnt, shopItemLimit, isVipBuy), out isReachUpper);
|
buyCountText.text = buyCnt.ToString();
|
RefreshBuyPrice(buyCnt);
|
if (isReachUpper)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("StoreWin109"));
|
}
|
}
|
|
private void OnClickReduceBuyNum()
|
{
|
buyCnt -= 1;
|
bool isReachUpper = false;
|
buyCnt = buyItem.GetCurBuyCnt(buyCnt, buyItem.GetRemainBuyCnt(canBuyCnt, shopItemLimit, isVipBuy), out isReachUpper);
|
buyCountText.text = buyCnt.ToString();
|
RefreshBuyPrice(buyCnt);
|
|
}
|
|
private void OnClickBuyBtn()
|
{
|
|
if (shopItemLimit != null)
|
{
|
int remainNum = 0;
|
if (isVipBuy)
|
{
|
remainNum = buyItem.storeConfig.PurchaseNumber[curVipIndex] - shopItemLimit.BuyCnt;
|
}
|
else
|
{
|
remainNum = buyItem.storeConfig.PurchaseNumber[0] - shopItemLimit.BuyCnt;
|
}
|
if (remainNum < 1)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("StoreWin109"));
|
return;
|
}
|
|
}
|
m_storeModel.SendBuyShopItem(buyItem.storeConfig, buyCnt);
|
OnClickCloseBtn();
|
}
|
|
private void OnClickCloseBtn()
|
{
|
KnapSackEventMgr.Instance.HideItemPopWin();
|
}
|
#endregion
|
|
}
|
}
|
|
|