public async Task UpdatePlayer(Player player) { lock (State) { var playerToReplace = State.Players.FirstOrDefault(x => x.User.UserEquals(player.User)); State.Players.Remove(playerToReplace); State.Players.Add(player); } var @event = new Event { player_updated_event = new Event.PlayerUpdatedEvent { Player = player } }; await Broadcast(new Packet { Event = @event }); if (PlayerInfoUpdated != null) { await PlayerInfoUpdated.Invoke(player); } }
public void UpdatePlayerReceived(Player player) { // TODO: This is garbage var newPlayers = State.Players.ToList(); newPlayers[newPlayers.FindIndex(x => x.Id == player.Id)] = player; State.Players.Clear(); State.Players.AddRange(newPlayers); NotifyPropertyChanged(nameof(State)); //If the player updated is *us* (an example of this coming from the outside is stream sync info) //we should update our Self // TODO: This shouldn't be a new User call if (Self.Id == player.Id) { SelfObject = player; Self = new User { Id = player.Id, Name = player.Name }; } PlayerInfoUpdated?.Invoke(player); }
public void UpdatePlayerReceived(Player player) { var newPlayers = State.Players.ToList(); newPlayers[newPlayers.FindIndex(x => x.Id == player.Id)] = player; State.Players = newPlayers.ToArray(); NotifyPropertyChanged(nameof(State)); //If the player updated is *us* (an example of this coming from the outside is stream sync info) //we should update our Self if (Self.Id == player.Id) { Self = player; } PlayerInfoUpdated?.Invoke(player); }
public void HandleHandicap(NetworkMessage msg) { MsgHandicap update = msg as MsgHandicap; foreach (var u in update.Handicaps) { Player p = GetPlayerByID(u.Key); if (p != null) { p.Handicap = u.Value; if (PlayerInfoUpdated != null) { PlayerInfoUpdated.Invoke(this, p); } } } }
public void HandlePlayerInfo(NetworkMessage msg) { MsgPlayerInfo info = msg as MsgPlayerInfo; foreach (var p in info.PlayerUpdates) { Player player = GetPlayerByID(p.PlayerID); if (player != null) { player.Attributes = p.Attributes; if (PlayerInfoUpdated != null) { PlayerInfoUpdated.Invoke(this, player); } } } }
public void HandleScoreUpdate(NetworkMessage msg) { MsgScore sc = msg as MsgScore; Player player = GetPlayerByID(sc.PlayerID); if (player == null) { return; } player.Wins = sc.Wins; player.Losses = sc.Losses; player.TeamKills = sc.TeamKills; if (PlayerInfoUpdated != null) { PlayerInfoUpdated.Invoke(this, player); } }
public void UpdatePlayer(Player player) { lock (State) { var newPlayers = State.Players.ToList(); newPlayers[newPlayers.FindIndex(x => x.Id == player.Id)] = player; State.Players = newPlayers.ToArray(); } NotifyPropertyChanged(nameof(State)); var @event = new Event(); @event.Type = Event.EventType.PlayerUpdated; @event.ChangedObject = player; BroadcastToAllClients(new Packet(@event)); PlayerInfoUpdated?.Invoke(player); }
private async Task ReadAsync() { await Task.Run(() => { using (var fileStream = new FileStream(_currentJournalFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (StreamReader file = new StreamReader(fileStream)) using (JsonTextReader reader = new JsonTextReader(file)) { reader.SupportMultipleContent = true; var jsonSerializer = new JsonSerializer(); DateTime newestEventTime = _latestEventTime; dynamic logEvent = null; while (reader.Read()) { logEvent = jsonSerializer.Deserialize(reader); if (logEvent != null && (_latestEventTime == null || logEvent.timestamp > _latestEventTime)) { HandleLogEvent(logEvent); } } if (logEvent != null) { _latestEventTime = logEvent.timestamp; } } // Fire events for new information if (_isPlayerInfoChanged) { PlayerInfoUpdated?.Invoke(this, Log); _isPlayerInfoChanged = false; } if (_isLocationChanged) { LocationUpdated?.Invoke(this, Log); _isLocationChanged = false; } }); }
/// <summary> /// Updates player info and raises the appropiate events. /// </summary> public void UpdatePlayerInfo(ActivePlayer updatedPlayerInfo) { PlayerInfo = updatedPlayerInfo; PlayerInfoUpdated?.Invoke(updatedPlayerInfo); }
private void reader_PlayerInfoUpdated(object sender, EDLog e) { PlayerInfoUpdated?.Invoke(this, e.Player); }