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