Example #1
0
    // Initialize timer and human players game status
    private void init()
    {
        Gamestate = gamestate.start_to_join;
        Winstate  = winstate.none;
        p1Reticle.SetActive(false);
        p2Reticle.SetActive(false);
        p1JoinText.SetActive(true);
        p2JoinText.SetActive(true);
        timer = human_playtime;

        timer_TMP.gameObject.SetActive(false);
        winner_TMP.gameObject.SetActive(false);
        empires_fall_TMP.gameObject.SetActive(false);
        sea_levels_rose_TMP.gameObject.SetActive(false);

        // Init region unit count
        foreach (region Region in region.allRegions)
        {
            Region.units = region.base_units;
        }
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        // Update the current industry value
        industryLevel = status_controller.industryLevel;

        // Update the current game state / win state
        // start_to_join, playing, winscreen / empires_falling (eco, ind, tie)
        gS = PlayerManager.Gamestate;
        wS = PlayerManager.Winstate;

        // Play Victory Music (Once)
        if (gameEnded && (gS == gamestate.winscreen || gS == gamestate.empires_falling))
        {
            switch (wS)
            {
            case winstate.eco:
                musicPlayer.Stop();
                musicPlayer.clip = ecoVictory;
                musicPlayer.Play();
                break;

            case winstate.ind:
                musicPlayer.Stop();
                musicPlayer.clip = indVictory;
                musicPlayer.Play();
                break;

            case winstate.tie:
                musicPlayer.Stop();
                musicPlayer.clip = tie;
                musicPlayer.Play();
                break;

            default:
                //musicPlayer.Stop();
                //musicPlayer.clip = ecoVictory;
                //musicPlayer.Play();
                Debug.LogError("Game has not ended");
                break;
            }

            gameEnded = false;
        }

        // Play Intro (Start Screen) Music
        if (!musicPlayer.isPlaying && gS == gamestate.start_to_join)
        {
            Start();
            gameEnded = true;
        }

        // Play regular music
        if (!musicPlayer.isPlaying && gS == gamestate.playing)
        {
            if (industryLevel < ecoCutoff)
            {
                float eco_r = Random.Range(0.0f, 3.0f);
                if (eco_r < 1.0f)
                {
                    musicPlayer.clip = eco1Clip;
                }
                else if (eco_r < 2.0f)
                {
                    musicPlayer.clip = eco2Clip;
                }
                else
                {
                    musicPlayer.clip = eco3Clip;
                }
                indPlayed = false;
            }
            else if (industryLevel < indCutoff)
            {
                if (!indPlayed)
                {
                    musicPlayer.clip = neuEcoClip;
                    indPlayed        = true;
                }
                else
                {
                    musicPlayer.clip = neuIndClip;
                    indPlayed        = false;
                }
            }
            else
            {
                float ind_r = Random.Range(0.0f, 3.0f);
                if (ind_r < 1.0f)
                {
                    musicPlayer.clip = ind1Clip;
                }
                else if (ind_r < 2.0f)
                {
                    musicPlayer.clip = ind2Clip;
                }
                else
                {
                    musicPlayer.clip = ind3Clip;
                }
                indPlayed = true;
            }
            musicPlayer.Play();
        }

        // Play waves crashing sounds
        if (!musicPlayer.isPlaying && gS == gamestate.sea_levels_rose)
        {
            musicPlayer.clip = waves;
            musicPlayer.Play();
        }
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        // START_TO_JOIN
        if (Gamestate == gamestate.start_to_join)
        {
            // Check for players hitting start to join
            if (RCI.GetButton(XboxButton.Start, XboxController.First))
            {
                p1Reticle.SetActive(true);
                p1JoinText.SetActive(false);
            }

            if (RCI.GetButton(XboxButton.Start, XboxController.Second))
            {
                p2Reticle.SetActive(true);
                p2JoinText.SetActive(false);
            }

            // Check if for state change
            if (p1Reticle.activeSelf && p2Reticle.activeSelf)
            {
                Gamestate = gamestate.playing;
                timer_TMP.gameObject.SetActive(true);
                p1StartArea.Owner = player.A;
                p2StartArea.Owner = player.B;
                update_timer_text();
            }
            return;
        }

        // PLAYING
        if (Gamestate == gamestate.playing)
        {
            // Check for one player eliminated
            bool pA_elim = true;
            bool pB_elim = true;
            foreach (region Region in region.allRegions)
            {
                pA_elim = (pA_elim && Region.Owner != player.A);
                pB_elim = (pB_elim && Region.Owner != player.B);
                if (!pA_elim && !pB_elim)
                {
                    break;
                }
            }

            pA_elim = pA_elim && !moving_units.pA_has_units;
            pB_elim = pB_elim && !moving_units.pB_has_units;
            if (pA_elim || pB_elim)
            {
                // Pull up win-screen
                Gamestate = gamestate.winscreen;
                timer_TMP.gameObject.SetActive(false);
                winner_TMP.gameObject.SetActive(true);

                if (pA_elim ? (policy_manager.policies[(int)player.B] == policy.industry)
              : (policy_manager.policies[(int)player.A] == policy.industry))
                {
                    Winstate = winstate.ind;
                }
                else
                {
                    Winstate = winstate.eco;
                }

                string empire_won = pA_elim ? "Blue" : "Red";
                winner_TMP.text = "The " + empire_won + "  Empire  is  victorious";
                timer           = winscreen_time;
                return;
            }

            moving_units.pA_has_units = false;
            moving_units.pB_has_units = false;

            // Otherwise, iterate the timer
            timer -= Time.deltaTime;
            if (timer > 0)
            {
                update_timer_text();
            }
            else
            {
                // Pull up tie screen
                Gamestate = gamestate.winscreen;
                Winstate  = winstate.tie;
                timer_TMP.gameObject.SetActive(false);
                winner_TMP.gameObject.SetActive(true);
                winner_TMP.text = "Both empires lived on...";
                timer           = winscreen_time;
            }
            return;
        }

        // WINSCREEN
        if (Gamestate == gamestate.winscreen)
        {
            timer -= Time.deltaTime;
            if (timer > 0)
            {
                // This is fine. Waiting for delay to end
            }
            else if (status_controller.instance.airLevel < 0.1 || status_controller.instance.temperatureLevel < 0.1)
            {
                // Sea levels rose
                Gamestate = gamestate.sea_levels_rose;
                winner_TMP.gameObject.SetActive(false);
                sea_levels_rose_TMP.gameObject.SetActive(true);
                sea_level_timer = human_playtime;
                // Set TMP text based on if it's a tie, or one empire
                if (Winstate == winstate.tie)
                {
                    sea_levels_rose_TMP.text = "But as sea levels rose, so each empire fell...";
                }
                else
                {
                    sea_levels_rose_TMP.text = "But as sea levels rose, so the empire fell...";
                }
            }
            else
            {
                // Empires fall
                Gamestate = gamestate.empires_falling;
                winner_TMP.gameObject.SetActive(false);
                empires_fall_TMP.gameObject.SetActive(true);
            }
            return;
        }

        // EMPIRES FALLING
        if (Gamestate == gamestate.empires_falling)
        {
            // Wait for all regions to be neutral.
            foreach (region Region in region.allRegions)
            {
                if (Region.Owner != player.none)
                {
                    return;
                }
            }

            // Once it's over:
            init();
            return;
        }

        // SEA LEVELS ROSE
        if (Gamestate == gamestate.sea_levels_rose)
        {
            sea_level_timer -= Time.deltaTime;
            if (sea_level_timer > 0)
            {
                // This is fine
                if (sea_level_controller.idle)
                {
                    sea_levels_rose_TMP.text = "...and there was no land left to fight for";
                }
            }
            else if (Random.Range(0, 2) == 0)
            {
                // Some chance for the sea levels to stay
                sea_level_timer = 30;
            }
            else
            {
                // When this state ends
                init();
                return;
            }
        }
    }