//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, September 18, 2017
|
//--------------------------------------------------------
|
|
using Snxxz.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI {
|
|
public class UnionStoreWin : StoreUIBasic ,SecondWindowInterface
|
{
|
|
#region 成员变量
|
[SerializeField]
|
private ScrollerController _shopCtrl;
|
[SerializeField]
|
private Text _moneyNumText;
|
[SerializeField]
|
private Toggle _toolToggle;
|
|
[SerializeField] Button getPathBtn;
|
|
[SerializeField]
|
private Toggle _mountStoneToggle;
|
[SerializeField]
|
private Toggle _mountSkillBookToggle;
|
|
#endregion
|
|
private int _unionLv;
|
|
StoreModel _storeModel;
|
StoreModel m_storeModel
|
{
|
get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel<StoreModel>()); }
|
}
|
|
int shopId = 0;
|
#region Built-in
|
|
public Button close { get; set; }
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
_shopCtrl.OnRefreshCell += RefreshShopLineCell;
|
_shopCtrl.lockType = EnhanceLockType.KeepVertical;
|
_toolToggle.onValueChanged.AddListener((bool isOn)=> { OnClickToolToggle(isOn); });
|
_mountStoneToggle.onValueChanged.AddListener((bool isOn) => { OnClickMountStoneToggle(isOn); });
|
_mountSkillBookToggle.onValueChanged.AddListener((bool isOn) => { OnClickMountSkillBookToggle(isOn); });
|
close.onClick.AddListener(CloseWin);
|
getPathBtn.AddListener(ClickGetPathBtn);
|
}
|
|
protected override void OnPreOpen()
|
{
|
m_storeModel.storeFuncType = StoreFunc.ToolStore;
|
m_storeModel.RefreshTCBPlayerDataEvent += OnRefreshPlayerInfo;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += CreateCell;
|
m_storeModel.RefreshBuyShopLimitEvent += CreateCell;
|
CreateCell();
|
RefreshUI();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
switch (m_storeModel.storeFuncType)
|
{
|
case StoreFunc.ToolStore:
|
_toolToggle.isOn = true;
|
break;
|
case StoreFunc.MountStoneStore:
|
_mountStoneToggle.isOn = true;
|
break;
|
case StoreFunc.MountSkillBookStore:
|
_mountSkillBookToggle.isOn = true;
|
break;
|
}
|
_shopCtrl.JumpIndex(0);
|
CheckJumpToModel();
|
}
|
|
protected override void OnPreClose()
|
{
|
m_storeModel.RefreshBuyShopLimitEvent -= CreateCell;
|
m_storeModel.RefreshTCBPlayerDataEvent -= OnRefreshPlayerInfo;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= CreateCell;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void CheckJumpToModel()
|
{
|
if (AchievementGoto.guideAchievementId != 0)
|
{
|
SuccessConfig successConfig = SuccessConfig.Get(AchievementGoto.guideAchievementId);
|
if (successConfig.Type == 97)
|
{
|
p_shopItemlist = m_storeModel.TryGetStoreDatas(m_storeModel.storeFuncType);
|
List<StoreModel.StoreData> orderlist = new List<StoreModel.StoreData>();
|
orderlist.AddRange(p_shopItemlist);
|
orderlist.Sort(CompareByMoney);
|
for (int i = 0; i < p_shopItemlist.Count; i++)
|
{
|
if (p_shopItemlist[i].shopId == orderlist[0].shopId)
|
{
|
shopId = p_shopItemlist[i].shopId;
|
int index = i / 2;
|
_shopCtrl.JumpIndex(index);
|
_shopCtrl.m_Scorller.RefreshActiveCellViews();
|
break;
|
}
|
}
|
AchievementGoto.guideAchievementId = 0;
|
}
|
}
|
}
|
|
public int CompareByMoney(StoreModel.StoreData start, StoreModel.StoreData end)
|
{
|
int money1 = start.storeConfig.MoneyNumber;
|
int money2 = end.storeConfig.MoneyNumber;
|
if (money1.CompareTo(money2) != 0) return money1.CompareTo(money2);
|
int index1 = p_shopItemlist.IndexOf(start);
|
int index2 = p_shopItemlist.IndexOf(end);
|
if (index1.CompareTo(index2) != 0) return index1.CompareTo(index2);
|
return 0;
|
}
|
|
private void RefreshUI()
|
{
|
_moneyNumText.text = ItemLogicUtility.Instance.OnChangeCoinsUnit(UIHelper.GetMoneyCnt(15));
|
}
|
|
private void OnRefreshPlayerInfo(PlayerDataType refreshType)
|
{
|
if (refreshType == PlayerDataType.UnionLiven)
|
RefreshUI();
|
}
|
|
private void CreateCell()
|
{
|
shopId = 0;
|
_unionLv = 0;
|
if(PlayerDatas.Instance.fairyData.HasFairy)
|
{
|
_unionLv = PlayerDatas.Instance.fairyData.fairy.FamilyLV;
|
}
|
base.CreateShopItemCell(_shopCtrl,2);
|
}
|
|
private void RefreshShopLineCell(ScrollerDataType type, CellView cell)
|
{
|
int childCode = 0;
|
for (childCode = 0; childCode < cell.transform.childCount; childCode++)
|
{
|
int cellCount = (cell.transform.childCount) * cell.index + (childCode + 1);
|
UnionShopCell shopItemCell = cell.transform.GetChild(childCode).GetComponent<UnionShopCell>();
|
if (shopItemCell == null)
|
{
|
shopItemCell = cell.transform.GetChild(childCode).gameObject.AddComponent<UnionShopCell>();
|
}
|
|
if (p_shopItemlist.Count >= cellCount)
|
{
|
StoreConfig shopInfo = p_shopItemlist[cellCount - 1].storeConfig;
|
cell.transform.GetChild(childCode).gameObject.SetActive(true);
|
if (shopInfo.SalesStatus.Trim() != "")
|
{
|
shopItemCell.stateImage.gameObject.SetActive(true);
|
shopItemCell.stateImage.SetSprite(shopInfo.SalesStatus);
|
}
|
else
|
{
|
shopItemCell.stateImage.gameObject.SetActive(false);
|
}
|
ItemConfig chinModel = ItemConfig.Get(m_storeModel.GetReplaceId(shopInfo.ID,shopInfo.ItemID));
|
if (chinModel != null)
|
{
|
ItemCellModel cellModel = new ItemCellModel(chinModel.ID,false, 0);
|
shopItemCell.itemCell.enabled = false;
|
shopItemCell.itemCell.Init(cellModel);
|
shopItemCell.itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(chinModel.ID);
|
});
|
shopItemCell.itemNameText.text = chinModel.ItemName;
|
shopItemCell.itemNameText.color = UIHelper.GetUIColor(chinModel.ItemColor, true);
|
shopItemCell.coinsIcon.SetIconWithMoneyType(shopInfo.MoneyType);
|
ulong shopCost = (ulong)(shopInfo.MoneyNumber);
|
shopItemCell.coinNumText.text = UIHelper.ReplaceLargeNum(shopCost);
|
BuyItemController buyItem = BuyItemController.Instance;
|
int curVipIndex = -1;
|
int nextVipIndex = -1;
|
bool isVipBuy = buyItem.CheckIsVipBuy(shopInfo, out curVipIndex, out nextVipIndex);
|
int canBuyCnt = 0;
|
int addBuyCnt = 0;
|
bool isLimitBuy = buyItem.CheckIsLimitBuyCnt(shopInfo, out canBuyCnt, out addBuyCnt);
|
bool isShowBuyPrice = true;
|
shopItemCell.buyBtn.gameObject.SetActive(true);
|
if (isVipBuy)
|
{
|
if (curVipIndex == -1 && nextVipIndex != -1)
|
{
|
shopItemCell.coinsIcon.gameObject.SetActive(false);
|
shopItemCell.vipText.gameObject.SetActive(true);
|
shopItemCell.vipText.text = Language.Get("StoreWin101", shopInfo.VIPLV[nextVipIndex]);
|
shopItemCell.sellImage.gameObject.SetActive(false);
|
isShowBuyPrice = false;
|
}
|
}
|
if (isShowBuyPrice)
|
{
|
shopItemCell.coinsIcon.gameObject.SetActive(true);
|
shopItemCell.vipText.gameObject.SetActive(false);
|
shopItemCell.sellImage.gameObject.SetActive(false);
|
shopItemCell.itemCell.countText.gameObject.SetActive(false);
|
if (canBuyCnt > 0)
|
{
|
shopItemCell.itemCell.countText.gameObject.SetActive(true);
|
BuyShopItemLimit shopItemLimit = m_storeModel.GetBuyShopLimit((uint)shopInfo.ID);
|
int remainNum = canBuyCnt;
|
if (shopItemLimit != null)
|
{
|
remainNum = canBuyCnt - shopItemLimit.BuyCnt;
|
}
|
|
if (remainNum > 0)
|
{
|
shopItemCell.itemCell.countText.text = StringUtility.Contact(remainNum.ToString(),
|
"/" + canBuyCnt.ToString());
|
shopItemCell.sellImage.gameObject.SetActive(false);
|
|
}
|
else
|
{
|
shopItemCell.itemCell.countText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Red, remainNum.ToString()),
|
"/" + canBuyCnt.ToString());
|
shopItemCell.sellImage.gameObject.SetActive(true);
|
shopItemCell.buyBtn.gameObject.SetActive(false);
|
shopItemCell.stateImage.gameObject.SetActive(false);
|
}
|
}
|
}
|
|
if(_unionLv >= shopInfo.LimitValue)
|
{
|
shopItemCell.moneyObj.SetActive(true);
|
shopItemCell.buyNeedText.gameObject.SetActive(false);
|
//shopItemCell.buyBtnIcon.SetSprite("");
|
shopItemCell.buyBtn.interactable = true;
|
shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId);
|
}
|
else
|
{
|
shopItemCell.buyNeedText.gameObject.SetActive(true);
|
shopItemCell.buyNeedText.text = Language.Get("FairyStore101",shopInfo.LimitValue);
|
shopItemCell.buyBtn.interactable = false;
|
shopItemCell.moneyObj.SetActive(false);
|
//shopItemCell.buyBtnIcon.SetSprite("");
|
}
|
}
|
|
|
shopItemCell.buyBtn.RemoveAllListeners();
|
shopItemCell.buyBtn.AddListener(() => {
|
if(shopInfo.ID == shopId)
|
{
|
shopId = 0;
|
shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId);
|
}
|
m_storeModel.SendBuyShopItem(shopInfo, 1);
|
});
|
shopItemCell.ShopCellBtn.RemoveAllListeners();
|
shopItemCell.ShopCellBtn.AddListener(() => {
|
if (shopInfo.ID == shopId)
|
{
|
shopId = 0;
|
shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId);
|
}
|
m_storeModel.OnClickShopCell(shopInfo);
|
});
|
|
}
|
else
|
{
|
cell.transform.GetChild(childCode).gameObject.SetActive(false);
|
}
|
}
|
}
|
|
private void OnClickMountSkillBookToggle(bool isOn)
|
{
|
m_storeModel.storeFuncType = StoreFunc.MountSkillBookStore;
|
CreateCell();
|
_shopCtrl.JumpIndex(0);
|
}
|
|
private void OnClickToolToggle(bool isOn)
|
{
|
m_storeModel.storeFuncType = StoreFunc.ToolStore;
|
CreateCell();
|
_shopCtrl.JumpIndex(0);
|
}
|
|
private void OnClickMountStoneToggle(bool isOn)
|
{
|
m_storeModel.storeFuncType = StoreFunc.MountStoneStore;
|
CreateCell();
|
_shopCtrl.JumpIndex(0);
|
}
|
private void ClickGetPathBtn()
|
{
|
int itemId = GeneralDefine.moneyDisplayIds[15];
|
ItemTipUtility.Show(itemId);
|
}
|
private void CloseWin()
|
{
|
Close();
|
}
|
|
}
|
|
}
|
|
|
|
|