61 lines
1.3 KiB
C#
61 lines
1.3 KiB
C#
using Framework;
|
|
using UnityEngine;
|
|
|
|
public class UIActivityNode : UINode
|
|
{
|
|
[SerializeField]
|
|
private int _activityID;
|
|
public int activityID
|
|
{
|
|
get { return _activityID; }
|
|
set
|
|
{
|
|
_activityID = value;
|
|
logic?.FakeAwake(); // Re-bind or refresh
|
|
}
|
|
}
|
|
|
|
private IActivityEntranceNode _logic;
|
|
public IActivityEntranceNode logic
|
|
{
|
|
get
|
|
{
|
|
return _logic;
|
|
}
|
|
set
|
|
{
|
|
_logic = value;
|
|
_logic?.FakeAwake();
|
|
}
|
|
}
|
|
|
|
void OnActivityIDChanged()
|
|
{
|
|
logic?.FakeAwake();
|
|
}
|
|
|
|
private void Awake()
|
|
{
|
|
// 发送事件,通知逻辑层创建和绑定逻辑实例
|
|
EventManager.Instance.Send(EventManager.EventName.ActivityNodeCreated, this);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
var start_time = logic?.GetActivityGroupOpenTime(activityID);
|
|
var end_time = logic?.GetActivityGroupCloseTime(activityID);
|
|
|
|
if (start_time.HasValue && end_time.HasValue)
|
|
{
|
|
var curTime = logic.GetCurTime();
|
|
bool is_active = curTime >= start_time.Value && curTime <= end_time.Value;
|
|
gameObject.IsScaleShow(is_active);
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
logic?.FakeOnDestroy();
|
|
}
|
|
}
|