Exemplo n.º 1
0
    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();
        }
    }
Exemplo n.º 2
0
    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;
    }
Exemplo n.º 3
0
    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");
        }
    }