//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, November 09, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace vnxbqy.UI { public class TowerFloorBehaviour : MonoBehaviour { static float autoSelectAllowTime = 0f; static bool autoSelectable { get { return Time.time > autoSelectAllowTime; } } [SerializeField] Image m_Floor; [SerializeField] Button m_Selected; [SerializeField] TextEx m_FloorName; [SerializeField] Image m_Challenge; [SerializeField] Image m_Cover; [SerializeField] RectTransform m_ContainerSelected; [SerializeField] UIEffect m_GateEffect; [SerializeField] UIFrame m_FlashFrame; [SerializeField] PositionTween m_FloorTween; [HideInInspector] public RuneTowerBehaviour towerBehaviour; RectTransform m_RectTransform; RectTransform rectTransform { get { return m_RectTransform ?? (this.transform as RectTransform); } } RuneTowerModel model { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } int floorId = 0; public void Display(int _floorId) { m_FlashFrame.SetActive(false); this.floorId = _floorId; var isOpened = this.model.currentFloor >= this.floorId; var config = RuneTowerFloorConfig.Get(floorId); m_FloorName.text = StringUtility.Contact(config.FloorName); m_Challenge.SetActive(this.model.currentFloor == this.floorId); m_Cover.SetActive(this.model.currentFloor > this.floorId); m_FloorName.color = this.model.currentFloor == this.floorId ? UIHelper.GetUIColor(TextColType.NavyYellow) : UIHelper.s_LightYellow; //if (this.model.currentFloor == this.floorId) //{ // m_GateEffect.Play(); //} //else //{ // m_GateEffect.Stop(); //} OnSelected(model.selectedFloor); dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent; //不在塔地图中增加雷诛功能 if (this.model.currentFloor == this.floorId && dungeonModel.CanFlashKill()) { dungeonModel.onDungeonResultEvent += OnDungeonResultEvent; } } private void OnEnable() { model.selectedFloorEvent += OnSelected; } private void OnDisable() { model.selectedFloorEvent -= OnSelected; StopAllCoroutines(); } private void Awake() { m_Selected.AddListener(SelectTower); } private void SelectTower() { autoSelectAllowTime = Time.time + 0.5f; model.selectedFloor = floorId; } private void OnSelected(int _floor) { m_ContainerSelected.SetActive(floorId == _floor); } private void OnDungeonResultEvent() { if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == RuneTowerModel.RUNETOWER_MAPID) { m_FlashFrame.SetActive(true); m_FloorTween.Play(() => { m_FlashFrame.SetActive(false); model.OnFlashOver(1); }); SoundPlayer.Instance.PlayUIAudio(857); } } } }