60 lines
3.2 KiB
C#
60 lines
3.2 KiB
C#
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);
|
||
|
|
}
|
||
|
|
}
|