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 titleNewsItemAwait = new TaskCompletionSource(); public TitleNewsItem titleNewsItem; public bool show; } public class TileNewsManager { public TitleNewsItem News; public TileNewsManager() { News = null; GContext.OnEvent().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(); 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); } } }