using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
|
namespace vnxbqy.UI
|
{
|
public class FairySiegeSpringWin : Window
|
{
|
[SerializeField] ButtonEx btnAuto; //自动挖宝
|
[SerializeField] ButtonEx btnAward; //奖励总览
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ButtonEx btnSkip; //跳过动画
|
[SerializeField] List<FairySiegeSpringFlowerItem> flowerItemList = new List<FairySiegeSpringFlowerItem>();
|
|
[Header("抽奖物品数量相关")]
|
[SerializeField] ImageEx imgIcon;
|
|
[SerializeField] ImageEx imgSkip;
|
[SerializeField] TextEx txtIcon;
|
|
[Header("标题相关")]
|
[SerializeField] TextEx txtSpringName;
|
|
int springCostItemCnt;
|
FairySiegeActModel model { get { return ModelCenter.Instance.GetModel<FairySiegeActModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
#region Build-in
|
|
protected override void AddListeners()
|
{
|
btnClose.SetListener(CloseClick);
|
btnAward.SetListener(() => WindowCenter.Instance.Open<FairySiegeSpringAwardWin>());
|
btnAuto.SetListener(AutoClick);
|
}
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.sqAwardQueue.Clear();
|
packModel.refreshItemCountEvent += OnRefreshItemCountEvent;
|
model.UpdateFamilyGCZSQInfoEvent += OnUpdateFamilyGCZSQInfoEvent;
|
model.UpdateGridAwardAction += OnUpdateGridAwardAction;
|
model.isSpringAuto = false;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
packModel.refreshItemCountEvent -= OnRefreshItemCountEvent;
|
model.UpdateFamilyGCZSQInfoEvent -= OnUpdateFamilyGCZSQInfoEvent;
|
model.UpdateGridAwardAction -= OnUpdateGridAwardAction;
|
model.StopAutoSend();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
#endregion
|
|
private void OnUpdateGridAwardAction()
|
{
|
if (!WindowCenter.Instance.IsOpen<FairySiegeSpringGridAwardWin>())
|
{
|
WindowCenter.Instance.Open<FairySiegeSpringGridAwardWin>();
|
}
|
}
|
|
private void OnUpdateFamilyGCZSQInfoEvent()
|
{
|
Display();
|
}
|
|
private void OnRefreshItemCountEvent(PackType type, int arg2, int arg3)
|
{
|
if (type != PackType.Item || arg3 != model.springCostItemId)
|
return;
|
Display();
|
}
|
|
private void AutoClick()
|
{
|
if (!model.isSpringAuto)
|
{
|
model.isWaitSpringPack = false;
|
//道具数量不足
|
var hasItemCnt = packModel.GetItemCountByID(PackType.Item, model.springCostItemId);
|
if (hasItemCnt < springCostItemCnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct02");
|
return;
|
}
|
}
|
|
model.isSpringAuto = !model.isSpringAuto;
|
}
|
|
private bool DisplayAward()
|
{
|
if (WindowCenter.Instance.IsOpen<FairySiegeSpringGridAwardWin>())
|
return false;
|
if (WindowCenter.Instance.IsOpen<FairySiegeSpringPassAllAwardWin>())
|
return false;
|
if (WindowCenter.Instance.IsOpen<CommonGetItemWin>())
|
return false;
|
if (model.sqAwardQueue.Count <= 0)
|
return false;
|
|
var netPack = model.sqAwardQueue.Dequeue();
|
|
// 仙盟攻城战圣泉
|
if (netPack.eventName == "FamilyGCZSQGrid")//常规格子
|
{
|
model.gridAwardList = netPack.showItems;
|
model?.UpdateGridAwardAction();
|
return true;
|
}
|
else if (netPack.eventName == "FamilyGCZSQPass")//过关格子
|
{
|
ItemLogicUtility.Instance.ShowGetItem(netPack.showItems, netPack.info, 0, eventName: netPack.eventName);
|
return true;
|
}
|
else if (netPack.eventName == "FamilyGCZSQPassAll")//通关所有层
|
{
|
model.ShowGetItem(netPack.showItems, netPack.info, 0, eventName: netPack.eventName);
|
return true;
|
}
|
return false;
|
}
|
|
float autoSendTimer;
|
|
protected override void LateUpdate()
|
{
|
bool isDisplayAward = DisplayAward();
|
if (!isDisplayAward)
|
{
|
autoSendTimer += Time.deltaTime;
|
if (autoSendTimer >= model.springAutoIntervalSec)
|
{
|
AutoSend();
|
autoSendTimer = 0f;
|
}
|
}
|
}
|
|
private void AutoSend()
|
{
|
if (!model.isSpringAuto)
|
return;
|
if (model.isWaitSpringPack)
|
return;
|
var hasItemCnt = packModel.GetItemCountByID(PackType.Item, model.springCostItemId);
|
if (hasItemCnt < springCostItemCnt)
|
{
|
model.StopAutoSend();
|
Display();
|
return;
|
}
|
int randomGridNum = GetRandomGridNum();
|
if (randomGridNum < 1 || randomGridNum > model.sqInfoDict.Count)
|
return;
|
model.isWaitSpringPack = true;
|
model.SendSQ(randomGridNum);
|
}
|
|
public int GetRandomGridNum()
|
{
|
if (model.sqInfoDict.IsNullOrEmpty())
|
return -1;
|
|
var validKeys = new List<int>();
|
foreach (var kvp in model.sqInfoDict)
|
{
|
if (!ItemConfig.Has(kvp.Value.id))
|
{
|
validKeys.Add(kvp.Key);
|
}
|
}
|
|
if (validKeys.Count == 0)
|
return -1;
|
|
int index = Random.Range(0, validKeys.Count);
|
return validKeys[index];
|
}
|
|
private void Display()
|
{
|
if (!ActFamilyGCZSQConfig.Has(model.SQLayer))
|
return;
|
txtSpringName.text = Language.Get("FairySiege144", model.SQLayer);
|
var actConfig = ActFamilyGCZSQConfig.Get(model.SQLayer);
|
springCostItemCnt = actConfig.CostItemCnt;
|
imgIcon.SetSprite(ItemConfig.Get(model.springCostItemId).IconKey);
|
var hasItemCnt = packModel.GetItemCountByID(PackType.Item, model.springCostItemId);
|
txtIcon.text = StringUtility.Contact(UIHelper.ReplaceLargeNum(hasItemCnt), "/", springCostItemCnt);
|
if (model.sqInfoDict != null)
|
{
|
var list = model.sqInfoDict.Keys.ToList();
|
list.Sort();
|
for (var i = 0; i < flowerItemList.Count; i++)
|
{
|
if (i < list.Count)
|
{
|
flowerItemList[i].Display(list[i], springCostItemCnt);
|
}
|
}
|
}
|
}
|
}
|
}
|