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

65 lines
2.3 KiB
C#

using System.Collections.Generic;
using asap.core;
using UnityEngine;
using OfferStoryChain;
using UnityEngine.UI;
using GameCore;
using UniRx;
public class OfferStoryChainEntranceButton : EventButtonResource
{
[SerializeField] private Button button;
[SerializeField] private BingoTimer timer;
[SerializeField] private Image icon;
private ILoadResourceService _loadResourceService;
private void Awake()
{
var manager = GContext.container.Resolve<Manager>();
if (manager == null || !manager.IsActive)
{
gameObject.SetActive(false);
return;
}
var timerCtx = manager.GetTimerData();
timerCtx.OnExpire = () => { gameObject.SetActive(false); };
timer.Init(timerCtx);
_loadResourceService = GContext.container.Resolve<ILoadResourceService>();
button.onClick.AddListener(OnClickOpen);
CheckResource(new List<string>() { UITypes.OfferStoryChainPanel.Path, manager.GetEntrancIconUrl() });
}
private async void OnClickOpen()
{
try
{
var manager = GContext.container.Resolve<Manager>();
bool isReady = await _loadResourceService.Loads(new List<string>() { UITypes.OfferStoryChainPanel.Path, manager.GetEntrancIconUrl() });
if (isReady)
{
await UIManager.Instance.ShowUINotLoading(UITypes.OfferStoryChainPanel);
}
}
catch (System.Exception ex)
{
Debug.LogError(ex);
}
}
protected override void OnLoadEventResource()
{
var manager = GContext.container.Resolve<Manager>();
if (manager != null && manager.IsActive)
{
GContext.container.Resolve<IUIService>().SetImageSprite(icon, manager.GetEntrancIconUrl());
gameObject.SetActive(true);
manager.EventAggregator
.GetEvent<OfferStoryChainCloseEvent>()
.Subscribe(_ => gameObject.SetActive(manager.IsActive))
.AddTo(this);
RedPointManager.Instance.SetRedPointState(Manager.RedPointKey, manager.DoNeedRedPoint);
var faceUiService = GContext.container.Resolve<IFaceUIService>();
faceUiService?.AddGiftFaceUI(manager.EventId, UITypes.OfferStoryChainPanel);
}
}
}