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); }
public void AddCuckatiel(Cuckatiel c, SeedPlayer sp) { cuckatiels.Add(sp, c); }
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); } }