//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, January 25, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.Events;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI {
|
|
public class DogzPackWin : Window, SecondWindowInterface
|
{
|
[SerializeField] List<DogzEquip> m_DogzEquips;
|
[SerializeField] List<DogzUnEquip> m_DogzUnEquipBtns;
|
[SerializeField] List<Text> m_DogzUnEquipContents;
|
[SerializeField] Image m_DogzHeadIcon;
|
[SerializeField] Button m_GetEquipBtn;
|
[SerializeField] Button m_OneKeyPutBtn;
|
[SerializeField] ScrollerController m_PackController;
|
[SerializeField] Button qualitySelectBtn;
|
[SerializeField] Button starSelectBtn;
|
[SerializeField] Transform qualityArrow;
|
[SerializeField] Transform starArrow;
|
[SerializeField] SortTable qualitySort;
|
[SerializeField] SortTable starSort;
|
[SerializeField] List<Image> sliderImglist = new List<Image>();
|
DogzModel m_DogzModel;
|
DogzModel dogzModel
|
{
|
get
|
{
|
return m_DogzModel ?? (m_DogzModel = ModelCenter.Instance.GetModel<DogzModel>());
|
}
|
}
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
DogzPackModel m_Model;
|
DogzPackModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DogzPackModel>());
|
}
|
}
|
List<Image> curSliderImglist = new List<Image>();
|
|
public Button close { get; set; }
|
#region Built-in
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
close.onClick.AddListener(CloseClick);
|
m_GetEquipBtn.onClick.AddListener(GetEquipBtn);
|
m_OneKeyPutBtn.AddListener(ClickOneKeyPutBtn);
|
qualitySelectBtn.AddListener(ClickQualitySelect);
|
starSelectBtn.AddListener(ClickStarSelect);
|
}
|
|
protected override void OnPreOpen()
|
{
|
curSliderImglist.Clear();
|
dogzModel.RefreshDogzEquipAct += RefreshDogzEquipEvent;
|
playerPack.refreshItemCountEvent += RefreshDogzItemEvent;
|
qualitySort.onSelectSortEvent += RefreshDogzSelectEvent;
|
starSort.onSelectSortEvent += RefreshDogzSelectEvent;
|
qualitySort.onSortCloseEvent += CloseQualitySort;
|
starSort.onSortCloseEvent += CloseStarSort;
|
dogzModel.SelectDogzItemQuality = 0;
|
dogzModel.SelectDogzItemStart = 0;
|
|
starSort.SetDefault();
|
qualitySort.SetDefault();
|
UpdateDogzEquip();
|
UpdateDogzPack();
|
SetDefalutDogzEquipState();
|
starSort.SetActive(false);
|
qualitySort.SetActive(false);
|
starArrow.localRotation = Quaternion.Euler(0, 0, 180);
|
qualityArrow.localRotation = Quaternion.Euler(0, 0, 180);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
dogzModel.RefreshDogzEquipAct -= RefreshDogzEquipEvent;
|
playerPack.refreshItemCountEvent -= RefreshDogzItemEvent;
|
qualitySort.onSelectSortEvent -= RefreshDogzSelectEvent;
|
starSort.onSelectSortEvent -= RefreshDogzSelectEvent;
|
qualitySort.onSortCloseEvent -= CloseQualitySort;
|
starSort.onSortCloseEvent -= CloseStarSort;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void LateUpdate()
|
{
|
if(curSliderImglist.Count > 0)
|
{
|
for(int i = 0; i < curSliderImglist.Count; i++)
|
{
|
if(curSliderImglist[i].fillAmount < 1)
|
{
|
curSliderImglist[i].fillAmount += 0.1f;
|
}
|
}
|
}
|
}
|
#endregion
|
|
private void RefreshDogzEquipEvent(int dogzId)
|
{
|
if (dogzId != dogzModel.presentSelectDogz) return;
|
UpdateDogzEquip();
|
UpdateDogzEquipState(dogzId);
|
}
|
|
private void UpdateDogzEquip()
|
{
|
var _dogzCfg = DogzConfig.Get(dogzModel.presentSelectDogz);
|
m_DogzHeadIcon.SetSprite(_dogzCfg.HeadIcon);
|
m_DogzHeadIcon.SetNativeSize();
|
for (int i = 0; i < m_DogzEquips.Count; i++)
|
{
|
ItemModel _data;
|
int index = i;
|
bool _equiped = dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz, i+101, out _data);
|
m_DogzUnEquipBtns[i].DogzUnEquipBtn.SetActive(!_equiped);
|
m_DogzUnEquipBtns[i].RedpointBeh.redpointId = dogzModel.GetDogzEquipPlaceRedpointById(dogzModel.presentSelectDogz,i).id;
|
m_DogzEquips[i].SetActive(_equiped);
|
if (_equiped)
|
{
|
m_DogzEquips[i].Display(_data);
|
}
|
else
|
{
|
var _itemColor = dogzModel.GetDogzEquipLimitByIndex(dogzModel.presentSelectDogz, i);
|
m_DogzUnEquipContents[i].text = StringUtility.Contact(dogzModel.GetItemColorName(_itemColor),
|
dogzModel.GetDogzPartNameByIndex(i));
|
m_DogzUnEquipContents[i].color = UIHelper.GetUIColor(_itemColor);
|
m_DogzUnEquipBtns[i].DogzUnEquipBtn.RemoveAllListeners();
|
m_DogzUnEquipBtns[i].DogzUnEquipBtn.AddListener(() => { ClickEquipIndex(index); });
|
}
|
}
|
}
|
|
private void SetDefalutDogzEquipState()
|
{
|
for(int i = 0; i < sliderImglist.Count; i++)
|
{
|
ItemModel itemModel = null;
|
bool isPut = dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz, dogzModel.GetDogzEquipPlaceByIndex(i), out itemModel);
|
if (!isPut)
|
{
|
sliderImglist[i].fillAmount = 0;
|
sliderImglist[i].SetActive(false);
|
}
|
else
|
{
|
sliderImglist[i].fillAmount = 1;
|
sliderImglist[i].SetActive(true);
|
}
|
}
|
}
|
|
private void UpdateDogzEquipState(int dogzId)
|
{
|
curSliderImglist.Clear();
|
foreach (var index in dogzModel.dogzEquipStateDict.Keys)
|
{
|
ItemModel itemModel = null;
|
bool isPut = dogzModel.TryGetDogzEquip(dogzId,dogzModel.GetDogzEquipPlaceByIndex(index),out itemModel);
|
if(!dogzModel.dogzEquipStateDict[index] && isPut)
|
{
|
sliderImglist[index].SetActive(true);
|
sliderImglist[index].fillAmount = 0;
|
curSliderImglist.Add(sliderImglist[index]);
|
}
|
else if(!isPut)
|
{
|
sliderImglist[index].fillAmount = 0;
|
sliderImglist[index].SetActive(false);
|
}
|
else
|
{
|
sliderImglist[index].fillAmount = 1;
|
sliderImglist[index].SetActive(true);
|
}
|
}
|
}
|
|
private void ClickEquipIndex(int index)
|
{
|
dogzModel.GetDogzItemListByIndex(dogzModel.presentSelectDogz,index);
|
if(dogzModel.selectEquipPlacelist.Count > 0)
|
{
|
WindowCenter.Instance.Open<SelectDogzItemWin>();
|
}
|
else
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("DogzFunc101"));
|
}
|
}
|
|
private void RefreshDogzSelectEvent(SortType sortType,int type)
|
{
|
switch (sortType)
|
{
|
case SortType.EquipQuality:
|
dogzModel.SelectDogzItemQuality = type;
|
break;
|
case SortType.EquipStar:
|
dogzModel.SelectDogzItemStart = type;
|
break;
|
}
|
m_PackController.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void RefreshDogzItemEvent(PackType type, int index, int id)
|
{
|
if (type != PackType.DogzItem && type != PackType.DogzEquip) return;
|
|
m_PackController.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void UpdateDogzPack()
|
{
|
if (m_PackController.GetNumberOfCells(m_PackController.m_Scorller) == 0)
|
{
|
m_PackController.Refresh();
|
var _line = dogzModel.DogzPackGridCnt / 4;
|
for (int i = 0; i < _line; i++)
|
{
|
m_PackController.AddCell(ScrollerDataType.Header, i);
|
}
|
m_PackController.Restart();
|
}
|
else
|
{
|
m_PackController.m_Scorller.RefreshActiveCellViews();
|
}
|
}
|
|
private void GetEquipBtn()
|
{
|
//--界面跳转
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.CrossServerBoss);
|
}
|
|
|
private void ClickOneKeyPutBtn()
|
{
|
List<int> indexlist = new List<int>();
|
for(int i = 0; i < 5; i++)
|
{
|
dogzModel.GetDogzItemListByIndex(dogzModel.presentSelectDogz,i);
|
if (dogzModel.selectEquipPlacelist.Count > 0)
|
{
|
ItemModel selectModel = dogzModel.selectEquipPlacelist[0];
|
ItemModel itemModel = null;
|
int equipPlace = dogzModel.GetDogzEquipPlaceByIndex(i);
|
dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz,equipPlace,out itemModel);
|
if(itemModel == null)
|
{
|
indexlist.Add(selectModel.gridIndex);
|
}
|
else
|
{
|
int putStrenLv = 0;
|
if (itemModel.GetUseData((int)ItemUseDataKey.dogzEquipPlus) != null)
|
{
|
putStrenLv = itemModel.GetUseData((int)ItemUseDataKey.dogzEquipPlus)[0];
|
}
|
|
int selectStrenLv = 0;
|
if (selectModel.GetUseData((int)ItemUseDataKey.dogzEquipPlus) != null)
|
{
|
selectStrenLv = selectModel.GetUseData((int)ItemUseDataKey.dogzEquipPlus)[0];
|
}
|
|
if (itemModel.config.ItemColor < selectModel.config.ItemColor
|
|| (itemModel.config.StarLevel < selectModel.config.StarLevel
|
&& itemModel.config.ItemColor == selectModel.config.ItemColor)
|
|| (itemModel.score < selectModel.score
|
&& itemModel.config.ItemColor == selectModel.config.ItemColor
|
&& itemModel.config.StarLevel == selectModel.config.StarLevel)
|
||(itemModel.score == selectModel.score
|
&& itemModel.config.ItemColor == selectModel.config.ItemColor
|
&& itemModel.config.StarLevel == selectModel.config.StarLevel
|
&& putStrenLv < selectStrenLv))
|
{
|
indexlist.Add(dogzModel.selectEquipPlacelist[0].gridIndex);
|
}
|
}
|
}
|
}
|
if(indexlist.Count > 0)
|
{
|
dogzModel.SendPutOnEquip(indexlist);
|
}
|
else
|
{
|
if(dogzModel.GetDogzEquips(dogzModel.presentSelectDogz) != null
|
&& dogzModel.GetDogzEquips(dogzModel.presentSelectDogz).Count == 5)
|
{
|
SysNotifyMgr.Instance.ShowTip("DogzOneKeyBest");
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("DogzOneKeyNone");
|
}
|
|
}
|
}
|
|
private void ClickStarSelect()
|
{
|
starArrow.localRotation = Quaternion.Euler(0, 0, 0);
|
if (!starSort.gameObject.activeInHierarchy)
|
{
|
starSort.SetActive(true);
|
}
|
}
|
|
private void ClickQualitySelect()
|
{
|
qualityArrow.localRotation = Quaternion.Euler(0, 0, 0);
|
if (!qualitySort.gameObject.activeInHierarchy)
|
{
|
qualitySort.SetActive(true);
|
}
|
}
|
|
|
private void CloseQualitySort()
|
{
|
qualityArrow.localRotation = Quaternion.Euler(0, 0, 180);
|
}
|
|
private void CloseStarSort()
|
{
|
starArrow.localRotation = Quaternion.Euler(0, 0, 180);
|
}
|
|
[Serializable]
|
public class DogzUnEquip
|
{
|
[SerializeField] Button m_DogzUnEquipBtn;
|
public Button DogzUnEquipBtn { get { return m_DogzUnEquipBtn; } }
|
[SerializeField] RedpointBehaviour m_RedpointBeh;
|
public RedpointBehaviour RedpointBeh { get { return m_RedpointBeh; } }
|
}
|
}
|
|
}
|
|
|
|
|