public void SetUpRaceManager(RaceMode raceMode) { m_raceMode = raceMode; switch (raceMode) { case RaceMode.Solo: case RaceMode.SoloIA: case RaceMode.TimeAttack: m_carCount = 1; break; case RaceMode.VS1: m_carCount = 2; break; case RaceMode.VSN: m_carCount = 4; break; } SetUpInitialPositions(); SetUpCars(); SetUpPlayers(); SetUpCamera(); SetRaceCamera(); m_uiDisplayer = Instantiate(m_uiPrefab, m_race.transform).GetComponent <UIDisplayer>(); }
public bool CheckRaceOver(CarState[] states, RaceMode mode) { if (hasSentObject) { return(true); } // Test mode is an endless race. if (mode == RaceMode.Test) { return(false); } // The race is over only if all cars have finished the race or have // stopped, either because of a bad script or if the car has flipped over. bool isRaceOver = true; foreach (CarState car in states) { isRaceOver &= finishedCars.Contains(car.name) || car.HasCarStopped; } if (isRaceOver) { Send(states, mode); } return(isRaceOver); }
private unsafe byte TitleSequenceImpl() { var task = (Task <TitleSequence, TitleSequenceTaskState> *)(*State.CurrentTask); _mode = task->TaskData->RaceMode; return(_titleHook.OriginalFunction()); }
private void Redirect(RaceMode mode, string queryParams) { string leaderboardUrl = GetURL() + ((mode == RaceMode.Multiplayer) ? "results" : "tournament/next") + queryParams; Debug.Log("Redirecting to \"" + leaderboardUrl + "\" . . . "); Application.OpenURL(leaderboardUrl); }
private void Send(CarState[] states, RaceMode mode) { if (hasSentObject) { return; } hasSentObject = true; // This function may only be called once. string[] carNames = new string[states.Length]; int index = 0; Debug.Log("Race has finished!"); // Add the cars which have finished the race to the top of the list. while (carsFinishedQueue.Count > 0) { Debug.Log("Finished with position " + index + ": " + carsFinishedQueue.Peek()); carNames[index++] = carsFinishedQueue.Dequeue(); } // Add the remaining cars. foreach (CarState car in states) { if (!finishedCars.Contains(car.name)) { Debug.Log("Stalled with position " + car.position + ": " + car.name); carNames[car.position] = car.name; } } // Finally, create the form and set the previous query params. WWWForm form = new WWWForm(); form.AddField("players", states.Length); string queryParams = ""; for (int i = 0; i < states.Length; i++) { form.AddField(i.ToString(), carNames[i]); queryParams += (i == 0) ? "?" : "&"; queryParams += "previous[" + (char)('A' + i) + "]=" + WWW.EscapeURL(carNames[i]); } if (mode == RaceMode.Tournament) { outerClass.StartCoroutine(WaitForSend(form)); } Redirect(mode, queryParams); }
private void SetMode(RaceMode mode) { if (raceMode != RaceMode.Test) { Debug.LogWarning("Mode has already been changed to " + raceMode + " this call will be ignored."); // TODO: Check if this will always fail. //} else if (carManager.IsRaceStarted) { // Debug.LogWarning("The call is too late! The race has already started."); } else { raceMode = mode; } }
public RaceObservable(RaceMode raceMode, params IObservable <T>[] observables) { //_raceMode = raceMode; _observables = observables; }
public static IObservable <T> Race <T>(RaceMode mode, params IObservable <T>[] observables) { return(new RaceObservable <T>(mode, observables)); }