public void Score(GameManager.ePlayers player)
    {
        int pts = ++points [player.GetHashCode()];

        sm.score(player, pts);
        times [player.GetHashCode()] = Time.time;
    }
Exemplo n.º 2
0
 public void setPodium(GameManager.ePlayers player, int position)
 {
     if (player != GameManager.ePlayers.none)
     {
         positions [position] = player;
     }
 }
    void CheckPodium()
    {
        for (int player = 0; player < num_players; player++)
        {
            float max = distances.Max();

            if (max == 0)
            {
                return;
            }

            float min_time = Time.time + 1;
            GameManager.ePlayers winner = GameManager.ePlayers.none;
            for (int i = 0; i < distances.Length; i++)
            {
                if (distances [i] == max && times [i] < min_time)
                {
                    winner   = (GameManager.ePlayers)i;
                    min_time = times [i];
                }
            }
            if (winner != GameManager.ePlayers.none)
            {
                distances [winner.GetHashCode()] = -2000;
                times [winner.GetHashCode()]     = -1;
                lvm.setPodium(winner, player);
            }
        }
    }
    public void Score(GameManager.ePlayers player, float distance)
    {
        finished++;
        distances [player.GetHashCode()] = distance;
        times [player.GetHashCode()]     = Time.time;

        if (finished == num_players)
        {
            Finish();
        }
    }
Exemplo n.º 5
0
 public int GetPosition(GameManager.ePlayers player)
 {
     for (int i = 0; i < positions.Length; i++)
     {
         if (positions [i] == player)
         {
             return(i);
         }
     }
     throw new System.ArgumentException("Player doesn't exist");
 }
Exemplo n.º 6
0
    /**
     * Fall down medals
     */
    IEnumerator ShowMedals(Transform p_transform, GameManager.ePlayers player)
    {
        for (int material = 0; material < 3; material++)
        {
            int tot = GameManager.Instance.GetMedal(player, (GameManager.eMedals)material);
            for (int num = 0; num < tot; num++)
            {
                yield return(new WaitForSeconds(Random.Range(1f, 2f)));

                GameObject instance = Instantiate(medalPrefab [material], p_transform.position + new Vector3(-10 + (num % 2) * 20, 20, 1), p_transform.rotation) as GameObject;
                instance.GetComponent <MedalMovement> ().FallDown = true;
            }
        }
    }
Exemplo n.º 7
0
    public int Score(GameManager.ePlayers player)
    {
        lvm.setPodium(player, player_pos);
        playersToFinish.Remove(player);

        if (player_pos == 0)
        {
            StartCoroutine("WaitLastPlayer");
        }
        if (player_pos == num_players - 1)
        {
            Finish();
        }
        return(player_pos++);
    }
Exemplo n.º 8
0
    void Start()
    {
        lvm = GameObject.Find("SceneManager").GetComponent <LevelManager> () as LevelManager;

        if (GameManager.Instance.GetGameMode() == GameManager.eGameMode.TRAINING)
        {
            btn_left.text = "Restart";
        }

        int num_players = GameManager.Instance.GetNumPlayer();
        int nc          = 0;

        for (int position = 0; position < pod.Length; position++)
        {
            try {
                GameManager.ePlayers player = lvm.getPodium(position);
                if (player == GameManager.ePlayers.none)
                {
                    nc++;
                }

                if (position == num_players - 1 && position != 0)
                {
                    //LOSER
                    animCtrl = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(player) + "_podium_loser");
                }
                else
                {
                    //WINNER
                    animCtrl = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(player) + "_podium_winner");
                }
                pod [position].GetComponent <Animator> ().runtimeAnimatorController = animCtrl;
                pod [position].SetActive(true);
                GameObject medal = Resources.Load <GameObject> ("Prefabs/Medal_" + position);
                medal.GetComponent <MedalMovement> ().enabled = true;
                GameObject medlaInstance = Instantiate(medal) as GameObject;
                medlaInstance.transform.SetParent(gameObject.transform, false);
                medlaInstance.transform.position = pod [position].transform.position;
            } catch {
            }
        }

        if (nc == 3)
        {
            GetComponent <Image> ().sprite = Resources.Load <Sprite> ("Sprites/Podium/bg_podium_nc");
        }
        InvokeRepeating("WaitToSkip", 0.1f, 1f);
    }
