Files
back_cantanBuilding/Assets/Scripts/Services/TileNewsManager.cs
2026-05-26 16:15:54 +08:00

62 lines
2.0 KiB
C#

using asap.core;
using asap.playfab.async;
using PlayFab.ClientModels;
using System.Threading.Tasks;
using UniRx;
using UnityEngine;
namespace game
{
public class TitleNewsEvent
{
public TaskCompletionSource<TitleNewsItem> titleNewsItemAwait = new TaskCompletionSource<TitleNewsItem>();
public TitleNewsItem titleNewsItem;
public bool show;
}
public class TileNewsManager
{
public TitleNewsItem News;
public TileNewsManager()
{
News = null;
GContext.OnEvent<TitleNewsEvent>().Subscribe(ReadTitleNews);
}
async void ReadTitleNews(TitleNewsEvent titleNewsEvent)
{
titleNewsEvent.titleNewsItem = News;
bool isRod = false;
GetTitleNewsResult result = await PlayFabClientAsyncAPI.GetTitleNewsAsync(new PlayFab.ClientModels.GetTitleNewsRequest());
if (result != null && result.News != null && result.News.Count > 0)
{
News = result.News[0];
string newsValue = PlayerPrefs.GetString("TitleNewsEvent");
string timeStr = News.Timestamp.ToString();
if (newsValue != timeStr)
{
IUserService userService = GContext.container.Resolve<IUserService>();
if (userService.CreateTime < News.Timestamp)
{
isRod = true;
}
}
titleNewsEvent.titleNewsItemAwait.SetResult(result.News[0]);
}
else
{
News = null;
titleNewsEvent.titleNewsItemAwait.SetResult(null);
}
if (titleNewsEvent.show)
{
if (News != null)
{
PlayerPrefs.SetString("TitleNewsEvent", News.Timestamp.ToString());
}
isRod = false;
}
RedPointManager.Instance.SetRedPointState(RedPointName.Announcement, isRod);
}
}
}