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.
241 lines
7.2 KiB
C#
241 lines
7.2 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 OptionenScene : Scene
|
|
{
|
|
public Image BlackScreen = new Image(Assets.BLACKSCREEN);
|
|
public Image OptionScreen = new Image(Assets.OPTIONSCREEN);
|
|
|
|
//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;
|
|
public bool beendenGame = false;
|
|
|
|
//aktuelle Seite der Statistik
|
|
public int OptionSeite = 0;
|
|
public bool ersterAufbau = true;
|
|
|
|
public Text[] anzeigeTexte = new Text[10];
|
|
|
|
public Text WeiterText = Globals.TEXT_WEITER;
|
|
public Text BeendenText = Globals.TEXT_BEENDEN;
|
|
|
|
public OptionenScene()
|
|
{
|
|
//Initialisieren des Hauptbildschirms und einblenden
|
|
Globals.aktuelleSzene = "Optionen";
|
|
|
|
OptionScreen.CenterOrigin();
|
|
OptionScreen.X = Globals.Remake.HalfWidth;
|
|
OptionScreen.Y = Globals.Remake.HalfHeight;
|
|
|
|
OptionScreen.Alpha = 0f;
|
|
|
|
AddGraphic(OptionScreen);
|
|
Tween(OptionScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
|
|
|
|
//Weiter Text zum herausgehen aus der Szene
|
|
WeiterText.X = 520;
|
|
WeiterText.Y = 450;
|
|
//Farbe => Options dunkel Grau
|
|
WeiterText.Color = Globals.OptionGrau;
|
|
WeiterText.Alpha = 0f;
|
|
|
|
|
|
AddGraphic(WeiterText);
|
|
Tween(WeiterText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
|
|
|
|
//Beenden Text zum beenden der Applikation
|
|
BeendenText.X = 230;
|
|
BeendenText.Y = 450;
|
|
//Farbe => Options dunkel Grau
|
|
BeendenText.Color = Globals.OptionGrau;
|
|
BeendenText.Alpha = 0f;
|
|
|
|
|
|
AddGraphic(BeendenText);
|
|
Tween(BeendenText, 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)
|
|
{
|
|
if ( !beendenGame)
|
|
{
|
|
Globals.LetzteSzene = "Optionen";
|
|
Globals.Remake.SwitchScene(new worldMap());
|
|
}
|
|
else
|
|
{
|
|
Globals.Remake.Close();
|
|
}
|
|
|
|
}
|
|
|
|
//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.OptionGrau; ;
|
|
|
|
}
|
|
}
|
|
|
|
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 (OptionSeite)
|
|
{
|
|
//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, 520, 450, 50, 15))
|
|
{
|
|
|
|
WeiterText.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
|
|
{
|
|
WeiterText.Color = Globals.OptionGrau;
|
|
}
|
|
|
|
//Beenden
|
|
if (Util.InRect(this.MouseX, this.MouseY, 230, 450, 50, 15))
|
|
{
|
|
|
|
BeendenText.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;
|
|
beendenGame = true;
|
|
|
|
szenenTimer = 0;
|
|
}
|
|
}
|
|
|
|
else
|
|
{
|
|
BeendenText.Color = Globals.OptionGrau;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|