using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using DG.Tweening;
|
|
|
namespace Snxxz.UI
|
{
|
public class BoxGetItemWin : Window
|
{
|
[SerializeField] GameObject getItem;
|
[SerializeField] RectTransform getItemParent;
|
[SerializeField] CommonItemBaisc box;
|
[SerializeField] Button backBtn;
|
[SerializeField] Button useBtn;
|
[SerializeField] Text useBtnText;
|
[SerializeField] Text getCoinsText;
|
[SerializeField] UIEffect fireEffect;
|
|
PackModel _playerPack;
|
PackModel playerPack
|
{
|
get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
|
}
|
|
ItemModel itemModel;
|
List<CommonItemBaisc> getItemBasiclist = new List<CommonItemBaisc>();
|
List<GameObject> GetItemlist = new List<GameObject>();
|
BoxGetItemModel boxModel;
|
BoxGetItemModel BoxModel
|
{
|
get { return boxModel ?? (boxModel = ModelCenter.Instance.GetModel<BoxGetItemModel>()); }
|
}
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel
|
{
|
get
|
{
|
return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
|
}
|
}
|
FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
|
|
[SerializeField] float scaleTime = 0.3f;
|
Vector3 startPos = Vector3.zero;
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
|
}
|
|
protected override void OnPreOpen()
|
{
|
startPos = getItemParent.anchoredPosition3D;
|
WindowCenter.Instance.Close<NewItemGetWin>();
|
//playerPack.ItemCntReduceAct += RefreshUI;
|
getItem.SetActive(false);
|
BoxModel.RefreshGetItemAct += RefreshGetIem;
|
backBtn.AddListener(ClickBackBtn);
|
ShowUICtrl();
|
}
|
|
protected override void OnActived()
|
{
|
UpdateFireEffect();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
this.transform.SetAsLastSibling();
|
}
|
|
protected override void OnPreClose()
|
{
|
// playerPack.ItemCntReduceAct -= RefreshUI;
|
BoxModel.RefreshGetItemAct -= RefreshGetIem;
|
backBtn.RemoveAllListeners();
|
useBtn.RemoveAllListeners();
|
WindowCenter.Instance.Open<NewItemGetWin>();
|
DestroyGetItemlist();
|
GetItemlist.Clear();
|
getItemBasiclist.Clear();
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
private void RefreshGetIem(int useId, int useCnt, BoxGetItemInfo[] info)
|
{
|
ShowUICtrl();
|
}
|
|
private void UpdateFireEffect()
|
{
|
if (BoxModel.getItems == null) return;
|
|
bool isFireBox = false;
|
foreach (var key in ceremonyModel.fireDict.Keys)
|
{
|
StoreConfig storeConfig = StoreConfig.Get(ceremonyModel.fireDict[key]);
|
if (storeConfig != null)
|
{
|
if (storeConfig.ItemID == BoxModel.itemId)
|
{
|
isFireBox = true;
|
if (!fireEffect.IsPlaying)
|
{
|
fireEffect.Play();
|
return;
|
}
|
}
|
}
|
}
|
if(!isFireBox)
|
{
|
fireEffect.Stop();
|
}
|
}
|
|
private void ShowUICtrl()
|
{
|
if(BoxModel.getItems != null)
|
{
|
CreateGetItem();
|
}
|
itemModel = playerPack.GetItemByGuid(BoxModel.guid);
|
ItemCellModel cellModel = new ItemCellModel(BoxModel.itemId);
|
box.Init(cellModel);
|
useBtn.RemoveAllListeners();
|
int count = 0;
|
if (itemModel != null)
|
{
|
count = itemModel.count;
|
useBtnText.text = Language.Get("OpenBoxUseBtn1");
|
useBtn.AddListener(ClickUseBtn);
|
}
|
else
|
{
|
useBtnText.text = Language.Get("L1001");
|
useBtn.AddListener(ClickBackBtn);
|
}
|
box.countText.text = count.ToString();
|
box.countText.gameObject.SetActive(true);
|
if(BoxModel.getCoinsType != 0 && BoxModel.getCoinsCnt > 0)
|
{
|
getCoinsText.gameObject.SetActive(true);
|
getCoinsText.text = Language.Get("BoxGetCoinsText",BoxModel.getCoinsType,BoxModel.getCoinsCnt);
|
}
|
else
|
{
|
getCoinsText.gameObject.SetActive(false);
|
}
|
}
|
|
private void RefreshUI(PackType type, int index, int id)
|
{
|
ItemModel itemModel = playerPack.GetItemByIndex(type, index);
|
if (itemModel != null && itemModel.guid == BoxModel.guid)
|
{
|
ShowUICtrl();
|
}
|
}
|
|
private void CreateGetItem()
|
{
|
getItemParent.anchoredPosition3D = startPos;
|
DestroyGetItemlist();
|
GetItemlist.Clear();
|
getItemBasiclist.Clear();
|
CreateGetItem(0);
|
ShowGetItemCtrl(0);
|
}
|
|
private void ShowGetItemCtrl(int index)
|
{
|
if(index < getItemBasiclist.Count)
|
{
|
getItemBasiclist[index].gameObject.SetActive(true);
|
getItemBasiclist[index].transform.DOScale(new Vector3(1, 1, 1), scaleTime).OnComplete(() =>
|
{
|
index += 1;
|
ShowGetItemCtrl(index);
|
});
|
}
|
}
|
|
private void CreateGetItem(int index)
|
{
|
int length = BoxModel.getItems.Length;
|
DebugEx.Log("CreateGetItem:" + length);
|
if (index < length)
|
{
|
GameObject item = Instantiate(getItem);
|
item.transform.SetParent(getItemParent);
|
item.transform.localPosition = Vector3.zero;
|
item.transform.localScale = Vector3.one;
|
item.name = StringUtility.Contact("CommonItemCell", index);
|
item.gameObject.SetActive(true);
|
BoxGetItemInfo itemInfo = BoxModel.getItems[index];
|
PackType type = PackType.Deleted;
|
ItemConfig itemConfig = ItemConfig.Get(itemInfo.ItemID);
|
if(itemConfig != null)
|
{
|
if(itemConfig.Type == 70 || (itemConfig.EquipPlace >= 101 && itemConfig.EquipPlace <= 105))
|
{
|
type = PackType.DogzItem;
|
}
|
}
|
CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent<CommonItemBaisc>();
|
ItemCellModel cellModel = new ItemCellModel(itemInfo.ItemID, false, (ulong)itemInfo.Count, itemInfo.IsBind,
|
"", type, false, ConfigParse.Analysis(itemInfo.UserData));
|
itemBasic.Init(cellModel);
|
itemBasic.cellBtn.RemoveAllListeners();
|
itemBasic.cellBtn.AddListener(()=>
|
{
|
ItemAttrData attrData = new ItemAttrData(itemInfo.ItemID,false, (ulong)itemInfo.Count,-1, itemInfo.IsBind,
|
false,type,"", ConfigParse.Analysis(itemInfo.UserData));
|
itemTipsModel.SetItemTipsModel(attrData);
|
|
});
|
itemBasic.transform.localScale = Vector3.zero;
|
itemBasic.transform.localPosition = Vector3.zero;
|
itemBasic.gameObject.SetActive(false);
|
GetItemlist.Add(item);
|
getItemBasiclist.Add(itemBasic);
|
index += 1;
|
CreateGetItem(index);
|
}
|
}
|
|
private void DestroyGetItemlist()
|
{
|
for(int i = 0; i < GetItemlist.Count; i++)
|
{
|
Destroy(GetItemlist[i]);
|
}
|
}
|
|
private void ClickUseBtn()
|
{
|
if (itemModel == null) return;
|
|
int useCnt = BoxModel.GetUseCntByID(itemModel.itemId);
|
ItemOperateUtility.Instance.UseItem(itemModel.itemPlace, 1);
|
}
|
|
private void ClickBackBtn()
|
{
|
CloseImmediately();
|
}
|
|
}
|
}
|