Пример #1
0
    public void StartGame()
    {
        if (isGamePlaying)
        {
            return;
        }
        startTime = Time.time;
        int numCars = 1;

        if (players.Count > 1)
        {
            numCars = Mathf.FloorToInt(players.Count / 2.0f);
            if (numCars > 4)
            {
                numCars = 4;
            }
        }

        cars.Clear();

        //Instantiate car
        for (int i = 0; i < numCars; i++)
        {
            InstantiateCar(i);
        }

        InstantiateCameras(numCars);

        List <int>[] assigment        = new List <int> [numCars];
        List <int>   playersRemaining = new List <int>();

        for (int i = 0; i < numCars; i++)
        {
            assigment[i] = new List <int>();
        }

        for (int i = 0; i < players.Count; i++)
        {
            playersRemaining.Add(i);
        }

        playersRemaining = RandomizeArray(playersRemaining);

        isGamePlaying = true;
        int currentCar = 0;

        while (playersRemaining.Count > 0)
        {
            assigment[currentCar].Add(playersRemaining[0]);
            playersRemaining.RemoveAt(0);
            currentCar++;
            if (currentCar >= numCars)
            {
                currentCar = 0;
            }
        }

        for (int i = 0; i < numCars; i++)
        {
            foreach (var item in assigment[i])
            {
                cars[i].AddPlayer(players[item]);

                //Instatiate cuckatiels
                GameObject cuckatielObj = GameObject.Instantiate(cuckatielPrefab);
                Cuckatiel  cuckatiel    = cuckatielObj.GetComponent <Cuckatiel>();
                cuckatiel.SetCuckatiel(players[item]);
                cars[i].AddCuckatiel(cuckatiel, players[item]);
            }
            cars[i].RandomizePositions();
        }



        isGamePlaying = true;

        uIManager.StartGame(cars);
    }
Пример #2
0
 public void AddCuckatiel(Cuckatiel c, SeedPlayer sp)
 {
     cuckatiels.Add(sp, c);
 }
Пример #3
0
        public void RandomizePositions()
        {
            int numPlayers = Count;

            SeedPlayer.PlayerActions[,] selected = new SeedPlayer.PlayerActions[numPlayers, 2];
            List <SeedPlayer.PlayerActions> rolesRemaining = new List <SeedPlayer.PlayerActions>()
            {
                SeedPlayer.PlayerActions.Left,
                SeedPlayer.PlayerActions.Right,
                SeedPlayer.PlayerActions.Accelerator,
                SeedPlayer.PlayerActions.Brake
            };

            // while(rolesRemaining.Count < numPlayers * 2)
            // {
            //     rolesRemaining.Add(SeedPlayer.PlayerActions.Scream);
            // }

            //Select first role
            for (int i = 0; i < numPlayers; i++)
            {
                int index1;
                index1 = Random.Range(0, rolesRemaining.Count);

                SeedPlayer.PlayerActions role1 = rolesRemaining[index1];
                rolesRemaining.RemoveAt(index1);

                selected[i, 0] = role1;
                // players[i].SetActions(role1, role2);
                // assigmentPlayers[role1] = players[i];
            }

            // Add scream roles
            while (rolesRemaining.Count < numPlayers)
            {
                rolesRemaining.Add(SeedPlayer.PlayerActions.Scream);
            }

            // Select second role
            for (int i = 0; i < numPlayers; i++)
            {
                int index1;
                index1 = Random.Range(0, rolesRemaining.Count);

                SeedPlayer.PlayerActions role1 = rolesRemaining[index1];
                rolesRemaining.RemoveAt(index1);

                selected[i, 1] = role1;
                // players[i].SetActions(role1, role2);
                // assigmentPlayers[role1] = players[i];
            }

            // Set roles
            for (int i = 0; i < numPlayers; i++)
            {
                players[i].SetActions(selected[i, 0], selected[i, 1]);
                assigmentPlayers[selected[i, 0]] = players[i];
                if (selected[i, 1] != SeedPlayer.PlayerActions.Scream)
                {
                    assigmentPlayers[selected[i, 1]] = players[i];
                }
            }

            //Set cuckatiel positions
            List <int> cuckatielPos = new List <int>()
            {
                0, 1, 2, 3
            };

            for (int i = 0; i < numPlayers; i++)
            {
                int getIndex = Random.Range(0, cuckatielPos.Count);
                int useIndex = cuckatielPos[getIndex];
                cuckatielPos.RemoveAt(getIndex);

                Cuckatiel c = cuckatiels[players[i]];
                Transform transformToAssing = carController.cuckatielPositions[useIndex];
                c.transform.position = transformToAssing.position;
                c.transform.rotation = transformToAssing.rotation;
                c.transform.SetParent(transformToAssing);
            }
        }