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