//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, February 27, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class RealmEquipWin : Window
|
{
|
[SerializeField] RectTransform m_LevelsContainer;
|
[SerializeField] EquipSlots m_EquipSlots;
|
[SerializeField] Text m_FightPoint;
|
[SerializeField] RawImage m_Role;
|
[SerializeField] Button m_SelectAppearance;
|
|
[SerializeField] EquipSuitPropertyWidget m_SuitPropertyWidget;
|
[SerializeField] CandidateEquipWidget m_CandidateEquipWidget;
|
|
List<EquipLevelSelectBehaviour> levelSelectBehaviours = new List<EquipLevelSelectBehaviour>();
|
List<GameObject> emptyFillers = new List<GameObject>();
|
|
EquipModel model { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_SelectAppearance.SetListener(() => { model.SetAppearance(model.selectedLevel.value); });
|
}
|
|
protected override void OnPreOpen()
|
{
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
DisplayLevels();
|
DisplayDynamicInfo(true);
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
DisplayDynamicInfo(false);
|
}
|
|
private void DisplayDynamicInfo(bool force)
|
{
|
if (force || model.selectedLevel.dirty)
|
{
|
var level = model.selectedLevel.Fetch();
|
|
DisplayEquips(level);
|
DisplayAppearance(level);
|
DisplayFightPoint(level);
|
m_SuitPropertyWidget.Init(level);
|
}
|
|
if (force || model.selectedPlace.dirty)
|
{
|
var place = model.selectedPlace.Fetch();
|
m_CandidateEquipWidget.Display();
|
}
|
|
if (force || model.selectedStarLevel.dirty)
|
{
|
m_SuitPropertyWidget.Display(model.selectedLevel.value, model.selectedStarLevel.Fetch());
|
}
|
}
|
|
private void DisplayLevels()
|
{
|
var sets = model.GetViewableEquipSets();
|
var behaviourCount = sets.Count;
|
var emptyCount = behaviourCount >= 5 ? 0 : 5 - behaviourCount;
|
var behaviourGap = behaviourCount - levelSelectBehaviours.Count;
|
for (var i = 0; i < behaviourGap; i++)
|
{
|
var instance = UIUtility.CreateWidget("EquipLevelSelectBehaviour", "EquipLevelSelectBehaviour");
|
instance.transform.SetParentEx(m_LevelsContainer, Vector3.zero, Quaternion.identity, Vector3.one);
|
instance.transform.SetAsFirstSibling();
|
levelSelectBehaviours.Insert(0, instance.GetComponent<EquipLevelSelectBehaviour>());
|
}
|
|
var emptyGap = emptyCount - emptyFillers.Count;
|
for (var i = 0; i < emptyCount; i++)
|
{
|
var instance = UIUtility.CreateWidget("EquipLevelSelectEmptyBehaviour", "EquipLevelSelectEmptyBehaviour");
|
instance.transform.SetParentEx(m_LevelsContainer, Vector3.zero, Quaternion.identity, Vector3.one);
|
instance.transform.SetAsLastSibling();
|
emptyFillers.Add(instance);
|
}
|
|
for (var i = 0; i < levelSelectBehaviours.Count; i++)
|
{
|
var behaviour = levelSelectBehaviours[i];
|
if (i < behaviourCount)
|
{
|
behaviour.gameObject.SetActive(true);
|
behaviour.Display(sets[i]);
|
}
|
else
|
{
|
behaviour.gameObject.SetActive(false);
|
}
|
}
|
|
for (var i = 0; i < emptyFillers.Count; i++)
|
{
|
emptyFillers[i].SetActive(i < emptyCount);
|
}
|
}
|
|
private void DisplayEquips(int level)
|
{
|
for (var i = 1; i <= 12; i++)
|
{
|
m_EquipSlots[i].Display(level, i);
|
}
|
}
|
|
private void DisplayAppearance(int level)
|
{
|
var appearance = model.GetAppearance(level);
|
UI3DModelExhibition.Instance.ShowOtherPlayer(m_Role, new UI3DPlayerExhibitionData()
|
{
|
job = PlayerDatas.Instance.baseData.Job,
|
clothesId = appearance.clothes,
|
weaponId = appearance.weapon,
|
secondaryId = appearance.secondary,
|
});
|
}
|
|
private void DisplayFightPoint(int level)
|
{
|
m_FightPoint.text = model.GetFightPoint(level).ToString();
|
}
|
|
#endregion
|
|
[System.Serializable]
|
public class EquipSlots
|
{
|
public EquipSlotBehaviour weapon;
|
public EquipSlotBehaviour secondary;
|
public EquipSlotBehaviour hat;
|
public EquipSlotBehaviour clothes;
|
public EquipSlotBehaviour belt;
|
public EquipSlotBehaviour trousers;
|
public EquipSlotBehaviour shoes;
|
public EquipSlotBehaviour glove;
|
public EquipSlotBehaviour neck;
|
public EquipSlotBehaviour fairy1;
|
public EquipSlotBehaviour fairy2;
|
public EquipSlotBehaviour jade;
|
|
public EquipSlotBehaviour this[int place]
|
{
|
get
|
{
|
switch ((RoleEquipType)place)
|
{
|
case RoleEquipType.Weapon:
|
return weapon;
|
case RoleEquipType.Weapon2:
|
return secondary;
|
case RoleEquipType.Hat:
|
return hat;
|
case RoleEquipType.Clothes:
|
return clothes;
|
case RoleEquipType.Belt:
|
return belt;
|
case RoleEquipType.Trousers:
|
return trousers;
|
case RoleEquipType.Shoes:
|
return shoes;
|
case RoleEquipType.Glove:
|
return glove;
|
case RoleEquipType.Neck:
|
return neck;
|
case RoleEquipType.FairyCan1:
|
return fairy1;
|
case RoleEquipType.FairyCan2:
|
return fairy2;
|
case RoleEquipType.Jade:
|
return jade;
|
default:
|
return null;
|
}
|
}
|
}
|
}
|
|
}
|
|
}
|