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#

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