using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using TableConfig; 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; PlayerPackModel _playerPack; PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } ItemModel itemModel; List getItemBasiclist = new List(); List GetItemlist = new List(); BoxGetItemModel boxModel; BoxGetItemModel BoxModel { get { return boxModel ?? (boxModel = ModelCenter.Instance.GetModel()); } } ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel(); } } [SerializeField] float scaleTime = 0.3f; protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { WindowCenter.Instance.CloseImmediately(); //playerPack.ItemCntReduceAct += RefreshUI; getItem.SetActive(false); BoxModel.RefreshGetItemAct += RefreshGetIem; backBtn.AddListener(ClickBackBtn); ShowUICtrl(); } protected override void OnAfterOpen() { this.transform.SetAsLastSibling(); } protected override void OnPreClose() { // playerPack.ItemCntReduceAct -= RefreshUI; BoxModel.RefreshGetItemAct -= RefreshGetIem; backBtn.RemoveAllListeners(); useBtn.RemoveAllListeners(); WindowCenter.Instance.Open(); } protected override void OnAfterClose() { } private void RefreshGetIem(int useId, int useCnt, BoxGetItemInfo[] info) { ShowUICtrl(); } private void ShowUICtrl() { if(BoxModel.getItems != null) { CreateGetItem(); } itemModel = playerPack.GetItemModelByGUID(BoxModel.guid); ItemCellModel cellModel = new ItemCellModel(BoxModel.itemId); box.Init(cellModel); useBtn.RemoveAllListeners(); int count = 0; if (itemModel != null) { count = itemModel.itemInfo.ItemCount; 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); } foreach(var key in ceremonyModel.fireDict.Keys) { StoreConfig storeConfig = ConfigManager.Instance.GetTemplate(ceremonyModel.fireDict[key]); if(storeConfig != null) { if(storeConfig.ItemID == BoxModel.itemId) { if (!fireEffect.IsPlaying) { fireEffect.Play(); return; } } } } if (fireEffect.IsPlaying) { fireEffect.Stop(); } } private void RefreshUI(PackType type, int index, int id) { ItemModel itemModel = playerPack.GetItemModelByIndex(type, index); if (itemModel != null && itemModel.itemInfo.ItemGUID == BoxModel.guid) { ShowUICtrl(); } } private void CreateGetItem() { 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; DesignDebug.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]; CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent(); ItemCellModel cellModel = new ItemCellModel(itemInfo.ItemID, false, (ulong)itemInfo.Count, itemInfo.IsBind, "", PackType.rptDeleted, 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, PackType.rptDeleted,"", 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.itemInfo.ItemID); PackSendQuestMgr.Instance.SendMakeUseQuest(itemModel.itemInfo.ItemPlace, 1); } private void ClickBackBtn() { CloseImmediately(); } } }