Ejemplo n.º 1
0
        void Awake()
        {
            for (int i = 0; i < initialDisplayOptions.Count; i++)
            {
                switch (initialDisplayOptions[i])
                {
                case DisplayOptions.Block:
                    m_DisplayCalls.Add(DisplayBlock);
                    break;

                case DisplayOptions.Balance:
                    m_DisplayCalls.Add(DisplayBalance);
                    break;

                case DisplayOptions.BalancePlayer:
                    m_DisplayCalls.Add(DisplayBalancePlayer);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            m_Racer = (IRacer)initialRacer;
        }
Ejemplo n.º 2
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            if (racerOne.IsAvailable() == false && racerTwo.IsAvailable() == false)
            {
                return(OutputMessages.RaceCannotBeCompleted);
            }

            if (racerTwo.IsAvailable() == false)
            {
                return(string.Format(OutputMessages.OneRacerIsNotAvailable, racerOne.Username, racerTwo.Username));
            }

            if (racerOne.IsAvailable() == false)
            {
                return(string.Format(OutputMessages.OneRacerIsNotAvailable, racerTwo.Username, racerOne.Username));
            }

            double racingBehaviorMultiplierRacerOne = racerOne.RacingBehavior == "strict" ? 1.2 : 1.1;

            double chanceOfWinningRacerOne =
                racerOne.Car.HorsePower * racerOne.DrivingExperience * racingBehaviorMultiplierRacerOne;

            double racingBehaviorMultiplierRacerTwo = racerTwo.RacingBehavior == "strict" ? 1.2 : 1.1;

            double chanceOfWinningRacerTwo =
                racerTwo.Car.HorsePower * racerTwo.DrivingExperience * racingBehaviorMultiplierRacerTwo;

            racerOne.Race();
            racerTwo.Race();

            string winner = chanceOfWinningRacerOne > chanceOfWinningRacerTwo ? racerOne.Username : racerTwo.Username;

            return(string.Format(OutputMessages.RacerWinsRace, racerOne.Username, racerTwo.Username, winner));
        }
Ejemplo n.º 3
0
        public string AddRacer(string type, string username, string carVIN)
        {
            ICar car = cars.FindBy(carVIN);

            if (car is null)
            {
                throw new ArgumentException(ExceptionMessages.CarCannotBeFound);
            }

            IRacer racer = null;

            if (type == nameof(ProfessionalRacer))
            {
                racer = new ProfessionalRacer(username, car);
            }
            else if (type == nameof(StreetRacer))
            {
                racer = new StreetRacer(username, car);
            }
            else
            {
                throw new ArgumentException(ExceptionMessages.InvalidRacerType);
            }

            racers.Add(racer);

            return(string.Format(OutputMessages.SuccessfullyAddedRacer, username));
        }
Ejemplo n.º 4
0
        public string AddRacer(string type, string username, string carVIN)
        {
            IRacer currentRaces = null;
            ICar   currentCar   = cars.FindBy(carVIN);

            if (currentCar == null)
            {
                throw new ArgumentException("Car cannot be found!");
            }
            if (type == "ProfessionalRacer")
            {
                currentRaces = new ProfessionalRacer(username, currentCar);
                racers.Add(currentRaces);
                return($"Successfully added racer {username}.");
            }
            else if (type == "StreetRacer")
            {
                currentRaces = new StreetRacer(username, currentCar);
                racers.Add(currentRaces);
                return($"Successfully added racer {username}.");
            }
            else
            {
                throw new ArgumentException("Invalid racer type!");
            }
        }
Ejemplo n.º 5
0
        public string AddRacer(string type, string username, string carVIN)
        {
            if (type != "ProfessionalRacer" && type != "StreetRacer")
            {
                throw new ArgumentException(ExceptionMessages.InvalidRacerType);
            }

            IRacer racer = null;
            ICar   car   = carRepository.FindBy(carVIN);

            if (car == null)
            {
                throw new ArgumentException(ExceptionMessages.CarCannotBeFound);
            }

            if (type == "ProfessionalRacer")
            {
                racer = new ProfessionalRacer(username, car);
            }
            else if (type == "StreetRacer")
            {
                racer = new StreetRacer(username, car);
            }

            this.racerRepository.Add(racer);

            return(string.Format(OutputMessages.SuccessfullyAddedRacer, username));
        }
Ejemplo n.º 6
0
        void Start()
        {
            if (checkpoints.Count == 0)
            {
                return;
            }

            allRacerArray = FindObjectsOfType <Object> ().Where(x => x is IRacer).ToArray();



            //If playerTwo is turned off, then need to remove player two from the above array.
            GameObject controllerObject = GameObject.FindWithTag("MetaGameController");

            controller = (UI.MetaGameController)controllerObject.GetComponent(typeof(UI.MetaGameController));
            if (controller.GetTwoPlayer() == false)
            {
                RemovePlayerTwo();
            }


            for (int i = 0; i < allRacerArray.Length; i++)
            {
                IRacer racer = allRacerArray[i] as IRacer;
                m_RacerNextCheckpoints.Add(racer, checkpoints[0]);
                racer.DisableControl();
            }
        }
Ejemplo n.º 7
0
        void Start()
        {
            if (checkpoints.Count == 0)
            {
                return;
            }

            CheckPointEvent = new CheckPointEvent();
            Object[] allRacerArray = FindObjectsOfType <Object> ().Where(x => x is IRacer).ToArray();
            Object[] allAgentArray = FindObjectsOfType <Object>().Where(x => x is kartAgent).ToArray();

            for (int i = 0; i < allRacerArray.Length; i++)
            {
                IRacer racer = allRacerArray[i] as IRacer;
                m_RacerNextCheckpoints.Add(racer, checkpoints[0]);
                racer.DisableControl();
            }

            for (int i = 0; i < allAgentArray.Length; i++)
            {
                var agent = allAgentArray[i] as kartAgent;
                if (agent != null)
                {
                    CheckPointEvent.AddListener(agent.achivedCheckPoint);
                }
            }
        }
Ejemplo n.º 8
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            string result = string.Empty;

            if (racerOne == null)
            {
                result = $"{racerTwo} wins the race! {racerOne} was not available to race!";
            }
            else if (racerTwo == null)
            {
                result = $"{racerOne} wins the race! {racerTwo} was not available to race!";
            }
            else if (racerOne == null & racerTwo == null)
            {
                result = $"Race cannot be completed because both racers are not available!";
            }
            else
            {
                racerOne.Race();
                racerTwo.Race();
                var oneRacer    = CalculateWinningRacer(racerOne);
                var secondRacer = CalculateWinningRacer(racerTwo);
                if (oneRacer > secondRacer)
                {
                    result = $"{racerOne.Username}has just raced against {racerTwo.Username}! {racerOne.Username} is the winner!";
                }
                else
                {
                    result = $"{racerOne.Username} has just raced against {racerTwo.Username}! {racerTwo.Username} is the winner!";
                }
            }
            return(result);
        }
