138 lines
5.5 KiB
C#
138 lines
5.5 KiB
C#
using asap.core;
|
|
using cfg;
|
|
using GameCore;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class EventFishingDuelRewardPopupPanel : MonoBehaviour
|
|
{
|
|
Button btn_close;
|
|
Button btn_mask;
|
|
TMP_Text text_time;
|
|
TMP_Text text_points;
|
|
GameObject item;
|
|
Image bar;
|
|
Tables tables;
|
|
FishingEventData fishingEventData;
|
|
Timer timer;
|
|
|
|
private void Awake()
|
|
{
|
|
tables = GContext.container.Resolve<Tables>();
|
|
fishingEventData = GContext.container.Resolve<FishingEventData>();
|
|
btn_mask = transform.Find("mask").GetComponent<Button>();
|
|
btn_close = transform.Find("btn_close").GetComponent<Button>();
|
|
text_time = transform.Find("root/text_time").GetComponent<TMP_Text>();
|
|
text_points = transform.Find("root/info/icon_ticket/text_num").GetComponent<TMP_Text>();
|
|
bar = transform.Find("root/root_reward/ScrollView/Viewport/Content/bg_bar/bar").GetComponent<Image>();
|
|
item = transform.Find("root/root_reward/ScrollView/Viewport/Content/item").gameObject;
|
|
item.SetActive(false);
|
|
SetData();
|
|
}
|
|
async void SetData()
|
|
{
|
|
Transform content = transform.Find("root/root_reward/ScrollView/Viewport/Content");
|
|
List<EventSolomain> eventSolomain = tables.TbEventSolomain.DataList;
|
|
EventSolomain solomain = eventSolomain[0];
|
|
float progress = fishingEventData.duelData.progress;
|
|
text_points.text = ConvertTools.GetNumberString2(fishingEventData.duelData.progress);
|
|
bar.fillAmount = progress / (float)solomain.TrophyRange[0];
|
|
IUIService uiService = GContext.container.Resolve<IUIService>();
|
|
int nextIndex = -1;
|
|
DuelRankRewardItem duelRewardItem = null;
|
|
for (int i = 0; i < eventSolomain.Count; i++)
|
|
{
|
|
GameObject go = Instantiate(item, content);
|
|
go.SetActive(true);
|
|
duelRewardItem = go.GetComponent<DuelRankRewardItem>();
|
|
uiService.SetImageSprite(duelRewardItem.icon_rank, solomain.RankIcon);
|
|
duelRewardItem.text_rank.text = LocalizationMgr.GetText(solomain.RankText_l10n_key);
|
|
duelRewardItem.text_point.text = solomain.TrophyRange[0].ToString();
|
|
List<ItemData> rewardItemData = GContext.container.Resolve<PlayerItemData>()
|
|
.GetItemDataByDropId(solomain.SeasonReward);
|
|
|
|
if (rewardItemData != null)
|
|
{
|
|
int dataCount = rewardItemData.Count;
|
|
int rewardCount = duelRewardItem.rewardItems.Count;
|
|
for (int j = 0; j < rewardCount; j++)
|
|
{
|
|
if (j < dataCount)
|
|
{
|
|
duelRewardItem.rewardItems[j].SetData(rewardItemData[j]);
|
|
}
|
|
else
|
|
{
|
|
duelRewardItem.rewardItems[j].gameObject.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
duelRewardItem.bg_gray.SetActive(progress > solomain.TrophyRange[1]);
|
|
duelRewardItem.bg_normal.SetActive(false);
|
|
duelRewardItem.bg_next.SetActive(progress < solomain.TrophyRange[0]);
|
|
if (progress >= solomain.TrophyRange[0] && progress <= solomain.TrophyRange[1])
|
|
{
|
|
duelRewardItem.bg_normal.SetActive(true);
|
|
nextIndex = i;
|
|
}
|
|
if (i < eventSolomain.Count - 1)
|
|
{
|
|
duelRewardItem.bar.fillAmount = (progress - solomain.TrophyRange[0]) / (solomain.TrophyRange[1] - solomain.TrophyRange[0]);
|
|
solomain = eventSolomain[i + 1];
|
|
}
|
|
}
|
|
if (duelRewardItem != null)
|
|
{
|
|
duelRewardItem.bar.fillAmount = (progress - solomain.TrophyRange[0]) / (eventSolomain[eventSolomain.Count - 2].TrophyRange[1] - eventSolomain[eventSolomain.Count - 2].TrophyRange[0]);
|
|
duelRewardItem.bar_root.transform.localScale = new Vector3(1, 0.5f, 1);
|
|
}
|
|
if (nextIndex == -1)
|
|
{
|
|
nextIndex = eventSolomain.Count - 2;
|
|
}
|
|
await Awaiters.NextFrame;
|
|
content.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -nextIndex * 280);
|
|
}
|
|
private void Start()
|
|
{
|
|
btn_mask.onClick.AddListener(OnClickClose);
|
|
btn_close.onClick.AddListener(OnClickClose);
|
|
SetTimer();
|
|
}
|
|
void OnClickClose()
|
|
{
|
|
UIManager.Instance.DestroyUI(UITypes.EventFishingDuelRewardPopupPanel);
|
|
}
|
|
void SetTimer()
|
|
{
|
|
DateTime endDateTime = fishingEventData.GetEventEndTime(fishingEventData.duelData.eventID)
|
|
.AddSeconds(-tables.TbEventSoloConfig.SettlementTime);
|
|
TimeSpan now = endDateTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
|
text_time.text = LocalizationMgr.GetFormatTextValue("UI_COMMON_end",
|
|
ConvertTools.ConvertTime2(now.Days, now.Hours, now.Minutes, now.Seconds));
|
|
double seconds = now.TotalSeconds;
|
|
timer = this.AttachTimer((float)seconds, Refresh,
|
|
(elapsed) =>
|
|
{
|
|
now = endDateTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
|
text_time.text = LocalizationMgr.GetFormatTextValue("UI_COMMON_end",
|
|
ConvertTools.ConvertTime2(now.Days, now.Hours, now.Minutes, now.Seconds));
|
|
}, useRealTime: true);
|
|
}
|
|
|
|
void Refresh()
|
|
{
|
|
timer?.Cancel();
|
|
timer = null;
|
|
//OnClickClose();
|
|
}
|
|
private void OnDestroy()
|
|
{
|
|
timer?.Cancel();
|
|
timer = null;
|
|
}
|
|
}
|