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.

223 lines
6.9 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 HallOfFameScene : Scene
{
public Image BlackScreen = new Image(Assets.BLACKSCREEN);
public Image HoFScreen = new Image(Assets.HOFSCREEN);
//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 im Hall of Fame "Katalog"
public int HoFSeite = 0;
public bool ersterAufbau = true;
public Text[] anzeigeTexte = new Text[10];
public Text WeiterText = Globals.TEXT_WEITER;
public Text EndeText = Globals.TEXT_ENDE;
public HallOfFameScene()
{
//Initialisieren des Hauptbildschirms und einblenden
Globals.aktuelleSzene = "Hall of Fame";
HoFScreen.CenterOrigin();
HoFScreen.X = Globals.Remake.HalfWidth;
HoFScreen.Y = Globals.Remake.HalfHeight;
HoFScreen.Alpha = 0f;
AddGraphic(HoFScreen);
Tween(HoFScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
WeiterText.X = 200;
WeiterText.Y = 390;
//Anmerkung wenn .Color nach .Alpha verändert wird , wird anscheinend der Alpha wert wieder zurück auf 1 gesetzt = Vorsicht bei Zuordnung
WeiterText.Color = Globals.StdGrün;
WeiterText.Alpha = 0f;
AddGraphic(WeiterText);
Tween(WeiterText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
EndeText.X = 410;
EndeText.Y = 390;
EndeText.Color = Globals.StdGrü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.StdGrü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 (HoFSeite)
{
//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
//Weiter
if (Util.InRect(this.MouseX, this.MouseY, 200, 390, 50, 15))
{
WeiterText.Color = Globals.HighLightMagenta;
if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
{
wahlFertig = true;
}
if (wahlFertig)
{
//HOFSeite = 1;
anzeigeFertig = false;
szenenTimer = 0;
}
}
else
{
WeiterText.Color = Globals.StdGrün;
}
//Ende
if (Util.InRect(this.MouseX, this.MouseY, 410, 390, 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.StdGrün;
}
}
}
}
}