//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, February 27, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class RealmEquipWin : Window
|
{
|
[SerializeField] RectTransform m_Content;
|
[SerializeField] EquipSlots m_EquipSlots;
|
[SerializeField] Text m_FightPoint;
|
[SerializeField] RawImage m_Role;
|
[SerializeField] Image m_ImgAppearance;
|
[SerializeField] Button m_SelectAppearance;
|
[SerializeField] RectTransform m_LevelContainer;
|
[SerializeField] Button m_SuiteButton;
|
[SerializeField] Button m_SuiteClose;
|
[SerializeField] RedpointBehaviour m_SuiteRedPoint;
|
|
[SerializeField] EquipSuitPropertyWidget m_SuitPropertyWidget;
|
|
List<EquipSetSelect> levelSelectBehaviours = new List<EquipSetSelect>();
|
|
EquipModel model { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
EquipStrengthModel strengthModel { get { return ModelCenter.Instance.GetModel<EquipStrengthModel>(); } }
|
|
#region Built-in
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_SuiteClose.SetListener(() => { m_SuitPropertyWidget.SetActive(false); });
|
m_SelectAppearance.SetListener(() => { model.SetAppearance(model.selectedLevel.value); });
|
m_SuiteButton.SetListener(OpenSuiteAttr);
|
}
|
|
|
private void OpenSuiteAttr()
|
{
|
if (m_SuitPropertyWidget.gameObject.activeSelf)
|
m_SuitPropertyWidget.SetActive(false);
|
else
|
m_SuitPropertyWidget.SetActive(true);
|
}
|
|
protected void TriggerLast()
|
{
|
int index = Math.Max(1, model.selectedLevel.value - 1);
|
model.SelectSet(index);
|
}
|
|
protected void TriggerNext()
|
{
|
int index = Math.Min(model.selectedLevel.value + 1, model.GetUnLockedEquipSets().Count);
|
model.SelectSet(index);
|
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
if (model.selectedLevel.value == 0)
|
{
|
model.SelectSet(model.GetFirstRedpointEquipSet());
|
}
|
|
m_SuitPropertyWidget.SetActive(model.isOpenSuiteAttrRect);
|
model.isOpenSuiteAttrRect = false;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
m_SuitPropertyWidget.DisplaySuitPlaceEffects(model.suitPlaceCollectEffects.Fetch());
|
m_SuitPropertyWidget.DisplaySuitLevelEffects(model.suitActive.Fetch());
|
}
|
|
protected override void OnPreClose()
|
{
|
if (!WindowJumpMgr.Instance.IsJumpState)
|
{
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
UI3DModelExhibition.InstanceClone2.StopShow();
|
}
|
|
protected override void OnAfterClose()
|
{
|
model.ResetOperateParams();
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
|
var knapSackWin = WindowCenter.Instance.Get<KnapSackWin>();
|
if (knapSackWin != null)
|
{
|
Transform parent = knapSackWin.subWindowContainer;
|
this.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
|
this.transform.SetAsLastSibling();
|
}
|
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();
|
DisplayLevels();
|
DisplayEquips(level);
|
var eightSuitLevel = model.GetSuitLevel(level, EquipSuitType.EightSuit);
|
m_SuitPropertyWidget.Init(level, eightSuitLevel);
|
}
|
|
if (force || model.appearance.dirty)
|
{
|
DisplayAppearance(model.appearance.Fetch(), force);
|
}
|
|
if (force || model.fightPoint.dirty)
|
{
|
DisplayFightPoint(model.fightPoint.Fetch());
|
}
|
|
if (force || model.suitPlaces.dirty)
|
{
|
m_SuitPropertyWidget.DisplaySuitPlaces(model.suitPlaces.Fetch());
|
}
|
|
if (force || model.suitProperty.dirty)
|
{
|
m_SuitPropertyWidget.DisplayProperty(model.suitProperty.Fetch());
|
}
|
|
if (force || model.getWays.dirty)
|
{
|
DisplayGetWays(model.getWays.Fetch());
|
}
|
|
if (force || model.isAppearanceLevel.dirty)
|
{
|
DisplayAppearaneSign(model.isAppearanceLevel.Fetch());
|
}
|
|
if (this.windowState == WindowState.Opened && model.suitPlaceCollectEffects.dirty)
|
{
|
m_SuitPropertyWidget.DisplaySuitPlaceEffects(model.suitPlaceCollectEffects.Fetch());
|
}
|
|
if (this.windowState == WindowState.Opened && model.suitActive.dirty)
|
{
|
m_SuitPropertyWidget.DisplaySuitLevelEffects(model.suitActive.Fetch());
|
}
|
}
|
|
private void DisplayLevels()
|
{
|
var sets = model.GetUnLockedEquipSets();
|
var behaviourCount = sets.Count;
|
var behaviourGap = behaviourCount - levelSelectBehaviours.Count;
|
for (var i = 0; i < behaviourGap; i++)
|
{
|
var instance = UIUtility.CreateWidget("EquipSetSelect", "EquipSetSelect");
|
instance.transform.SetParentEx(m_LevelContainer, Vector3.zero, Quaternion.identity, Vector3.one);
|
instance.transform.SetAsFirstSibling();
|
levelSelectBehaviours.Insert(0, instance.GetComponent<EquipSetSelect>());
|
|
}
|
|
for (var i = 0; i < levelSelectBehaviours.Count; i++)
|
{
|
var behaviour = levelSelectBehaviours[i];
|
if (i < behaviourCount)
|
{
|
behaviour.SetActive(true);
|
behaviour.Display(sets[i], model.selectedLevel.value == sets[i], model.GetEquipSet(sets[i]).redpoint.id);
|
}
|
else
|
{
|
behaviour.SetActive(false);
|
}
|
}
|
|
}
|
|
private void DisplayEquips(int level)
|
{
|
for (var i = 1; i <= 12; i++)
|
{
|
m_EquipSlots[i].Display(level, i);
|
}
|
m_SuiteRedPoint.redpointId = 6560 + level;
|
}
|
|
private void DisplayAppearaneSign(bool isCurrentEquiped)
|
{
|
m_ImgAppearance.SetSprite(isCurrentEquiped ? "RealmEquip_CurrentEquip" : "RealmEquip_PutOn");
|
}
|
|
private void DisplayAppearance(EquipAppearance appearance, bool resetRotation)
|
{
|
UI3DModelExhibition.InstanceClone2.ShowPlayer(m_Role, new UI3DPlayerExhibitionData()
|
{
|
job = PlayerDatas.Instance.baseData.Job,
|
clothesId = appearance.clothes,
|
weaponId = appearance.weapon,
|
secondaryId = appearance.secondary,
|
keepRotation = !resetRotation,
|
reikiRootEffectId = strengthModel.GetMasterLV(model.selectedLevel.Fetch()),
|
suitLevel = appearance.isSuit ? 1 : 0,
|
equipLevel = model.selectedLevel.Fetch(),
|
titleID = PlayerDatas.Instance.baseData.TitleID,
|
});
|
m_Role.raycastTarget = false;
|
}
|
|
private void DisplayFightPoint(int fightPoint)
|
{
|
m_FightPoint.text = fightPoint.ToString();
|
}
|
|
private void DisplayGetWays(List<int> getWays)
|
{
|
if (getWays.IsNullOrEmpty())
|
{
|
WindowCenter.Instance.Close<GetWayWin>();
|
}
|
else
|
{
|
ModelCenter.Instance.GetModel<GetWayModel>().SetWays(getWays.ToArray());
|
WindowCenter.Instance.Open<GetWayWin>();
|
}
|
}
|
|
#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;
|
}
|
}
|
}
|
}
|
|
}
|
|
}
|