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#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|