예제 #1
0
        private void UpdatePlayerListPlayer(Data.PlayerInfo playerInfo)
        {
            var idx = FindPlayerListIndex(playerInfo.EntityID);

            if (idx == -1)
            {
                var newPlayer = new PlayerListViewItem(playerInfo.EntityID, playerInfo.State.Name, playerInfo.State.Team, playerInfo.State.Team != Team.Spectate && !playerInfo.State.IsAlive)
                {
                    Used = true
                };

                _playerList.Add(newPlayer);
            }
            else
            {
                var existingPlayer = _playerList[idx];

                existingPlayer.Name = playerInfo.State.Name;

                if (existingPlayer.Team != playerInfo.State.Team)
                {
                    existingPlayer.Team = playerInfo.State.Team;
                    ICollectionView view = CollectionViewSource.GetDefaultView(playersLV.ItemsSource);
                    view.Refresh();
                }

                existingPlayer.Dead = playerInfo.State.Team != Team.Spectate && !playerInfo.State.IsAlive;
                existingPlayer.Used = true;
            }
        }
예제 #2
0
        public void UpdatePlayer(Data.PlayerInfo player, DemoData demo)
        {
            var isSpectator = player.State.Team <= DemoInfo.Team.Spectate;

            if (isSpectator)
            {
                return;
            }

            var renderInfo = GetOrCreateRenderInfo(player.EntityID);
            var playerPos  = demo.WorldSpaceToMinimapSpace(new System.Windows.Vector(player.Position.PositionX, player.Position.PositionY));

            var selected    = SelectedPlayers.Contains(player.EntityID);
            var team        = player.State.Team;
            var fillColor   = GetFillColor(selected, team);
            var strokeColor = GetStrokeColor(selected, team);

            if (player.State.IsAlive)
            {
                renderInfo.PlayerPos.Visibility   = Visibility.Visible;
                renderInfo.PlayerSight.Visibility = Visibility.Visible;
                renderInfo.DeathPos.Visibility    = Visibility.Hidden;

                renderInfo.PlayerPos.Fill   = fillColor;
                renderInfo.PlayerPos.Stroke = strokeColor;

                Canvas.SetLeft(renderInfo.PlayerPos, playerPos.X - 15 / 2);
                Canvas.SetTop(renderInfo.PlayerPos, playerPos.Y - 15 / 2);

                var left   = playerPos + CreateVectorFromRotation(128, player.Position.ViewDirectionX - 45f);
                var right  = playerPos + CreateVectorFromRotation(128, player.Position.ViewDirectionX + 45f);
                var center = (left + right) / 2;

                renderInfo.playerSightBrush.StartPoint = new Point(playerPos.X, playerPos.Y);
                renderInfo.playerSightBrush.EndPoint   = new Point(center.X, center.Y);

                renderInfo.PlayerSight.Points[0] = new Point(playerPos.X, playerPos.Y);
                renderInfo.PlayerSight.Points[1] = new Point(left.X, left.Y);
                renderInfo.PlayerSight.Points[2] = new Point(right.X, right.Y);
            }
            else
            {
                renderInfo.PlayerPos.Visibility   = Visibility.Hidden;
                renderInfo.PlayerSight.Visibility = Visibility.Hidden;
                renderInfo.DeathPos.Visibility    = Visibility.Visible;

                renderInfo.DeathPos.Fill   = fillColor;
                renderInfo.DeathPos.Stroke = strokeColor;

                Canvas.SetLeft(renderInfo.DeathPos, playerPos.X);
                Canvas.SetTop(renderInfo.DeathPos, playerPos.Y);
            }
        }