Files

60 lines
3.2 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
using TMPro;
// СОБЫТИЯ: еженедельное событие "Сбор войск". Очки за бои, арену, задания, обучение войск.
// Пороги очков открывают награды. В понедельник всё обнуляется -- новое событие.
public class EventsPanel : BasePanel
{
TextMeshProUGUI timer;
protected override void Build(RectTransform root)
{
var d = GP.Data;
var list = ScrollList(root);
var head = UIKit.Card(list, new Color(0.35f, 0.18f, 0.12f));
var title = UIKit.Text(head, GameData.EventTitle, 44, UIKit.Theme.Gold, TextAlignmentOptions.Center);
title.fontStyle = FontStyles.Bold;
timer = UIKit.Text(head, "", 26, UIKit.Theme.Text, TextAlignmentOptions.Center);
Tick();
UIKit.Text(head, GameData.EventDescription, 24, UIKit.Theme.TextDim, TextAlignmentOptions.Center);
int maxPoints = GameData.EventTiers[GameData.EventTiers.Length - 1];
var prog = UIKit.Card(list);
UIKit.Text(prog, "Ваши очки: " + d.eventPoints, 34, UIKit.Theme.Text, TextAlignmentOptions.Center).fontStyle = FontStyles.Bold;
UIKit.Bar(prog, (float)d.eventPoints / maxPoints, UIKit.Theme.Gold, 34, d.eventPoints + " / " + maxPoints);
for (int i = 0; i < GameData.EventTiers.Length; i++)
{
int idx = i;
bool claimed = GP.EventTierClaimed(i);
bool ready = GP.EventTierReady(i);
var card = UIKit.Card(list, ready ? UIKit.Theme.CardDone : (claimed ? UIKit.Theme.CardDark : UIKit.Theme.Card));
var row = UIKit.Row(card, 100, 14);
UIKit.Icon(row, ready ? UIKit.Theme.Green : UIKit.Theme.Gray, (i + 1).ToString(), 90);
var info = UIKit.Card(row, new Color(0, 0, 0, 0), 0, 4);
UIKit.Size(info, -1, -1, 1);
UIKit.Text(info, GameData.EventTiers[i] + " очков", 30).fontStyle = FontStyles.Bold;
UIKit.Text(info, GameData.RewardsText(GameData.EventTierRewards[i]) + ", 20 опыта", 24, UIKit.Theme.TextDim);
string label = claimed ? "Получено" : (ready ? "Забрать" : "Нужно ещё " + (GameData.EventTiers[i] - d.eventPoints));
var b = UIKit.Button(row, label, ready ? UIKit.Theme.Green : UIKit.Theme.Gray, () => GP.ClaimEventTier(idx), 230, 90, 24);
b.interactable = ready;
}
// Быстрые переходы к источникам очков
var go = UIKit.Card(list, UIKit.Theme.CardDark);
UIKit.Text(go, "Где заработать очки:", 28, UIKit.Theme.TextDim);
var r = UIKit.Row(go, 80, 10);
UIKit.Size(UIKit.Button(r, "Бой", UIKit.Theme.Red, () => OpenPanel("Battle")), -1, 80, 1);
UIKit.Size(UIKit.Button(r, "Арена", UIKit.Theme.Blue, () => OpenPanel("Arena")), -1, 80, 1);
UIKit.Size(UIKit.Button(r, "Войска", UIKit.Theme.Gray, () => OpenPanel("Troops")), -1, 80, 1);
}
protected override void Tick()
{
if (timer != null) timer.text = "До конца события: " + GameData.FormatTime(GameProgress.SecondsToWeekEnd);
}
}