public void ReloadPlayerMarkers() { _log.Information($"Refreshing player markers..."); // Look through all replays to get all players foreach (var replay in PreviewReplays) { IEnumerable <PlayerPreview> allPlayers; if (replay.BluePreviewPlayers != null) { allPlayers = replay.BluePreviewPlayers.Union(replay.RedPreviewPlayers); } else { allPlayers = replay.RedPreviewPlayers; } foreach (var player in allPlayers) { var matchedMarker = KnownPlayers.FirstOrDefault(x => x.Name.Equals(player.PlayerName, StringComparison.OrdinalIgnoreCase)); if (matchedMarker != null) { player.Marker = matchedMarker; } } } }
/// <summary> /// Adds a player who currently knows about this object /// - this is maintained for all server-spawned objects /// /// when an object broadcasts, it sends network messages /// to all players who currently know about this object /// </summary> /// <returns>true if previously an unknown object</returns> private bool AddKnownPlayer(PhysicsObj obj) { // only tracking players who know about this object if (!obj.IsPlayer) { Console.WriteLine($"{PhysicsObj.Name}.ObjectMaint.AddKnownPlayer({obj.Name}): tried to add a non-player"); return(false); } if (PhysicsObj.DatObject) { Console.WriteLine($"{PhysicsObj.Name}.ObjectMaint.AddKnownPlayer({obj.Name}): tried to add player for dat object"); return(false); } //Console.WriteLine($"{PhysicsObj.Name} ({PhysicsObj.ID:X8}).ObjectMaint.AddKnownPlayer({obj.Name})"); // TryAdd for existing keys still modifies collection? if (KnownPlayers.ContainsKey(obj.ID)) { return(false); } KnownPlayers.TryAdd(obj.ID, obj); return(true); }
public ReplayPreview CreateReplayPreview(FileResult file) { if (file == null) { throw new ArgumentNullException(nameof(file)); } ReplayPreview previewModel = new ReplayPreview(file.ReplayFile, file.FileInfo.CreationTime, SettingsManager.Settings.PlayerMarkerStyle, SettingsManager.Settings.RenameAction, file.IsNewFile); previewModel.IsSupported = SettingsManager.Executables.DoesVersionExist(previewModel.GameVersion); foreach (var bluePlayer in previewModel.BluePreviewPlayers) { bluePlayer.Marker = KnownPlayers.FirstOrDefault(x => x.Name.Equals(bluePlayer.PlayerName, StringComparison.OrdinalIgnoreCase)); } foreach (var redPlayer in previewModel.RedPreviewPlayers) { redPlayer.Marker = KnownPlayers.FirstOrDefault(x => x.Name.Equals(redPlayer.PlayerName, StringComparison.OrdinalIgnoreCase)); } return(previewModel); }
/// <summary> /// Intializes the player identification with CWSRestart /// </summary> /// <param name="c"></param> private static void EnablePlayerIdentification(CWSProtocol.Client c) { string database; if ((database = c.GetPlayersDatabase()) != null && c.SetPlayerIdentification(true)) { Helper.Settings.Instance.Logger.AddMessage(MessageType.INFO, String.Format("Playerdatabase: {0}", database)); knownPlayers = new KnownPlayers(database); knownPlayers.ClearConnectedPlayers(); foreach (KeyValuePair <string, MITMMessageHandler> kvp in ConnectedPlayers) { knownPlayers.AddConnectedPlayer(kvp.Value.IP, kvp.Value.Name); } #if DEBUG knownPlayers.AddKnownPlayer("192.168.178.1", "Name 1-1"); knownPlayers.AddKnownPlayer("192.168.178.2", "Name 2-2"); knownPlayers.AddKnownPlayer("192.168.178.2", "Name 3-2"); knownPlayers.AddKnownPlayer("192.168.178.3", "Name 4-3"); knownPlayers.AddKnownPlayer("192.168.178.3", "Name 5-3"); knownPlayers.AddKnownPlayer("192.168.178.5", "Name 6-5"); #endif } }
/// <summary> /// Clears all of the ObjMaint tables for an object /// </summary> private void RemoveAllObjects() { KnownObjects.Clear(); VisibleObjects.Clear(); DestructionQueue.Clear(); KnownPlayers.Clear(); VisibleTargets.Clear(); }
public List <KeyValuePair <uint, PhysicsObj> > GetKnownPlayersWhere(Func <KeyValuePair <uint, PhysicsObj>, bool> predicate) { rwLock.EnterReadLock(); try { return(KnownPlayers.Where(predicate).ToList()); } finally { rwLock.ExitReadLock(); } }
/// <summary> /// Removes a known player for this object /// </summary> public bool RemoveKnownPlayer(PhysicsObj obj) { //Console.WriteLine($"{PhysicsObj.Name} ({PhysicsObj.ID:X8}).ObjectMaint.RemoveKnownPlayer({obj.Name})"); rwLock.EnterReadLock(); try { return(KnownPlayers.Remove(obj.ID, out _)); } finally { rwLock.ExitReadLock(); } }
public void ShowExportReplayDataWindow(ReplayPreview preview) { _log.Information($"Showing Export Dialog..."); if (preview == null) { throw new ArgumentNullException(nameof(preview)); } var exportContext = new ExportContext() { Replays = new ReplayFile[] { FileResults[preview.Location].ReplayFile }, Markers = KnownPlayers.ToList() }; var exportDialog = new ExportReplayDataWindow() { Top = App.Current.MainWindow.Top + 50, Left = App.Current.MainWindow.Left + 50, DataContext = exportContext, }; exportDialog.ShowDialog(); }
/// <summary> /// Removes a known player for this object /// </summary> public bool RemoveKnownPlayer(PhysicsObj obj) { //Console.WriteLine($"{PhysicsObj.Name} ({PhysicsObj.ID:X8}).ObjectMaint.RemoveKnownPlayer({obj.Name})"); return(KnownPlayers.Remove(obj.ID)); }