public void UpdateLeaderboards() { long[] times = new long[this.racers.Count]; List <RacePlayer> sortRacers = new List <RacePlayer>(this.racers); sortRacers.Sort((RacePlayer a, RacePlayer b) => { return((int)(a.CheckpointScore - b.CheckpointScore)); }); RacePlayer[] players = sortRacers.ToArray(); for (int i = 0; i < players.Length; i++) { RacePlayer player = players[i]; times[i] = player.LastCheckpointHit == null ? startTicks : player.CheckpointTimes[player.LastCheckpointHit]; } LeaderboardRPC rpc = new LeaderboardRPC(players, times); foreach (RacePlayer player in this.racers) { RpcManager.Instance.TriggerRPC(player, "SlipeRace.UpdateLeaderboard", rpc); } }
public void LapCompleted_Default_IncrementsNumLapsByOne() { var racePlayer = new RacePlayer(); racePlayer.LapCompleted(); racePlayer.NumLapsCompleted.Should().Be(1); }
public void FinishRace_Defualt_SetsPosition() { var racePlayer = new RacePlayer(); racePlayer.FinishRace(new TimeSpan(), 1); racePlayer.Position.Should().Be(1); }
public void Init(RacePlayer player) { Player = player; GetComponent <ToggleCanvasGroup>().Show(); RaceFinishReport report = player.FinishReport; if (report != null) { if (report.Position != RaceFinishReport.DISQUALIFIED_POS) { positionField.text = Utils.GetPosString(report.Position); } else { positionField.color = Color.red; positionField.text = "DSQ"; } timeField.text = Utils.GetTimeString(report.Time); } else { positionField.text = "???"; timeField.text = "Still racing"; } iconField.sprite = Data.ActiveData.Characters[player.Character].icon; nameField.text = player.Name; }
public void DisqualifyPlayer(RacePlayer player) { disqualifiedCount++; player.Vehicle.Destroy(); player.HasFinished = true; CheckForFinish(); }
public void FinishRace_Defualt_SetsFinishTime() { var racePlayer = new RacePlayer(); var finishTime = new TimeSpan(0, 2, 20); racePlayer.FinishRace(finishTime, 1); racePlayer.FinishTime.Should().Be(finishTime); }
public void RemoveRacer(RacePlayer racer) { racers.Remove(racer); racer.CheckpointTimes.Clear(); if (racer.Vehicle != null) { racer.Vehicle.Destroy(); } }
public void AddRacer(RacePlayer racer) { if (spawnpoints.Length <= racers.Count) { ChatBox.WriteLine(string.Format("There are only {0} positions available for this race!", this.spawnpoints.Length), racer, 0xff0000); } racers.Add(racer); racer.OnQuit += HandleQuit; }
public CheckPoint GetNextCheckPoint(RacePlayer player) { CheckPoint[] list = CheckPoints; foreach (CheckPoint p in list) { if (p.CheckPointIndex == CheckPointIndex(player.Checks + 1)) { return(p); } } return(null); }
public void Reach(RacePlayer player, CheckPoint check) { if (check.CheckPointIndex == CheckPointIndex(player.Checks + 1)) { //richtiger checkpoint, ganz klasse player.Checks++; Announce(player.Name + " reached " + player.Checks + "."); if (Lap(player.Checks) >= Laps && Laps > 0) { Finish(player); } } }
public void HandleCheckpointHit(Checkpoint checkpoint, RacePlayer player) { player.HitCheckpoint(checkpoint); UpdateLeaderboards(); if (checkpoint.IsFinish) { this.finishedCount++; ChatBox.WriteLine(string.Format("{0} came in place {1}", player.Name, this.finishedCount), 0xffffff); player.Vehicle.Destroy(); player.HasFinished = true; CheckForFinish(); } }
public void CheckForFinish() { if (!InProgress) { Cleanup(); string message = string.Format("The race has ended, {0} players finished, {1} were disqualified!", this.finishedCount, this.disqualifiedCount); for (int i = racers.Count - 1; i >= 0; i--) { RacePlayer racer = racers[i]; ChatBox.WriteLine(message, racer, 0xffffff); racers.Remove(racer); } OnEnd?.Invoke(); } }
private void SpawnVehicles() { for (int i = 0; i < racers.Count; i++) { RacePlayer player = racers[i]; Spawnpoint spawnpoint = spawnpoints[i]; Vehicle vehicle = new Vehicle(VehicleModel.FromId(spawnpoint.VehicleModel), spawnpoint.Position); player.Vehicle = vehicle; vehicle.FaceElement(checkpoints.FirstOrDefault()); vehicle.OnExplode += (BaseVehicle source, OnExplodeEventArgs eventArgs) => { DisqualifyPlayer(player); }; vehicle.OnStartExit += (BaseVehicle source, OnStartExitEventArgs eventArgs) => { Event.Cancel(); }; } }
private void HandlePlayerJoin(RacePlayer player) { players.Add(player); player.OnQuit += HandlePlayerQuit; }
private void AddPlayerToRace(RacePlayer player, Race race) { this.race.AddRacer(player); this.players.Remove(player); }
protected void Finish(RacePlayer player) { Announce(player.Name + " finished."); EndGame(); }