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; } }
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); } }