//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, October 09, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using Snxxz.UI;
|
using UnityEngine.Serialization;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class PutawayWin : Window
|
{
|
[SerializeField] Button m_Close;
|
[SerializeField] Button m_Putaway;
|
[SerializeField] Button m_SetPassword;
|
[SerializeField] Text m_SetPasswordTxt;
|
[SerializeField] Button m_OpenKeyboard;
|
[SerializeField] Text m_TargetPrice;
|
[SerializeField] Image m_ItemBG;
|
[SerializeField] Image m_ItemIcon;
|
[SerializeField] Text m_ItemCount;
|
[SerializeField] Text m_ItemName;
|
[SerializeField] Text m_SinglePrice;
|
[SerializeField] List<Transform> m_Stars;
|
[SerializeField] Slider m_ItemCountSlider;
|
[SerializeField] Button m_Add;
|
[SerializeField] Button m_Reduce;
|
[SerializeField] Text m_PutawayItemCount;
|
[SerializeField] PutawayItem[] m_PutawayItems;
|
[SerializeField] Transform m_ContainerNoneItems;
|
[SerializeField] Text m_PutawayBtnTxt;
|
[SerializeField] Text m_DealPrice;
|
[SerializeField] Text m_DealItemTip;
|
[SerializeField] Text m_TaxTip;
|
[SerializeField] NumKeyBoard m_Keyboard;
|
[SerializeField] ClickScreenOtherSpace m_ClickSpace;
|
|
VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
|
|
MarketModel model { get { return ModelCenter.Instance.GetModel<MarketModel>(); } }
|
|
ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_ItemCountSlider.onValueChanged.AddListener(OnSliderValueChange);
|
m_Putaway.onClick.AddListener(OnPutaway);
|
m_SetPassword.onClick.AddListener(SetPassword);
|
m_Close.onClick.AddListener(CloseClick);
|
m_OpenKeyboard.onClick.AddListener(OpenKeyboard);
|
m_Add.onClick.AddListener(Add);
|
m_Reduce.onClick.AddListener(Reduce);
|
m_Keyboard.onValueChange.AddListener(OnValueChange);
|
m_Keyboard.onConfirm.AddListener((bool isOk) =>
|
{
|
if (isOk)
|
{
|
PutawayData.Instance.priceCount = Mathf.Max(PutawayData.Instance.priceCount, model.minprice);
|
m_Keyboard.gameObject.SetActive(false);
|
}
|
RefreshPriceCnt((int)PutawayData.Instance.priceCount, true);
|
});
|
m_ClickSpace.AddListener(ClickSpace);
|
}
|
|
protected override void OnPreOpen()
|
{
|
if (PutawayData.Instance.itemModel != null)
|
{
|
CB503_tagCGPYQueryBourseItemOnSale pak = new CB503_tagCGPYQueryBourseItemOnSale();
|
pak.ItemID = (uint)PutawayData.Instance.itemModel.itemId;
|
pak.ItemName = string.Empty;
|
pak.QueryType = 0;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
model.OnRefreshQueryMarketItem += DisplayPutawayItems;
|
PwdKeyboardWin.OnPwdWinClose += OnPwdWinClose;
|
model.OnRefreshItemDealPrice += OnRefreshItemDealPrice;
|
m_Keyboard.gameObject.SetActive(false);
|
|
Display();
|
|
OnRefreshItemDealPrice((int)PutawayData.Instance.itemModel.itemId);
|
}
|
|
private void OnRefreshItemDealPrice(int itemId)
|
{
|
if (PutawayData.Instance.itemModel.itemId == (uint)itemId)
|
{
|
uint price = model.GetItemDealPrice((uint)PutawayData.Instance.itemModel.itemId);
|
if (price == 0)
|
{
|
m_DealItemTip.text = Language.Get("Market_Text_21");
|
var config = ItemConfig.Get(itemId);
|
if (config != null)
|
{
|
m_DealPrice.text = config.GoldPrice.ToString();
|
}
|
}
|
else
|
{
|
m_DealItemTip.text = Language.Get("Market_Text_20");
|
m_DealPrice.text = price == 200000000 ? "<1" : price.ToString();
|
}
|
}
|
}
|
|
private void OnPwdWinClose(bool isOk)
|
{
|
if (!inBuyingState)
|
{
|
if (!PwdKeyboard.Instance.pwd.Equals(string.Empty) && PwdKeyboard.Instance.pwd.Length < 6)
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("Market_Text_26"));
|
return;
|
}
|
PutawayData.Instance.password = PwdKeyboard.Instance.pwd;
|
}
|
else
|
{
|
inBuyingState = false;
|
if (isOk)
|
{
|
password = PwdKeyboard.Instance.pwd;
|
SendBuyPack();
|
}
|
}
|
}
|
|
private void DisplayPutawayItems()
|
{
|
List<MarketItemData> list = null;
|
m_ContainerNoneItems.gameObject.SetActive(true);
|
model.queryMarketItemList.TryGetValue(0, out list);
|
if (list != null)
|
{
|
var index = 0;
|
for (int i = 0; i < list.Count; i++)
|
{
|
MarketItemData data = list[i];
|
if (data.PlayerID != PlayerDatas.Instance.baseData.PlayerID)
|
{
|
if (index < m_PutawayItems.Length)
|
{
|
m_PutawayItems[index].gameObject.SetActive(true);
|
m_PutawayItems[index].Init(data, OnQueryItemClick);
|
}
|
index++;
|
}
|
}
|
for (int i = index; i < 3; i++)
|
{
|
m_PutawayItems[i].gameObject.SetActive(false);
|
}
|
m_ContainerNoneItems.gameObject.SetActive(index == 0);
|
}
|
}
|
|
#region 购买物品
|
private string password = string.Empty;
|
private MarketItemData buyItem = null;
|
private bool inBuyingState = false;
|
public void SendBuyPack()
|
{
|
if (buyItem != null)
|
{
|
CB502_tagCMPYBuyBourseItem pak = new CB502_tagCMPYBuyBourseItem();
|
pak.ItemGUID = buyItem.ItemGUID;
|
pak.Pwd = password;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
}
|
|
private void OnQueryItemClick(MarketItemData data)
|
{
|
buyItem = data;
|
ItemAttrData attrData = new ItemAttrData((int)data.ItemTypeID, false, data.Count, -1, 0,
|
false, PackType.Deleted, "", data.UserData);
|
attrData.SetTipsFuncBtn(ItemOperateType.buy, OnItemBuyClick);
|
itemTipsModel.SetItemTipsModel(attrData);
|
}
|
|
private void OnItemBuyClick(ItemOperateType type, string s)
|
{
|
KnapSackEventMgr.Instance.HideItemPopWin();
|
switch (type)
|
{
|
case ItemOperateType.buy:
|
{
|
if (UIHelper.GetMoneyCnt(buyItem.PriceType) < buyItem.PriceCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("NoEnoughMoney1");
|
return;
|
}
|
int gridCnt = packModel.GetEmptyGridCount(PackType.Item);
|
if (gridCnt < 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("BourseBagfull");
|
return;
|
}
|
if (buyItem.NeadPwd == 1)
|
{
|
PwdKeyboard.Instance.pwd = string.Empty;
|
inBuyingState = true;
|
WindowCenter.Instance.Open<PwdKeyboardWin>();
|
}
|
else
|
{
|
password = string.Empty;
|
SendBuyPack();
|
}
|
}
|
break;
|
}
|
}
|
#endregion
|
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
model.OnRefreshQueryMarketItem -= DisplayPutawayItems;
|
PwdKeyboardWin.OnPwdWinClose -= OnPwdWinClose;
|
model.OnRefreshItemDealPrice -= OnRefreshItemDealPrice;
|
}
|
#endregion
|
|
private void OpenKeyboard()
|
{
|
m_Keyboard.min = 0;
|
m_Keyboard.max = (uint)model.maxprice - 1;
|
m_Keyboard.gameObject.SetActive(true);
|
}
|
|
private void Display()
|
{
|
for (int i = 0; i < m_PutawayItems.Length; i++)
|
{
|
m_PutawayItems[i].gameObject.SetActive(false);
|
}
|
m_ContainerNoneItems.gameObject.SetActive(true);
|
if (PutawayData.Instance.itemModel == null)
|
{
|
return;
|
}
|
ItemConfig config = ItemConfig.Get((int)PutawayData.Instance.itemModel.itemId);
|
if (config != null)
|
{
|
var _itemColor = config.ItemColor;
|
if (config.Type == 111)//翅膀
|
{
|
_itemColor = UIHelper.GetItemColor(config.ID, PutawayData.Instance.itemModel.useDataDict);
|
}
|
m_ItemBG.SetItemBackGround(_itemColor);
|
m_ItemIcon.SetSprite(config.IconKey);
|
m_ItemName.text = config.ItemName;
|
m_ItemName.color = UIHelper.GetUIColor(_itemColor, true);
|
}
|
m_SinglePrice.text = PutawayData.Instance.priceCount.ToString();
|
for (int i = 0; i < m_Stars.Count; i++)
|
{
|
if (i < config.StarLevel)
|
{
|
m_Stars[i].gameObject.SetActive(true);
|
}
|
else
|
{
|
m_Stars[i].gameObject.SetActive(false);
|
}
|
}
|
int _Cnt = PutawayData.Instance.itemModel.count;
|
if (_Cnt > 1)
|
{
|
m_ItemCount.gameObject.SetActive(true);
|
m_ItemCountSlider.gameObject.SetActive(true);
|
m_ItemCount.text = _Cnt.ToString();
|
m_ItemCountSlider.maxValue = _Cnt;
|
m_ItemCountSlider.minValue = 1;
|
m_ItemCountSlider.value = _Cnt;
|
PutawayData.Instance.itemCount = (ushort)_Cnt;
|
}
|
else
|
{
|
m_ItemCount.gameObject.SetActive(false);
|
m_ItemCountSlider.gameObject.SetActive(false);
|
PutawayData.Instance.itemCount = 1;
|
}
|
|
PutawayData.Instance.priceType = 1;
|
|
m_PutawayBtnTxt.text = UIHelper.ReplaceNewLine(Language.Get("Market_Text_17", model.totalPutawayCnt - PlayerDatas.Instance.market.putawayCnt));
|
int pwdVipLv = vipModel.GetPrivilegeVipLv(VipPrivilegeType.MarketPutawayPwd);
|
m_SetPasswordTxt.text = UIHelper.ReplaceNewLine(Language.Get("Market_Text_16", pwdVipLv));
|
OnRefreshItemDealPrice((int)PutawayData.Instance.itemModel.itemId);
|
|
if (PlayerDatas.Instance.baseData.VIPLv < pwdVipLv)
|
{
|
m_SetPassword.interactable = false;
|
}
|
else
|
{
|
m_SetPassword.interactable = true;
|
}
|
|
if (PlayerDatas.Instance.baseData.VIPLv == 0)
|
{
|
int _nextVip = 1;
|
int _presentTax = VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.TradeTax, 0);
|
for (int i = 1; i <= vipModel.vipMaxLv; i++)
|
{
|
if (VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.TradeTax, i) < _presentTax)
|
{
|
_nextVip = i;
|
break;
|
}
|
}
|
m_TaxTip.text = Language.Get("Market_Text_22", _presentTax / 100, _nextVip, VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.TradeTax, _nextVip) / 100);
|
}
|
else
|
{
|
m_TaxTip.text = Language.Get("Market_Text_14", PlayerDatas.Instance.baseData.VIPLv,
|
VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.TradeTax, PlayerDatas.Instance.baseData.VIPLv) / 100);
|
}
|
|
RefreshItemNumCnt();
|
}
|
|
private void SetPassword()
|
{
|
if (vipModel.GetVipPrivilegeCnt(VipPrivilegeType.MarketPutawayPwd) > 0)
|
{
|
PwdKeyboard.Instance.pwd = PutawayData.Instance.password;
|
WindowCenter.Instance.Open<PwdKeyboardWin>();
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("VipLevel");
|
}
|
}
|
|
private void OnValueChange()
|
{
|
int result = int.Parse(m_Keyboard.Value);
|
PutawayData.Instance.priceCount = result;
|
RefreshPriceCnt((int)PutawayData.Instance.priceCount, false);
|
}
|
|
private void ClickSpace()
|
{
|
int result = int.Parse(m_Keyboard.Value);
|
PutawayData.Instance.priceCount = Mathf.Max(result, model.minprice);
|
RefreshPriceCnt((int)PutawayData.Instance.priceCount, true);
|
}
|
|
private void RefreshPriceCnt(int _count, bool verify)
|
{
|
if (_count == 0 && verify)
|
{
|
m_TargetPrice.text = Language.Get("Market_Text_18");
|
m_SinglePrice.text = (0).ToString();
|
}
|
else
|
{
|
m_TargetPrice.text = _count.ToString();
|
int singlePrice = (int)PutawayData.Instance.priceCount / (int)PutawayData.Instance.itemCount;
|
if (singlePrice < 1)
|
{
|
m_SinglePrice.text = "<1";
|
}
|
else
|
{
|
m_SinglePrice.text = singlePrice.ToString();
|
}
|
}
|
}
|
|
private void Reduce()
|
{
|
if (m_ItemCountSlider.value > 1)
|
{
|
m_ItemCountSlider.value -= 1;
|
}
|
}
|
|
private void Add()
|
{
|
if (m_ItemCountSlider.value < m_ItemCountSlider.maxValue)
|
{
|
m_ItemCountSlider.value += 1;
|
}
|
}
|
|
private void OnSliderValueChange(float arg0)
|
{
|
int _Cnt = (int)arg0;
|
PutawayData.Instance.itemCount = (ushort)_Cnt;
|
RefreshItemNumCnt();
|
}
|
|
private void RefreshItemNumCnt()
|
{
|
m_ItemCount.text = PutawayData.Instance.itemCount.ToString();
|
m_PutawayItemCount.text = PutawayData.Instance.itemCount.ToString();
|
RefreshPriceCnt((int)PutawayData.Instance.priceCount, true);
|
}
|
|
private void OnPutaway()
|
{
|
if (PutawayData.Instance.itemModel == null) return;
|
if (PlayerDatas.Instance.market.putawayCnt >= model.totalPutawayCnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("MarketNoPutaway4", model.totalPutawayCnt);
|
return;
|
}
|
if (PutawayData.Instance.priceCount == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("Market_Price_Null");
|
return;
|
}
|
if (PutawayData.Instance.password.Equals(string.Empty))
|
{
|
SendPutawayPack();
|
return;
|
}
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("Market_Text_29", PutawayData.Instance.password), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
SendPutawayPack();
|
}
|
});
|
|
}
|
|
private void SendPutawayPack()
|
{
|
CB501_tagCMPYPlayerSellBourseItem pak = new CB501_tagCMPYPlayerSellBourseItem();
|
pak.ItemIndex = (byte)PutawayData.Instance.itemModel.itemPlace;
|
pak.Count = PutawayData.Instance.itemCount;
|
pak.PriceCount = (uint)PutawayData.Instance.priceCount;
|
pak.PriceType = PutawayData.Instance.priceType;
|
pak.Pwd = PutawayData.Instance.password;
|
GameNetSystem.Instance.SendInfo(pak);
|
CloseImmediately();
|
}
|
}
|
|
}
|