public void Init(CarLibrary carLibrary) { _carLibrary = carLibrary; FragmentAuthenticationUI[] authUIs = Resources.FindObjectsOfTypeAll <FragmentAuthenticationUI>(); if (authUIs.Length > 0) { // We should only have one of these in the scene, so grab the first _authUI = authUIs[0]; } // Setup the players for (int i = 0; i < MaxNumPlayers; i++) { _players[i] = new Player(); } }
public override void Begin() { CarLibrary carLibrary = GetCarLibrary(); PlayerManager playerManager = GetPlayerManager(); _raceState = RaceState.Countdown; _stateTimer = CountdownTime; // Grab child objects and setup (assumptions are made here!) for (int i = 0; i < PlayerManager.MaxNumPlayers; i++) { GameObject raceLocatorStart = GameObject.Find(RaceStartLocatorName + (i + 1)); GameObject raceLocatorEnd = GameObject.Find(RaceEndLocatorName + (i + 1)); GameObject car = carLibrary.InstantiateCar(playerManager.GetPlayerSelectedCar(i)); _racePositionStart[i] = raceLocatorStart.transform.position; _racePositionEnd[i] = raceLocatorEnd.transform.position; car.transform.position = _racePositionStart[i]; car.transform.rotation = raceLocatorStart.transform.rotation; _cars.Add(car); GameObject carMarker = Instantiate(CarMarkerPrefab, car.transform.position, car.transform.rotation); carMarker.transform.localRotation = Quaternion.AngleAxis(90, Vector3.up); carMarker.GetComponentInChildren <Text>().text = (i + 1).ToString(); _carMarkers.Add(carMarker); if (playerManager.IsPlayerAI(i)) { _AITapsPerSecond[i] = Random.Range(5.5f, 9.5f); _AITimeUntilChangeTapRate[i] = Random.Range(2.0f, 4.0f); } _raceProgress[i] = 0.0f; _raceProgressSmoothed[i] = 0.0f; } GameObject UI = GameObject.Find(RaceUIName); Text[] texts = UI.GetComponentsInChildren <Text>(); for (int i = 0; i < texts.Length; i++) { if (texts[i].name == "Countdown") { _countdownText = texts[i]; } if (texts[i].name == "Celebration") { _celebrationText = texts[i]; } } _countdownText.enabled = true; _celebrationText.enabled = false; _camera = GetComponentInChildren <Camera>(); _cameraStart = GameObject.Find(CameraStartLocatorName).transform; _cameraEnd = GameObject.Find(CameraEndLocatorName).transform; _cameraProgressSmoothed = 0.0f; }
public override void Tick() { float dt = Time.deltaTime; PlayerManager playerManager = GetPlayerManager(); CarLibrary carLibrary = GetCarLibrary(); for (int i = 0; i < PlayerManager.MaxNumPlayers; ++i) { if (playerManager.ArePlayerCarsReady(i) == false) { continue; } List <int> cars = playerManager.GetPlayerCars(i); if (_isPlayerReady[i] == false) { // Human players if (playerManager.IsPlayerAuthorised(i)) { if (playerManager.HasPlayerPressedOption(i)) { _selectedCarIndex[i]++; if (_selectedCarIndex[i] >= cars.Count) { _selectedCarIndex[i] = 0; } _carSelectRenderer.SelectCar(i, cars[_selectedCarIndex[i]]); if (carLibrary.RequiresPerkToUnlock(_selectedCarIndex[i])) { _textPerk[i].enabled = true; } else { _textPerk[i].enabled = false; } } else if (playerManager.HasPlayerPressedAction(i)) { _isPlayerReady[i] = true; _textInstruction[i].text = "READY!"; _background[i].color = ReadyColour; playerManager.SetPlayerSelectedCar(i, cars[_selectedCarIndex[i]]); } } // "AI" players if (playerManager.IsPlayerAI(i)) { _timeToCarSelectChange[i] -= dt; if (_timeToCarSelectChange[i] <= 0.0f) { // If we already have the correct car, don't change and ready-up! if (_selectedCarIndex[i] == _targetCarIndex[i]) { _isPlayerReady[i] = true; _textInstruction[i].text = "READY!"; _background[i].color = ReadyColour; playerManager.SetPlayerSelectedCar(i, cars[_selectedCarIndex[i]]); } else { _timeToCarSelectChange[i] = Random.Range(0.4f, 1.0f); _selectedCarIndex[i]++; if (_selectedCarIndex[i] >= cars.Count) { _selectedCarIndex[i] = 0; } _carSelectRenderer.SelectCar(i, _selectedCarIndex[i]); } } } } int selectedCarType = cars[_selectedCarIndex[i]]; _carSelectRenderer.Render(i, _isPlayerReady[i]); } // Is everyone readied up? int playerReadyCount = 0; for (int i = 0; i < PlayerManager.MaxNumPlayers; ++i) { if (_isPlayerReady[i]) { playerReadyCount++; } } if (playerReadyCount == PlayerManager.MaxNumPlayers) { GameState.SetState("GameState_Race"); } }