Exemple #1
0
    //Update wird jeden Frame ausgeführt
    void Update()
    {
        //Startet das nächste Event, falls das vorherige Event bereits abgehandelt ist, ein Event auf dem Stapel liegt und das Textlauf-Objekt noch nicht sichtbar im Bildschirmbereich ist
        if (CoroutineRunning == false && EventsOnStack > 0 && TextlaufObject.transform.localPosition.x > (GameObject.Find("Canvas").GetComponent <RectTransform>().rect.size.x / 2 + TextlaufObject.GetComponent <RectTransform>().rect.size.x / 2))
        {
            StartCoroutine(eventImpact());
        }

        //Pausiert das Spiel, wenn die Escape-Taste gedrückt wird
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            GameObject.Find("PausenMenu").transform.Find("Hitbox").GetComponent <PausenMenu>().PausenButtonOnClick();
            if (GameObject.Find("Curtain").GetComponent <Image>().enabled == true)
            {
                GameObject.Find("PausenMenu").transform.Find("Image").GetComponent <Image>().color = new Color(1, 1, 1);
            }
            else
            {
                GameObject.Find("PausenMenu").transform.Find("Image").GetComponent <Image>().color = new Color(0, 0, 0);
            }
        }
    }
Exemple #2
0
    //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;
    }