//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, November 09, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
|
|
namespace Snxxz.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;
|
|
public RuneTowerBehaviour towerBehaviour;
|
|
RectTransform m_RectTransform;
|
RectTransform rectTransform { get { return m_RectTransform ?? (this.transform as RectTransform); } }
|
|
RuneTowerModel model { get { return ModelCenter.Instance.GetModel<RuneTowerModel>(); } }
|
|
int floorId = 0;
|
public void Display(int _floorId)
|
{
|
this.floorId = _floorId;
|
|
var isOpened = this.model.currentFloor >= this.floorId;
|
var config = RuneTowerFloorConfig.Get(floorId);
|
m_FloorName.text = StringUtility.Contact(config.FloorName);
|
m_Challenge.gameObject.SetActive(this.model.currentFloor == this.floorId);
|
m_Cover.gameObject.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);
|
model.selectedFloorEvent -= OnSelected;
|
model.selectedFloorEvent += OnSelected;
|
}
|
|
public void Dispose()
|
{
|
model.selectedFloorEvent -= OnSelected;
|
}
|
|
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.gameObject.SetActive(floorId == _floor);
|
}
|
|
}
|
|
}
|
|
|
|