//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 08, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace vnxbqy.UI { public class EquipTrainCandidateBehaviour : MonoBehaviour { [SerializeField] Image m_BackGround; [SerializeField] Image m_EmptyItem; [SerializeField] ItemCell m_ItemCell; [SerializeField] Text m_Star; [SerializeField] Text m_Description1; [SerializeField] Text m_Description2; [SerializeField] Button m_Select; [SerializeField] RedpointBehaviour m_Redpoint; public bool suitEffectDirty { get; set; } EquipTrainModel model { get { return ModelCenter.Instance.GetModel(); } } EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } EquipTrainCandidate candidate; public void Display(EquipTrainCandidate candidate) { this.candidate = candidate; this.m_Redpoint.redpointId = 91 * 10000 + this.candidate.equipPosition.x * 100 + this.candidate.equipPosition.y; DisplayBaseInfo(); DisplayDynamicInfo(true); m_Select.SetListener(() => { model.SelectPlace(this.candidate.equipPosition); }); } public void Dispose() { } private void LateUpdate() { DisplayDynamicInfo(false); } private void DisplayBaseInfo() { var guid = equipModel.GetEquip(this.candidate.equipPosition); var item = packModel.GetItemByGuid(guid); if (item == null) { m_ItemCell.SetActive(false); m_EmptyItem.SetActive(true); m_Star.SetActive(false); var place = this.candidate.equipPosition.y; m_Description1.text = Language.Get("L1076", UIHelper.GetEquipPlaceName(place)); m_Description1.color = UIHelper.GetUIColor(TextColType.NavyBrown, true); m_Description2.text = Language.Get("EquipWash102"); m_Description2.color = UIHelper.GetUIColor(TextColType.Red, true); } else { m_ItemCell.suitEffectDirty = suitEffectDirty; m_ItemCell.SetActive(true); m_EmptyItem.SetActive(false); m_ItemCell.Init(item); m_ItemCell.button.enabled = false; m_Description1.text = item.config.ItemName; m_Description1.color = UIHelper.GetUIColor(item.config.ItemColor, true); m_Description2.text = Language.Get("EquipWash108", this.candidate.trainLevel.Fetch()); m_Description2.color = UIHelper.GetUIColor(TextColType.NavyBrown, true); var starLevel = this.candidate.starLevel.Fetch(); m_Star.SetActive(true); m_Star.text = starLevel >= 1 ? Language.Get("EquipStarLevel", starLevel) : ""; suitEffectDirty = false; } } private void DisplayDynamicInfo(bool force) { if (force || this.candidate.selected.dirty) { var selected = this.candidate.selected.Fetch(); m_BackGround.SetSprite(selected ? "Title_RightWindow" : "Title_PopupWindow"); } if (force || this.candidate.trainLevel.dirty) { var trainLevel = this.candidate.trainLevel.Fetch(); if (!string.IsNullOrEmpty(this.candidate.equipGuid.value)) { m_Description2.text = Language.Get("EquipWash108", trainLevel); m_Description2.color = UIHelper.GetUIColor(TextColType.NavyBrown, true); } } } } public class EquipTrainCandidateBehaviourPool { static GameObjectPool pool; public static EquipTrainCandidateBehaviour Get() { if (pool == null) { pool = new GameObjectPool(UILoader.LoadPrefab("EquipTrainCandidateBehaviour")); } var instance = pool.Request(); instance.SetActive(true); return instance.GetComponent(); } public static void Release(EquipTrainCandidateBehaviour behaviour) { if (pool == null) { return; } if (behaviour == null) { return; } behaviour.suitEffectDirty = true; behaviour.SetActive(false); behaviour.transform.SetParent(null); pool.Release(behaviour.gameObject); } } }