//Überprüft vor jeder Runde, ob ein neues Ereignis eingeleitet wird oder ob das Spiel vorbei ist public void naechsteRunde() { CurrentRunden++; //Falls die maximale Anzahl an Runden gespielt wurde, wird der Endscreen angezeigt if (MaxRunden == CurrentRunden) { //Zeigt den Endscreen an, sofern sich kein Ereignis mehr auf dem Stapel befindet. Falls doch, wird der Wartebildschirm angezeigt. if (EventsOnStack == 0) { UIVerwaltung.Endscreen(); GetComponent <Tutorial>().SchließeTutorialFenster(); StartCoroutine(GameObject.Find("Endscreen").GetComponent <Endscreen>().ZeigeEndpunkte()); GameObject.Find("Endscreen").GetComponent <Endscreen>().BerechneStats(); TextlaufStop = true; } else { UIVerwaltung.EndscreenWait(); } } else { //ggf wird ein neues Ereignis auf den Stapel gelegt if (Random.Range(0, 3) == 2) { EventsOnStack++; } //aktualisiert die Rundenanzeige und öffnet die Ressortwahl GameObject.Find("Rundenanzeige").GetComponent <Text>().text = (CurrentRunden + 1 + "/" + MaxRunden); UIVerwaltung.RessortwahlOn(); } }
public void PausenButtonOnClick() { //Je nachdem, ob das Pausenmenü derzeit geöffnet oder geschlossen ist, wird es entsprechend geschlossen oder geöffnet if (GameObject.Find("PauseFortsetzen").GetComponent <Image>().enabled == false) { //falls geöffnet, wird die Chronik und das aktuelle Infofenster des Tutorials geschlossen if (GameObject.Find("Scroll View").GetComponent <ScrollRect>().enabled == true) { UIVerwaltung.MassnahmenHistoryMenuOff(); transform.parent.Find("Image").GetComponent <Image>().color = new Color(0.16f, 0.6f, 0.97f, 1.0f); } UIVerwaltung.PausenMenuOn(); GameObject.Find("Canvas").GetComponent <Tutorial>().SchließeTutorialFenster(); } else { UIVerwaltung.PausenMenuOff(); //nach dem Schließen des Pausenmenüs wird ggf das Tutorial fortgesetzt if (GameObject.Find("Ressortwahl").transform.Find("Finanzen").GetComponent <Image>().enabled == true && GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.Ressortwahl) { GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase2", GameObject.Find("Ok2").GetComponent <Button>(), true); } } }
//beim Hovern über eine Maßnahme verändert sich die Farbe des Buttons und des Textes und die Veränderungen, die die Maßnahme bewirken würde, werden angezeigt public void MassnahmenButtonHover() { int i = 0; //zeigt die Veränderungen, die die Maßnahme bewirken würde, an foreach (Transform child in Attributswerte.transform) { if (transform.GetChild(1).GetComponent <Massnahme>().veranderungen[i] != 0) { if (transform.GetChild(1).GetComponent <Massnahme>().veranderungen[i] > 0) { child.transform.Find("AttChange").GetComponent <RawImage>().color = new Color(0.0f, 0.37f, 0.08f, 0.63f); } else { child.transform.Find("AttChange").GetComponent <RawImage>().color = new Color(0.82f, 0.0f, 0.0f, 0.63f); } child.transform.Find("AttChange").GetComponent <RectTransform>().localScale = new Vector3(child.transform.Find("AttChange").GetComponent <RectTransform>().localScale.x, transform.GetChild(1).GetComponent <Massnahme>().veranderungen[i], child.transform.Find("AttChange").GetComponent <RectTransform>().localScale.z); child.transform.Find("AttChange").GetComponent <RectTransform>().localPosition = new Vector3(child.transform.Find("AttChange").GetComponent <RectTransform>().localPosition.x, child.transform.Find("AttWert").GetComponent <AttWert>().wert + (transform.GetChild(1).GetComponent <Massnahme>().veranderungen[i] / 2) - 50, child.transform.Find("AttChange").GetComponent <RectTransform>().localPosition.z); child.transform.Find("AttChange").GetComponent <RawImage>().enabled = true; } i++; } //verändert die Farbe des Buttons und des Textes transform.Find("Text").GetComponent <Text>().color = new Color(0.08f, 0.08f, 0.08f, 1.0f); UIVerwaltung.OnButtonHover(this.GetComponent <Image>()); }
//OnClick-Event, das beim Klick auf den mittleren Reiter im Endscreen ausgelöst wird private void ChronikButtonOnClick() { //erschafft für jede abgeschlossene Maßnahme und jedes Ereignis ein eigenes Element in der Chronik und füllt dieses mit den notwendigen Infos int childNr = 0; foreach (Transform child in GameObject.Find("MassnahmenContainer").transform) { if (childNr > GameObject.Find("Content").transform.childCount - 1) { GameObject.Instantiate(GameObject.Find("Content").transform.GetChild(0), GameObject.Find("Content").transform); } GameObject.Find("Content").transform.GetChild(childNr).Find("Ressortname").GetComponent <Text>().text = child.GetComponent <Massnahme>().ressort; GameObject.Find("Content").transform.GetChild(childNr).Find("Ideologie").GetComponent <Text>().text = child.GetComponent <Massnahme>().ideologie; GameObject.Find("Content").transform.GetChild(childNr).Find("Beschreibung").GetComponent <Text>().text = child.GetComponent <Massnahme>().Beschreibung; childNr++; } //überprüft, welcher der beiden anderen Reiter derzeit geöffnet ist und schließt den entsprechenden, anschließend wird der Chronik-Reiter geöffnet if (GameObject.Find("Punkte").GetComponent <RectTransform>().rect.width == 150) { UIVerwaltung.EndscreenPunkteOff(); UIVerwaltung.EndscreenChronikOn(); } else if (GameObject.Find("Graphen").GetComponent <RectTransform>().rect.width == 150) { UIVerwaltung.EndscreenGraphenOff(); UIVerwaltung.EndscreenChronikOn(); } }
//verändert beim Hovern die Farbe des Buttons und blendet die blauen Kästchen ein public void OnMouseEnter() { UIVerwaltung.OnButtonHover(this.GetComponent <Image>()); foreach (Transform child in transform.Find("RessortRunden").transform) { child.GetComponent <Image>().enabled = true; } }
//verändert nach dem Hovern die Farbe des Buttons und blendet die blauen Kästchen aus public void OnMouseExit() { UIVerwaltung.OnButtonLeave(this.GetComponent <Image>()); GetComponent <Doozy.Engine.UI.UIButton>().ExecutePointerExit(); foreach (Transform child in transform.Find("RessortRunden").transform) { child.GetComponent <Image>().enabled = false; } }
//OnClick Event der Buttons der Ressortwahl void RessortButtonOnClick() { //überprüft, ob noch Maßnahmen in dem jeweiligen Ressort verabschiedet werden können if (CurrentAnzahl < MaxAnzahl) { //deaktiviert die Ressortwahl und aktiviert die Maßnahmenwahl, schließt ggf das aktuelle Infofenster des Tutorials UIVerwaltung.RessortwahlOff(); UIVerwaltung.MassnahmenwahlOn(); GameObject.Find("Canvas").GetComponent <Tutorial>().SchließeTutorialFenster(); //ggf wird der nächste Teil des Tutorials angezeigt if (GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.Massnahmenwahl) { GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase2", GameObject.Find("Ok2").GetComponent <Button>(), false); GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase3", GameObject.Find("Ok3").GetComponent <Button>(), true); GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase = Tutorial.TutorialPhase.Massnahmenwahl; } //wählt zufällig eine Maßnahme für jede Ideologie aus dem Ressort aus foreach (Transform child in transform.Find("Massnahmen").transform) //für jede Ideologie { int Massnahmennr = Random.Range(0, child.childCount); Massnahmenwahl.transform.Find(child.name).transform.Find("Text").GetComponent <Text>().text = child.GetChild(Massnahmennr).GetComponent <Massnahme>().Beschreibung; //löscht die vorherige Maßnahme aus der Maßnahmenwahl if (Massnahmenwahl.transform.Find(child.name).transform.childCount > 1) { for (int i = 1; i < Massnahmenwahl.transform.Find(child.name).transform.childCount; i++) { Destroy(Massnahmenwahl.transform.Find(child.name).transform.GetChild(i).gameObject); } } //verschiebt die neue Maßnahme zum zugehörigen Button der Maßnahmenwahl child.GetChild(Massnahmennr).transform.SetParent(Massnahmenwahl.transform.Find(child.name)); } CurrentAnzahl++; //färbt ein zusätzliches Kästchen im Ressortbutton blau ein um zu signalisieren, wie viele Maßnahmen im Ressort bereits ausgewählt wurden transform.Find("RessortRunden").transform.GetChild(CurrentAnzahl - 1).GetComponent <Image>().color = new Color(0.53f, 0.76f, 0.99f); //Verändert die Überschrift der Maßnahmenwahl zum aktuellen Ressort GameObject.Find("Ressortname").GetComponent <Text>().text = transform.Find("Text").GetComponent <Text>().text; //deaktiviert die blauen Kästchen des Buttons foreach (Transform child in transform.Find("RessortRunden").transform) { child.GetComponent <Image>().enabled = false; } } else { GetComponent <AudioSource>().Play(); } }
void HilfeButtonOnClick() { //Schließt die Chronik oder das Pausenmenü (sofern geöffnet), schließt das aktuelle Infofenster des Tutorials (falls aktiv) und startet das Tutorial UIVerwaltung.MassnahmenHistoryMenuOff(); UIVerwaltung.PausenMenuOff(); GameObject.Find("Canvas").GetComponent <Tutorial>().SchließeTutorialFenster(); GameObject.Find("Canvas").GetComponent <Tutorial>().StarteTutorial(); //die andere Menü-Buttons werden weiß eingefärbt GameObject.Find("MassnahmenHistory").transform.Find("Image").GetComponent <Image>().color = new Color(0.0f, 0.0f, 0.0f, 1.0f); GameObject.Find("PausenMenu").transform.Find("Image").GetComponent <Image>().color = new Color(0.0f, 0.0f, 0.0f, 1.0f); }
//nach dem Hovern über eine Maßnahme wird die Farbe des Buttons und des Textes zurück geändert und die Veränderungen ausgeblendet public void MassnahmenButtonLeave() { //blendet die Veränderungen aus foreach (Transform child in Attributswerte.transform) { child.transform.Find("AttChange").GetComponent <RawImage>().enabled = false; } //ändert die Farben zurück transform.Find("Text").GetComponent <Text>().color = new Color(0.2f, 0.2f, 0.2f, 1.0f); UIVerwaltung.OnButtonLeave(this.GetComponent <Image>()); GetComponent <Doozy.Engine.UI.UIButton>().ExecutePointerExit(); }
//OnClick-Event, das beim Klick auf den unteren Reiter im Endscreen ausgelöst wird private void GraphenButtonOnClick() { //überprüft, welcher der beiden anderen Reiter derzeit geöffnet ist und schließt den entsprechenden, anschließend wird der Graphen-Reiter geöffnet if (GameObject.Find("Chronik").GetComponent <RectTransform>().rect.width == 150) { UIVerwaltung.EndscreenChronikOff(); UIVerwaltung.EndscreenGraphenOn(); } else if (GameObject.Find("Punkte").GetComponent <RectTransform>().rect.width == 150) { UIVerwaltung.EndscreenPunkteOff(); UIVerwaltung.EndscreenGraphenOn(); } }
//OnClick-Event, das beim Klick auf den obersten Reiter im Endscreen ausgelöst wird private void PunkteButtonOnClick() { //überprüft, ob die Chronik oder die Graphen angezeigt werden, falls ja, schließt es den entsprechenden Reiter und öffnet die Punkteübersicht if (GameObject.Find("Chronik").GetComponent <RectTransform>().rect.width == 150) { UIVerwaltung.EndscreenChronikOff(); UIVerwaltung.EndscreenPunkteOn(); } else if (GameObject.Find("Graphen").GetComponent <RectTransform>().rect.width == 150) { UIVerwaltung.EndscreenGraphenOff(); UIVerwaltung.EndscreenPunkteOn(); } }
//Methode, die beim Click auf den Chronik-Button oben links ausgeführt wird void HistoryButtonOnClick() { //überprüft, ob die Chronik bereits geöffnet ist. Falls ja, wird sie geschlossen, falls nein, geöffnet if (Content.transform.GetChild(0).GetComponent <Image>().enabled == false) { //überprüft, ob bereits Maßnahmen verabschiedet wurden und erstellt dann für jede Maßnahme und jedes Ereignis ein eigenes Element in der Chronik if (transform.childCount > 0) { int childNr = 0; foreach (Transform child in transform) //wird für jede Maßnahme und jedes Ereignis ausgeführt { //ein neues Element wird erschaffen und mit den notwendigen Infos ausgestattet if (childNr > Content.transform.childCount - 1) { GameObject.Instantiate(Content.transform.GetChild(0), Content.transform); } Content.transform.GetChild(childNr).Find("Ressortname").GetComponent <Text>().text = child.GetComponent <Massnahme>().ressort; Content.transform.GetChild(childNr).Find("Ideologie").GetComponent <Text>().text = child.GetComponent <Massnahme>().ideologie; Content.transform.GetChild(childNr).Find("Beschreibung").GetComponent <Text>().text = child.GetComponent <Massnahme>().Beschreibung; childNr++; } } //schließt, falls geöffnet das Pausenmenü oder das aktuelle Infofenster des Tutorials und öffnet dann die Chronik if (GameObject.Find("PauseFortsetzen").GetComponent <Image>().enabled == true) { UIVerwaltung.PausenMenuOff(); transform.parent.Find("Image").GetComponent <Image>().color = new Color(0.16f, 0.6f, 0.97f, 1.0f); } StartCoroutine(UIVerwaltung.MassnahmenHistoryMenuOn()); GameObject.Find("Canvas").GetComponent <Tutorial>().SchließeTutorialFenster(); } else { //schließt die Chronik UIVerwaltung.MassnahmenHistoryMenuOff(); //öffnet ggf das Tutorialfenster für die Ressortwahl if (GameObject.Find("Ressortwahl").transform.Find("Finanzen").GetComponent <Image>().enabled == true && GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.Ressortwahl) { GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase2", GameObject.Find("Ok2").GetComponent <Button>(), true); } } }
//OnClick-Event, wenn eine Maßnahme ausgewählt wurde void MassnahmenButtonOnClick() { int i = 0; //Die Veränderungen der Maßnahme (welche bei der Ressortwahl als Kind festgelegt wurde) werden auf die Attribute angewandt foreach (Transform child in Attributswerte.transform) { child.transform.Find("AttWert").GetComponent <AttWert>().wert += transform.GetChild(1).GetComponent <Massnahme>().veranderungen[i]; i++; } //die Maßnahme wird nun in die Chronik verschoben transform.GetChild(1).SetParent(GameObject.Find("MassnahmenContainer").transform); //die Maßnahmenwahl und ggf das aktuelle Tutorialfenster werden geschlossen UIVerwaltung.MassnahmenwahlOff(); GameObject.Find("Canvas").GetComponent <Tutorial>().SchließeTutorialFenster(); //ggf wird das nächste Tutorialfenster angezeigt if (GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.Massnahmenwahl) { GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase = Tutorial.TutorialPhase.Events; GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase3", GameObject.Find("Ok3").GetComponent <Button>(), false); } else if (GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.History) { GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase5", GameObject.Find("Ok5").GetComponent <Button>(), true); } else if (GameObject.Find("Canvas").GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.Ressortwahl) { GameObject.Find("Canvas").GetComponent <Tutorial>().ZeigeTutorialText("Phase2", GameObject.Find("Ok2").GetComponent <Button>(), true); } //die nächste Runde wird eingeleitet GameObject.Find("Canvas").GetComponent <GameController>().naechsteRunde(); }
//ändert die Farbe der großen Buttons links im Endscreen zurück nach dem Hovern public void EndscreenButtonExit(GameObject Button) { UIVerwaltung.OnButtonLeave(Button.GetComponent <Image>()); Button.GetComponent <Doozy.Engine.UI.UIButton>().ExecutePointerExit(); }
//verändert die Farbe der großen Buttons links im Endscreen beim Hovern public void EndscreenButtonHover(GameObject Button) { UIVerwaltung.OnButtonHover(Button.GetComponent <Image>()); }
public void PausenMenuButtonHover(Image Button) { //die eckigen Buttons im Pausenmenü werden beim Hovern blau eingefärbt UIVerwaltung.OnButtonHover(Button); }
//handelt die Ereignisse ab IEnumerator eventImpact() { GameObject Event = null; CoroutineRunning = true; //überprüft, ob ein negatives Spezialereignis ausgelöst wird for (int i = 0; i < 5; i++) { //Wenn die Bedingung für ein Spezialevent erfüllt ist, wird dieses ausgewählt und geklont. Der Klon dient als Platzhalter, da das ausgelöste Ereignis später in die Chronik verschoben wird. if (Attributswerte.transform.GetChild(i).transform.Find("AttWert").GetComponent <AttWert>().wert <= 20 && SpecialEventTriggered[i] == false) { Event = SpecialEvents.transform.GetChild(i).gameObject; GameObject Clone = GameObject.Instantiate(Event, Event.transform.parent); Clone.transform.SetSiblingIndex(i); SpecialEventTriggered[i] = true; break; } } //sofern kein negatives Spezialevent ausgewählt wurde, wird überprüft, ob eine Bedingung für ein positives Spezialereignis erfüllt ist if (Event == null) { for (int i = 0; i < 5; i++) { //Wenn die Bedingung für ein Spezialevent erfüllt ist, wird dieses ausgewählt und geklont. Der Klon dient als Platzhalter, da das ausgelöste Ereignis später in die Chronik verschoben wird. if (Attributswerte.transform.GetChild(i).transform.Find("AttWert").GetComponent <AttWert>().wert >= 90 && SpecialEventTriggered[i + 5] == false) { Event = SpecialEvents.transform.GetChild(i + 5).gameObject; GameObject Clone = GameObject.Instantiate(Event, Event.transform.parent); Clone.transform.SetSiblingIndex(i + 5); SpecialEventTriggered[i + 5] = true; break; } } } //Sofern auch kein positives Spezialevent ausgewählt wurde, wird ein normales Ereignis ausgelöst if (Event == null) { //überprüft, ob noch Ereignisse verfügbar sind (maximal sind nur 10 normale Ereignisse pro Spiel möglich) if (Events.transform.childCount == 0) { EventsOnStack = 0; yield break; } //ein zufälliges Ereignis wird ausgelöst Event = Events.transform.GetChild(Random.Range(0, Events.transform.childCount)).gameObject; } //Der Textlauf wird gestartet und fängt an zu blinken StartCoroutine(TextlaufObject.GetComponent <Textlauf>().StarteTextLauf(Event.GetComponent <Massnahme>().Beschreibung)); StartCoroutine(TextlaufObject.GetComponent <Textlauf>().Blinken()); //Die Werte des Ereignisses werden übertragen for (int i = 0; i < 10; i++) { EventVeraenderungen[i] = Event.GetComponent <Massnahme>().veranderungen[i]; } //Das Ereignis wird in die Chronik verschoben Event.transform.SetParent(GameObject.Find("MassnahmenContainer").transform); //ggf wird der Tutorial-Abschnitt zu den Ereignissen angezeigt if (GetComponent <Tutorial>().tutorialPhase == Tutorial.TutorialPhase.Events) { GetComponent <Tutorial>().ZeigeTutorialText("Phase4", GameObject.Find("Ok4").GetComponent <Button>(), true); } yield return(new WaitForSeconds(1)); //nach einer Sekunde werden die Veränderungen des Ereignisses in der Attributsleiste angezeigt zeigeEventVeraenderungen(); yield return(new WaitForSeconds(2.5f)); //nach weiteren zweieinhalb Sekunden werden die Veränderungen des Events dann tatsächlich ausgeführt int j = 0; foreach (Transform child in Attributswerte.transform) { child.transform.Find("AttChange").GetComponent <RawImage>().enabled = false; child.transform.Find("AttWert").GetComponent <AttWert>().wert += EventVeraenderungen[j]; j++; } CoroutineRunning = false; EventsOnStack--; //Sollten sich keine Ereignisse mehr auf dem Stapel befinden und das Spiel bereits zu Ende sein, wird der Endscreen angezeigt if (EventsOnStack == 0 && CurrentRunden == MaxRunden) { UIVerwaltung.Endscreen(); GetComponent <Tutorial>().SchließeTutorialFenster(); StartCoroutine(GameObject.Find("Endscreen").GetComponent <Endscreen>().ZeigeEndpunkte()); GameObject.Find("Endscreen").GetComponent <Endscreen>().BerechneStats(); TextlaufStop = true; } yield break; }