From 81cf8e02b416d6bac5e79e7b7e43177df5083c51 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Sun, 17 Sep 2023 14:19:08 -0500 Subject: [PATCH 01/10] Fix stream sync when teams is enabled --- TournamentAssistantUI/UI/MatchPage.xaml.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/TournamentAssistantUI/UI/MatchPage.xaml.cs b/TournamentAssistantUI/UI/MatchPage.xaml.cs index 68cdbf4e..27dcec04 100644 --- a/TournamentAssistantUI/UI/MatchPage.xaml.cs +++ b/TournamentAssistantUI/UI/MatchPage.xaml.cs @@ -276,8 +276,7 @@ await Dispatcher.InvokeAsync(() => private void UpdateTeamsGrid(Match match) { - var playersInMatch = match.AssociatedUsers.Where(x => MainPage.Client.GetUserByGuid(x)?.ClientType == User.ClientTypes.Player).Select(MainPage.Client.GetUserByGuid); - var teamsInMatch = playersInMatch.Select(x => x.Team?.Id).Where(x => x != null).Distinct().Select(MainPage.Client.GetTeamByGuid); + var teamsInMatch = GetPlayersInMatch().Select(x => x.Team?.Id).Where(x => x != null).Distinct().Select(MainPage.Client.GetTeamByGuid); Dispatcher.Invoke(() => { @@ -574,8 +573,7 @@ private async Task SetUpAndPlaySong(bool useSync = false) { if (useSync) { - var playersInMatch = Match.AssociatedUsers.Where(x => MainPage.Client.GetUserByGuid(x).ClientType == User.ClientTypes.Player).Select(MainPage.Client.GetUserByGuid); - var teamsInMatch = playersInMatch.Select(x => x.Team?.Id).Where(x => x != null).Distinct().Select(MainPage.Client.GetTeamByGuid); + var teamsInMatch = GetPlayersInMatch().Select(x => x.Team?.Id).Where(x => x != null).Distinct().Select(MainPage.Client.GetTeamByGuid); _checkedTeams = teamsInMatch.Where(x => TeamNameIsCheckedInGrid(x.Name)).ToList(); } From e601f1804af3f913621474746955d5e44cba2da3 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Tue, 3 Oct 2023 18:03:23 -0500 Subject: [PATCH 02/10] Add password box for mock clients --- TournamentAssistantUI/Misc/MockClient.cs | 2 +- TournamentAssistantUI/UI/MockPage.xaml | 3 ++- TournamentAssistantUI/UI/MockPage.xaml.cs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/TournamentAssistantUI/Misc/MockClient.cs b/TournamentAssistantUI/Misc/MockClient.cs index f8ef71ab..035c3cc9 100644 --- a/TournamentAssistantUI/Misc/MockClient.cs +++ b/TournamentAssistantUI/Misc/MockClient.cs @@ -34,7 +34,7 @@ public class MockClient : SystemClient private static readonly Random random = new(); - public MockClient(string endpoint, int port, string username, string userId = "0") : base(endpoint, port, username, User.ClientTypes.Player, userId) + public MockClient(string endpoint, int port, string username, string userId = "0", string password = null) : base(endpoint, port, username, User.ClientTypes.Player, userId, password) { LoadedSong += MockClient_LoadedSong; PlaySong += MockClient_PlaySong; diff --git a/TournamentAssistantUI/UI/MockPage.xaml b/TournamentAssistantUI/UI/MockPage.xaml index 833c2fdb..3626c54b 100644 --- a/TournamentAssistantUI/UI/MockPage.xaml +++ b/TournamentAssistantUI/UI/MockPage.xaml @@ -20,6 +20,7 @@ + \ No newline at end of file diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs index b959a0a3..6e26b163 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs @@ -3,6 +3,8 @@ using System.Linq; using System.Windows.Controls; using System.Windows; +using TournamentAssistantShared.Models; +using MessagingToolkit.Barcode; namespace TournamentAssistantUI.UI.UserControls { @@ -11,25 +13,33 @@ namespace TournamentAssistantUI.UI.UserControls /// public partial class GameOverDialog : UserControl { - public class SongFinishedWithDistanceFromFirstPlayer : Push.SongFinished + public class SongFinishedWithDistanceFromFirstPlayerAndMisses : Push.SongFinished { public int Distance { get; set; } + public int Misses { get; set; } } - public List Results { get; set; } + public List Results { get; set; } + private Dictionary latestRealtimeScores { get; set; } - public GameOverDialog(List results) + public GameOverDialog(List results, Dictionary latestScores) { + latestRealtimeScores = latestScores ?? new Dictionary(); + var orderedResults = results.OrderByDescending(x => x.Score); var firstPlace = orderedResults.First(); - Results = orderedResults.Select(x => new SongFinishedWithDistanceFromFirstPlayer - { - Beatmap = x.Beatmap, - Player = x.Player, - Score = x.Score, - Type = x.Type, - Distance = x.Score - firstPlace.Score, + Results = orderedResults.Select(x => { + latestRealtimeScores.TryGetValue(x.Player.Guid, out var lastRealtimeScore); + return new SongFinishedWithDistanceFromFirstPlayerAndMisses + { + Beatmap = x.Beatmap, + Player = x.Player, + Score = x.Score, + Type = x.Type, + Distance = x.Score - firstPlace.Score, + Misses = lastRealtimeScore?.notesMissed ?? 0 + }; }).ToList(); DataContext = this; @@ -46,5 +56,23 @@ private void Copy_Click(object _, RoutedEventArgs __) Clipboard.SetText(copyToClipboard); } + + private void SortByMisses_Checked(object sender, RoutedEventArgs e) + { + Dispatcher.Invoke(() => + { + Results = Results.OrderByDescending(x => x.Misses).ToList(); + PlayerListBox.ItemsSource = Results; + }); + } + + private void SortByMissesCheckbox_Unchecked(object sender, RoutedEventArgs e) + { + Dispatcher.Invoke(() => + { + Results = Results.OrderByDescending(x => x.Score).ToList(); + PlayerListBox.ItemsSource = Results; + }); + } } } From 5de827e190ddf4a769f18033fabc66240db40054 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Wed, 1 Nov 2023 23:14:36 -0500 Subject: [PATCH 04/10] Don't ask --- TournamentAssistantUI/UI/MockPage.xaml.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TournamentAssistantUI/UI/MockPage.xaml.cs b/TournamentAssistantUI/UI/MockPage.xaml.cs index aa0a6089..b0fe2d23 100644 --- a/TournamentAssistantUI/UI/MockPage.xaml.cs +++ b/TournamentAssistantUI/UI/MockPage.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -131,6 +132,10 @@ private void Connect_Click(object sender, RoutedEventArgs e) private void Disconnect_Click(object sender, RoutedEventArgs e) { mockPlayers.ForEach(x => x.Shutdown()); + foreach (var player in mockPlayers) { + player.Shutdown(); + Thread.Sleep(500); + } } private static string GenerateName(int desiredLength = -1) From 08a22a4b7f46243597ee5bbda5d117041bbbfab1 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Sun, 12 Nov 2023 21:22:15 -0600 Subject: [PATCH 05/10] Quick hack to fix crash on rapid disconnect. Already implemented properly in rewrite branch --- TournamentAssistantCore/StateManager.cs | 223 ++++++++++++++++++++++++ TournamentAssistantCore/SystemServer.cs | 193 ++------------------ 2 files changed, 237 insertions(+), 179 deletions(-) create mode 100644 TournamentAssistantCore/StateManager.cs diff --git a/TournamentAssistantCore/StateManager.cs b/TournamentAssistantCore/StateManager.cs new file mode 100644 index 00000000..176c79e1 --- /dev/null +++ b/TournamentAssistantCore/StateManager.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using TournamentAssistantShared.Models; +using TournamentAssistantShared.Models.Packets; +using TournamentAssistantShared.Utilities; + +namespace TournamentAssistantCore +{ + internal class StateManager + { + public event Func UserConnected; + public event Func UserDisconnected; + public event Func UserInfoUpdated; + public event Func MatchInfoUpdated; + public event Func MatchCreated; + public event Func MatchDeleted; + + //Tournament State can be modified by ANY client thread, so definitely needs thread-safe accessing + private State State { get; set; } + private SystemServer Server { get; set; } + + public StateManager(SystemServer server) + { + State = new State(); + + Server = server; + } + + public List GetUsers() + { + lock (State.Users) + { + return State.Users.ToList(); + } + } + + public User GetUserById(string guid) + { + lock (State.Users) + { + return State.Users.FirstOrDefault(x => x.Guid == guid.ToString()); + } + } + + public List GetMatches() + { + lock (State.Matches) + { + return State.Matches.ToList(); + } + } + + public List GetServers() + { + lock (State.KnownHosts) + { + return State.KnownHosts.ToList(); + } + } + + #region EventManagement + public async Task AddUser(User user) + { + lock (State.Users) + { + State.Users.Add(user); + } + + var @event = new Event + { + user_added_event = new Event.UserAddedEvent + { + User = user + } + }; + + await Server.BroadcastToAllClients(new Packet + { + Event = @event + }); + + if (UserConnected != null) await UserConnected.Invoke(user); + } + + public async Task UpdateUser(User user) + { + lock (State.Users) + { + var userToReplace = State.Users.FirstOrDefault(x => x.UserEquals(user)); + State.Users.Remove(userToReplace); + State.Users.Add(user); + } + + var @event = new Event + { + user_updated_event = new Event.UserUpdatedEvent + { + User = user + } + }; + await Server.BroadcastToAllClients(new Packet + { + Event = @event + }); + + if (UserInfoUpdated != null) await UserInfoUpdated.Invoke(user); + } + + public async Task RemoveUser(User user) + { + User userToRemove; + lock (State.Users) + { + userToRemove = State.Users.FirstOrDefault(x => x.UserEquals(user)); + if (userToRemove == null) + { + return; + } + State.Users.Remove(userToRemove); + } + + var @event = new Event + { + user_left_event = new Event.UserLeftEvent + { + User = user + } + }; + + await Server.BroadcastToAllClients(new Packet + { + Event = @event + }); + + for (int i = 0; i < State.Matches.Count; i++) + { + var m = State.Matches[i]; + if (m.AssociatedUsers.Contains(userToRemove.Guid)) + { + m.AssociatedUsers.RemoveAll((x) => x == userToRemove.Guid); + await UpdateMatch(m); + } + } + + if (UserDisconnected != null) await UserDisconnected.Invoke(user); + } + + public async Task CreateMatch(Match match) + { + lock (State.Matches) + { + State.Matches.Add(match); + } + + var @event = new Event + { + match_created_event = new Event.MatchCreatedEvent + { + Match = match + } + }; + await Server.BroadcastToAllClients(new Packet + { + Event = @event + }); + + if (MatchCreated != null) await MatchCreated.Invoke(match); + } + + public async Task UpdateMatch(Match match) + { + lock (State.Matches) + { + var matchToReplace = State.Matches.FirstOrDefault(x => x.MatchEquals(match)); + State.Matches.Remove(matchToReplace); + State.Matches.Add(match); + } + + var @event = new Event + { + match_updated_event = new Event.MatchUpdatedEvent + { + Match = match + } + }; + + var updatePacket = new Packet + { + Event = @event + }; + + await Server.BroadcastToAllClients(updatePacket); + + if (MatchInfoUpdated != null) await MatchInfoUpdated.Invoke(match); + } + + public async Task DeleteMatch(Match match) + { + lock (State) + { + var matchToRemove = State.Matches.FirstOrDefault(x => x.MatchEquals(match)); + State.Matches.Remove(matchToRemove); + } + + var @event = new Event + { + match_deleted_event = new Event.MatchDeletedEvent + { + Match = match + } + }; + await Server.BroadcastToAllClients(new Packet + { + Event = @event + }); + + if (MatchDeleted != null) await MatchDeleted.Invoke(match); + } + #endregion EventManagement + } +} \ No newline at end of file diff --git a/TournamentAssistantCore/SystemServer.cs b/TournamentAssistantCore/SystemServer.cs index 63f055be..de11ad05 100644 --- a/TournamentAssistantCore/SystemServer.cs +++ b/TournamentAssistantCore/SystemServer.cs @@ -57,6 +57,8 @@ public State State public User Self { get; set; } + private StateManager StateManager { get; set; } + public QualifierBot QualifierBot { get; private set; } public Discord.Database.QualifierDatabaseContext Database { get; private set; } @@ -238,6 +240,8 @@ public async void Start() Database = service.DatabaseContext; } + StateManager = new StateManager(this); + //Translate Event and Songs from database to model format var events = Database.Events.Where(x => !x.Old); Func> getSongsForEvent = (string eventId) => @@ -432,10 +436,10 @@ private async Task Server_ClientDisconnected(ConnectedUser client) { Logger.Debug("Client Disconnected!"); - var user = State.Users.FirstOrDefault(x => x.Guid == client.id.ToString()); + var user = StateManager.GetUserById(client.id.ToString()); if (user != null) { - await RemoveUser(user).ConfigureAwait(false); + await StateManager.RemoveUser(user).ConfigureAwait(false); } } @@ -514,7 +518,7 @@ public async Task ForwardTo(Guid[] ids, Guid from, Packet packet) await server.Send(ids, new PacketWrapper(packet)); } - private async Task BroadcastToAllClients(Packet packet) + public async Task BroadcastToAllClients(Packet packet) { packet.From = Self.Guid; Logger.Debug($"Sending data: {LogPacket(packet)}"); @@ -522,175 +526,6 @@ private async Task BroadcastToAllClients(Packet packet) } #region EventManagement - - public async Task AddUser(User user) - { - lock (State) - { - State.Users.Add(user); - } - - NotifyPropertyChanged(nameof(State)); - - var @event = new Event - { - user_added_event = new Event.UserAddedEvent - { - User = user - } - }; - await BroadcastToAllClients(new Packet - { - Event = @event - }); - - if (UserConnected != null) await UserConnected.Invoke(user); - } - - public async Task UpdateUser(User user) - { - lock (State) - { - var userToReplace = State.Users.FirstOrDefault(x => x.UserEquals(user)); - State.Users.Remove(userToReplace); - State.Users.Add(user); - } - - NotifyPropertyChanged(nameof(State)); - - var @event = new Event - { - user_updated_event = new Event.UserUpdatedEvent - { - User = user - } - }; - await BroadcastToAllClients(new Packet - { - Event = @event - }); - - if (UserInfoUpdated != null) await UserInfoUpdated.Invoke(user); - } - - public async Task RemoveUser(User user) - { - User userToRemove; - lock (State) - { - userToRemove = State.Users.FirstOrDefault(x => x.UserEquals(user)); - if (userToRemove == null) - { - return; - } - State.Users.Remove(userToRemove); - } - NotifyPropertyChanged(nameof(State)); - - var @event = new Event - { - user_left_event = new Event.UserLeftEvent - { - User = user - } - }; - - await BroadcastToAllClients(new Packet - { - Event = @event - }); - - for (int i = 0; i < State.Matches.Count; i++) - { - var m = State.Matches[i]; - if (m.AssociatedUsers.Contains(userToRemove.Guid)) - { - m.AssociatedUsers.RemoveAll((x) => x == userToRemove.Guid); - await UpdateMatch(m).ConfigureAwait(false); - } - } - - if (UserDisconnected != null) await UserDisconnected.Invoke(user); - } - - public async Task CreateMatch(Match match) - { - lock (State) - { - State.Matches.Add(match); - } - - NotifyPropertyChanged(nameof(State)); - - var @event = new Event - { - match_created_event = new Event.MatchCreatedEvent - { - Match = match - } - }; - await BroadcastToAllClients(new Packet - { - Event = @event - }); - - if (MatchCreated != null) await MatchCreated.Invoke(match); - } - - public async Task UpdateMatch(Match match) - { - lock (State) - { - var matchToReplace = State.Matches.FirstOrDefault(x => x.MatchEquals(match)); - State.Matches.Remove(matchToReplace); - State.Matches.Add(match); - } - - NotifyPropertyChanged(nameof(State)); - - var @event = new Event - { - match_updated_event = new Event.MatchUpdatedEvent - { - Match = match - } - }; - - var updatePacket = new Packet - { - Event = @event - }; - - await BroadcastToAllClients(updatePacket); - - if (MatchInfoUpdated != null) await MatchInfoUpdated.Invoke(match); - } - - public async Task DeleteMatch(Match match) - { - lock (State) - { - var matchToRemove = State.Matches.FirstOrDefault(x => x.MatchEquals(match)); - State.Matches.Remove(matchToRemove); - } - - NotifyPropertyChanged(nameof(State)); - - var @event = new Event - { - match_deleted_event = new Event.MatchDeletedEvent - { - Match = match - } - }; - await BroadcastToAllClients(new Packet - { - Event = @event - }); - - if (MatchDeleted != null) await MatchDeleted.Invoke(match); - } - public async Task SendCreateQualifierEvent(CoreServer host, QualifierEvent qualifierEvent) { if (host.CoreServerEquals(ServerSelf)) @@ -1199,7 +1034,7 @@ private async Task Server_PacketReceived(ConnectedUser user, Packet packet) else if (string.IsNullOrWhiteSpace(settings.Password) || connect.Password == settings.Password) { connect.User.Guid = user.id.ToString(); - await AddUser(connect.User); + await StateManager.AddUser(connect.User); //Give the newly connected player their Self and State await Send(user.id, new Packet @@ -1310,22 +1145,22 @@ await ForwardTo(forwardingPacket.ForwardToes.Select(x => Guid.Parse(x)).ToArray( switch (@event.ChangedObjectCase) { case Event.ChangedObjectOneofCase.match_created_event: - await CreateMatch(@event.match_created_event.Match); + await StateManager.CreateMatch(@event.match_created_event.Match); break; case Event.ChangedObjectOneofCase.match_updated_event: - await UpdateMatch(@event.match_updated_event.Match); + await StateManager.UpdateMatch(@event.match_updated_event.Match); break; case Event.ChangedObjectOneofCase.match_deleted_event: - await DeleteMatch(@event.match_deleted_event.Match); + await StateManager.DeleteMatch(@event.match_deleted_event.Match); break; case Event.ChangedObjectOneofCase.user_added_event: - await AddUser(@event.user_added_event.User); + await StateManager.AddUser(@event.user_added_event.User); break; case Event.ChangedObjectOneofCase.user_updated_event: - await UpdateUser(@event.user_updated_event.User); + await StateManager.UpdateUser(@event.user_updated_event.User); break; case Event.ChangedObjectOneofCase.user_left_event: - await RemoveUser(@event.user_left_event.User); + await StateManager.RemoveUser(@event.user_left_event.User); break; case Event.ChangedObjectOneofCase.qualifier_created_event: var createResponse = await CreateQualifierEvent(@event.qualifier_created_event.Event); From 5794f8df3e27c7d5b7df32a29b116f61c83e64b2 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Thu, 7 Dec 2023 19:53:27 -0600 Subject: [PATCH 06/10] Fix the quick hack --- TournamentAssistantCore/StateManager.cs | 60 ++++++++++++------------- TournamentAssistantCore/SystemServer.cs | 7 --- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/TournamentAssistantCore/StateManager.cs b/TournamentAssistantCore/StateManager.cs index 176c79e1..bdce8223 100644 --- a/TournamentAssistantCore/StateManager.cs +++ b/TournamentAssistantCore/StateManager.cs @@ -17,55 +17,51 @@ internal class StateManager public event Func MatchCreated; public event Func MatchDeleted; - //Tournament State can be modified by ANY client thread, so definitely needs thread-safe accessing - private State State { get; set; } private SystemServer Server { get; set; } public StateManager(SystemServer server) { - State = new State(); - Server = server; } public List GetUsers() { - lock (State.Users) + lock (Server.State.Users) { - return State.Users.ToList(); + return Server.State.Users.ToList(); } } public User GetUserById(string guid) { - lock (State.Users) + lock (Server.State.Users) { - return State.Users.FirstOrDefault(x => x.Guid == guid.ToString()); + return Server.State.Users.FirstOrDefault(x => x.Guid == guid.ToString()); } } public List GetMatches() { - lock (State.Matches) + lock (Server.State.Matches) { - return State.Matches.ToList(); + return Server.State.Matches.ToList(); } } public List GetServers() { - lock (State.KnownHosts) + lock (Server.State.KnownHosts) { - return State.KnownHosts.ToList(); + return Server.State.KnownHosts.ToList(); } } #region EventManagement public async Task AddUser(User user) { - lock (State.Users) + lock (Server.State.Users) { - State.Users.Add(user); + Server.State.Users.Add(user); } var @event = new Event @@ -86,11 +82,11 @@ await Server.BroadcastToAllClients(new Packet public async Task UpdateUser(User user) { - lock (State.Users) + lock (Server.State.Users) { - var userToReplace = State.Users.FirstOrDefault(x => x.UserEquals(user)); - State.Users.Remove(userToReplace); - State.Users.Add(user); + var userToReplace = Server.State.Users.FirstOrDefault(x => x.UserEquals(user)); + Server.State.Users.Remove(userToReplace); + Server.State.Users.Add(user); } var @event = new Event @@ -111,14 +107,14 @@ await Server.BroadcastToAllClients(new Packet public async Task RemoveUser(User user) { User userToRemove; - lock (State.Users) + lock (Server.State.Users) { - userToRemove = State.Users.FirstOrDefault(x => x.UserEquals(user)); + userToRemove = Server.State.Users.FirstOrDefault(x => x.UserEquals(user)); if (userToRemove == null) { return; } - State.Users.Remove(userToRemove); + Server.State.Users.Remove(userToRemove); } var @event = new Event @@ -134,9 +130,9 @@ await Server.BroadcastToAllClients(new Packet Event = @event }); - for (int i = 0; i < State.Matches.Count; i++) + for (int i = 0; i < Server.State.Matches.Count; i++) { - var m = State.Matches[i]; + var m = Server.State.Matches[i]; if (m.AssociatedUsers.Contains(userToRemove.Guid)) { m.AssociatedUsers.RemoveAll((x) => x == userToRemove.Guid); @@ -149,9 +145,9 @@ await Server.BroadcastToAllClients(new Packet public async Task CreateMatch(Match match) { - lock (State.Matches) + lock (Server.State.Matches) { - State.Matches.Add(match); + Server.State.Matches.Add(match); } var @event = new Event @@ -171,11 +167,11 @@ await Server.BroadcastToAllClients(new Packet public async Task UpdateMatch(Match match) { - lock (State.Matches) + lock (Server.State.Matches) { - var matchToReplace = State.Matches.FirstOrDefault(x => x.MatchEquals(match)); - State.Matches.Remove(matchToReplace); - State.Matches.Add(match); + var matchToReplace = Server.State.Matches.FirstOrDefault(x => x.MatchEquals(match)); + Server.State.Matches.Remove(matchToReplace); + Server.State.Matches.Add(match); } var @event = new Event @@ -198,10 +194,10 @@ public async Task UpdateMatch(Match match) public async Task DeleteMatch(Match match) { - lock (State) + lock (Server.State.Matches) { - var matchToRemove = State.Matches.FirstOrDefault(x => x.MatchEquals(match)); - State.Matches.Remove(matchToRemove); + var matchToRemove = Server.State.Matches.FirstOrDefault(x => x.MatchEquals(match)); + Server.State.Matches.Remove(matchToRemove); } var @event = new Event diff --git a/TournamentAssistantCore/SystemServer.cs b/TournamentAssistantCore/SystemServer.cs index de11ad05..18c7224f 100644 --- a/TournamentAssistantCore/SystemServer.cs +++ b/TournamentAssistantCore/SystemServer.cs @@ -26,13 +26,6 @@ public class SystemServer : INotifyPropertyChanged { Server server; - public event Func UserConnected; - public event Func UserDisconnected; - public event Func UserInfoUpdated; - public event Func MatchInfoUpdated; - public event Func MatchCreated; - public event Func MatchDeleted; - public event Func PlayerFinishedSong; public event Func AckReceived; From 43ff7a4c906a1d091990ae191a0a929b37fa77e1 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Fri, 8 Dec 2023 21:14:04 -0600 Subject: [PATCH 07/10] Add song end time to results screen --- .../UI/FlowCoordinators/RoomCoordinator.cs | 4 +++- TournamentAssistantProtos | 2 +- TournamentAssistantShared/Constants.cs | 7 ++++--- .../UI/UserControls/GameOverDialog.xaml | 1 + .../UI/UserControls/GameOverDialog.xaml.cs | 12 ++++++------ 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs b/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs index 2d73f9e3..488d5dbb 100644 --- a/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs +++ b/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs @@ -588,7 +588,9 @@ public void SongFinished(StandardLevelScenesTransitionSetupDataSO standardLevelS Difficulties = map.parentDifficultyBeatmapSet.difficultyBeatmaps.Select(x => (int)x.difficulty).ToArray() } }, - Score = results.modifiedScore + Score = results.modifiedScore, + Misses = results.missedCount, + EndTime = results.endSongTime }; if (results.levelEndStateType == LevelCompletionResults.LevelEndStateType.Cleared) diff --git a/TournamentAssistantProtos b/TournamentAssistantProtos index 5d0eba23..ca742a4b 160000 --- a/TournamentAssistantProtos +++ b/TournamentAssistantProtos @@ -1 +1 @@ -Subproject commit 5d0eba234584c903e43894500b2f82842929edb9 +Subproject commit ca742a4bc946046db36828f89dc0e01dfafd6a16 diff --git a/TournamentAssistantShared/Constants.cs b/TournamentAssistantShared/Constants.cs index 605d4d2f..b4fe94b4 100644 --- a/TournamentAssistantShared/Constants.cs +++ b/TournamentAssistantShared/Constants.cs @@ -8,8 +8,8 @@ namespace TournamentAssistantShared public static class Constants { public const string NAME = "TournamentAssistant"; - public const string VERSION = "0.7.4"; - public const int VERSION_CODE = 074; + public const string VERSION = "0.7.8"; + public const int VERSION_CODE = 078; public const string MASTER_SERVER = "tournamentassistant.net"; public const string Changelog = "0.0.1: Begin assembling UI for coordinator panels\n" + @@ -64,7 +64,8 @@ public static class Constants "0.7.0: Some server synchronization fixes, for players and users that means more stability\n" + "0.7.3: Update for 1.29.1\n" + "0.7.4: Score update fix\n" + - "0.7.5: Add ability for players to select Pro Mode"; + "0.7.5: Add ability for players to select Pro Mode\n" + + "0.7.8: Added song end time to results"; public enum BeatmapDifficulty { diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml index 87e57e93..c0742e58 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml @@ -37,6 +37,7 @@ + diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs index 6e26b163..c1373846 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs @@ -13,13 +13,12 @@ namespace TournamentAssistantUI.UI.UserControls /// public partial class GameOverDialog : UserControl { - public class SongFinishedWithDistanceFromFirstPlayerAndMisses : Push.SongFinished + public class SongFinishedWithDistanceFromFirstPlayer : Push.SongFinished { public int Distance { get; set; } - public int Misses { get; set; } } - public List Results { get; set; } + public List Results { get; set; } private Dictionary latestRealtimeScores { get; set; } public GameOverDialog(List results, Dictionary latestScores) @@ -30,15 +29,16 @@ public GameOverDialog(List results, Dictionary { - latestRealtimeScores.TryGetValue(x.Player.Guid, out var lastRealtimeScore); - return new SongFinishedWithDistanceFromFirstPlayerAndMisses + // latestRealtimeScores.TryGetValue(x.Player.Guid, out var lastRealtimeScore); + return new SongFinishedWithDistanceFromFirstPlayer { Beatmap = x.Beatmap, Player = x.Player, Score = x.Score, Type = x.Type, Distance = x.Score - firstPlace.Score, - Misses = lastRealtimeScore?.notesMissed ?? 0 + Misses = x.Misses, + EndTime = x.EndTime }; }).ToList(); From 133889856d1d665632ed0339ce75dbde01bcafdc Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Thu, 27 Jun 2024 19:20:31 -0500 Subject: [PATCH 08/10] Added bad cuts to songfinished --- .../UI/FlowCoordinators/RoomCoordinator.cs | 2 + .../PublishProfiles/Docker.pubxml.user | 3 +- TournamentAssistantProtos | 2 +- TournamentAssistantShared/Constants.cs | 7 +- .../UI/UserControls/GameOverDialogTeams.xaml | 4 + .../UserControls/GameOverDialogTeams.xaml.cs | 9 +++ vagueNotes.txt | 75 +++++++++++++++++++ 7 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 vagueNotes.txt diff --git a/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs b/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs index 488d5dbb..6e563091 100644 --- a/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs +++ b/TournamentAssistant/UI/FlowCoordinators/RoomCoordinator.cs @@ -590,6 +590,8 @@ public void SongFinished(StandardLevelScenesTransitionSetupDataSO standardLevelS }, Score = results.modifiedScore, Misses = results.missedCount, + BadCuts = results.badCutsCount, + GoodCuts = results.goodCutsCount, EndTime = results.endSongTime }; diff --git a/TournamentAssistantCore/Properties/PublishProfiles/Docker.pubxml.user b/TournamentAssistantCore/Properties/PublishProfiles/Docker.pubxml.user index 293b2f36..e53a0329 100644 --- a/TournamentAssistantCore/Properties/PublishProfiles/Docker.pubxml.user +++ b/TournamentAssistantCore/Properties/PublishProfiles/Docker.pubxml.user @@ -5,6 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAgLk4hF8hxkiQ4cN43iSg7QAAAAACAAAAAAAQZgAAAAEAACAAAAC8Sc4fYUa+pPv8FqV9y4fAc+xCbmMWjHaWkNO2FxOrAAAAAAAOgAAAAAIAACAAAACLSwjFK4hPrz9yiKpBuF376VK8+p17OSWwOPXgmYTbaCAAAACrSl4IwcYt26VqOU9wOo+potPvZIb/NK6FmcDuKu2STkAAAABxh2+7mXLQT4WAOBdSLjvZkMrGLayMc/i4jtsXEoq9/6H3/x8fezQotV1AMNo1kEQygdlJZK6VEWzGySVJWPqy - True|2022-05-31T05:04:46.8734125Z;True|2022-05-24T18:10:10.9432816-05:00;True|2022-05-20T00:48:31.1875219-05:00;False|2022-05-20T00:36:09.3699887-05:00;True|2022-05-19T23:32:40.4898188-05:00;False|2022-05-19T23:29:05.2480570-05:00;True|2022-05-10T00:05:07.5292150-05:00;False|2022-05-10T00:02:10.1918955-05:00;True|2022-04-30T16:38:37.1271080-05:00;True|2022-04-30T16:29:18.9429794-05:00;False|2022-04-30T15:33:44.6878088-05:00;False|2022-04-30T15:30:26.1186139-05:00;False|2022-04-30T15:26:53.4525242-05:00;False|2022-04-30T15:25:34.9467241-05:00;False|2022-04-30T14:55:17.3885287-05:00;False|2022-04-30T14:39:42.4783680-05:00;False|2022-04-30T14:35:58.9702981-05:00;False|2022-04-30T14:23:28.3338839-05:00;False|2022-04-30T14:20:47.8025347-05:00;False|2022-04-30T14:10:49.7546588-05:00;False|2022-04-30T14:06:39.9156950-05:00;False|2022-04-30T13:59:27.1702334-05:00;False|2022-04-30T13:57:34.2037863-05:00;False|2022-04-30T13:45:03.5555315-05:00;False|2022-04-30T13:42:58.7480471-05:00;False|2022-04-30T13:42:33.4223134-05:00;False|2022-04-30T13:33:49.9959663-05:00;False|2022-04-30T01:11:15.8646243-05:00;False|2022-04-30T01:08:38.2080358-05:00;False|2022-04-30T01:05:43.1047108-05:00;False|2022-04-30T01:00:34.5274425-05:00;False|2022-04-30T00:53:49.0872590-05:00;False|2022-04-30T00:51:25.5073205-05:00;False|2022-04-30T00:50:48.7949266-05:00;False|2022-04-30T00:47:08.2989707-05:00;False|2022-04-30T00:46:50.6142024-05:00;False|2022-04-30T00:46:35.5329678-05:00;False|2022-04-30T00:45:28.0401932-05:00;False|2022-04-30T00:36:12.5530251-05:00;False|2022-04-30T00:30:44.8961474-05:00;False|2022-04-30T00:27:55.9635992-05:00;False|2022-04-30T00:26:30.2101687-05:00;False|2022-04-30T00:22:58.6204642-05:00;True|2021-08-13T20:40:00.8260412-05:00;False|2021-08-13T20:38:44.3992083-05:00;False|2021-08-13T20:36:58.0439107-05:00;False|2021-08-13T20:33:10.5051184-05:00;False|2021-08-13T20:27:53.2235208-05:00;False|2021-08-13T20:27:16.7369936-05:00;False|2021-08-13T20:26:25.6866293-05:00;False|2021-08-13T20:24:31.5457991-05:00;False|2021-08-13T20:24:13.4994144-05:00; + True|2024-06-28T00:18:33.5337402Z;True|2022-05-31T00:04:46.8734125-05:00;True|2022-05-24T18:10:10.9432816-05:00;True|2022-05-20T00:48:31.1875219-05:00;False|2022-05-20T00:36:09.3699887-05:00;True|2022-05-19T23:32:40.4898188-05:00;False|2022-05-19T23:29:05.2480570-05:00;True|2022-05-10T00:05:07.5292150-05:00;False|2022-05-10T00:02:10.1918955-05:00;True|2022-04-30T16:38:37.1271080-05:00;True|2022-04-30T16:29:18.9429794-05:00;False|2022-04-30T15:33:44.6878088-05:00;False|2022-04-30T15:30:26.1186139-05:00;False|2022-04-30T15:26:53.4525242-05:00;False|2022-04-30T15:25:34.9467241-05:00;False|2022-04-30T14:55:17.3885287-05:00;False|2022-04-30T14:39:42.4783680-05:00;False|2022-04-30T14:35:58.9702981-05:00;False|2022-04-30T14:23:28.3338839-05:00;False|2022-04-30T14:20:47.8025347-05:00;False|2022-04-30T14:10:49.7546588-05:00;False|2022-04-30T14:06:39.9156950-05:00;False|2022-04-30T13:59:27.1702334-05:00;False|2022-04-30T13:57:34.2037863-05:00;False|2022-04-30T13:45:03.5555315-05:00;False|2022-04-30T13:42:58.7480471-05:00;False|2022-04-30T13:42:33.4223134-05:00;False|2022-04-30T13:33:49.9959663-05:00;False|2022-04-30T01:11:15.8646243-05:00;False|2022-04-30T01:08:38.2080358-05:00;False|2022-04-30T01:05:43.1047108-05:00;False|2022-04-30T01:00:34.5274425-05:00;False|2022-04-30T00:53:49.0872590-05:00;False|2022-04-30T00:51:25.5073205-05:00;False|2022-04-30T00:50:48.7949266-05:00;False|2022-04-30T00:47:08.2989707-05:00;False|2022-04-30T00:46:50.6142024-05:00;False|2022-04-30T00:46:35.5329678-05:00;False|2022-04-30T00:45:28.0401932-05:00;False|2022-04-30T00:36:12.5530251-05:00;False|2022-04-30T00:30:44.8961474-05:00;False|2022-04-30T00:27:55.9635992-05:00;False|2022-04-30T00:26:30.2101687-05:00;False|2022-04-30T00:22:58.6204642-05:00;True|2021-08-13T20:40:00.8260412-05:00;False|2021-08-13T20:38:44.3992083-05:00;False|2021-08-13T20:36:58.0439107-05:00;False|2021-08-13T20:33:10.5051184-05:00;False|2021-08-13T20:27:53.2235208-05:00;False|2021-08-13T20:27:16.7369936-05:00;False|2021-08-13T20:26:25.6866293-05:00;False|2021-08-13T20:24:31.5457991-05:00;False|2021-08-13T20:24:13.4994144-05:00; + \ No newline at end of file diff --git a/TournamentAssistantProtos b/TournamentAssistantProtos index ca742a4b..a99348ff 160000 --- a/TournamentAssistantProtos +++ b/TournamentAssistantProtos @@ -1 +1 @@ -Subproject commit ca742a4bc946046db36828f89dc0e01dfafd6a16 +Subproject commit a99348ff6309de6f7a35dd623928d6e2fc463e05 diff --git a/TournamentAssistantShared/Constants.cs b/TournamentAssistantShared/Constants.cs index b4fe94b4..a25a6590 100644 --- a/TournamentAssistantShared/Constants.cs +++ b/TournamentAssistantShared/Constants.cs @@ -8,8 +8,8 @@ namespace TournamentAssistantShared public static class Constants { public const string NAME = "TournamentAssistant"; - public const string VERSION = "0.7.8"; - public const int VERSION_CODE = 078; + public const string VERSION = "0.7.9"; + public const int VERSION_CODE = 079; public const string MASTER_SERVER = "tournamentassistant.net"; public const string Changelog = "0.0.1: Begin assembling UI for coordinator panels\n" + @@ -65,7 +65,8 @@ public static class Constants "0.7.3: Update for 1.29.1\n" + "0.7.4: Score update fix\n" + "0.7.5: Add ability for players to select Pro Mode\n" + - "0.7.8: Added song end time to results"; + "0.7.8: Added song end time to results\n" + + "0.7.9: Added bad cuts to results"; public enum BeatmapDifficulty { diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml b/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml index 457a2469..e6e3c3c4 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml @@ -35,6 +35,10 @@ + + + + diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml.cs b/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml.cs index a9c7e804..ef8f7443 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml.cs +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialogTeams.xaml.cs @@ -17,6 +17,10 @@ public class TeamResult public Team Team { get; set; } public List<(User, int)> Players { get; set; } public int TotalScore { get; set; } = 0; + public int TotalMisses { get;set; } = 0; + public int TotalBadCuts { get; set; } = 0; + public int TotalGoodCuts { get; set; } = 0; + public int TotalNonGoodCuts { get; set; } = 0; public string IndividualScores { get @@ -52,6 +56,11 @@ public GameOverDialogTeams(List results) teamResult.Players.Add((x.Player, x.Score)); teamResult.TotalScore += x.Score; + teamResult.TotalMisses += x.Misses; + teamResult.TotalBadCuts += x.BadCuts; + teamResult.TotalGoodCuts += x.GoodCuts; + teamResult.TotalNonGoodCuts += x.BadCuts + x.Misses; + teamResult.TotalScore += x.Score; }); TeamResults = TeamResults.OrderByDescending(x => x.TotalScore).ToList(); diff --git a/vagueNotes.txt b/vagueNotes.txt new file mode 100644 index 00000000..f3850472 --- /dev/null +++ b/vagueNotes.txt @@ -0,0 +1,75 @@ +Vague notes: + +Better heartbeat stuff + - Looks like we don't have good handling for when the dns doesn't resolve to the correct ip + +We can leverage the auth plugin's stack trace verification / calling assembly signature verification +to more confidently assign userId and username as well as discord info for Players + +We should take extra care that final scores are signed w/stack trace + +Make the default T actually default and not just filler + +Might need to merge the Splash screens (If this was on the TAUI side, it's done) + +AuthorizationRequestedFromServer... Should that be a Request? later moon: I don't think so? + +I've disabled modals for now, until they can be revisited + +Fix antifail autorestart bug + +Add toggles for showing quals / tournaments + +Add popup on end qual for downloading scores + +WEIGHTING: Get score percentage, take player #1's score, divide percentage by 100, multiply rest of scores by result + + +TIPS, NOT TODO: + +Allow Transparency in OBS keeps qr codes (or color bars) from appearing + +AuthorizedUsers are not in state, so they don't update automatically + +Keep an eye on image size, and how that affects Join Response time + +Do not- DO NOT use await after getting a database object and before changing and saving it. In console apps, await +might resume on a different thread + +!!! - CURRENT POTENTIAL CRASH - !!! + IE: even if UpdateMatch() properly wraps match locking, + what's wrapping match.AssociatedUsers? There's probably more like it out there + + + + +Notes on generating new .pfx when necessary: + +FRONTEND: +1. Set up port forwarding and all that for 80,443 +2. `certbot certonly --standalone --key-type rsa` +3. `openssl pkcs12 -export -out certificate.pfx -inkey privateKey.pem -in certificate.pem` + +PLAYER: + +How to check certificate expiration date: + +1. `certutil -dump certificate.pfx` +OR +1. `openssl pkcs12 -in yourfile.pfx -passin pass:exportpassword -nokeys | openssl x509 -noout -dates` + +Notes on how to publish TAAuth: + +1. Build with ILRepack, without EAZFuscator +2. Find EAZFuscator executable in nuget package + (C:\Users\Moon\.nuget\packages\gapotchenko.eazfuscator.net\2023.1.427\tools) +3. Use command-line tool to obfuscate the dll + If it's expired, EAZFuscator stores its license info in HKCU\Identities\{0FE6CF32-23D2-4166-B147-20D4E86A8523}, so delete it + If there's a Microsoft.Net.SDK error, install .NET Build tools in any VS installations where it's missing +4. Use the trial remover on the resulting dll + + + +Testing notes: +4. Results didn't appear once +5. Token expiry during match causes havoc \ No newline at end of file From f6fc0e1f2d9ad4e6b5f9bb178f2cd07c976886b8 Mon Sep 17 00:00:00 2001 From: Moon <5924350+MatrikMoon@users.noreply.github.com> Date: Sat, 29 Jun 2024 13:29:26 -0500 Subject: [PATCH 09/10] Add extra info to results screen, clipboard --- .../UI/UserControls/GameOverDialog.xaml | 3 +++ .../UI/UserControls/GameOverDialog.xaml.cs | 14 +++++++++++- .../UserControls/GameOverDialogTeams.xaml.cs | 22 +++++++++---------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml index c0742e58..b88fdeac 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml @@ -37,6 +37,9 @@ + + + diff --git a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs index c1373846..dfe1dbe0 100644 --- a/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs +++ b/TournamentAssistantUI/UI/UserControls/GameOverDialog.xaml.cs @@ -15,6 +15,7 @@ public partial class GameOverDialog : UserControl { public class SongFinishedWithDistanceFromFirstPlayer : Push.SongFinished { + public int NonGoodCuts { get; set; } public int Distance { get; set; } } @@ -38,6 +39,9 @@ public GameOverDialog(List results, Dictionary Players { get; set; } + public List<(User, Push.SongFinished)> Players { get; set; } public int TotalScore { get; set; } = 0; public int TotalMisses { get;set; } = 0; public int TotalBadCuts { get; set; } = 0; @@ -27,7 +27,7 @@ public string IndividualScores { var rankIndex = 1; var totalScoreText = string.Empty; - Players.OrderByDescending(x => x.Item2).ToList().ForEach(x => totalScoreText += $"{rankIndex++}: {x.Item1.Name} - {x.Item2}\n"); + Players.OrderByDescending(x => x.Item2).ToList().ForEach(x => totalScoreText += $"{rankIndex++}: {x.Item1.Name} - {x.Item2.Score}\n"); return totalScoreText; } } @@ -49,12 +49,12 @@ public GameOverDialogTeams(List results) teamResult = new TeamResult() { Team = x.Player.Team, - Players = new List<(User, int)>() + Players = new List<(User, Push.SongFinished)>() }; TeamResults.Add(teamResult); } - teamResult.Players.Add((x.Player, x.Score)); + teamResult.Players.Add((x.Player, x)); teamResult.TotalScore += x.Score; teamResult.TotalMisses += x.Misses; teamResult.TotalBadCuts += x.BadCuts; @@ -72,17 +72,17 @@ public GameOverDialogTeams(List results) private void Copy_Click(object _, RoutedEventArgs __) { - var copyToClipboard = "RESULTS:\n"; + var copyToClipboard = "# RESULTS:\n"; var index = 1; foreach (var result in TeamResults) { - copyToClipboard += $"{index}: {result.Team.Name} - {result.TotalScore}\n"; - foreach (var player in result.Players) - { - copyToClipboard += $"\t\t{player.Item1.Name} - {player.Item2}\n"; - } - copyToClipboard += "\n"; + copyToClipboard += $"## {index}: {result.Team.Name}\n"; + copyToClipboard += $" - Score: {result.TotalScore}\n"; + copyToClipboard += $" - Misses: {result.TotalMisses}\n"; + copyToClipboard += $" - Bad Cuts: {result.TotalBadCuts}\n"; + copyToClipboard += $" - Good Cuts: {result.TotalGoodCuts}\n"; + copyToClipboard += $" - Non-Good Cuts: {result.TotalNonGoodCuts}\n\n"; } Clipboard.SetText(copyToClipboard); From b26d195de4d0b4e4eecc84efcc63d14f52428d2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 21:18:23 +0000 Subject: [PATCH 10/10] Bump System.Text.Json from 4.7.2 to 8.0.4 in /TournamentAssistantUI Bumps System.Text.Json from 4.7.2 to 8.0.4. --- updated-dependencies: - dependency-name: System.Text.Json dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .../TournamentAssistantUI.csproj | 25 +++++++++++-------- TournamentAssistantUI/packages.config | 10 ++++---- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/TournamentAssistantUI/TournamentAssistantUI.csproj b/TournamentAssistantUI/TournamentAssistantUI.csproj index f67faaf7..54d2c921 100644 --- a/TournamentAssistantUI/TournamentAssistantUI.csproj +++ b/TournamentAssistantUI/TournamentAssistantUI.csproj @@ -81,8 +81,9 @@ ..\packages\MessagingToolkit.Barcode.1.7.0.2\lib\net40\WPF\Any CPU\MessagingToolkit.Barcode.dll - - ..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.1\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll + + ..\packages/Microsoft.Bcl.AsyncInterfaces.8.0.0/lib/net462/Microsoft.Bcl.AsyncInterfaces.dll + True ..\packages\Microsoft.Bcl.HashCode.1.1.0\lib\net461\Microsoft.Bcl.HashCode.dll @@ -257,8 +258,9 @@ True True - - ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + ..\packages/System.Memory.4.5.5/lib/net461/System.Memory.dll + True ..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll @@ -284,8 +286,9 @@ True True - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + ..\packages/System.Runtime.CompilerServices.Unsafe.6.0.0/lib/net461/System.Runtime.CompilerServices.Unsafe.dll + True ..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll @@ -323,11 +326,13 @@ True - - ..\packages\System.Text.Encodings.Web.4.7.1\lib\net461\System.Text.Encodings.Web.dll + + ..\packages/System.Text.Encodings.Web.8.0.0/lib/net462/System.Text.Encodings.Web.dll + True - - ..\packages\System.Text.Json.4.7.2\lib\net461\System.Text.Json.dll + + ..\packages/System.Text.Json.8.0.4/lib/net462/System.Text.Json.dll + True ..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll diff --git a/TournamentAssistantUI/packages.config b/TournamentAssistantUI/packages.config index 023a15c7..0bffbae1 100644 --- a/TournamentAssistantUI/packages.config +++ b/TournamentAssistantUI/packages.config @@ -4,7 +4,7 @@ - + @@ -61,7 +61,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -84,8 +84,8 @@ - - + +