//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, October 09, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using TableConfig;
|
using Snxxz.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class PutawayWin : Window
|
{
|
[SerializeField] Button closeBtn;
|
|
[SerializeField] Button putawayBtn;
|
[SerializeField] Button vippasBtn;
|
[SerializeField] Text vippasBtnText;
|
|
[SerializeField] Button soldNumBtn;
|
[SerializeField] Text soldNum;
|
|
#region 物品信息
|
[SerializeField] Image itemBg;
|
[SerializeField] Image itemIcon;
|
[SerializeField] Text itemCnt;
|
[SerializeField] Text itemName;
|
[SerializeField] Text itemSoldNum;
|
[SerializeField] List<GameObject> starList;
|
#endregion
|
|
[SerializeField] Slider itemNumSlider;
|
[SerializeField] Button addBtn;
|
[SerializeField] Button reduceBtn;
|
[SerializeField] Text itemNum;
|
|
[SerializeField] Transform queryItemTf;
|
[SerializeField] GameObject noOtherTip;
|
|
[SerializeField] Text putawayBtnText;
|
|
[SerializeField] Text dealItemPrice;
|
[SerializeField] Text dealItemTip;
|
|
[SerializeField] Text taxTip;
|
|
VipModel m_VipModel;
|
VipModel vipModel
|
{
|
get
|
{
|
return m_VipModel ?? (m_VipModel = ModelCenter.Instance.GetModel<VipModel>());
|
}
|
}
|
|
MarketModel m_Model = null;
|
MarketModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<MarketModel>());
|
}
|
}
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel
|
{
|
get
|
{
|
return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
|
}
|
}
|
|
PlayerPackModel _playerPack;
|
PlayerPackModel playerPack
|
{
|
get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
|
}
|
|
[SerializeField]
|
NumKeyBoard keyBoard;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
itemNumSlider.onValueChanged.AddListener(OnItemNumChange);
|
putawayBtn.onClick.AddListener(OnPutawayBtn);
|
vippasBtn.onClick.AddListener(OnVipPasBtn);
|
closeBtn.onClick.AddListener(OnCloseBtn);
|
soldNumBtn.onClick.AddListener(OnSoldNumClick);
|
addBtn.onClick.AddListener(OnItemNumAdd);
|
reduceBtn.onClick.AddListener(OnItemNumReduce);
|
keyBoard.onValueChange.AddListener(OnNumKeyboardChange);
|
keyBoard.onConfirm.AddListener((bool _isConfirm) =>
|
{
|
if (_isConfirm)
|
{
|
keyBoard.gameObject.SetActive(false);
|
}
|
RefreshPriceCnt((int)PutawayData.Instance.priceCnt);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
if (PutawayData.Instance.itemModel != null)
|
{
|
CB503_tagCGPYQueryBourseItemOnSale querypack = new CB503_tagCGPYQueryBourseItemOnSale();
|
querypack.ItemID = (uint)PutawayData.Instance.itemModel.itemInfo.ItemID;
|
querypack.ItemName = string.Empty;
|
querypack.QueryType = 0;
|
GameNetSystem.Instance.SendInfo(querypack);
|
}
|
model.OnRefreshQueryMarketItem += OnRefreshQueryMarketItem;
|
PwdKeyboardWin.OnPwdWinClose += OnPwdWinClose;
|
model.OnRefreshItemDealPrice += OnRefreshItemDealPrice;
|
keyBoard.gameObject.SetActive(false);
|
|
InitData();
|
OnRefreshItemDealPrice((int)PutawayData.Instance.itemModel.itemInfo.ItemID);
|
}
|
|
private void OnRefreshItemDealPrice(int itemid)
|
{
|
if (PutawayData.Instance.itemModel.itemInfo.ItemID == (uint)itemid)
|
{
|
uint price = model.GetItemDealPrice((uint)PutawayData.Instance.itemModel.itemInfo.ItemID);
|
if (price == 0)
|
{
|
dealItemTip.text = Language.Get("Market_Text_21");
|
ItemConfig cfg = Config.Instance.Get<ItemConfig>(itemid);
|
if (cfg != null)
|
{
|
dealItemPrice.text = cfg.GoldPrice.ToString();
|
}
|
}
|
else
|
{
|
dealItemTip.text = Language.Get("Market_Text_20");
|
if (price == 200000000)
|
{
|
dealItemPrice.text = "<1";
|
}
|
else
|
{
|
dealItemPrice.text = price.ToString();
|
}
|
}
|
}
|
}
|
|
private void OnPwdWinClose(bool okClose)
|
{
|
if (!hasInBuying)
|
{
|
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.pwd = PwdKeyboard.Instance.pwd;
|
}
|
else
|
{
|
hasInBuying = false;
|
if (okClose)
|
{
|
pwd = PwdKeyboard.Instance.pwd;
|
SendBuyPack();
|
}
|
}
|
}
|
|
private void OnRefreshQueryMarketItem()
|
{
|
List<MarketItemData> list = null;
|
noOtherTip.SetActive(true);
|
model.queryMarketItemList.TryGetValue(0, out list);
|
if (list != null)
|
{
|
int _Cnt = 0;
|
for (int i = 0; i < list.Count; i++)
|
{
|
MarketItemData data = list[i];
|
if (data.PlayerID != PlayerDatas.Instance.baseData.PlayerID)
|
{
|
Transform child = queryItemTf.GetChild(_Cnt);
|
_Cnt++;
|
child.gameObject.SetActive(true);
|
ItemConfig cfg = Config.Instance.Get<ItemConfig>((int)data.ItemTypeID);
|
Text text = child.Find("PriceCnt").GetComponent<Text>();
|
int uintprice = (int)data.PriceCount / data.Count;
|
if (uintprice < 1) text.text = "<1";
|
else text.text = data.PriceCount.ToString();
|
Button btn = child.GetComponent<Button>();
|
btn.onClick.RemoveAllListeners();
|
btn.onClick.AddListener(() =>
|
{
|
OnQueryItemClick(data);
|
});
|
if (cfg != null)
|
{
|
text = child.Find("ItemName").GetComponent<Text>();
|
text.text = cfg.ItemName;
|
Image img = child.Find("Item/EquipBG").GetComponent<Image>();
|
var _itemColor = cfg.ItemColor;
|
if (cfg.Type == 111)//翅膀
|
{
|
_itemColor = UIHelper.GetItemColor(cfg.ID, ConfigParse.Analysis(data.UserData));
|
}
|
img.SetItemBackGround(_itemColor);
|
bool _bright = (text is RichText) ? (text as RichText).colorType == RichText.ColorType.Bright : true;
|
text.color = UIHelper.GetUIColor(_itemColor, _bright);
|
img = child.Find("Item/ItemIcon").GetComponent<Image>();
|
img.SetSprite(cfg.IconKey);
|
for (int j = 0; j < 3; j++)
|
{
|
GameObject obj = child.transform.Find(string.Format("Item/StarList/{0}", j)).gameObject;
|
if (j < cfg.StarLevel)
|
{
|
obj.SetActive(true);
|
}
|
else
|
{
|
obj.SetActive(false);
|
}
|
}
|
}
|
text = child.Find("Item/CountText").GetComponent<Text>();
|
if (data.Count == 1) text.gameObject.SetActive(false);
|
else
|
{
|
text.gameObject.SetActive(true);
|
text.text = data.Count.ToString();
|
}
|
}
|
}
|
for (int i = _Cnt; i < 3; i++)
|
{
|
queryItemTf.GetChild(i).gameObject.SetActive(false);
|
}
|
if (_Cnt > 0)
|
{
|
queryItemTf.gameObject.SetActive(true);
|
noOtherTip.SetActive(false);
|
}
|
}
|
}
|
#region 购买物品
|
private string pwd = string.Empty;
|
private MarketItemData willBuyData = null;
|
private bool hasInBuying = false;
|
public void SendBuyPack()
|
{
|
if (willBuyData != null)
|
{
|
CB502_tagCMPYBuyBourseItem buypack = new CB502_tagCMPYBuyBourseItem();
|
buypack.ItemGUID = willBuyData.ItemGUID;
|
buypack.Pwd = pwd;
|
GameNetSystem.Instance.SendInfo(buypack);
|
}
|
}
|
private void OnQueryItemClick(MarketItemData data)
|
{
|
willBuyData = data;
|
ItemAttrData attrData = new ItemAttrData((int)data.ItemTypeID, false, data.Count, -1, 0,
|
false, PackType.rptDeleted, "", ConfigParse.Analysis(data.UserData));
|
attrData.SetTipsFuncBtn(ItemWinBtnType.buy, OnItemBuyClick);
|
itemTipsModel.SetItemTipsModel(attrData);
|
|
}
|
|
private void OnItemBuyClick(ItemWinBtnType type, string s)
|
{
|
KnapSackEventMgr.Instance.HideItemPopWin();
|
switch (type)
|
{
|
case ItemWinBtnType.buy:
|
{
|
if (UIHelper.GetMoneyCnt(willBuyData.PriceType) < willBuyData.PriceCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("NoEnoughMoney1");
|
return;
|
}
|
int gridCnt = playerPack.GetReaminGridCount(PackType.rptItem);
|
if (gridCnt < 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("BourseBagfull");
|
return;
|
}
|
if (willBuyData.NeadPwd == 1)
|
{
|
PwdKeyboard.Instance.pwd = string.Empty;
|
hasInBuying = true;
|
WindowCenter.Instance.Open<PwdKeyboardWin>();
|
}
|
else
|
{
|
pwd = string.Empty;
|
SendBuyPack();
|
}
|
}
|
break;
|
}
|
}
|
#endregion
|
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
model.OnRefreshQueryMarketItem -= OnRefreshQueryMarketItem;
|
PwdKeyboardWin.OnPwdWinClose -= OnPwdWinClose;
|
model.OnRefreshItemDealPrice -= OnRefreshItemDealPrice;
|
}
|
#endregion
|
private void OnCloseBtn()
|
{
|
CloseImmediately();
|
}
|
|
private void OnSoldNumClick()
|
{
|
keyBoard.min = (uint)model.minprice;
|
keyBoard.max = (uint)model.maxprice - 1;
|
keyBoard.gameObject.SetActive(true);
|
}
|
|
private void InitData()
|
{
|
queryItemTf.gameObject.SetActive(false);
|
noOtherTip.SetActive(true);
|
if (PutawayData.Instance.itemModel == null)
|
{
|
return;
|
}
|
ItemConfig cfg = Config.Instance.Get<ItemConfig>((int)PutawayData.Instance.itemModel.itemInfo.ItemID);
|
if (cfg != null)
|
{
|
var _itemColor = cfg.ItemColor;
|
if (cfg.Type == 111)//翅膀
|
{
|
_itemColor = UIHelper.GetItemColor(cfg.ID, PutawayData.Instance.itemModel.useDataDict);
|
}
|
itemBg.SetItemBackGround(_itemColor);
|
itemIcon.SetSprite(cfg.IconKey);
|
itemName.text = cfg.ItemName;
|
bool _bright = (itemName is RichText) ? (itemName as RichText).colorType == RichText.ColorType.Bright : true;
|
itemName.color = UIHelper.GetUIColor(_itemColor, _bright);
|
}
|
itemSoldNum.text = PutawayData.Instance.priceCnt.ToString();
|
for (int i = 0; i < starList.Count; i++)
|
{
|
if (i < cfg.StarLevel)
|
{
|
starList[i].gameObject.SetActive(true);
|
}
|
else
|
{
|
starList[i].gameObject.SetActive(false);
|
}
|
}
|
int _Cnt = PutawayData.Instance.itemModel.itemInfo.ItemCount;
|
if (_Cnt > 1)
|
{
|
itemCnt.gameObject.SetActive(true);
|
itemNumSlider.gameObject.SetActive(true);
|
itemCnt.text = _Cnt.ToString();
|
itemNumSlider.maxValue = _Cnt;
|
itemNumSlider.minValue = 1;
|
itemNumSlider.value = _Cnt;
|
PutawayData.Instance.itemCnt = (ushort)_Cnt;
|
}
|
else
|
{
|
itemCnt.gameObject.SetActive(false);
|
itemNumSlider.gameObject.SetActive(false);
|
PutawayData.Instance.itemCnt = 1;
|
}
|
|
PutawayData.Instance.priceType = 1;
|
|
putawayBtnText.text = UIHelper.ReplaceNewLine(Language.Get("Market_Text_17", model.totalPutawayCnt - PlayerDatas.Instance.market.putawayCnt));
|
int pwdVipLv = vipModel.GetPrivilegeVipLv(VipPrivilegeType.MarketPutawayPwd);
|
vippasBtnText.text = UIHelper.ReplaceNewLine(Language.Get("Market_Text_16", pwdVipLv));
|
OnRefreshItemDealPrice((int)PutawayData.Instance.itemModel.itemInfo.ItemID);
|
|
if (PlayerDatas.Instance.baseData.VIPLv < pwdVipLv)
|
{
|
vippasBtn.interactable = false;
|
}
|
else
|
{
|
vippasBtn.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;
|
}
|
}
|
taxTip.text = Language.Get("Market_Text_22", _presentTax / 100, _nextVip, VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.TradeTax, _nextVip) / 100);
|
}
|
else
|
{
|
taxTip.text = Language.Get("Market_Text_14", PlayerDatas.Instance.baseData.VIPLv,
|
VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.TradeTax, PlayerDatas.Instance.baseData.VIPLv) / 100);
|
}
|
|
RefreshItemNumCnt();
|
}
|
|
private void OnVipPasBtn()
|
{
|
if (vipModel.GetVipPrivilegeCnt(VipPrivilegeType.MarketPutawayPwd) > 0)
|
{
|
PwdKeyboard.Instance.pwd = PutawayData.Instance.pwd;
|
WindowCenter.Instance.Open<PwdKeyboardWin>();
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("VipLevel");
|
}
|
}
|
|
private void OnNumKeyboardChange()
|
{
|
int arg1 = int.Parse(keyBoard.Value);
|
//if (arg1 >= model.maxprice)
|
//{
|
// arg1 = model.maxprice - 1;
|
//}
|
PutawayData.Instance.priceCnt = (uint)Mathf.Max(arg1, model.minprice);
|
RefreshPriceCnt(arg1);
|
//keyBoard.Value = arg1.ToString();
|
}
|
|
private void RefreshPriceCnt(int _count)
|
{
|
if (_count == 0)
|
{
|
soldNum.text = Language.Get("Market_Text_18");
|
itemSoldNum.text = (0).ToString();
|
}
|
else
|
{
|
soldNum.text = _count.ToString();
|
int singlePrice = (int)PutawayData.Instance.priceCnt / (int)PutawayData.Instance.itemCnt;
|
if (singlePrice < 1)
|
{
|
itemSoldNum.text = "<1";
|
}
|
else
|
{
|
itemSoldNum.text = singlePrice.ToString();
|
}
|
}
|
}
|
|
private void OnItemNumReduce()
|
{
|
if (itemNumSlider.value > 1)
|
{
|
itemNumSlider.value -= 1;
|
}
|
}
|
|
private void OnItemNumAdd()
|
{
|
if (itemNumSlider.value < itemNumSlider.maxValue)
|
{
|
itemNumSlider.value += 1;
|
}
|
}
|
|
private void OnItemNumChange(float arg0)
|
{
|
int _Cnt = (int)arg0;
|
PutawayData.Instance.itemCnt = (ushort)_Cnt;
|
RefreshItemNumCnt();
|
}
|
|
private void RefreshItemNumCnt()
|
{
|
itemCnt.text = PutawayData.Instance.itemCnt.ToString();
|
itemNum.text = PutawayData.Instance.itemCnt.ToString();
|
RefreshPriceCnt((int)PutawayData.Instance.priceCnt);
|
}
|
|
private void OnPutawayBtn()
|
{
|
if (PutawayData.Instance.itemModel == null) return;
|
if (PlayerDatas.Instance.market.putawayCnt >= model.totalPutawayCnt)
|
{
|
return;
|
}
|
if (PutawayData.Instance.priceCnt == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("Market_Price_Null");
|
return;
|
}
|
if (PutawayData.Instance.pwd.Equals(string.Empty))
|
{
|
SendPutawayPack();
|
return;
|
}
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("Market_Text_29", PutawayData.Instance.pwd), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
SendPutawayPack();
|
}
|
});
|
|
}
|
|
private void SendPutawayPack()
|
{
|
CB501_tagCMPYPlayerSellBourseItem putawaypack = new CB501_tagCMPYPlayerSellBourseItem();
|
putawaypack.ItemIndex = (byte)PutawayData.Instance.itemModel.itemInfo.ItemPlace;
|
putawaypack.Count = PutawayData.Instance.itemCnt;
|
putawaypack.PriceCount = PutawayData.Instance.priceCnt;
|
putawaypack.PriceType = PutawayData.Instance.priceType;
|
putawaypack.Pwd = PutawayData.Instance.pwd;
|
GameNetSystem.Instance.SendInfo(putawaypack);
|
CloseImmediately();
|
}
|
}
|
|
}
|