diff --git a/AUCapture-WPF/Controls/PlayerControl.xaml b/AUCapture-WPF/Controls/PlayerControl.xaml index 0f9bbf57..d68ca171 100644 --- a/AUCapture-WPF/Controls/PlayerControl.xaml +++ b/AUCapture-WPF/Controls/PlayerControl.xaml @@ -10,6 +10,7 @@ + @@ -29,7 +30,10 @@ - + + + + { this.BeginInvoke((w) => @@ -181,15 +183,24 @@ public MainWindow() //ApplyDarkMode(); } + private void PlayersOnCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) + { + AmongUsCapture.Settings.conInterface.WriteModuleTextColored("Players", Color.Aqua, JsonConvert.SerializeObject(e, Formatting.None,new StringEnumConverter())); + } + private void OnPlayerCosmeticChanged(object? sender, PlayerCosmeticChangedEventArgs e) { - var player = context.Players.First(x => x.Name == e.Name); - Console.WriteLine("Cosmetic change"); - Dispatcher.Invoke((Action) (() => + if (context.Players.Any(x => x.Name == e.Name)) { - player.HatID = e.HatId; - player.PantsID = e.SkinId; - })); + var player = context.Players.First(x => x.Name == e.Name); + Console.WriteLine("Cosmetic change"); + Dispatcher.Invoke((Action) (() => + { + player.HatID = e.HatId; + player.PantsID = e.SkinId; + })); + } + } private void SocketOnOnDisconnected(object? sender, EventArgs e) @@ -354,7 +365,10 @@ private void OnGameOver(object? sender, GameOverEventArgs e) { Dispatcher.Invoke((Action) (() => { - context.Players.Clear(); //Clear players because game is over + foreach (var player in context.Players) + { + player.Alive = true; + } })); } @@ -370,9 +384,9 @@ private void UserForm_PlayerChanged(object sender, PlayerChangedEventArgs e) } else { - if (e.Action != PlayerAction.Joined && context.Players.Any(x => x.Name == e.Name)) + if (e.Action != PlayerAction.Joined && context.Players.Any(x => x.Name == e.Name || x.Color==e.Color)) { - var player = context.Players.First(x => x.Name == e.Name); + var player = context.Players.First(x => x.Name == e.Name || x.Color == e.Color); Dispatcher.Invoke((Action) (() => { switch (e.Action) @@ -395,14 +409,19 @@ private void UserForm_PlayerChanged(object sender, PlayerChangedEventArgs e) } else { - Dispatcher.Invoke((Action) (() => + if (e.Action == PlayerAction.Joined) { - context.Players.Add(new Player(e.Name, e.Color, !e.IsDead, 0, 0)); - })); + Dispatcher.Invoke((Action) (() => + { + context.Players.Add(new Player(e.Name, e.Color, !e.IsDead, 0, 0)); + + })); + } + } } - //Program.conInterface.WriteModuleTextColored("GameMemReader", Color.Green, e.Name + ": " + e.Action); + AmongUsCapture.Settings.conInterface.WriteModuleTextColored("GameMemReader", Color.Green, e.Name + ": " + e.Action); } private void OnChatMessageAdded(object sender, ChatMessageEventArgs e) @@ -565,7 +584,13 @@ private void GameStateChangedHandler(object sender, GameStateChangedEventArgs e) Dispatcher.Invoke((Action) (() => { context.GameState = e.NewState; - context.Players.Clear(); //Clear players because game is over + })); + } + else if (e.NewState == GameState.LOBBY) + { + Dispatcher.Invoke((Action) (() => + { + context.GameState = e.NewState; })); } //Program.conInterface.WriteModuleTextColored("GameMemReader", Color.Green, "State changed to " + e.NewState);