//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, June 11, 2019
|
//--------------------------------------------------------
|
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using DG.Tweening;
|
using System.Linq;
|
|
public class HolidayXianXiaMJLotterynWin : ILWindow
|
{
|
Button getWayBtn;
|
Text moneyValue;
|
Text timeValue;
|
Text level;
|
ItemCell itemCell;
|
Button selectButton;
|
|
static List<Transform> cellList = new List<Transform>();
|
|
Vector3 orgPos = Vector3.zero;
|
int totalCardCnt = 28; //总卡片数
|
int countInRow = 7; //一行几张卡
|
int startX = -270;
|
int startY = 125;
|
|
|
int curLevel = 0; // 从第一层开始
|
|
#region Built-in
|
protected override void BindController()
|
{
|
getWayBtn = proxy.GetWidgtEx<Button>("getWay");
|
moneyValue = proxy.GetWidgtEx<Text>("moneyValue");
|
timeValue = proxy.GetWidgtEx<Text>("time");
|
level = proxy.GetWidgtEx<Text>("level");
|
itemCell = proxy.GetWidgtEx<ItemCell>("ItemCell");
|
selectButton = proxy.GetWidgtEx<Button>("SelectButton");
|
|
for (int i = 0; i < totalCardCnt; i++)
|
{
|
cellList.Add(proxy.GetWidgtEx<Transform>("CardCell (" + i + ")"));
|
}
|
|
}
|
|
protected override void AddListeners()
|
{
|
getWayBtn.SetListener(()=> {
|
WindowJumpMgr.Instance.WindowJumpTo(HolidayXianXiaMJModel.Instance.windowJumpID);
|
});
|
|
selectButton.SetListener(()=> {
|
WindowCenter.Instance.OpenIL<HolidayXianxiaMJSuperItemWin>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
GameEvent.playerDataRefreshEvent += OnPlayerDataRefreshEvent;
|
ILOperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent;
|
HolidayXianxiaMJSuperItemWin.OnBigAwardWinClose += OnBigAwardWinClose;
|
|
HolidayXianXiaMJModel.Instance.showResultPos.Clear();
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
WashCard(0);
|
}
|
|
protected override void OnPreClose()
|
{
|
GameEvent.playerDataRefreshEvent -= OnPlayerDataRefreshEvent;
|
ILOperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent;
|
HolidayXianxiaMJSuperItemWin.OnBigAwardWinClose -= OnBigAwardWinClose;
|
|
}
|
|
protected override void LateUpdate()
|
{
|
if (HolidayXianXiaMJModel.Instance.showResultPos.Count != 0)
|
{
|
OperationBase operationBase = null;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(HolidayXianXiaMJModel.operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
var keys = HolidayXianXiaMJModel.Instance.showResultPos.Keys.ToList();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
var pos = keys[i];
|
if ((Time.time - HolidayXianXiaMJModel.Instance.showResultPos[pos]) > HolidayXianXiaMJModel.washTime)
|
{
|
var cell = cellList[pos - 1].GetILBehaviour<XianxiaMJCardCell>();
|
cell.itemCell.SetActiveIL(false);
|
if (operation.awardItems.ContainsKey(pos) && operation.awardItems[pos].ItemLibType == OperationXianXiaMJLottery.bigAwardType)
|
{
|
cell.effHole.Play();
|
HolidayXianXiaMJModel.Instance.PopNextLevel();
|
}
|
|
HolidayXianXiaMJModel.Instance.showResultPos.Remove(pos);
|
}
|
}
|
}
|
}
|
|
|
#endregion
|
|
void OnPlayerDataRefreshEvent(PlayerDataType dataType)
|
{
|
if (dataType != HolidayXianXiaMJModel.Instance.moneyPlayerDataType)
|
{
|
return;
|
}
|
moneyValue.text = HeroControler.Instance.GetMoneyCntIL(HolidayXianXiaMJModel.Instance.moneyType).ToString();
|
}
|
|
|
public static void OnAwardItemResult(int pos)
|
{
|
if (pos == 0)
|
return;
|
|
var cell = cellList[pos - 1].GetILBehaviour<XianxiaMJCardCell>();
|
cell.DisplaySingle(pos);
|
}
|
|
void Display()
|
{
|
OperationBase operationBase = null;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(HolidayXianXiaMJModel.operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
|
curLevel = operation.layerNum;
|
|
moneyValue.text = HeroControler.Instance.GetMoneyCntIL(HolidayXianXiaMJModel.Instance.moneyType).ToString();
|
timeValue.text = operation.ToDisplayTime();
|
level.text = Language.Get("XianXiaMJInfo1", operation.layerNum) ;
|
|
ShowSelectBigAward();
|
}
|
|
|
void ShowSelectBigAward()
|
{
|
OperationBase operationBase = null;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(HolidayXianXiaMJModel.operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
if (operation.selectBigAward == null)
|
{
|
itemCell.SetActiveIL(false);
|
}
|
else
|
{
|
itemCell.SetActiveIL(true);
|
var model = new ItemCellModel((int)operation.selectBigAward.ItemID, false, operation.selectBigAward.ItemCount);
|
itemCell.Init(model);
|
itemCell.button.SetListener(() => {
|
ItemTipUtility.Show((int)operation.selectBigAward.ItemID);
|
});
|
}
|
}
|
|
|
//洗牌
|
void WashCard(float washTime = 1)
|
{
|
HolidayXianXiaMJModel.Instance.startWashTime = Time.time;
|
for (int i = 0; i < totalCardCnt; i++)
|
{
|
cellList[i].transform.localPosition = orgPos;
|
int indexInRow = i % countInRow;
|
int row = i / countInRow;
|
int moveX = startX + indexInRow * 84 + indexInRow * 6;
|
int moveY = startY - row * 84 - row * 4;
|
|
var cell = cellList[i].GetILBehaviour<XianxiaMJCardCell>();
|
cell.Display(i + 1);
|
|
cellList[i].transform.DOLocalMove(new Vector3(moveX, moveY, 0), washTime);
|
}
|
}
|
|
|
private void operationTimeUpdateEvent(Operation type)
|
{
|
if (type == HolidayXianXiaMJModel.operationType)
|
{
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(HolidayXianXiaMJModel.operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
if (curLevel != operation.layerNum)
|
{
|
WashCard(0);
|
curLevel = operation.layerNum;
|
WindowCenter.Instance.Open("HolidayXianxiaMJSuperItemWin");
|
}
|
|
level.text = Language.Get("XianXiaMJInfo1", operation.layerNum);
|
|
ShowSelectBigAward();
|
}
|
}
|
|
void OnBigAwardWinClose()
|
{
|
if (HolidayXianXiaMJModel.Instance.HasTurnCard())
|
return;
|
WashCard();
|
}
|
}
|