Files
ft/Client/Assets/Scripts/UI/PinballUncountable/PinballUncountableEntranceButton.cs
2026-06-29 21:18:33 +08:00

53 lines
1.7 KiB
C#

using asap.core;
using UnityEngine;
using PinballUncountable;
using UnityEngine.UI;
using System.Collections.Generic;
public class PinballUncountableEntranceButton : EventButtonResource
{
[SerializeField] private Image icon;
[SerializeField] private BingoTimer timer;
[SerializeField] private Button button;
private void Awake()
{
var manager = GContext.container.Resolve<Manager>();
if (manager == null || !manager.IsWithinTime())
{
gameObject.SetActive(false);
return;
}
CheckResource(new List<string>{
manager.TableContext.GetPanelUrl(),
manager.TableContext.GetInfoPanelUrl(),
manager.TableContext.GetIconUrl(),
manager.TableContext.GetActUrl()});
button.onClick.AddListener(OnClickOpen);
var redPointCount = manager.GetTicketCount();
RedPointManager.Instance.SetRedPointState(manager.RedPointKey, redPointCount > 0, redPointCount);
}
protected override void OnLoadEventResource()
{
gameObject.SetActive(true);
var manager = GContext.container.Resolve<Manager>();
var entranceData = manager.GetEntranceData();
GContext.container.Resolve<IUIService>().SetImageSprite(icon, entranceData.IconUrl);
entranceData.TimerContext.OnExpire += () => gameObject.SetActive(false);
timer.Init(entranceData.TimerContext);
}
private void OnClickOpen()
{
var manager = GContext.container.Resolve<Manager>();
GContext.Publish(new game.UnloadActToNextAct(manager.TableContext.GetActUrl()));
}
}
public class PinballUncountableEntranceButtonData
{
public TimerContext TimerContext { get; set; }
public string IconUrl { get; set; }
}