private void UpdateOfftracks(UserConnection conn, SyncStateCommand command) { var offtracks = (List<Offtrack>)command.Data.Offtracks.ToObject<List<Offtrack>>(); if (offtracks.Count == 0) return; foreach (var offtrack in offtracks) { var id = offtrack.DriverId; if (!this.State.OfftrackHistories.ContainsKey(id)) { this.State.OfftrackHistories.Add(id, new List<Offtrack>()); } // Does an offtrack with the same id already exist? var existing = this.State.OfftrackHistories[id].LastOrDefault(o => o.UniqueId == offtrack.UniqueId); if (existing != null) { // Update this offtrack this.State.OfftrackHistories[id].Remove(existing); } this.State.OfftrackHistories[id].Add(offtrack); } }
private void DeletePenalty(UserConnection conn, SyncStateCommand command) { var id = (string)command.Data.PenaltyId; var penalty = this.State.Penalties.FirstOrDefault(p => p.Id == id); if (penalty != null) { this.State.Penalties.Remove(penalty); } }
private void AddEvent(UserConnection conn, SyncStateCommand command) { var @event = command.Data.Event.ToObject<ReplayEvent>(); this.UpdateEvent(@event); }
private void EditPenalty(UserConnection conn, SyncStateCommand command) { var penalty = command.Data.Penalty.ToObject<Penalty>(); this.UpdatePenalty(penalty); }
private void UpdateLiveStatus(UserConnection conn, SyncStateCommand command) { int id = conn.User.CustId; if (!this.State.LiveStatus.ContainsKey(id)) { this.State.LiveStatus.Add(id, false); } this.State.LiveStatus[id] = (bool)command.Data.IsLive; }
private void UpdateWatchedDriver(UserConnection conn, SyncStateCommand command) { int id = conn.User.CustId; if (!this.State.WatchedDrivers.ContainsKey(id)) { this.State.WatchedDrivers.Add(id, -1); // -1 means 'not focused on driver' } this.State.WatchedDrivers[id] = (int)command.Data.CarId; }
private void OnConnected(UserContext context) { // Client connected // Store his connection details so we can link the connection to a user on registration this.OnLog("Client connected: " + context.ClientAddress); var conn = new UserConnection(); conn.Context = context; conn.ClientAddress = context.ClientAddress.ToString(); _connections.Add(conn); }
private void EditPenalty(UserConnection conn, SyncStateCommand command) { //var penalty = (Penalty)JsonConvert.DeserializeObject<Penalty>(command.Data.Penalty.ToString()); var penalty = command.Data.Penalty.ToObject<Penalty>(); this.UpdatePenalty(penalty); }