From 045adf90ca8c78cd17f121594c566aac09c9f7da Mon Sep 17 00:00:00 2001 From: Arci Date: Wed, 14 Aug 2024 00:26:21 +0200 Subject: [PATCH] Slightly simplified chat messages, fixed logout navigation, discarded unused parameters --- Client.UI/Utilities/VisulTreeExtension.cs | 20 +++++++++++++++++++ .../MainGame/ChatMessageViewModel.cs | 8 ++++++-- .../MainGame/ChatWindowViewModel.cs | 11 +++++----- .../ViewModels/MainGame/MainMenuViewModel.cs | 2 +- Client.UI/Views/Game/Chat.xaml | 15 +++++--------- Client.UI/Views/Game/MainMenu.xaml.cs | 10 ++++++++-- Client.UI/Views/User/CreateAccount.xaml.cs | 2 +- Client.UI/Views/User/Login.xaml.cs | 6 +++++- Client.UI/Views/User/UserListWindow.xaml.cs | 2 +- 9 files changed, 53 insertions(+), 23 deletions(-) create mode 100644 Client.UI/Utilities/VisulTreeExtension.cs diff --git a/Client.UI/Utilities/VisulTreeExtension.cs b/Client.UI/Utilities/VisulTreeExtension.cs new file mode 100644 index 0000000..91bbae9 --- /dev/null +++ b/Client.UI/Utilities/VisulTreeExtension.cs @@ -0,0 +1,20 @@ +using System.Windows; +using System.Windows.Media; + +namespace Client.UI.Utilities +{ + public static class VisulTreeExtension + { + public static T FindParent(this DependencyObject obj) where T : DependencyObject + { + if (obj == null) + return null; + + obj = VisualTreeHelper.GetParent(obj); + if (obj is T) + return obj as T; + + return FindParent(obj); + } + } +} diff --git a/Client.UI/ViewModels/MainGame/ChatMessageViewModel.cs b/Client.UI/ViewModels/MainGame/ChatMessageViewModel.cs index 4038bac..2aa8eb5 100644 --- a/Client.UI/ViewModels/MainGame/ChatMessageViewModel.cs +++ b/Client.UI/ViewModels/MainGame/ChatMessageViewModel.cs @@ -2,8 +2,12 @@ namespace Client.UI.ViewModels.MainGame { - public record ChatMessageViewModel(string Author, string Message, ChatMessageType Type = ChatMessageType.Message) + public record ChatMessageViewModel(string Author, string Message, ChatMessageType Type) { - public bool ShowAuthor => Type == ChatMessageType.Message; + public string Text => Type switch + { + ChatMessageType.Message => $"{Author}> {Message}", + _ => Message, + }; } } diff --git a/Client.UI/ViewModels/MainGame/ChatWindowViewModel.cs b/Client.UI/ViewModels/MainGame/ChatWindowViewModel.cs index 328b6f1..a616e91 100644 --- a/Client.UI/ViewModels/MainGame/ChatWindowViewModel.cs +++ b/Client.UI/ViewModels/MainGame/ChatWindowViewModel.cs @@ -1,6 +1,7 @@ using Arci.Networking.Data; using Client.Logic.Enums; using Client.UI.Controls; +using Client.UI.Enums; using Client.UI.Resources; using System; using System.Collections.ObjectModel; @@ -99,7 +100,7 @@ public void Write(string name, string msg) { Application.Current.Dispatcher.Invoke(() => { - Messages.Add(new ChatMessageViewModel(name, msg)); + Messages.Add(new ChatMessageViewModel(name, msg, ChatMessageType.Message)); }); } @@ -177,7 +178,7 @@ private void ListCommands() Application.Current.Dispatcher.Invoke(() => { - Messages.Add(new ChatMessageViewModel(string.Empty, commandsStr.ToString(), Enums.ChatMessageType.System)); + Messages.Add(new ChatMessageViewModel(string.Empty, commandsStr.ToString(), ChatMessageType.System)); }); } @@ -185,7 +186,7 @@ private void HandleInvalidCommand() { Application.Current.Dispatcher.Invoke(() => { - Messages.Add(new ChatMessageViewModel(string.Empty, Texts.InvalidCommand, Enums.ChatMessageType.System)); + Messages.Add(new ChatMessageViewModel(string.Empty, Texts.InvalidCommand, ChatMessageType.System)); }); } @@ -195,7 +196,7 @@ void FormatSyntaxError() { Application.Current.Dispatcher.Invoke(() => { - Messages.Add(new ChatMessageViewModel(string.Empty, string.Format(Texts.InvalidSyntax, $"/{whisper} [name] [message]"), Enums.ChatMessageType.System)); + Messages.Add(new ChatMessageViewModel(string.Empty, string.Format(Texts.InvalidSyntax, $"/{whisper} [name] [message]"), ChatMessageType.System)); }); } @@ -230,7 +231,7 @@ void FormatSyntaxError() { Application.Current.Dispatcher.Invoke(() => { - Messages.Add(new ChatMessageViewModel(string.Empty, string.Format(Texts.InvalidSyntax, $"/{friend} [{addFriend}/{acceptFriend}/{denyFriend}/{removeFriend}] [name]"), Enums.ChatMessageType.System)); + Messages.Add(new ChatMessageViewModel(string.Empty, string.Format(Texts.InvalidSyntax, $"/{friend} [{addFriend}/{acceptFriend}/{denyFriend}/{removeFriend}] [name]"), ChatMessageType.System)); }); } diff --git a/Client.UI/ViewModels/MainGame/MainMenuViewModel.cs b/Client.UI/ViewModels/MainGame/MainMenuViewModel.cs index 1f003cf..c30c16c 100644 --- a/Client.UI/ViewModels/MainGame/MainMenuViewModel.cs +++ b/Client.UI/ViewModels/MainGame/MainMenuViewModel.cs @@ -31,7 +31,7 @@ public MainMenuViewModel() } usersWindow = new UserListWindow(); - usersWindow.Closed += (obj, args) => + usersWindow.Closed += (_, _) => { (usersWindow.DataContext as IDisposable)?.Dispose(); usersWindow = null; diff --git a/Client.UI/Views/Game/Chat.xaml b/Client.UI/Views/Game/Chat.xaml index 1938bd0..86e18e7 100644 --- a/Client.UI/Views/Game/Chat.xaml +++ b/Client.UI/Views/Game/Chat.xaml @@ -37,22 +37,17 @@ - - - - - - - - - - + + diff --git a/Client.UI/Views/Game/MainMenu.xaml.cs b/Client.UI/Views/Game/MainMenu.xaml.cs index 6f0c797..e19bca5 100644 --- a/Client.UI/Views/Game/MainMenu.xaml.cs +++ b/Client.UI/Views/Game/MainMenu.xaml.cs @@ -1,6 +1,9 @@ -using Client.UI.Views.Settings; +using Client.UI.Utilities; +using Client.UI.Views.Settings; +using Client.UI.Views.User; using System.Windows; using System.Windows.Controls; +using System.Windows.Navigation; namespace Client.UI.Views.Game { @@ -15,7 +18,10 @@ public MainMenu() Loaded += (_, _) => NavigationService.RemoveBackEntry(); } - private void LogoutButton_Click(object sender, RoutedEventArgs e) => NavigationService.GoBack(); + private void LogoutButton_Click(object sender, RoutedEventArgs e) + { + this.FindParent()?.NavigationService.Navigate(new Login()); + } private void ChangePassword_Click(object sender, RoutedEventArgs e) { diff --git a/Client.UI/Views/User/CreateAccount.xaml.cs b/Client.UI/Views/User/CreateAccount.xaml.cs index 55ec86f..d4bf173 100644 --- a/Client.UI/Views/User/CreateAccount.xaml.cs +++ b/Client.UI/Views/User/CreateAccount.xaml.cs @@ -16,7 +16,7 @@ public CreateAccount() { InitializeComponent(); - Loaded += (obj, args) => App.SetGame(null); + Loaded += (_, _) => App.SetGame(null); } private async void CreateAccountBtn_Click(object sender, System.Windows.RoutedEventArgs e) diff --git a/Client.UI/Views/User/Login.xaml.cs b/Client.UI/Views/User/Login.xaml.cs index 276fa9f..d5c97cf 100644 --- a/Client.UI/Views/User/Login.xaml.cs +++ b/Client.UI/Views/User/Login.xaml.cs @@ -15,7 +15,11 @@ public Login() { InitializeComponent(); - Loaded += (obj, args) => App.SetGame(null); + Loaded += (_, _) => + { + App.SetGame(null); + NavigationService.RemoveBackEntry(); + }; } private async void LoginBtn_Click(object sender, System.Windows.RoutedEventArgs e) diff --git a/Client.UI/Views/User/UserListWindow.xaml.cs b/Client.UI/Views/User/UserListWindow.xaml.cs index aabe743..c4c5500 100644 --- a/Client.UI/Views/User/UserListWindow.xaml.cs +++ b/Client.UI/Views/User/UserListWindow.xaml.cs @@ -14,7 +14,7 @@ public partial class UserListWindow : Window public UserListWindow() { InitializeComponent(); - Loaded += (obj, args) => + Loaded += (_, _) => { if (DataContext is not UserListViewModel vm) return;