Ejemplo n.º 9
0
        void Start()
        {
            m_Input     = input as IInput;
            m_Rigidbody = GetComponent <Rigidbody> ();
            m_Capsule   = GetComponent <CapsuleCollider> ();
            m_Racer     = GetComponent <IRacer> ();

            if (kart != null)
            {
                m_CurrentModifiers.Add((IKartModifier)kart);
            }

            if (driver != null)
            {
                m_CurrentModifiers.Add((IKartModifier)driver);
            }

            foreach (Transform child in transform)
            {
                if (child.tag == "Axis")
                {
                    spawnPoint = child.GetChild(0);
                    return;
                }
            }
        }
Ejemplo n.º 10
0
        void Start()
        {
            m_Input     = input as IInput;
            m_Rigidbody = GetComponent <Rigidbody>();
            m_Capsule   = GetComponent <CapsuleCollider>();
            m_Racer     = GetComponent <IRacer>();

            if (kart != null)
            {
                m_CurrentModifiers.Add((IKartModifier)kart);
            }

            if (driver != null)
            {
                m_CurrentModifiers.Add((IKartModifier)driver);
            }


            if (tires.Length > 0)
            {
                GameObject            controllerObject = GameObject.FindWithTag("MetaGameController");
                UI.MetaGameController controller       = (UI.MetaGameController)controllerObject.GetComponent(typeof(UI.MetaGameController));

                if (this.tag.Equals("Player"))
                {
                    tires[controller.GetTireIDPlayerOne()].StartOnTire(this);
                }

                else if (this.tag.Equals("PlayerTwo"))
                {
                    tires[controller.GetTireIDPlayerTwo()].StartOnTire(this);
                }
            }
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Set all the information in a record.
 /// </summary>
 /// <param name="track">The new name of the track.</param>
 /// <param name="lapCount">The new lap count.</param>
 /// <param name="racer">The new racer whose name will be recorded.</param>
 /// <param name="newTime">The new time for the record.</param>
 public void SetRecord(string track, int lapCount, IRacer racer, float newTime)
 {
     trackName = track;
     laps      = lapCount;
     name      = racer.GetName();
     time      = newTime;
 }
Ejemplo n.º 12
0
 void Awake()
 {
     trackManager = FindObjectOfType <TrackManager>();
     racer        = GetComponent <IRacer>();
     kart         = GetComponent <KartMovement>();
     startingPos  = this.transform.position;
     startingRot  = this.transform.rotation;
 }
Ejemplo n.º 13
0
 public void OnCheckPointReached(IRacer racer, Checkpoint checkpoint)
 {
     if (this.racer.Equals(racer))
     {
         Debug.Log(string.Format("checkpointName={0}", racer.GetName()));
         AddReward(2);
     }
 }
Ejemplo n.º 14
0
        void RacerHitCorrectCheckpoint(IRacer racer, Checkpoint checkpoint)
        {
            if (checkpoint.isStartFinishLine)
            {
                int racerCurrentLap = racer.GetCurrentLap();
                if (racerCurrentLap > 0)
                {
                    float lapTime = racer.GetLapTime();

                    if (m_SessionBestLap.time > lapTime)
                    {
                        m_SessionBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (m_HistoricalBestLap.time > lapTime)
                    {
                        m_HistoricalBestLap.SetRecord(trackName, 1, racer, lapTime);
                        newRecordCanvas.TempDisplay();
                    }

                    if (racerCurrentLap == raceLapTotal)
                    {
                        float raceTime = racer.GetRaceTime();

                        if (m_SessionBestRace.time > raceTime)
                        {
                            m_SessionBestRace.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        if (m_HistoricalBestRace.time > raceTime)
                        {
                            m_HistoricalBestRace.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        racer.DisableControl();
                        racer.PauseTimer();

                        SaveManager.saveManager.Load();                         // Not necessary since it was loaded on the main menu, done here as a double check
                        SaveManager.saveManager.earnedCoins += earnedCoins;
                        SaveManager.saveManager.Save();

                        gameOverCanvas.gameObject.SetActive(true);
                    }

                    for (int i = 0; i < coins.Length; i++)                              // desactivating & activating rather than deleting and respawning coins
                    {
                        coins[i].gameObject.SetActive(true);
                    }
                }

                if (CanEndRace())
                {
                    StopRace();
                }

                racer.HitStartFinishLine();
            }
        }
        IEnumerator CallWhenRaceStarts(IRacer racer, Checkpoint checkpoint)
        {
            while (!m_IsRaceRunning)
            {
                yield return(null);
            }

            CheckRacerHitCheckpoint(racer, checkpoint);
        }
Ejemplo n.º 16
0
 public void VoegRacerToe(IRacer racer)
 {
     IRacer[] tempCircuit = new IRacer[Circuit.Length + 1];
     for (int i = 0; i < tempCircuit.Length - 1; i++)
     {
         tempCircuit[i] = Circuit[i];
     }
     tempCircuit[tempCircuit.Length - 1] = racer;
     Circuit = tempCircuit;
 }
Ejemplo n.º 17
0
 void OnTriggerEnter(Collider other)
 {
     if (kartLayers.ContainsGameObjectsLayer(other.gameObject))
     {
         IRacer racer = other.GetComponent <IRacer> ();
         if (racer != null)
         {
             OnKartHitCheckpoint?.Invoke(racer, this);
         }
     }
 }
Ejemplo n.º 18
0
        void RacerHitCorrectCheckpoint(IRacer racer, Checkpoint checkpoint)
        {
            if (checkpoint.isStartFinishLine)
            {
                int racerCurrentLap = racer.GetCurrentLap();
                if (racerCurrentLap > 0)
                {
                    float lapTime = racer.GetLapTime();

                    if (m_SessionBestLap.time > lapTime)
                    {
                        m_SessionBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (m_HistoricalBestLap.time > lapTime)
                    {
                        m_HistoricalBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (racerCurrentLap == raceLapTotal)
                    {
                        float raceTime = racer.GetRaceTime();

                        if (m_SessionBestRace.time > raceTime)
                        {
                            m_SessionBestRace.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        if (m_HistoricalBestRace.time > raceTime)
                        {
                            m_HistoricalBestLap.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        racer.DisableControl();
                        racer.PauseTimer();
                    }
                }

                if (CanEndRace())
                {
                    StopRace();
                    GameObject kart = GameObject.Find("Kart");
                    kart.GetComponent <KartPoints>().SaveCoins();
                }
                else
                {
                    for (int i = 0; i < 6; i++)
                    {
                        CoinManager.transform.GetChild(i).gameObject.SetActive(true);
                    }
                }
                racer.HitStartFinishLine();
            }
        }
Ejemplo n.º 19
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            if (!racerTwo.IsAvailable() && !racerOne.IsAvailable())
            {
                return(RaceCannotBeCompleted);
            }

            if (!racerOne.IsAvailable()) //&& racerTwo.IsAvailable()
            {
                // racerTwo wins
                return(string.Format(OneRacerIsNotAvailable, racerTwo.Username, racerOne.Username));
            }

            if (!racerTwo.IsAvailable()) // && racerOne.IsAvailable()
            {
                // racerOne wins
                return(string.Format(OneRacerIsNotAvailable, racerOne.Username, racerTwo.Username));
            }

            racerOne.Race();
            racerTwo.Race();

            var strictMultiplier     = 1.2;
            var aggressiveMultiplier = 1.1;

            double chanceOfWinningRacerOne = racerOne.Car.HorsePower * racerOne.DrivingExperience;

            if (racerOne.RacingBehavior == "strict")
            {
                chanceOfWinningRacerOne *= strictMultiplier;
            }
            else if (racerOne.RacingBehavior == "aggressive")
            {
                chanceOfWinningRacerOne *= aggressiveMultiplier;
            }

            double chanceOfWinningRacerTwo = racerTwo.Car.HorsePower * racerTwo.DrivingExperience;

            if (racerTwo.RacingBehavior == "strict")
            {
                chanceOfWinningRacerTwo *= strictMultiplier;
            }
            else if (racerTwo.RacingBehavior == "aggressive")
            {
                chanceOfWinningRacerTwo *= aggressiveMultiplier;
            }

            if (chanceOfWinningRacerOne > chanceOfWinningRacerTwo)
            {
                return(string.Format(RacerWinsRace, racerOne.Username, racerTwo.Username, racerOne.Username));
            }

            return(string.Format(RacerWinsRace, racerOne.Username, racerTwo.Username, racerTwo.Username));
        }
Ejemplo n.º 20
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            if (racerOne.IsAvailable() == false)
            {
                return($"{racerTwo.Username} wins the race! {racerOne.Username} was not available to race!");
            }

            if (racerTwo.IsAvailable() == false)
            {
                return($"{racerOne.Username} wins the race! {racerTwo.Username} was not available to race!");
            }

            if (racerOne.IsAvailable() == false && racerTwo.IsAvailable() == false)
            {
                return(OutputMessages.RaceCannotBeCompleted);
            }

            racerOne.Race();
            racerTwo.Race();

            double chanceOfWinningFirst  = racerOne.Car.HorsePower * racerOne.DrivingExperience;
            double chanceOfWinningSecond = racerTwo.Car.HorsePower * racerTwo.DrivingExperience;

            if (racerOne.RacingBehavior == "strict")
            {
                chanceOfWinningFirst *= 1.2;
            }
            else if (racerOne.RacingBehavior == "aggressive")
            {
                chanceOfWinningFirst *= 1.1;
            }

            if (racerTwo.RacingBehavior == "strict")
            {
                chanceOfWinningSecond *= 1.2;
            }
            else if (racerTwo.RacingBehavior == "aggressive")
            {
                chanceOfWinningSecond *= 1.1;
            }

            string winnerUsername = string.Empty;

            if (chanceOfWinningFirst > chanceOfWinningSecond)
            {
                winnerUsername = racerOne.Username;
            }
            else
            {
                winnerUsername = racerTwo.Username;
            }

            return($"{racerOne.Username} has just raced against {racerTwo.Username}! {winnerUsername} is the winner!");
        }
Ejemplo n.º 21
0
        void RacerHitCorrectCheckpoint(IRacer racer, Checkpoint checkpoint)
        {
            if (checkpoint.isStartFinishLine)
            {
                int racerCurrentLap = racer.GetCurrentLap();
                if (racerCurrentLap > 0)
                {
                    float lapTime = racer.GetLapTime();

                    if (m_SessionBestLap.time > lapTime)
                    {
                        m_SessionBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }


                    if (m_HistoricalBestLap.time > lapTime)
                    {
                        m_HistoricalBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (racerCurrentLap == raceLapTotal)
                    {
                        float raceTime = racer.GetRaceTime();

                        if (m_SessionBestRace.time > raceTime)
                        {
                            m_SessionBestRace.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        if (m_HistoricalBestRace.time > raceTime)
                        {
                            m_HistoricalBestLap.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        if (firstCarToFinish)
                        {
                            victoryEvent.Invoke();
                            firstCarToFinish = false;
                        }
                        NumFinished++;
                        racer.DisableControl();
                        racer.PauseTimer();
                    }
                }

                if (CanEndRace())
                {
                    StopRace();
                }

                racer.HitStartFinishLine();
            }
        }
        void RacerHitCorrectCheckpoint(IRacer racer, Checkpoint checkpoint)
        {
            if (checkpoint.isStartFinishLine)
            {
                int racerCurrentLap = racer.GetCurrentLap();
                if (racerCurrentLap > 0)
                {
                    float lapTime = racer.GetLapTime();

                    if (m_SessionBestLap.time > lapTime)
                    {
                        m_SessionBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (m_HistoricalBestLap.time > lapTime)
                    {
                        m_HistoricalBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (racerCurrentLap == raceLapTotal)
                    {
                        float raceTime = racer.GetRaceTime();

                        if (m_SessionBestRace.time > raceTime)
                        {
                            m_SessionBestRace.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        if (m_HistoricalBestRace.time > raceTime)
                        {
                            m_HistoricalBestLap.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        racer.DisableControl();
                        racer.PauseTimer();
                    }
                    else
                    {
                        collectableManager.RemoveCollectables();
                        collectableManager.PlaceCollectables();
                    }
                }

                if (CanEndRace())
                {
                    StopRace();
                }

                racer.HitStartFinishLine();
                hitFirstCheckpoint = false;
            }
        }
Ejemplo n.º 23
0
        void Start ()
        {
            m_Input = input as IInput;
            m_Rigidbody = GetComponent<Rigidbody> ();
            m_Capsule = GetComponent<CapsuleCollider> ();
            m_Racer = GetComponent<IRacer> ();

            if (kart != null)
                m_CurrentModifiers.Add ((IKartModifier)kart);

            if (driver != null)
                m_CurrentModifiers.Add ((IKartModifier)driver);
        }
Ejemplo n.º 24
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            if (!racerOne.IsAvailable() && !racerTwo.IsAvailable())
            {
                return("Race cannot be completed because both racers are not available!");
            }
            else if (!racerOne.IsAvailable())
            {
                return($"{racerTwo.Username} wins the race! {racerOne.Username} was not available to race!");
            }
            else if (!racerTwo.IsAvailable())
            {
                return($"{racerOne.Username} wins the race! {racerTwo.Username} was not available to race!");
            }
            else
            {
                double chanceOfWinningRacerOne = racerOne.Car.HorsePower * racerOne.DrivingExperience;

                if (racerOne.RacingBehavior == "strict")
                {
                    chanceOfWinningRacerOne = chanceOfWinningRacerOne * 1.2;
                }
                else
                {
                    chanceOfWinningRacerOne = chanceOfWinningRacerOne * 1.1;
                }

                double chanceOfWinningRacerTwo = racerTwo.Car.HorsePower * racerTwo.DrivingExperience;

                if (racerOne.RacingBehavior == "strict")
                {
                    chanceOfWinningRacerTwo = chanceOfWinningRacerTwo * 1.2;
                }
                else
                {
                    chanceOfWinningRacerTwo = chanceOfWinningRacerTwo * 1.1;
                }

                racerOne.Race();
                racerTwo.Race();

                if (chanceOfWinningRacerOne > chanceOfWinningRacerTwo)
                {
                    return($"{racerOne.Username} has just raced against {racerTwo.Username}! {racerOne.Username} is the winner!");
                }
                else
                {
                    return($"{racerOne.Username} has just raced against {racerTwo.Username}! {racerTwo.Username} is the winner!");
                }
            }
        }
Ejemplo n.º 25
0
        void RacerHitCorrectCheckpoint(IRacer racer, Checkpoint checkpoint)
        {
            if (checkpoint.isStartFinishLine)
            {
                int racerCurrentLap = racer.GetCurrentLap();
                if (racerCurrentLap > 0)
                {
                    float lapTime = racer.GetLapTime();

                    if (m_SessionBestLap.time > lapTime)
                    {
                        m_SessionBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }

                    if (m_HistoricalBestLap.time > lapTime)
                    {
                        m_HistoricalBestLap.SetRecord(trackName, 1, racer, lapTime);
                    }
                    RecordCanvas.SetActive(true);

                    if (racerCurrentLap == raceLapTotal)
                    {
                        float raceTime = racer.GetRaceTime();

                        if (m_SessionBestRace.time > raceTime)
                        {
                            m_SessionBestRace.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        if (m_HistoricalBestRace.time > raceTime)
                        {
                            m_HistoricalBestLap.SetRecord(trackName, raceLapTotal, racer, raceTime);
                        }

                        racer.DisableControl();
                        racer.PauseTimer();
                    }
                }

                if (CanEndRace())
                {
                    StopRace();
                }
                if (racerCurrentLap >= 3)
                {
                    GameOverPanel.SetActive(true);
                }                                                                            //Muestro el panel de Game Over al terminar la carrera

                racer.HitStartFinishLine();
            }
        }
Ejemplo n.º 26
0
        void Start()
        {
            rBody          = GetComponent <Rigidbody>();
            m_movable      = (KartMovement)movable;
            m_trackManager = trackManager.GetComponent <TrackManager>();
            racer          = GetComponent <IRacer>();

            // IInput relevant Params
            m_Acceleration = 0;
            m_Steering     = 0;
            m_BoostPressed = false;
            m_FirePressed  = false;
            isFirst        = true;
        }
Ejemplo n.º 27
0
        private double CalculateWinningRacer(IRacer racer)
        {
            double calculateWinningRacer;

            if (racer.RacingBehavior == "strict")
            {
                calculateWinningRacer = racer.Car.HorsePower * racer.DrivingExperience * 1.2;
            }
            else
            {
                calculateWinningRacer = racer.Car.HorsePower * racer.DrivingExperience * 1.1;
            }
            return(calculateWinningRacer);
        }
Ejemplo n.º 28
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            if (!racerOne.IsAvailable() && !racerTwo.IsAvailable())
            {
                return("Race cannot be completed because both racers are not available!");
            }

            if (!racerOne.IsAvailable())
            {
                return($"{racerTwo.Username} wins the race! {racerOne.Username} was not available to race!");
            }

            if (!racerTwo.IsAvailable())
            {
                return($"{racerOne.Username} wins the race! {racerTwo.Username} was not available to race!");
            }

            racerOne.Race();
            racerTwo.Race();

            double oneR;
            double twoR;

            if (racerOne.RacingBehavior == "strict")
            {
                oneR = racerOne.Car.HorsePower * racerOne.DrivingExperience * 1.2;
            }
            else
            {
                oneR = racerOne.Car.HorsePower * racerOne.DrivingExperience * 1.1;
            }

            if (racerTwo.RacingBehavior == "strict")
            {
                twoR = racerTwo.Car.HorsePower * racerTwo.DrivingExperience * 1.2;
            }
            else
            {
                twoR = racerTwo.Car.HorsePower * racerTwo.DrivingExperience * 1.1;
            }

            if (oneR > twoR)
            {
                return($"{racerOne.Username} has just raced against {racerTwo.Username}! {racerOne.Username} is the winner!");
            }
            else
            {
                return($"{racerOne.Username} has just raced against {racerTwo.Username}! {racerTwo.Username} is the winner!");
            }
        }
Ejemplo n.º 29
0
        void Awake()
        {
            for (int i = 0; i < initialDisplayOptions.Count; i++)
            {
                switch (initialDisplayOptions[i])
                {
                case DisplayOptions.Race:
                    m_DisplayCalls.Add(DisplayRaceTime);
                    break;

                case DisplayOptions.AllLaps:
                    m_DisplayCalls.Add(DisplayAllLapTimes);
                    break;

                case DisplayOptions.FinishedLaps:
                    m_DisplayCalls.Add(DisplayFinishedLapTimes);
                    break;

                case DisplayOptions.FinishedAndCurrentLaps:
                    m_DisplayCalls.Add(DisplayFinishedAndCurrentLapTimes);
                    break;

                case DisplayOptions.CurrentLap:
                    m_DisplayCalls.Add(DisplayCurrentLapTime);
                    break;

                case DisplayOptions.SessionBestLap:
                    m_DisplayCalls.Add(DisplaySessionBestLapTime);
                    break;

                case DisplayOptions.SessionBestRace:
                    m_DisplayCalls.Add(DisplaySessionBestRaceTime);
                    break;

                case DisplayOptions.HistoricalBestLap:
                    m_DisplayCalls.Add(DisplayHistoricalBestLapTime);
                    break;

                case DisplayOptions.HistoricalBestRace:
                    m_DisplayCalls.Add(DisplayHistoricalBestRaceTime);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            m_Racer = (IRacer)initialRacer;
        }
Ejemplo n.º 30
0
        public string StartRace(IRacer racerOne, IRacer racerTwo)
        {
            if (racerOne.IsAvailable() == false && racerTwo.IsAvailable() == false)
            {
                return("Race cannot be completed because both racers are not available!");
            }
            if (racerOne.IsAvailable() == false)
            {
                return($"{racerTwo.Username} wins the race! {racerOne.Username} was not available to race!");
            }
            if (racerTwo.IsAvailable() == false)
            {
                return($"{racerOne.Username} wins the race! {racerTwo.Username} was not available to race!");
            }
            racerOne.Race();
            racerTwo.Race();
            double racingBehaviorMultiplierR1 = 0;

            if (racerOne.RacingBehavior == "strict")
            {
                racingBehaviorMultiplierR1 = 1.2;
            }
            else if (racerOne.RacingBehavior == "aggressive")
            {
                racingBehaviorMultiplierR1 = 1.2;
            }
            double R1chanceOfWinning = racerOne.Car.HorsePower * racerOne.DrivingExperience * racingBehaviorMultiplierR1;

            double racingBehaviorMultiplierR2 = 0;

            if (racerOne.RacingBehavior == "strict")
            {
                racingBehaviorMultiplierR2 = 1.2;
            }
            else if (racerOne.RacingBehavior == "aggressive")
            {
                racingBehaviorMultiplierR2 = 1.2;
            }
            double R2chanceOfWinning = racerOne.Car.HorsePower * racerOne.DrivingExperience * racingBehaviorMultiplierR2;

            if (R1chanceOfWinning > R2chanceOfWinning)
            {
                return($"{racerOne.Username} has just raced against {racerTwo.Username}! {racerOne.Username} is the winner!");
            }
            else
            {
                return($"{racerOne.Username} has just raced against {racerTwo.Username}! {racerTwo.Username} is the winner!");
            }
        }
Ejemplo n.º 31
0
    private async void ConnectToiRacer()
    {
      try
      {
        if (racerDeviceInfo != null)
        {
          //Get rid of the command provider
          if (accelerometerCommandProvider != null)
            accelerometerCommandProvider = null;

          //Dispose of the Racer and destory it if it exists...
          DestroyRacer();

          //Create a new Racer...
          //If running on the device, create real racer
          //Otherwise, (running on the emulator) create a mock racer
          if (Microsoft.Devices.Environment.DeviceType == DeviceType.Device)
            this.Racer = new Racer();
            //this.Racer = new Mock.MockRacer();
          else
            this.Racer = new Mock.MockRacer();


          //Connect it to the selected device
          await this.Racer.ConnectAsync(racerDeviceInfo);

          //Assign the AccelerometerCommandProvider to control it
          //this.Racer.CommandProvider = new AccelerometerCommandProvider();
          accelerometerCommandProvider = new AccelerometerCommandProvider();
          accelerometerCommandProvider.Racer = this.Racer;
        }
      }
      catch (Exception ex)
      {
        string message = string.Format("An {0} occurred when trying to connect: {1}", ex.GetType().Name, ex.Message);
        ShowMessage(message);
      }

    }
Ejemplo n.º 32
0
    private void DestroyRacer()
    {
      //To prevent an infinite loop, 
      //make sure to work with the racer field, not the Racer property
      
      if (this.racer != null)
      {
        //Unsubscribe from the RacerConnectionStateChanged event...
        racer.RacerConnectionStateChanged -= OnRacerConnectionStateChanged;

        Racer.Dispose();
        this.racer = null;

        //Get rid of the accelerometerCommandProvider;
        accelerometerCommandProvider.Dispose();
        accelerometerCommandProvider = null;

        GoCommand.RaiseCanExecuteChanged();
        DisconnectCommand.RaiseCanExecuteChanged();
      }
    }