using vnxbqy.UI;
|
using System;
|
using UnityEngine.UI;
|
using LitJson;
|
using UnityEngine;
|
|
class WeddingSugarWin : ILWindow
|
{
|
Button closeBtn;
|
Button sugarButton;
|
Button fireButton;
|
Button pullbtn;
|
Transform scrollbg;
|
ScrollerController playerScroll;
|
ScrollerController itemScroll;
|
Text frdValue; //繁荣度
|
Text freeValue;
|
Text firePrice;
|
Text overtime;
|
Text sugarPrice;
|
Image sugarPriceType;
|
Image firePricetype;
|
Text name;
|
Text candymax;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
closeBtn = proxy.GetWidgtEx<Button>("CloseButton");
|
sugarButton = proxy.GetWidgtEx<Button>("GiveButton");
|
fireButton = proxy.GetWidgtEx<Button>("FireButton");
|
pullbtn = proxy.GetWidgtEx<Button>("pullbtn");
|
scrollbg = proxy.GetWidgtEx<Transform>("scrollbg");
|
itemScroll = proxy.GetWidgtEx<ScrollerController>("items");
|
playerScroll = proxy.GetWidgtEx<ScrollerController>("scroller");
|
frdValue = proxy.GetWidgtEx<Text>("frdValue");
|
freeValue = proxy.GetWidgtEx<Text>("freeValue");
|
firePrice = proxy.GetWidgtEx<Text>("firePrice");
|
overtime = proxy.GetWidgtEx<Text>("overtime");
|
sugarPrice = proxy.GetWidgtEx<Text>("sugarPrice");
|
sugarPriceType = proxy.GetWidgtEx<Image>("sugarType");
|
firePricetype = proxy.GetWidgtEx<Image>("fireType");
|
name = proxy.GetWidgtEx<Text>("name");
|
candymax = proxy.GetWidgtEx<Text>("candymax");
|
}
|
|
protected override void AddListeners()
|
{
|
closeBtn.SetListener(() => {
|
WindowCenter.Instance.CloseIL<WeddingSugarWin>();
|
});
|
sugarButton.SetListener(OnEatCandy);
|
fireButton.SetListener(OnFire);
|
pullbtn.SetListener(()=> {
|
if (scrollbg.gameObject.activeSelf)
|
{
|
scrollbg.SetActiveIL(false);
|
}
|
else
|
{
|
scrollbg.SetActiveIL(true);
|
WeddingModel.Instance.RefreshCandyList();
|
CreateCandyList();
|
}
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
playerScroll.OnRefreshCell += OnCandyListRefresh;
|
itemScroll.OnRefreshCell += OnItemRefresh;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
WeddingModel.Instance.OnSelectCandyBanquet += OnSelectCandyBanquet;
|
WeddingModel.Instance.OnUpdateCandy += OnUpdateCandy;
|
WeddingModel.Instance.EatCandyTodayEvent += EatCandyTodayEvent;
|
EatCandyTodayEvent();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
//在OnAfterOpen调用保证列表不会因为封包影响
|
WeddingModel.Instance.RefreshCandyList();
|
if (WeddingModel.Instance.candyInfoList.Count == 0)
|
{
|
WindowCenter.Instance.CloseIL<WeddingSugarWin>();
|
return;
|
}
|
WeddingModel.Instance.selectCandyBanquet = WeddingModel.Instance.candyInfoList[0];
|
Display();
|
scrollbg.SetActiveIL(false);
|
}
|
|
protected override void OnPreClose()
|
{
|
playerScroll.OnRefreshCell -= OnCandyListRefresh;
|
itemScroll.OnRefreshCell -= OnItemRefresh;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
WeddingModel.Instance.OnSelectCandyBanquet -= OnSelectCandyBanquet;
|
WeddingModel.Instance.OnUpdateCandy -= OnUpdateCandy;
|
WeddingModel.Instance.EatCandyTodayEvent -= EatCandyTodayEvent;
|
}
|
#endregion
|
|
|
void EatCandyTodayEvent()
|
{
|
candymax.text = Language.Get("CandyTip", WeddingModel.Instance.eatCandyToday, WeddingModel.Instance.maxEatCandyCount);
|
}
|
|
|
void OnSelectCandyBanquet()
|
{
|
if (WeddingModel.Instance.isClickCandyList)
|
{
|
scrollbg.SetActiveIL(false);
|
WeddingModel.Instance.isClickCandyList = false;
|
}
|
Display();
|
}
|
|
void OnUpdateCandy(int playerIDA, int playerIDB)
|
{
|
if (playerIDA == WeddingModel.Instance.selectCandyBanquet.PlayerIDA &&
|
playerIDB == WeddingModel.Instance.selectCandyBanquet.PlayerIDB)
|
{
|
var candy = WeddingModel.Instance.GetCandyInfoByPlayerID((uint)playerIDA, (uint)playerIDB);
|
if (candy.PlayerIDA == playerIDA)
|
{
|
WeddingModel.Instance.selectCandyBanquet = candy;
|
}
|
Display();
|
}
|
}
|
|
void Display()
|
{
|
|
CreateItems();
|
frdValue.text = WeddingModel.Instance.selectCandyBanquet.Prosperity.ToString();
|
if (WeddingModel.Instance.selectCandyBanquet.FreeEatCandyCount > 0)
|
{
|
freeValue.SetActiveIL(true);
|
sugarPrice.SetActiveIL(false);
|
freeValue.text = "x" + WeddingModel.Instance.selectCandyBanquet.FreeEatCandyCount;
|
}
|
else
|
{
|
freeValue.SetActiveIL(false);
|
sugarPrice.SetActiveIL(true);
|
sugarPrice.text = WeddingModel.Instance.candyMoneyValue.ToString();
|
|
}
|
sugarPriceType.SetSprite("Money_Type_" + WeddingModel.Instance.candyMoneyType);
|
firePricetype.SetSprite("Money_Type_" + WeddingModel.Instance.fireMoneyType);
|
firePrice.text = WeddingModel.Instance.fireMoneyValue.ToString();
|
name.text = Language.Get("weddingSugar3", WeddingModel.Instance.selectCandyBanquet.PlayerNameA,
|
WeddingModel.Instance.selectCandyBanquet.PlayerNameB,
|
ILMarryConfig.Get(WeddingModel.Instance.selectCandyBanquet.BridePriceID).Name);
|
}
|
|
int[][] items;
|
|
void CreateItems()
|
{
|
itemScroll.Refresh();
|
|
var config = ILMarryConfig.Get(WeddingModel.Instance.selectCandyBanquet.BridePriceID);
|
|
items = JsonMapper.ToObject<int[][]>(config.CandyItemWeightInfo);
|
|
for (int i = 0; i < items.Length; i++)
|
{
|
itemScroll.AddCell(ScrollerDataType.Header, i);
|
}
|
itemScroll.Restart();
|
itemScroll.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void OnItemRefresh(ScrollerDataType type, CellView cell)
|
{
|
var itemCell = cell.GetComponent<ItemCell>();
|
if (itemCell == null) return;
|
if (cell.index >= items.Length) return;
|
var id = items[cell.index][1];
|
var model = new ItemCellModel(id, false, (ulong)items[cell.index][2]);
|
itemCell.Init(model);
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(id);
|
});
|
}
|
|
void CreateCandyList()
|
{
|
playerScroll.Refresh();
|
for (int i = 0; i < WeddingModel.Instance.candyInfoList.Count; i++)
|
{
|
playerScroll.AddCell(ScrollerDataType.Header, i);
|
}
|
playerScroll.Restart();
|
playerScroll.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void OnCandyListRefresh(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<WeddingSugarCell>();
|
_cell?.Display(cell.index);
|
}
|
|
void OnEatCandy()
|
{
|
if (WeddingModel.Instance.eatCandyToday >= WeddingModel.Instance.maxEatCandyCount)
|
{
|
ScrollTip.ShowTip(Language.Get("CandyTip", WeddingModel.Instance.eatCandyToday, WeddingModel.Instance.maxEatCandyCount));
|
return;
|
}
|
|
if (WeddingModel.Instance.selectCandyBanquet.EndTime <= TimeUtility.AllSeconds)
|
{
|
SysNotifyMgr.Instance.ShowTip("Marry6");
|
return;
|
}
|
|
if (WeddingModel.Instance.selectCandyBanquet.FreeEatCandyCount > 0)
|
{
|
SendEatCandy();
|
return;
|
}
|
if (HeroControler.Instance.GetMoneyCntIL(WeddingModel.Instance.candyMoneyType) < (ulong)WeddingModel.Instance.candyMoneyValue)
|
{
|
WindowCenter.Instance.OpenEx<RechargeTipWin>();
|
return;
|
}
|
if (!WeddingModel.Instance.candyToggle)
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("weddingSugar4", WeddingModel.Instance.candyMoneyValue),
|
Language.Get("ConfirmCancel102"), (Action<bool, bool>)((bool isOk, bool isToggle) =>
|
{
|
if (isOk)
|
{
|
SendEatCandy();
|
}
|
WeddingModel.Instance.candyToggle = isToggle;
|
}));
|
|
}
|
else
|
{
|
SendEatCandy();
|
}
|
}
|
|
void SendEatCandy()
|
{
|
var pack = new IL_CB313_tagCMMarryEatCandy();
|
pack.PlayerIDA = WeddingModel.Instance.selectCandyBanquet.PlayerIDA;
|
pack.PlayerIDB = WeddingModel.Instance.selectCandyBanquet.PlayerIDB;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
void SendFire()
|
{
|
var pack = new IL_CB314_tagCMMarryBuyFireworks();
|
pack.PlayerIDA = WeddingModel.Instance.selectCandyBanquet.PlayerIDA;
|
pack.PlayerIDB = WeddingModel.Instance.selectCandyBanquet.PlayerIDB;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
void OnFire()
|
{
|
if (WeddingModel.Instance.selectCandyBanquet.EndTime <= TimeUtility.AllSeconds)
|
{
|
SysNotifyMgr.Instance.ShowTip("Marry6");
|
return;
|
}
|
|
if (HeroControler.Instance.GetMoneyCntIL(WeddingModel.Instance.fireMoneyType) < (ulong)WeddingModel.Instance.fireMoneyValue)
|
{
|
WindowCenter.Instance.OpenEx<RechargeTipWin>();
|
return;
|
}
|
|
if (!WeddingModel.Instance.fireToggle)
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("weddingSugar5", WeddingModel.Instance.fireMoneyValue),
|
Language.Get("ConfirmCancel102"), (Action<bool, bool>)((bool isOk, bool isToggle) =>
|
{
|
if (isOk)
|
{
|
SendFire();
|
}
|
WeddingModel.Instance.fireToggle = isToggle;
|
}));
|
|
}
|
else
|
{
|
SendFire();
|
}
|
}
|
|
void OnSecondEvent()
|
{
|
if (WeddingModel.Instance.selectCandyBanquet.EndTime <= TimeUtility.AllSeconds)
|
{
|
overtime.text = Language.Get("XMZZ110");
|
}
|
else
|
{
|
overtime.text = Language.Get("AllianceBoss_3", TimeUtility.SecondsToMS((int)(WeddingModel.Instance.selectCandyBanquet.EndTime - TimeUtility.AllSeconds)));
|
}
|
}
|
}
|