//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, April 26, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class OtherPlayerEquipWin : Window { [SerializeField] RectTransform m_Content; [SerializeField] Button m_Close; [SerializeField] CyclicScroll m_EquipLevelScroll; [SerializeField] EquipSlots m_EquipSlots; [SerializeField] Text m_FightPoint; [SerializeField] RawImage m_Role; [SerializeField] OtherPlayerSuitWidget m_WidgetSuit; OtherPlayerEquipModel model { get { return ModelCenter.Instance.GetModel(); } } EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } bool resetRoleRotation = false; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.SetListener(() => { WindowCenter.Instance.Close(); }); } protected override void OnPreOpen() { resetRoleRotation = true; m_Content.gameObject.SetActive(false); model.selectedLevelChangeEvent += OnSelectedLevelChange; } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.selectedLevelChangeEvent -= OnSelectedLevelChange; } protected override void OnAfterClose() { } protected override void OnActived() { base.OnActived(); DisplayEquipLevels(); if (model.selectedLevel != 0) { m_Content.gameObject.SetActive(true); DisplayEquips(); DisplayFightPoint(); DisplayAppearance(); DisplaySuitInfo(); } } #endregion private void OnSelectedLevelChange() { m_Content.gameObject.SetActive(true); DisplayEquips(); DisplayFightPoint(); DisplayAppearance(); DisplaySuitInfo(); } private void DisplayEquipLevels() { var realm = model.playerRealm; var levels = new List(); var allLevels = equipModel.GetAllEquipSets(); foreach (var level in allLevels) { var config = EquipControlConfig.Get(level, 1); if (realm >= config.realm) { levels.Add(level); } } m_EquipLevelScroll.Init(levels); } private void DisplayEquips() { var equipDetails = model.GetEquipBriefs(); for (int i = 1; i <= 12; i++) { var itemId = equipDetails.ContainsKey(i) ? equipDetails[i].itemId : 0; var star = equipDetails.ContainsKey(i) ? equipDetails[i].star : 0; m_EquipSlots[i].Display(i, itemId, star); } } private void DisplayFightPoint() { m_FightPoint.text = model.GetFightPoint().ToString(); } private void DisplayAppearance() { var appearance = model.GetEquipAppearance(); UI3DModelExhibition.Instance.ShowPlayer(m_Role, new UI3DPlayerExhibitionData() { job = appearance.job, clothesId = appearance.clothes, weaponId = appearance.weapon, secondaryId = appearance.secondary, keepRotation = resetRoleRotation, }); resetRoleRotation = false; } private void DisplaySuitInfo() { m_WidgetSuit.Display(model.GetSuitInfo()); } [System.Serializable] public class EquipSlots { public OtherPlayerEquipSlotBehaviour weapon; public OtherPlayerEquipSlotBehaviour secondary; public OtherPlayerEquipSlotBehaviour hat; public OtherPlayerEquipSlotBehaviour clothes; public OtherPlayerEquipSlotBehaviour belt; public OtherPlayerEquipSlotBehaviour trousers; public OtherPlayerEquipSlotBehaviour shoes; public OtherPlayerEquipSlotBehaviour glove; public OtherPlayerEquipSlotBehaviour neck; public OtherPlayerEquipSlotBehaviour fairy1; public OtherPlayerEquipSlotBehaviour fairy2; public OtherPlayerEquipSlotBehaviour jade; public OtherPlayerEquipSlotBehaviour 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; } } } } } }