Пример #1
0
        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;
                    }
                }
            }
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        /// <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
            }
        }
Пример #5
0
 /// <summary>
 /// Clears all of the ObjMaint tables for an object
 /// </summary>
 private void RemoveAllObjects()
 {
     KnownObjects.Clear();
     VisibleObjects.Clear();
     DestructionQueue.Clear();
     KnownPlayers.Clear();
     VisibleTargets.Clear();
 }
Пример #6
0
 public List <KeyValuePair <uint, PhysicsObj> > GetKnownPlayersWhere(Func <KeyValuePair <uint, PhysicsObj>, bool> predicate)
 {
     rwLock.EnterReadLock();
     try
     {
         return(KnownPlayers.Where(predicate).ToList());
     }
     finally
     {
         rwLock.ExitReadLock();
     }
 }
Пример #7
0
        /// <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();
            }
        }
Пример #8
0
        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();
        }
Пример #9
0
        /// <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));
        }