//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 08, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; namespace Snxxz.UI { public class EquipTrainLevelBehaviour : MonoBehaviour { [SerializeField] Button m_Select; [SerializeField] Image m_BackGround; [SerializeField] Image m_Arrow; [SerializeField] Text m_Title; readonly List slotBehaviours = new List(); EquipTrainModel model { get { return ModelCenter.Instance.GetModel(); } } EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } public int level { get; private set; } public void Init(int level) { var equipSet = equipModel.GetEquipSet(level); var realmConfig = RealmConfig.Get(equipSet.realm); this.m_Title.text = Language.Get("RealmEquipName", realmConfig.Name); this.level = level; m_Select.SetListener(Select); } public void UnInit() { Dispose(); this.level = 0; this.m_Select.RemoveAllListeners(); } public void Display() { var siblingIndex = this.transform.GetSiblingIndex(); var candidates = this.model.candidatePlaces.Fetch(); for (var i = candidates.Count - 1; i >= 0; i--) { var behaviour = EquipTrainCandidateBehaviourPool.Get(); behaviour.Display(candidates[i]); behaviour.transform.SetParentEx(this.transform.parent, Vector3.zero, Quaternion.identity, Vector3.one); behaviour.transform.SetSiblingIndex(siblingIndex + 1); slotBehaviours.Add(behaviour); } m_BackGround.SetSprite("RealmEquip_16"); m_Arrow.transform.localEulerAngles = new Vector3(0, 0, 180); } public void Dispose() { for (var i = slotBehaviours.Count - 1; i >= 0; i--) { EquipTrainCandidateBehaviourPool.Release(slotBehaviours[i]); } slotBehaviours.Clear(); m_BackGround.SetSprite("RealmEquip_5"); m_Arrow.transform.localEulerAngles = Vector3.zero; } private void Select() { if (model.selectedLevel.value == this.level) { model.SelectLevel(0); } else { model.SelectLevel(this.level); } } } }