using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using DG.Tweening;
|
using UnityEditor;
|
|
|
namespace vnxbqy.UI
|
{
|
public class BoxGetItemWin : Window
|
{
|
[SerializeField] GameObject getItem;
|
[SerializeField] RectTransform getItemParent;
|
[SerializeField] CommonItemBaisc box;
|
[SerializeField] Button backBtn;
|
[SerializeField] Button useBtn;
|
[SerializeField] Button useBtnTen;
|
[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>()); }
|
}
|
|
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();
|
getItemParent.anchoredPosition3D = new Vector3(0, getItemParent.anchoredPosition3D.y, 0);
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
private void RefreshGetIem(int useId, int useCnt, BoxGetItemInfo[] info)
|
{
|
ShowUICtrl();
|
}
|
|
private void UpdateFireEffect()
|
{
|
if (BoxModel.getItems == null) return;
|
if (!fireEffect.IsPlaying)
|
{
|
fireEffect.Play();
|
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();
|
useBtnTen.RemoveAllListeners();
|
useBtnTen.SetActive(false);
|
int count = 0;
|
if (itemModel != null)
|
{
|
count = itemModel.count;
|
useBtnText.text = Language.Get("OpenBoxUseBtn1");
|
useBtn.AddListener(ClickUseBtn);
|
//showType 代表有展现并且可以10连开
|
//if (ChestsConfig.Has(BoxModel.itemId)&& ChestsConfig.Get(BoxModel.itemId).OpenShow == 2 && count >= 10)
|
//{
|
// useBtnTen.SetActive(true);
|
// useBtnTen.AddListener(ClickUseBtnTen);
|
//}
|
}
|
else
|
{
|
useBtnText.text = Language.Get("L1001");
|
useBtn.AddListener(ClickBackBtn);
|
}
|
|
bool isRandom = ItemConfig.Has(BoxModel.itemId) && ItemConfig.Get(BoxModel.itemId).BatchUse != 0;
|
bool isSelectItem = BoxModel.IsSelectItemByID(BoxModel.itemId, out var selectDict);
|
bool isShow = isRandom || isSelectItem;
|
box.SetActive(!isShow);
|
useBtn.SetActive(!isShow);
|
|
|
box.countText.text = count.ToString();
|
box.countText.SetActive(true);
|
if (BoxModel.getCoinsType != 0 && BoxModel.getCoinsCnt > 0)
|
{
|
getCoinsText.SetActive(true);
|
getCoinsText.text = Language.Get("BoxGetCoinsText", BoxModel.getCoinsType, BoxModel.getCoinsCnt);
|
}
|
else
|
{
|
getCoinsText.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].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.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;
|
|
Dictionary<int, List<int>> useDataDic = ConfigParse.Analysis(itemInfo.UserData);
|
int count = 0;
|
if (useDataDic != null && useDataDic.TryGetValue((int)ItemUseDataKey.itemCount, out List<int> list) && list != null && list.Count > 0)
|
{
|
count = list[0];
|
cellModel = new ItemCellModel(itemInfo.ItemID, false, (ulong)count,
|
"", type, false, useDataDic);
|
}
|
else
|
{
|
cellModel = new ItemCellModel(itemInfo.ItemID, false, (ulong)itemInfo.Count,
|
"", type, false, ConfigParse.Analysis(itemInfo.UserData));
|
}
|
|
itemBasic.Init(cellModel);
|
itemBasic.button.RemoveAllListeners();
|
itemBasic.button.AddListener(() =>
|
{
|
ShowItem(itemInfo);
|
});
|
|
itemBasic.transform.localScale = Vector3.zero;
|
itemBasic.transform.localPosition = Vector3.zero;
|
itemBasic.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;
|
bool isSelectItem = BoxModel.IsSelectItemByID(itemModel.itemId, out var selectDict);
|
if (isSelectItem)
|
{
|
ModelCenter.Instance.GetModel<ChooseItemsModel>().OpenChooseItemsWin();
|
return;
|
}
|
int useCnt = BoxModel.GetUseCntByID(itemModel.itemId);
|
|
ItemOperateUtility.Instance.UseItem(itemModel.guid, 1);
|
|
}
|
private void ClickUseBtnTen()
|
{
|
if (itemModel == null) return;
|
|
if (_playerPack.GetEmptyGridCount(PackType.Item) < 10)
|
{
|
SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_676165", (int)PackType.Item);
|
return;
|
}
|
int useCnt = BoxModel.GetUseCntByID(itemModel.itemId);
|
ItemOperateUtility.Instance.UseItem(itemModel.guid, 10);
|
}
|
private void ClickBackBtn()
|
{
|
CloseImmediately();
|
}
|
|
private void ShowItem(BoxGetItemInfo info)
|
{
|
if (ItemLogicUtility.Instance.IsDogzEquip(info.ItemID)
|
|| ItemLogicUtility.Instance.IsRealmEquip(info.ItemID))
|
{
|
var useDataDict = ConfigParse.Analysis(info.UserData);
|
List<Int2> legendProperties = null;
|
List<int> equipSkillList = null;
|
if (useDataDict != null)
|
{
|
var count = 0;
|
if (useDataDict.ContainsKey((int)ItemUseDataKey.legendAttrID) && useDataDict.ContainsKey((int)ItemUseDataKey.legendAttrValue))
|
{
|
legendProperties = new List<Int2>();
|
count = Mathf.Min(useDataDict[(int)ItemUseDataKey.legendAttrID].Count, useDataDict[(int)ItemUseDataKey.legendAttrValue].Count);
|
}
|
|
for (var i = 0; i < count; i++)
|
{
|
var x = useDataDict[(int)ItemUseDataKey.legendAttrID][i];
|
var y = useDataDict[(int)ItemUseDataKey.legendAttrValue][i];
|
legendProperties.Add(new Int2(x, y));
|
}
|
if (useDataDict.ContainsKey((int)ItemUseDataKey.equipSkills))
|
{
|
equipSkillList = useDataDict[(int)ItemUseDataKey.equipSkills];
|
}
|
}
|
|
var config = ItemConfig.Get(info.ItemID);
|
ItemTipUtility.ShowCustomEquip(new ItemTipUtility.CustomEquipInfo()
|
{
|
job = PlayerDatas.Instance.baseData.Job,
|
itemId = info.ItemID,
|
score = ItemLogicUtility.Instance.GetEquipScore(info.ItemID, useDataDict),
|
legendProperties = legendProperties,
|
isEquiped = false,
|
equipSkillList = equipSkillList,
|
});
|
}
|
else
|
{
|
ItemTipUtility.Show(info.ItemID);
|
}
|
}
|
}
|
}
|