Browse Source

added validation check on username and error message on minecraft process exit

Veloe 2 years ago
parent
commit
9e77e0c48b

+ 2 - 2
VeloeMinecraftLauncher/VeloeMinecraftLauncher.csproj

@@ -9,8 +9,8 @@
     <DebugType>embedded</DebugType>
     <StartupObject>VeloeMinecraftLauncher.Program</StartupObject>
     <PlatformTarget>x64</PlatformTarget>
-    <AssemblyVersion>1.1.1.3</AssemblyVersion>
-    <FileVersion>1.1.1.3</FileVersion>
+    <AssemblyVersion>1.1.1.4</AssemblyVersion>
+    <FileVersion>1.1.1.4</FileVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
     <NoWarn>NU1605</NoWarn>

+ 26 - 3
VeloeMinecraftLauncher/ViewModels/MainWindowViewModel.cs

@@ -19,6 +19,8 @@ using Avalonia.Controls;
 using Avalonia.Threading;
 using System.Net;
 using System.IO.Compression;
+using ReactiveUI.Validation.Extensions;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
 
 namespace VeloeMinecraftLauncher.ViewModels
 {
@@ -55,6 +57,11 @@ namespace VeloeMinecraftLauncher.ViewModels
                     OpenErrorWindow(ex);
                 }
 
+                this.ValidationRule(
+                viewModel => viewModel.Username,
+                value => { return !string.IsNullOrEmpty(value); },
+                "Empty username.");
+
                 UpdateUpdater();
 
                 try
@@ -251,7 +258,11 @@ namespace VeloeMinecraftLauncher.ViewModels
         public string Username 
         { 
             get => username;
-            set => this.RaiseAndSetIfChanged(ref username, value);
+            set
+            {
+                this.RaiseAndSetIfChanged(ref username, value);
+                this.RaisePropertyChanged(nameof(IsStartButtonEnabled));
+            }
         }
 
         public string ConsoleText
@@ -293,7 +304,16 @@ namespace VeloeMinecraftLauncher.ViewModels
         public bool IsNoGameRunning
         {
             get => isNoGameRunning;
-            set => this.RaiseAndSetIfChanged(ref isNoGameRunning, value);
+            set
+            {
+                this.RaiseAndSetIfChanged(ref isNoGameRunning, value);
+                this.RaisePropertyChanged(nameof(IsStartButtonEnabled));
+            }
+        }
+
+        public bool IsStartButtonEnabled
+        {
+            get => IsNoGameRunning && !string.IsNullOrEmpty(Username);
         }
 
         public bool IsUpdateAvailable
@@ -589,7 +609,10 @@ namespace VeloeMinecraftLauncher.ViewModels
 
             StartButtonOutput = "";
             IsNoGameRunning = true;
-            ((Process)sendingProcess).Dispose();           
+            if (((Process)sendingProcess).ExitCode != 0)
+                OpenErrorWindow(new Exception("Minecraft process exited with an error.\nCheck log in game folder or in launcher console."));
+
+            ((Process)sendingProcess).Dispose();         
         }
 
 

+ 11 - 8
VeloeMinecraftLauncher/Views/MainWindow.axaml

@@ -230,7 +230,7 @@
 										VerticalAlignment="Stretch"
 										TextWrapping="Wrap"
 										ScrollViewer.VerticalScrollBarVisibility="Visible"
-										Text="Обновление интерфейса.&#10;Добавлена поддержка установщиков Fabric.&#10;Добавлена проверка файлов ванильной версии игры перед запуском.&#10;Добавлены настройки для логов игры.&#10;Исправление открытия диалогов на linux.&#10;Исправление диалога для выбора Java.&#10;Исправление ошибки при скачивании файла с ассетами игры.&#10;Вырезня неопубликованной фичи с настройкой цвета окон. (Но осадочек остался)&#10;Собрано на .NET 7.&#10;&#10;">
+										Text="Обновление интерфейса.&#10;Добавлена поддержка установщиков Fabric.&#10;Добавлена проверка файлов ванильной версии игры перед запуском.&#10;Добавлены настройки для логов игры.&#10;Добавлена проверка на пустое значение имени игрока.&#10;Добавлено открытие окна с ошибкой при неудачном запуске игры или ее краше.&#10;Исправление открытия диалогов на linux.&#10;Исправление диалога для выбора Java.&#10;Исправление ошибки при скачивании файла с ассетами игры.&#10;Вырезня неопубликованной фичи с настройкой цвета окон. (Но осадочек остался)&#10;Собрано на .NET 7.&#10;&#10;">
 									</TextBlock>
 									<TextBlock
 										FontSize="16"
@@ -298,9 +298,16 @@
 					<TextBox
 						Text="{Binding Username}"
 						Watermark="Username"
-						MinWidth="220"
+						MinWidth="190"
+						MaxWidth="220"
 						VerticalAlignment="Center"
 						HorizontalAlignment="Center">
+						<TextBox.Styles>
+							<Style Selector="DataValidationErrors">
+								<Setter Property="Template" Value="{DynamicResource TooltipDataValidationContentTemplate}" />
+								<Setter Property="ErrorTemplate" Value="{DynamicResource TooltipDataValidationErrorTemplate}" />
+							</Style>
+						</TextBox.Styles>
 					</TextBox>
 					<TextBlock
 						Margin="3">
@@ -308,7 +315,7 @@
 					<Button
 						Content="{Binding StartButton}"
 						Command="{Binding StartMinecraft}"
-						IsEnabled="{Binding IsNoGameRunning}">
+						IsEnabled="{Binding IsStartButtonEnabled}">
 					</Button>
 				</StackPanel>
 				<StackPanel Orientation="Horizontal" Grid.Row="2">
@@ -317,9 +324,5 @@
 				</StackPanel>
 			</Grid>
 		</DockPanel>
-
-		
-	</Panel>
-	
-	
+	</Panel>	
 </Window>