You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
5.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Otter;
using _1869_Remake;
namespace _1869_Remake.Scenes
{
public class StatistikScene : Scene
{
public Image BlackScreen = new Image(Assets.BLACKSCREEN);
public Image StatScreen = new Image(Assets.STATISTIKSCREEN);
//AnzeigeTimer aktuell nur für warten vor dem 1. Text (später direkt nach tween)
public const float TIMER_GRENZE = 90f;
public float szenenTimer = 0f;
public bool wahlFertig = true;
public bool anzeigeFertig = false;
//aktuelle Seite der Statistik
public int StatSeite = 0;
public bool ersterAufbau = true;
public Text[] anzeigeTexte = new Text[10];
public Text EndeText = Globals.TEXT_ENDE;
public StatistikScene()
{
//Initialisieren des Hauptbildschirms und einblenden
Globals.aktuelleSzene = "Statistik";
StatScreen.CenterOrigin();
StatScreen.X = Globals.Remake.HalfWidth;
StatScreen.Y = Globals.Remake.HalfHeight;
StatScreen.Alpha = 0f;
AddGraphic(StatScreen);
Tween(StatScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
//Ende Text zum herausgehen aus der Szene
EndeText.X = 395;
EndeText.Y = 445;
//Farbe => Statistik dunkel grün
EndeText.Color = Globals.StatGrün;
EndeText.Alpha = 0f;
AddGraphic(EndeText);
Tween(EndeText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
//Vorbereiten des Blackscreens
BlackScreen.CenterOrigin();
BlackScreen.X = Globals.Remake.HalfWidth;
BlackScreen.Y = Globals.Remake.HalfHeight;
BlackScreen.Alpha = 0f;
}
public override void Update()
{
base.Update();
//hochzählendes Zeitelement um Aktionen in der Szene zu Takten
szenenTimer++;
//BlackScreen Durchsichtigkeit 1 ist wurde die nächste Szene getriggert -> wechsel zum Hauptbildschirm
if (BlackScreen.Alpha >= 0.999f)
{
Globals.LetzteSzene = "Hall of Fame";
Globals.Remake.SwitchScene(new worldMap());
}
//Erst nach Timer sind aktionen möglich
if (szenenTimer >= TIMER_GRENZE)
{
// Nach dem timer alle unsichtbaren Texte einblenden um Zeit zwischen Texten zu simulieren => Kein flackern durch schnell eingeblendete Texte
// Nur neu erstellen wenn notwendig für bessere Performance
if (!anzeigeFertig)
{
foreach (Text t in anzeigeTexte)
{
if (t != null)
{
t.Alpha = 1f;
t.Color = Globals.StatGrün; ;
}
}
anzeigeFertig = true;
}
if (wahlFertig)
{
//Initialisieren der Grafiken erst ab 2. Durchgang (Nurentfernen der Texte nicht des Hintergrundbildes)
if (!ersterAufbau)
{
foreach (Text t in anzeigeTexte)
{
RemoveGraphic(t);
}
}
else
{
ersterAufbau = false;
}
//Initialisieren des Arrays
int counter = 0;
foreach (var t in anzeigeTexte)
{
if (t != null)
{
counter++;
}
}
for (int i = 0; i < counter; i++)
{
anzeigeTexte[i] = null;
}
//Anzeige des aktuellen Textes
switch (StatSeite)
{
//Jede Seite einzeln
case 0:
break;
case 1:
break;
case 2:
break;
}
//Wechsel des Textes fertig und timer neu reseten; Nach wechsel muss erst Eingabe des Users erfolgen für nächsten Wechsel
wahlFertig = false;
}
//Überprüfen der Buttons
//Ende
if (Util.InRect(this.MouseX, this.MouseY, 395, 445, 50, 15))
{
EndeText.Color = Globals.HighLightMagenta;
if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
{
wahlFertig = true;
}
if (wahlFertig)
{
AddGraphic(BlackScreen);
Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
anzeigeFertig = false;
szenenTimer = 0;
}
}
else
{
EndeText.Color = Globals.StatGrün;
}
}
}
}
}