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; }
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)); }
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)); }
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!"); } }
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)); }
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(); } }
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); } } }
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); }
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; } } }
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); } } }
/// <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; }
void Awake() { trackManager = FindObjectOfType <TrackManager>(); racer = GetComponent <IRacer>(); kart = GetComponent <KartMovement>(); startingPos = this.transform.position; startingRot = this.transform.rotation; }
public void OnCheckPointReached(IRacer racer, Checkpoint checkpoint) { if (this.racer.Equals(racer)) { Debug.Log(string.Format("checkpointName={0}", racer.GetName())); AddReward(2); } }
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); }
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; }
void OnTriggerEnter(Collider other) { if (kartLayers.ContainsGameObjectsLayer(other.gameObject)) { IRacer racer = other.GetComponent <IRacer> (); if (racer != null) { OnKartHitCheckpoint?.Invoke(racer, this); } } }
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(); } }
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)); }
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!"); }
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; } }
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); }
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!"); } } }
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(); } }
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; }
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); }
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!"); } }
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; }
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!"); } }
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); } }
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(); } }