Exemplo n.º 9
0
 public void Score(GameManager.ePlayers player, float distance)
 {
     finished++;
     if (distance == 0)
     {
         notClassified.Add(player);
     }
     else
     {
         distances [player.GetHashCode()] = distance;
         times [player.GetHashCode()]     = Time.time;
     }
     if (finished == num_players)
     {
         Finish();
     }
 }
 void FindWinners()
 {
     for (int pos = 0; pos < num_players; pos++)
     {
         int max = points.Max();
         if (max == 0)
         {
             return;
         }
         float min_time = Time.time;
         GameManager.ePlayers winner = (GameManager.ePlayers)pos;
         for (int i = 0; i < points.Length; i++)
         {
             if (points [i] == max && times [i] < min_time)
             {
                 winner   = (GameManager.ePlayers)i;
                 min_time = times [i];
             }
         }
         points [winner.GetHashCode()] = -1;
         times [winner.GetHashCode()]  = -1;
         lvm.setPodium(winner, pos);
     }
 }
Exemplo n.º 11
0
using UnityEngine;
Exemplo n.º 12
0
    void Start()
    {
        podiumPrefab = Resources.Load <GameObject> ("Prefabs/Podium") as GameObject;
        for (int i = 0; i < 3; i++)
        {
            medalPrefab [i] = Resources.Load <GameObject> ("Prefabs/Medal_" + i);
            medalPrefab [i].GetComponent <MedalMovement> ().enabled = true;
        }

        /**************************************  TEST CASES  **************************************
         * GameManager.Instance.startMode (GameManager.eGameMode.TRAINING);
         * GameManager.Instance.createPlayers (4);
         * for(int i=0; i<4; i++)
         *      GameManager.Instance.setColor((GameManager.ePlayers)i, (GameManager.eColors)i);
         * //P1
         * //GOLD
         * GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Gold);
         * GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Gold);
         * //SILVER
         * GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Silver);
         * //BRONZE
         * GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Bronze);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Bronze);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p01, GameManager.eMedals.Bronze);
         *
         * //P2
         * //GOLD
         * GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Gold);
         * GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Gold);
         * //SILVER
         * GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Silver);
         * //BRONZE
         * GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Bronze);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p02, GameManager.eMedals.Bronze);
         *
         * //P3
         * //GOLD
         * GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Gold);
         * GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Gold);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Gold);
         * //SILVER
         * GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Silver);
         * //GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Silver);
         * //BRONZE
         * GameManager.Instance.addMedal (GameManager.ePlayers.p03, GameManager.eMedals.Bronze);
         *
         * //P4
         * //GOLD
         * GameManager.Instance.addMedal (GameManager.ePlayers.p04, GameManager.eMedals.Gold);
         * GameManager.Instance.addMedal (GameManager.ePlayers.p04, GameManager.eMedals.Gold);
         * //SILVER
         * GameManager.Instance.addMedal (GameManager.ePlayers.p04, GameManager.eMedals.Silver);
         * //BRONZE
         * GameManager.Instance.addMedal (GameManager.ePlayers.p04, GameManager.eMedals.Bronze);
         *
         * //**************************************  TEST CASES  **************************************/

        try {
            List <GameManager.ePlayers> winners = GameManager.Instance.GetWinners(false);

            for (int i = 0; i < winners.Count; i++)
            {
                GameManager.ePlayers player      = winners [i];
                GameObject           podInstance = Instantiate(podiumPrefab) as GameObject;
                switch (i)
                {
                case 0:
                    podInstance.transform.position = new Vector2(X_GOLD, Y_GOLD);
                    break;

                case 1:
                    podInstance.transform.position = new Vector2(X_SILVER, Y_SILVER);
                    break;

                case 2:
                    podInstance.transform.position = new Vector2(X_BRONZE, Y_BRONZE);
                    break;

                case 3:
                    podInstance.transform.position = new Vector2(X_NC, Y_NC);
                    break;
                }
                if (i != 3)
                {
                    //PODIUM
                    podInstance.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(player) + "_podium_winner");
                }
                else
                {
                    //OUT
                    podInstance.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(player) + "_podium_loser");
                }

                StartCoroutine(ShowMedals(podInstance.transform, player));
            }
        } catch {
            //IF DRAW
            List <GameManager.ePlayers> winners = GameManager.Instance.GetWinners(true);

            int position = 0;
            for (int i = 0; i < winners.Count; i++)
            {
                int player_pts      = GameManager.Instance.GetPoints(winners [i]);
                int next_player_pts = -1;
                try {
                    //read next player points
                    next_player_pts = GameManager.Instance.GetPoints(winners [i + 1]);
                } catch {
                    //if next player doesn't exist
                    next_player_pts = -1;
                }
                if (player_pts == next_player_pts)
                {
                    next_player_pts = -1;
                    try {
                        //read next player points
                        next_player_pts = GameManager.Instance.GetPoints(winners [i + 2]);
                    } catch {
                        //if next player doesn't exist
                        next_player_pts = -1;
                    }
                    if (player_pts == next_player_pts)
                    {
                        next_player_pts = -1;
                        try {
                            //read next player points
                            next_player_pts = GameManager.Instance.GetPoints(winners [i + 3]);
                        } catch {
                            //if next player doesn't exist
                            next_player_pts = -1;
                        }
                        if (player_pts == next_player_pts)
                        {
                            //FOUR DRAWS
                            GameObject podInstance1 = Instantiate(podiumPrefab) as GameObject;
                            GameObject podInstance2 = Instantiate(podiumPrefab) as GameObject;
                            GameObject podInstance3 = Instantiate(podiumPrefab) as GameObject;
                            GameObject podInstance4 = Instantiate(podiumPrefab) as GameObject;

                            switch (position)
                            {
                            case 0:
                                podInstance1.transform.position = new Vector3(X_GOLD - 20, Y_GOLD - 20, -1);
                                podInstance4.transform.position = new Vector3(X_GOLD + 60, Y_GOLD - 20, -1);

                                podInstance2.transform.position = new Vector3(X_GOLD - 60, Y_GOLD + 20, 0);
                                podInstance3.transform.position = new Vector3(X_GOLD + 20, Y_GOLD + 20, 0);
                                break;

                            case 1:
                                podInstance1.transform.position = new Vector3(X_SILVER - 20, Y_SILVER - 20, -1);
                                podInstance4.transform.position = new Vector3(X_SILVER + 60, Y_SILVER - 20, -1);

                                podInstance2.transform.position = new Vector3(X_SILVER - 60, Y_SILVER + 20, 0);
                                podInstance3.transform.position = new Vector3(X_SILVER + 20, Y_SILVER + 20, 0);
                                break;

                            case 2:
                                podInstance1.transform.position = new Vector3(X_BRONZE - 20, Y_BRONZE - 20, -1);
                                podInstance4.transform.position = new Vector3(X_BRONZE + 60, Y_BRONZE - 20, -1);

                                podInstance2.transform.position = new Vector3(X_BRONZE - 60, Y_BRONZE + 20);
                                podInstance3.transform.position = new Vector3(X_BRONZE + 20, Y_BRONZE + 20);
                                break;

                            case 3:
                                podInstance1.transform.position = new Vector3(X_NC - 20, Y_NC - 20, -1);
                                podInstance4.transform.position = new Vector3(X_NC + 60, Y_NC - 20, -1);

                                podInstance2.transform.position = new Vector3(X_NC - 60, Y_NC + 20, 0);
                                podInstance3.transform.position = new Vector3(X_NC + 20, Y_NC + 20, 0);
                                break;
                            }

                            podInstance1.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i]) + "_podium_winner");
                            podInstance2.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i + 1]) + "_podium_winner");
                            podInstance3.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i + 2]) + "_podium_winner");
                            podInstance4.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i + 3]) + "_podium_winner");

                            StartCoroutine(ShowMedals(podInstance1.transform, winners [i]));
                            StartCoroutine(ShowMedals(podInstance2.transform, winners [i + 1]));
                            StartCoroutine(ShowMedals(podInstance3.transform, winners [i + 2]));
                            StartCoroutine(ShowMedals(podInstance4.transform, winners [i + 3]));

                            i += 3;
                        }
                        else
                        {
                            //THREE DRAWS
                            GameObject podInstance1 = Instantiate(podiumPrefab) as GameObject;
                            GameObject podInstance2 = Instantiate(podiumPrefab) as GameObject;
                            GameObject podInstance3 = Instantiate(podiumPrefab) as GameObject;

                            switch (position)
                            {
                            case 0:
                                podInstance1.transform.position = new Vector3(X_GOLD, Y_GOLD - 20, -1);
                                podInstance2.transform.position = new Vector3(X_GOLD - 60, Y_GOLD + 20, 0);
                                podInstance3.transform.position = new Vector3(X_GOLD + 20, Y_GOLD + 20, 0);
                                break;

                            case 1:
                                podInstance1.transform.position = new Vector3(X_SILVER, Y_SILVER - 20, -1);
                                podInstance2.transform.position = new Vector3(X_SILVER - 60, Y_SILVER + 20, 0);
                                podInstance3.transform.position = new Vector3(X_SILVER + 20, Y_SILVER + 20, 0);
                                break;

                            case 2:
                                podInstance1.transform.position = new Vector3(X_BRONZE, Y_BRONZE - 20, -1);
                                podInstance2.transform.position = new Vector3(X_BRONZE - 60, Y_BRONZE + 20, 0);
                                podInstance3.transform.position = new Vector3(X_BRONZE + 20, Y_BRONZE + 20, 0);
                                break;

                            case 3:
                                podInstance1.transform.position = new Vector3(X_NC, Y_NC - 20, -1);
                                podInstance2.transform.position = new Vector3(X_NC - 60, Y_NC + 20, 0);
                                podInstance3.transform.position = new Vector3(X_NC + 20, Y_NC + 20, 0);
                                break;
                            }

                            podInstance1.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i]) + "_podium_winner");
                            podInstance2.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i + 1]) + "_podium_winner");
                            podInstance3.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i + 2]) + "_podium_winner");

                            StartCoroutine(ShowMedals(podInstance1.transform, winners [i]));
                            StartCoroutine(ShowMedals(podInstance2.transform, winners [i + 1]));
                            StartCoroutine(ShowMedals(podInstance3.transform, winners [i + 2]));
                            i += 2;
                        }
                    }
                    else
                    {
                        // TWO DRAWS

                        GameObject podInstance1 = Instantiate(podiumPrefab) as GameObject;
                        GameObject podInstance2 = Instantiate(podiumPrefab) as GameObject;

                        switch (position)
                        {
                        case 0:
                            podInstance1.transform.position = new Vector2(X_GOLD - 40, Y_GOLD);
                            podInstance2.transform.position = new Vector2(X_GOLD + 40, Y_GOLD);
                            break;

                        case 1:
                            podInstance1.transform.position = new Vector2(X_SILVER - 40, Y_SILVER);
                            podInstance2.transform.position = new Vector2(X_SILVER + 40, Y_SILVER);
                            break;

                        case 2:
                            podInstance1.transform.position = new Vector2(X_BRONZE - 40, Y_BRONZE);
                            podInstance2.transform.position = new Vector2(X_BRONZE + 40, Y_BRONZE);
                            break;

                        case 3:
                            podInstance1.transform.position = new Vector2(X_NC - 40, Y_NC);
                            podInstance2.transform.position = new Vector2(X_NC + 40, Y_NC);
                            break;
                        }

                        podInstance1.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i]) + "_podium_winner");
                        podInstance2.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i + 1]) + "_podium_winner");

                        StartCoroutine(ShowMedals(podInstance1.transform, winners [i]));
                        StartCoroutine(ShowMedals(podInstance2.transform, winners [i + 1]));
                        i += 1;
                    }
                }
                else
                {
                    //NO DRAW REMAINING
                    GameObject podInstance = Instantiate(podiumPrefab) as GameObject;
                    switch (position)
                    {
                    case 0:
                        podInstance.transform.position = new Vector2(X_GOLD, Y_GOLD);
                        break;

                    case 1:
                        podInstance.transform.position = new Vector2(X_SILVER, Y_SILVER);
                        break;

                    case 2:
                        podInstance.transform.position = new Vector2(X_BRONZE, Y_BRONZE);
                        break;

                    case 3:
                        podInstance.transform.position = new Vector2(X_NC, Y_NC);
                        break;
                    }
                    podInstance.GetComponent <Animator> ().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController> ("Sprites/Podium/" + GameManager.Instance.GetColor(winners [i]) + "_podium_winner");
                    StartCoroutine(ShowMedals(podInstance.transform, winners [i]));
                }

                position++;
            }
        }

        InvokeRepeating("WaitToSkip", 0.1f, 1f);
    }
Exemplo n.º 13
0
 public GameObject getButton(GameManager.ePlayers player)
 {
     return(button [player.GetHashCode()]);
 }
Exemplo n.º 14
0
 /**
  * Display score on screen
  *
  * \param player Player who scored
  * \param pts Points to display
  */
 public void score(GameManager.ePlayers player, int pts)
 {
     scoreP [player.GetHashCode()].text = pts.ToString();
 }
 public void setPlayer(GameManager.ePlayers player)
 {
     this.player = player;
     gameObject.GetComponent <SpriteRenderer> ().sprite = Resources.Load <Sprite> ("Sprites/ArcheryLevel/pen/" + GameManager.Instance.GetColor(player));
 }