//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, January 07, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class FashionDressWin : Window
|
{
|
[SerializeField] FashionDressTypeBehaviour[] m_FashionDressTypes;
|
[SerializeField] Button m_ViewProperty;
|
[SerializeField] Button m_Resolve;
|
[SerializeField] IntensifySmoothSlider m_SmoothSlider;
|
[SerializeField] Text m_CabinetExp;
|
[SerializeField] Text m_CabinetLevel;
|
|
[SerializeField] RawImage m_RawModel;
|
|
[SerializeField] FashionDressQualityBehaviour[] m_FashionDressQualitys;
|
[SerializeField] ScrollerController m_ScrollerControl;
|
[SerializeField] RectTransform m_ContainerViewDetail;
|
[SerializeField] Button m_ViewDetail;
|
|
|
FashionDressModel model
|
{
|
get { return ModelCenter.Instance.GetModel<FashionDressModel>(); }
|
}
|
|
PackModel packModel
|
{
|
get { return ModelCenter.Instance.GetModel<PackModel>(); }
|
}
|
|
MagicianModel godWeaponModel
|
{
|
get { return ModelCenter.Instance.GetModel<MagicianModel>(); }
|
}
|
|
List<int> resolveList = new List<int>();
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_ViewProperty.AddListener(ViewProperty);
|
m_Resolve.AddListener(Resolve);
|
m_ViewDetail.AddListener(ViewDetail);
|
m_ScrollerControl.OnRefreshCell += OnRefreshCell;
|
}
|
|
protected override void OnPreOpen()
|
{
|
SetDefaultSelect();
|
|
model.cabinetRefresh += FashionDressCabinetRefresh;
|
model.selectTypeRefresh += SelectTypeRefresh;
|
model.selectQualityRefresh += SelectQualityRefresh;
|
model.selectFashionDressRefresh += SelectFashionDressRefresh;
|
//model.virtualEquipRefresh += VirtualEquipRefresh;
|
model.fashionDressRefresh += FashionDressRefresh;
|
packModel.refreshItemCountEvent += RefreshItemCountAct;
|
|
for (int i = 0; i < m_FashionDressTypes.Length; i++)
|
{
|
m_FashionDressTypes[i].Display();
|
}
|
for (int i = 0; i < m_FashionDressQualitys.Length; i++)
|
{
|
m_FashionDressQualitys[i].Display();
|
}
|
Display();
|
|
List<int> list;
|
if (model.TryGetFashionDresses(model.selectType, model.selectQuality, out list))
|
{
|
if (model.jumpFashionDress != 0 && list.Contains(model.jumpFashionDress))
|
{
|
m_ScrollerControl.JumpIndex(list.IndexOf(model.jumpFashionDress));
|
}
|
}
|
|
model.jumpFashionDress = 0;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.cabinetRefresh -= FashionDressCabinetRefresh;
|
model.selectTypeRefresh -= SelectTypeRefresh;
|
model.selectQualityRefresh -= SelectQualityRefresh;
|
model.selectFashionDressRefresh -= SelectFashionDressRefresh;
|
packModel.refreshItemCountEvent -= RefreshItemCountAct;
|
model.fashionDressRefresh -= FashionDressRefresh;
|
//model.virtualEquipRefresh -= VirtualEquipRefresh;
|
|
for (int i = 0; i < m_FashionDressTypes.Length; i++)
|
{
|
m_FashionDressTypes[i].Dispose();
|
}
|
for (int i = 0; i < m_FashionDressQualitys.Length; i++)
|
{
|
m_FashionDressQualitys[i].Dispose();
|
}
|
|
UI3DModelExhibition.Instance.StopShow();
|
|
model.TryEquip();
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
void SetDefaultSelect()
|
{
|
model.selectType = model.fashionDressTypes[0];
|
model.selectQuality = 0;
|
|
foreach (var fashionDressType in model.fashionDressTypes)
|
{
|
var equipId = model.GetFashionDressEquipId(fashionDressType);
|
model.SetVirtualEquipFashionDress(fashionDressType, equipId);
|
model.SetSelectFashionDress(fashionDressType, equipId);
|
}
|
|
for (int i = 0; i <= 2; i++)
|
{
|
List<int> list;
|
if (model.TryGetFashionDresses(model.selectType, i, out list)
|
&& list.Count > 0)
|
{
|
model.selectQuality = i;
|
break;
|
}
|
}
|
|
if (model.jumpFashionDress == 0)
|
{
|
if (model.levelUpRedpoint.state == RedPointState.Simple)
|
{
|
model.jumpFashionDress = model.fashionDressRedpointId;
|
}
|
}
|
|
if (model.jumpFashionDress != 0)
|
{
|
FashionDress fashionDress;
|
if (model.TryGetFashionDress(model.jumpFashionDress, out fashionDress))
|
{
|
model.selectType = fashionDress.fashionDressType;
|
var config = FashionDressConfig.Get(model.jumpFashionDress);
|
model.selectQuality = config.quality;
|
}
|
}
|
}
|
|
void Display()
|
{
|
DisplayCabinet();
|
DisplayFashionDress();
|
DisplayModel();
|
DisplayViewDetail();
|
}
|
|
void DisplayCabinet(bool requireAnimation = false)
|
{
|
m_SmoothSlider.stage = model.cabinetLevel;
|
if (!requireAnimation)
|
{
|
m_SmoothSlider.delay = 0;
|
m_SmoothSlider.ResetStage();
|
}
|
else
|
{
|
m_SmoothSlider.delay = 0.2f;
|
}
|
bool isMax = model.cabinetLevel >= model.cabinetMaxLevel;
|
var progress = 0f;
|
if (isMax)
|
{
|
progress = 1;
|
m_CabinetExp.text = StringUtility.Contact(model.cabinetExp, Language.Get("FashionDressCabinetMaxLevel"));
|
}
|
else
|
{
|
var config = FashionDressCabinetConfig.Get(model.cabinetLevel + 1);
|
progress = Mathf.Clamp01((float)model.cabinetExp / config.NeedExp);
|
m_CabinetExp.text = StringUtility.Contact(model.cabinetExp, "/", config.NeedExp);
|
}
|
m_SmoothSlider.value = progress;
|
m_CabinetLevel.text = Language.Get("CabinetLevel", model.cabinetLevel);
|
}
|
|
void DisplayFashionDress()
|
{
|
List<int> list;
|
m_ScrollerControl.Refresh();
|
if (model.TryGetFashionDresses(model.selectType, model.selectQuality, out list))
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
m_ScrollerControl.AddCell(ScrollerDataType.Header, list[i]);
|
}
|
}
|
m_ScrollerControl.Restart();
|
}
|
|
void DisplayViewDetail()
|
{
|
var selectFashionDress = model.GetSelectFashionDress(model.selectType);
|
m_ContainerViewDetail.SetActive(selectFashionDress != 0);
|
}
|
|
private void FashionDressCabinetRefresh()
|
{
|
DisplayCabinet(true);
|
}
|
|
private void SelectTypeRefresh()
|
{
|
List<int> list;
|
if (!model.TryGetFashionDresses(model.selectType, model.selectQuality, out list)
|
|| list.Count == 0)
|
{
|
for (int i = 0; i <= 2; i++)
|
{
|
if (model.TryGetFashionDresses(model.selectType, i, out list)
|
&& list.Count > 0)
|
{
|
model.selectQuality = i;
|
break;
|
}
|
}
|
}
|
DisplayFashionDress();
|
DisplayViewDetail();
|
}
|
|
private void SelectQualityRefresh()
|
{
|
DisplayFashionDress();
|
}
|
|
private void SelectFashionDressRefresh(int type)
|
{
|
if (model.selectType == type)
|
{
|
m_ScrollerControl.m_Scorller.RefreshActiveCellViews();
|
}
|
DisplayModel();
|
DisplayViewDetail();
|
}
|
|
//private void VirtualEquipRefresh(int type)
|
//{
|
// if (model.selectType == type)
|
// {
|
// m_ScrollerControl.m_Scorller.RefreshActiveCellViews();
|
// }
|
// DisplayModel();
|
// DisplayViewDetail();
|
//}
|
|
private void FashionDressRefresh(int id)
|
{
|
m_ScrollerControl.RefreshSingleCellView(id);
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var fashionDressCell = cell as FashionDressCell;
|
fashionDressCell.Display(cell.index);
|
}
|
|
private void RefreshItemCountAct(PackType packType, int index, int itemId)
|
{
|
if (packType == PackType.Item
|
&& model.fashionDressLevelUpItems.Contains(itemId))
|
{
|
m_ScrollerControl.m_Scorller.RefreshActiveCellViews();
|
}
|
if (packType == PackType.Equip)
|
{
|
if (index == (int)RoleEquipType.FashionClothes
|
|| index == (int)RoleEquipType.FashionWeapon
|
|| index == (int)RoleEquipType.FashionWeapon2)
|
{
|
m_ScrollerControl.m_Scorller.RefreshActiveCellViews();
|
|
foreach (var fashionDressType in model.fashionDressTypes)
|
{
|
var equipId = model.GetFashionDressEquipId(fashionDressType);
|
model.SetVirtualEquipFashionDress(fashionDressType, equipId);
|
model.SetSelectFashionDress(fashionDressType, equipId);
|
}
|
}
|
}
|
}
|
|
public void DisplayModel()
|
{
|
m_RawModel.SetActive(true);
|
|
var job = PlayerDatas.Instance.baseData.Job;
|
|
var playerPack = ModelCenter.Instance.GetModel<PackModel>();
|
|
var appearance = ModelCenter.Instance.GetModel<EquipModel>().GetAppearance();
|
|
var clothesId = appearance.clothes;
|
var wingsId = appearance.wings;
|
var secondaryId = appearance.secondary;
|
var weaponId = appearance.weapon;
|
|
var fashionDressClothesId = 0;
|
var fashionDressWeaponId = 0;
|
var fashionDressSecondaryId = 0;
|
|
foreach (var type in model.fashionDressTypes)
|
{
|
var selectFashionId = model.GetSelectFashionDress(type);
|
if (selectFashionId == 0)
|
{
|
continue;
|
}
|
FashionDress fashionDress;
|
if (model.TryGetFashionDress(selectFashionId, out fashionDress))
|
{
|
var index = model.fashionTypeMapPlaceDict[type];
|
switch ((RoleEquipType)index)
|
{
|
case RoleEquipType.FashionWeapon:
|
fashionDressWeaponId = fashionDress.GetEquipItemId();
|
break;
|
case RoleEquipType.FashionClothes:
|
fashionDressClothesId = fashionDress.GetEquipItemId();
|
break;
|
case RoleEquipType.FashionWeapon2:
|
fashionDressSecondaryId = fashionDress.GetEquipItemId();
|
break;
|
}
|
}
|
}
|
|
int _suitLevel = 0;
|
UI3DPlayerExhibitionData data = new UI3DPlayerExhibitionData()
|
{
|
job = job,
|
clothesId = clothesId,
|
suitLevel = _suitLevel,
|
weaponId = weaponId,
|
wingsId = wingsId,
|
secondaryId = secondaryId,
|
fashionClothesId = fashionDressClothesId,
|
fashionWeaponId = fashionDressWeaponId,
|
fashionSecondaryId = fashionDressSecondaryId,
|
reikiRootEffectId = PlayerDatas.Instance.baseData.reikiRootEffectId,
|
isDialogue = false,
|
equipLevel = PlayerDatas.Instance.baseData.suitLevel,
|
};
|
UI3DModelExhibition.Instance.ShowPlayer(m_RawModel, data);
|
}
|
|
private void Resolve()
|
{
|
if (!model.TryGetSatisfyResolves(ref resolveList))
|
{
|
SysNotifyMgr.Instance.ShowTip("FashionDressResolveOpenError");
|
return;
|
}
|
WindowCenter.Instance.Open<FashiongDecomposeWin>();
|
}
|
|
private void ViewProperty()
|
{
|
WindowCenter.Instance.Open<FashionSumAttrWin>();
|
}
|
|
private void ViewDetail()
|
{
|
var virtualEquipId = model.GetVirtualEquipFashionDress(model.selectType);
|
var selectFashionDress = model.GetSelectFashionDress(model.selectType);
|
if (selectFashionDress != 0)
|
{
|
model.ViewFashionDressDetails(selectFashionDress);
|
}
|
else if (virtualEquipId != 0)
|
{
|
model.ViewFashionDressDetails(virtualEquipId);
|
}
|
}
|
}
|
|
}
|
|
|
|
|