diff --git a/dtlauncher.sln b/dtlauncher.sln
index 00f35c3..e873814 100644
--- a/dtlauncher.sln
+++ b/dtlauncher.sln
@@ -5,7 +5,7 @@ VisualStudioVersion = 17.1.32104.313
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "launcher-server", "launcher-server\launcher-server.csproj", "{1F4D14EB-AF48-4B6C-A91B-B294D4281173}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "launcher-client-win", "launcher-client-win\launcher-client-win.csproj", "{A1F770F3-F6B1-4854-9BF0-093F85064B88}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "launcher-client-wpf", "launcher-client-wpf\launcher-client-wpf.csproj", "{A1F770F3-F6B1-4854-9BF0-093F85064B88}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Files", "Solution Files", "{F567AA49-E96B-43BD-95B5-A71F9FCB64E1}"
ProjectSection(SolutionItems) = preProject
diff --git a/launcher-client-avalonia/GUI/App.axaml b/launcher-client-avalonia/GUI/App.axaml
index 3ff881b..5e919fe 100644
--- a/launcher-client-avalonia/GUI/App.axaml
+++ b/launcher-client-avalonia/GUI/App.axaml
@@ -1,4 +1,4 @@
-
@@ -12,13 +12,13 @@
-
+
-
-
-
-
-
+
+
+
+
+
diff --git a/launcher-client-avalonia/GUI/App.axaml.cs b/launcher-client-avalonia/GUI/App.axaml.cs
index 93778a7..dc5d88f 100644
--- a/launcher-client-avalonia/GUI/App.axaml.cs
+++ b/launcher-client-avalonia/GUI/App.axaml.cs
@@ -3,8 +3,9 @@ global using Avalonia.Controls;
global using Avalonia.Media;
global using Avalonia.Media.Imaging;
global using Avalonia.Markup.Xaml;
+using Avalonia.Controls.ApplicationLifetimes;
-namespace launcher_client_avalonia
+namespace Launcher.Client.Avalonia.GUI
{
public partial class App : Application
{
@@ -20,5 +21,18 @@ namespace launcher_client_avalonia
MyOrange = (SolidColorBrush)Resources["MySelectionColor"];
MySelectionColor = (SolidColorBrush)Resources["MySelectionColor"];
}
+
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ CurrentLauncherWindow = new LauncherWindow();
+ desktop.MainWindow = CurrentLauncherWindow;
+ CurrentLauncherWindow.Show();
+ }
+
+ base.OnFrameworkInitializationCompleted();
+ }
}
}
\ No newline at end of file
diff --git a/launcher-client-avalonia/GUI/LauncherWindow.axaml b/launcher-client-avalonia/GUI/LauncherWindow.axaml
index 7d5fcdf..186e16a 100644
--- a/launcher-client-avalonia/GUI/LauncherWindow.axaml
+++ b/launcher-client-avalonia/GUI/LauncherWindow.axaml
@@ -1,7 +1,7 @@
-
+ FontSize="18" />
+ FontSize="18" />
+ FontSize="18" />
+ FontSize="18" />
@@ -50,8 +50,8 @@
+ Template="{DynamicResource myScrollViewer}"
+ VerticalScrollBarVisibility="Auto">
+ FontWeight="Bold" />
+ Classes="MyButtonStyle"
+ Content="Remove" />
+ Classes="MyButtonStyle"
+ Content="Install" />
+ Classes="MyButtonStyle"
+ Content="Update" />
+ Classes="MyButtonStyle"
+ Content="Launch" />
+ Classes="MyTextBoxStyle"
+ ScrollViewer.VerticalScrollBarVisibility="Auto" />
+ Classes="MyTextBoxStyle"
+ ScrollViewer.VerticalScrollBarVisibility="Auto" />
+ Classes="MyLabelStyle"
+ Content="version:" />
+ Classes="MyLabelStyle"
+ Content="v1" />
+ Classes="MyLabelStyle"
+ Content="directory:" />
+ Classes="MyLabelStyle"
+ Content="0" />
+ Classes="MyLabelStyle"
+ Content="size:" />
+ Classes="MyLabelStyle"
+ Content="0" />
+ FontStyle="Italic" />
+ Classes="MyTextBoxStyle"
+ ScrollViewer.VerticalScrollBarVisibility="Auto" />
- Process.Start("explorer.exe", Logger.Logfile.Remove(Logger.Logfile.LastIndexOf(Путь.Разд)));
+ Process.Start("explorer.exe", LauncherLogger.LogfileDir);
LogfileLabel.PointerEnter += (_,_)=>LogfileLabel.Foreground=App.MySelectionColor;
LogfileLabel.PointerLeave += (_,_)=>LogfileLabel.Foreground=App.MyWhite;
LibraryButton.TabGrid = LibraryGrid;
diff --git a/launcher-client-avalonia/GUI/MessageBox.axaml b/launcher-client-avalonia/GUI/MessageBox.axaml
index 4cb606f..5971b49 100644
--- a/launcher-client-avalonia/GUI/MessageBox.axaml
+++ b/launcher-client-avalonia/GUI/MessageBox.axaml
@@ -1,4 +1,4 @@
-
-
+
@@ -25,6 +25,6 @@
FontFamily="Unispace"
FontSize="15"
FontWeight="Normal"
- Foreground="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:ProgramLabel}}" />
+ Foreground="{Binding $parent[local:ProgramLabel].Foreground}" />
diff --git a/launcher-client-avalonia/GUI/ProgramLabel.axaml.cs b/launcher-client-avalonia/GUI/ProgramLabel.axaml.cs
index 1231fc9..8c8bb55 100644
--- a/launcher-client-avalonia/GUI/ProgramLabel.axaml.cs
+++ b/launcher-client-avalonia/GUI/ProgramLabel.axaml.cs
@@ -1,12 +1,13 @@
-namespace launcher_client_avalonia.GUI;
+namespace Launcher.Client.Avalonia.GUI;
public partial class ProgramLabel : UserControl
{
+ public ProgramLabel() => InitializeComponent();
+
public ProgramLabel(string label, string icon)
{
- AvaloniaXamlLoader.Load(this);
+ InitializeComponent();
NameLabel.Content = label;
-
IconImage.Source = new Bitmap(
$"{Directory.GetCurrent()}{Путь.Разд}icons{Путь.Разд}{icon}");
}
diff --git a/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml b/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml
index c96fc65..7a8f95d 100644
--- a/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml
+++ b/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml
@@ -1,23 +1,22 @@
-
+ ToolTip.Tip="{Binding $self.Content}" />
diff --git a/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml.cs b/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml.cs
index 0adadbf..b9d649d 100644
--- a/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml.cs
+++ b/launcher-client-avalonia/GUI/ProgramSettingsPanelItem.axaml.cs
@@ -1,4 +1,4 @@
-namespace launcher_client_avalonia.GUI;
+namespace Launcher.Client.Avalonia.GUI;
public partial class ProgramSettingsPanelItem : UserControl
{
@@ -7,32 +7,32 @@ public partial class ProgramSettingsPanelItem : UserControl
"SettingKey");
public string SettingKey
{
- get => (string)GetValue(SettingKeyProp);
- set
- {
- SetValue(SettingKeyProp, value);
- /*KeyLabel.ToolTip = new ToolTip
+ get => GetValue(SettingKeyProp);
+ set => SetValue(SettingKeyProp, value);
+ //TODO deal with textblock size
+ /*KeyLabel.ToolTip = new ToolTip
{
Content = value,
Foreground = App.MyWhite,
Background = App.MySoftDark
};*/
- }
}
public static readonly StyledProperty SettingValueProp =
AvaloniaProperty.Register("SettingValue");
public string SettingValue
{
- get => (string)GetValue(SettingValueProp);
+ get => GetValue(SettingValueProp);
set => SetValue(SettingValueProp, value);
}
public event Action UpdatedEvent;
+
+ public ProgramSettingsPanelItem() => InitializeComponent();
public ProgramSettingsPanelItem(string key, string value)
{
- AvaloniaXamlLoader.Load(this);
+ InitializeComponent();
SettingKey = key;
SettingValue = value;
//TODO invoke UpdatedEvent only when focus changed
diff --git a/launcher-client-avalonia/GUI/TabButton.cs b/launcher-client-avalonia/GUI/TabButton.cs
index 47d4ee3..d37a726 100644
--- a/launcher-client-avalonia/GUI/TabButton.cs
+++ b/launcher-client-avalonia/GUI/TabButton.cs
@@ -1,11 +1,11 @@
-namespace launcher_client_avalonia.GUI;
+namespace Launcher.Client.Avalonia.GUI;
-public partial class TabButton : Button
+public class TabButton : Button
{
public static readonly StyledProperty TabGridProp = AvaloniaProperty.Register("TabGrid");
public Grid TabGrid
{
- get => (Grid)GetValue(TabGridProp);
+ get => GetValue(TabGridProp);
set => SetValue(TabGridProp, value);
}
}
\ No newline at end of file
diff --git a/launcher-client-avalonia/LauncherConfig.cs b/launcher-client-avalonia/LauncherConfig.cs
index df0c6fc..27564a9 100644
--- a/launcher-client-avalonia/LauncherConfig.cs
+++ b/launcher-client-avalonia/LauncherConfig.cs
@@ -1,4 +1,4 @@
-namespace launcher_client_avalonia;
+namespace Launcher.Client.Avalonia;
public class LauncherConfig
{
@@ -21,7 +21,7 @@ public class LauncherConfig
{
// читает дефолтный конфиг из ресурсов
DtsodV23 updatedConfig;
- DtsodV23 updatedDefault = new(ReadResource("launcher_client_avalonia.Resources.launcher.dtsod"));
+ DtsodV23 updatedDefault = new(EmbeddedResources.ReadText("Launcher.Client.Avalonia.Resources.launcher.dtsod"));
// проверка и обновление конфига
if (File.Exists(configFile))
{
diff --git a/launcher-client-avalonia/LauncherLogger.cs b/launcher-client-avalonia/LauncherLogger.cs
index 5e5658b..84c29c4 100644
--- a/launcher-client-avalonia/LauncherLogger.cs
+++ b/launcher-client-avalonia/LauncherLogger.cs
@@ -1,36 +1,31 @@
-using System.Globalization;
-using DTLib.Loggers;
+using DTLib.Loggers;
-namespace launcher_client_avalonia;
+namespace Launcher.Client.Avalonia;
-public class LauncherLogger : BaseLogger
+public class LauncherLogger : ConsoleLogger
{
- public string Buffer="";
-
- public LauncherLogger() : base("launcher-logs", "launcher-client-win")
+ public const string LogfileDir = "launcher-logs";
+ public LauncherLogger() : base(LogfileDir,"launcher-client-wpf")
{ }
+ private readonly StringBuilder _buffer = new();
+ public string Buffer
+ {
+ get { lock (_buffer) return _buffer.ToString(); }
+ }
+
public event Action MessageSent;
public override void Log(params string[] msg)
{
- lock (Logfile) if (!IsEnabled) return;
-
- StringBuilder strB = new();
- strB.Append('[')
- .Append(DateTime.Now.ToString(CultureInfo.InvariantCulture))
- .Append("]: ");
- if (msg.Length == 1) strB.Append(msg[0]);
- else for (ushort i = 0; i < msg.Length; i++)
- strB.Append(msg[++i]);
- strB.Append('\n');
- string _buffer = strB.ToString();
-
- lock(Buffer) Buffer += _buffer;
-
- MessageSent?.Invoke(_buffer);
-
- if (WriteToFile)
- lock(Logfile) File.AppendAllText(Logfile, _buffer);
+ base.Log(msg);
+ StringBuilder strb = new();
+ if (msg.Length == 1) strb.Append(msg[0]);
+ else for (int i = 1; i < msg.Length; i += 2)
+ strb.Append(msg[i]);
+ strb.Append('\n');
+ string msgConnected = strb.ToString();
+ MessageSent?.Invoke(msgConnected);
+ lock (_buffer) _buffer.Append(msgConnected);
}
}
\ No newline at end of file
diff --git a/launcher-client-avalonia/Launcher.cs b/launcher-client-avalonia/LauncherMain.cs
similarity index 58%
rename from launcher-client-avalonia/Launcher.cs
rename to launcher-client-avalonia/LauncherMain.cs
index afc0920..ab0cef5 100644
--- a/launcher-client-avalonia/Launcher.cs
+++ b/launcher-client-avalonia/LauncherMain.cs
@@ -8,13 +8,12 @@ global using DTLib;
global using DTLib.Dtsod;
global using DTLib.Filesystem;
global using DTLib.Extensions;
-global using static launcher_client_avalonia.Launcher;
-using System.Reflection;
-using launcher_client_avalonia.GUI;
+global using static Launcher.Client.Avalonia.LauncherMain;
+using Launcher.Client.Avalonia.GUI;
-namespace launcher_client_avalonia;
+namespace Launcher.Client.Avalonia;
-public static class Launcher
+public static class LauncherMain
{
public static LauncherConfig Config;
public static readonly LauncherLogger Logger = new();
@@ -24,15 +23,6 @@ public static class Launcher
{
try
{
- Logger.Enable();
-
- AppBuilder.Configure()
- .UsePlatformDetect()
- .LogToTrace()
- .StartWithClassicDesktopLifetime(args);
- CurrentLauncherWindow = new LauncherWindow();
- CurrentLauncherWindow.Show();
-
Config = new LauncherConfig();
Directory.Create("descriptors");
Directory.Create("icons");
@@ -40,8 +30,16 @@ public static class Launcher
Directory.Create("installed");
Directory.Create("settings");
File.WriteAllText($"descriptors{Путь.Разд}default.descriptor.template",
- ReadResource("launcher_client_avalonia.Resources.default.descriptor.template"));
-
+ EmbeddedResources.ReadText("Launcher.Client.Avalonia.Resources.default.descriptor.template"));
+
+ var traceHandler = new ConsoleTraceListener();
+ Trace.AutoFlush = true;
+ Trace.Listeners.Add(traceHandler);
+
+ AppBuilder.Configure()
+ .UsePlatformDetect()
+ .LogToTrace()
+ .StartWithClassicDesktopLifetime(args);
}
catch (Exception ex)
{
@@ -49,19 +47,10 @@ public static class Launcher
}
}
- public static string ReadResource(string resource_path)
- {
- using var resourceStreamReader = new System.IO.StreamReader(
- Assembly.GetExecutingAssembly().GetManifestResourceStream(resource_path)
- ?? throw new Exception($"embedded resource <{resource_path}> not found"),
- Encoding.UTF8);
- return resourceStreamReader.ReadToEnd();
- }
-
public static void LogError(string context, Exception ex)
{
string errmsg = $"{ex.Message}\n{ex.StackTrace}";
- MessageBox.Show($"{context} ERROR", errmsg);
+ //MessageBox.Show($"{context} ERROR", errmsg);
Logger.Log(errmsg);
}
}
\ No newline at end of file
diff --git a/launcher-client-avalonia/Program.cs b/launcher-client-avalonia/Program.cs
index a7e0faf..4f85a59 100644
--- a/launcher-client-avalonia/Program.cs
+++ b/launcher-client-avalonia/Program.cs
@@ -1,6 +1,6 @@
-using launcher_client_avalonia.GUI;
+using Launcher.Client.Avalonia.GUI;
-namespace launcher_client_avalonia;
+namespace Launcher.Client.Avalonia;
public class Program
{
diff --git a/launcher-client-avalonia/launcher-client-avalonia.csproj b/launcher-client-avalonia/launcher-client-avalonia.csproj
index 30ebee2..aefeec6 100644
--- a/launcher-client-avalonia/launcher-client-avalonia.csproj
+++ b/launcher-client-avalonia/launcher-client-avalonia.csproj
@@ -1,6 +1,7 @@
WinExe
+ Launcher.Client.Avalonia
net6.0
disable
disable
diff --git a/launcher-client-win/LauncherLogger.cs b/launcher-client-win/LauncherLogger.cs
deleted file mode 100644
index fe71c30..0000000
--- a/launcher-client-win/LauncherLogger.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Globalization;
-using DTLib.Loggers;
-
-namespace launcher_client_win;
-
-public class LauncherLogger : BaseLogger
-{
- public string Buffer="";
-
- public LauncherLogger() : base("launcher-logs", "launcher-client-win")
- { }
-
- public event Action MessageSent;
-
- public override void Log(params string[] msg)
- {
- lock (Logfile) if (!IsEnabled) return;
-
- StringBuilder strB = new();
- strB.Append('[')
- .Append(DateTime.Now.ToString(CultureInfo.InvariantCulture))
- .Append("]: ");
- if (msg.Length == 1) strB.Append(msg[0]);
- else for (ushort i = 0; i < msg.Length; i++)
- strB.Append(msg[++i]);
- strB.Append('\n');
- string _buffer = strB.ToString();
-
- lock(Buffer) Buffer += _buffer;
-
- MessageSent?.Invoke(_buffer);
-
- if (WriteToFile)
- lock(Logfile) File.AppendAllText(Logfile, _buffer);
- }
-}
\ No newline at end of file
diff --git a/launcher-client-win/AssemblyInfo.cs b/launcher-client-wpf/AssemblyInfo.cs
similarity index 100%
rename from launcher-client-win/AssemblyInfo.cs
rename to launcher-client-wpf/AssemblyInfo.cs
diff --git a/launcher-client-win/GUI/App.xaml b/launcher-client-wpf/GUI/App.xaml
similarity index 97%
rename from launcher-client-win/GUI/App.xaml
rename to launcher-client-wpf/GUI/App.xaml
index 581c135..116c428 100644
--- a/launcher-client-win/GUI/App.xaml
+++ b/launcher-client-wpf/GUI/App.xaml
@@ -1,4 +1,4 @@
-
diff --git a/launcher-client-win/GUI/App.xaml.cs b/launcher-client-wpf/GUI/App.xaml.cs
similarity index 92%
rename from launcher-client-win/GUI/App.xaml.cs
rename to launcher-client-wpf/GUI/App.xaml.cs
index e2a738c..65aea7f 100644
--- a/launcher-client-win/GUI/App.xaml.cs
+++ b/launcher-client-wpf/GUI/App.xaml.cs
@@ -1,6 +1,6 @@
using System.Windows.Media;
-namespace launcher_client_win.GUI;
+namespace Launcher.Client.WPF.GUI;
public partial class App : Application
{
diff --git a/launcher-client-win/GUI/LauncherWindow.xaml b/launcher-client-wpf/GUI/LauncherWindow.xaml
similarity index 96%
rename from launcher-client-win/GUI/LauncherWindow.xaml
rename to launcher-client-wpf/GUI/LauncherWindow.xaml
index 77afd55..b85b4fa 100644
--- a/launcher-client-win/GUI/LauncherWindow.xaml
+++ b/launcher-client-wpf/GUI/LauncherWindow.xaml
@@ -1,8 +1,8 @@
-
- Process.Start("explorer.exe", Logger.Logfile.Remove(Logger.Logfile.LastIndexOf(Путь.Разд)));
- LogfileLabel.MouseEnter += (s,e)=>LogfileLabel.Foreground=App.MySelectionColor;
- LogfileLabel.MouseLeave += (s,e)=>LogfileLabel.Foreground=App.MyWhite;
+ LogfileLabel.Content = Logger.LogfileName.Remove(0,Logger.LogfileName.LastIndexOf(Путь.Разд)+1);
+ LogfileLabel.MouseLeftButtonDown += (_,_)=>
+ Process.Start("explorer.exe", LauncherLogger.LogfileDir);
+ LogfileLabel.MouseEnter += (_,_)=>LogfileLabel.Foreground=App.MySelectionColor;
+ LogfileLabel.MouseLeave += (_,_)=>LogfileLabel.Foreground=App.MyWhite;
LibraryButton.TabGrid = LibraryGrid;
DownloadsButton.TabGrid = DownloadsGrid;
LogButton.TabGrid = LogGrid;
diff --git a/launcher-client-win/GUI/ProgramLabel.xaml b/launcher-client-wpf/GUI/ProgramLabel.xaml
similarity index 89%
rename from launcher-client-win/GUI/ProgramLabel.xaml
rename to launcher-client-wpf/GUI/ProgramLabel.xaml
index 0657db5..79b65fc 100644
--- a/launcher-client-win/GUI/ProgramLabel.xaml
+++ b/launcher-client-wpf/GUI/ProgramLabel.xaml
@@ -1,8 +1,8 @@
- MessageSent;
+
+ public override void Log(params string[] msg)
+ {
+ base.Log(msg);
+ StringBuilder strb = new();
+ if (msg.Length == 1) strb.Append(msg[0]);
+ else for (int i = 1; i < msg.Length; i += 2)
+ strb.Append(msg[i]);
+ strb.Append('\n');
+ string msgConnected = strb.ToString();
+ MessageSent?.Invoke(msgConnected);
+ lock (_buffer) _buffer.Append(msgConnected);
+ }
+}
\ No newline at end of file
diff --git a/launcher-client-win/Launcher.cs b/launcher-client-wpf/LauncherMain.cs
similarity index 57%
rename from launcher-client-win/Launcher.cs
rename to launcher-client-wpf/LauncherMain.cs
index dbae2c1..e46d303 100644
--- a/launcher-client-win/Launcher.cs
+++ b/launcher-client-wpf/LauncherMain.cs
@@ -7,16 +7,14 @@ global using System.Diagnostics;
global using System.Net;
global using System.Text;
global using System.Collections.Generic;
-global using System.Threading;
global using System.Linq;
global using System.Windows;
-global using static launcher_client_win.Launcher;
-using System.Reflection;
-using launcher_client_win.GUI;
+global using static Launcher.Client.WPF.LauncherMain;
+using Launcher.Client.WPF.GUI;
-namespace launcher_client_win;
+namespace Launcher.Client.WPF;
-public static class Launcher
+public static class LauncherMain
{
public static LauncherConfig Config;
public static readonly LauncherLogger Logger = new();
@@ -24,7 +22,6 @@ public static class Launcher
public static void _Main(string[] args)
{
- Logger.Enable();
Config = new LauncherConfig();
Directory.Create("descriptors");
Directory.Create("icons");
@@ -32,19 +29,10 @@ public static class Launcher
Directory.Create("installed");
Directory.Create("settings");
File.WriteAllText($"descriptors{Путь.Разд}default.descriptor.template",
- ReadResource("launcher_client_win.Resources.default.descriptor.template"));
- CurrentLauncherWindow = new();
+ EmbeddedResources.ReadText("Launcher.Client.WPF.Resources.default.descriptor.template"));
+ CurrentLauncherWindow = new LauncherWindow();
CurrentLauncherWindow.Show();
}
-
- public static string ReadResource(string resource_path)
- {
- using var resourceStreamReader = new System.IO.StreamReader(
- Assembly.GetExecutingAssembly().GetManifestResourceStream(resource_path)
- ?? throw new Exception($"embedded resource <{resource_path}> not found"),
- Encoding.UTF8);
- return resourceStreamReader.ReadToEnd();
- }
public static void LogError(string context, Exception ex)
{
diff --git a/launcher-client-win/Program.cs b/launcher-client-wpf/Program.cs
similarity index 95%
rename from launcher-client-win/Program.cs
rename to launcher-client-wpf/Program.cs
index d03f6d2..ee289a4 100644
--- a/launcher-client-win/Program.cs
+++ b/launcher-client-wpf/Program.cs
@@ -1,7 +1,7 @@
using System.Windows.Controls;
-using launcher_client_win.GUI;
+using Launcher.Client.WPF.GUI;
-namespace launcher_client_win;
+namespace Launcher.Client.WPF;
public class Program
{
diff --git a/launcher-client-win/Resources/default.descriptor.template b/launcher-client-wpf/Resources/default.descriptor.template
similarity index 100%
rename from launcher-client-win/Resources/default.descriptor.template
rename to launcher-client-wpf/Resources/default.descriptor.template
diff --git a/launcher-client-win/Resources/launcher.dtsod b/launcher-client-wpf/Resources/launcher.dtsod
similarity index 100%
rename from launcher-client-win/Resources/launcher.dtsod
rename to launcher-client-wpf/Resources/launcher.dtsod
diff --git a/launcher-client-win/Resources/logo-D.ico b/launcher-client-wpf/Resources/logo-D.ico
similarity index 100%
rename from launcher-client-win/Resources/logo-D.ico
rename to launcher-client-wpf/Resources/logo-D.ico
diff --git a/launcher-client-win/launcher-client-win.csproj b/launcher-client-wpf/launcher-client-wpf.csproj
similarity index 91%
rename from launcher-client-win/launcher-client-win.csproj
rename to launcher-client-wpf/launcher-client-wpf.csproj
index c100a5e..ec1e4ca 100644
--- a/launcher-client-win/launcher-client-win.csproj
+++ b/launcher-client-wpf/launcher-client-wpf.csproj
@@ -4,7 +4,7 @@
WinExe
true
net6.0-windows
- launcher_client_win
+ Launcher.Client.WPF
disable
disable
full
@@ -21,14 +21,14 @@
-
-
-
-
+
+
+
+
diff --git a/launcher-server/Server.cs b/launcher-server/Server.cs
index 87711b6..b558b15 100644
--- a/launcher-server/Server.cs
+++ b/launcher-server/Server.cs
@@ -11,26 +11,25 @@ global using System.Threading;
global using System.Linq;
using System.Globalization;
-namespace launcher_server;
+namespace Launcher.Server;
static class Server
{
static readonly Socket mainSocket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
static DtsodV23 config;
- private static readonly DTLib.Loggers.AsyncLogger Logger = new("logs", "launcher-server");
+ private static readonly DTLib.Loggers.ConsoleLogger Logger = new("logs", "launcher-server");
static readonly object manifestLocker = new();
- static void Main(string[] args)
+ static void Main()
{
try
{
- Console.Title = "minecraft_launcher_server";
+ Console.Title = "Launcher.Server";
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
- Logger.Enable();
- PublicLog.LogEvent += Logger.LogAsync;
- PublicLog.LogNoTimeEvent += Logger.LogAsync;
+ PublicLog.LogEvent += Logger.Log;
+ PublicLog.LogNoTimeEvent += Logger.Log;
config = new DtsodV23(File.ReadAllText("launcher-server.dtsod"));
Logger.Log("b", "local address: <", "c", config["local_ip"], "b",
">\npublic address: <", "c", OldNetwork.GetPublicIP(), "b",
@@ -63,7 +62,7 @@ static class Server
// запускается для каждого юзера в отдельном потоке
static void UserHandle(Socket handlerSocket)
{
- Logger.LogAsync("b", "user connecting... ");
+ Logger.Log("b", "user connecting... ");
try
{
// запрос хеша пароля и логина
@@ -74,7 +73,7 @@ static class Server
// запрос от апдейтера
if (hash == hasher.HashCycled("updater".ToBytes(),64))
{
- Logger.LogAsync("b", "user is ", "c", "updater");
+ Logger.Log("b", "user is ", "c", "updater");
handlerSocket.SendPackage("updater".ToBytes());
// обработка запросов
while (true)
@@ -85,11 +84,11 @@ static class Server
switch (request)
{
case "requesting launcher update":
- Logger.LogAsync("b", "updater requested client.exe");
+ Logger.Log("b", "updater requested client.exe");
fsp.UploadFile("share\\launcher.exe");
break;
case "register new user":
- Logger.LogAsync("b", "new user registration requested");
+ Logger.Log("b", "new user registration requested");
handlerSocket.SendPackage("ready".ToBytes());
string req = StringConverter.MergeToString(
hasher.HashCycled(handlerSocket.GetPackage(), 64).HashToString(),
@@ -97,7 +96,7 @@ static class Server
"\";\n\tuuid: \"null\";\n};");
string filepath = $"registration_requests\\{DateTime.Now.ToString(CultureInfo.InvariantCulture).НормализоватьДляПути()}.req";
File.WriteAllText(filepath, req);
- Logger.LogAsync("b", $"text wrote to file <", "c", $"registration_requests\\{filepath}", "b", ">");
+ Logger.Log("b", $"text wrote to file <", "c", $"registration_requests\\{filepath}", "b", ">");
break;
default:
throw new Exception("unknown request: " + request);
@@ -109,7 +108,7 @@ static class Server
// запрос от юзера
else if (FindUser(hash, out var user))
{
- Logger.LogAsync("b", $"user is ", "c", user.name);
+ Logger.Log("b", $"user is ", "c", user.name);
handlerSocket.SendPackage("launcher".ToBytes());
// обработка запросов
while (true)
@@ -121,7 +120,7 @@ static class Server
{
case "requesting file download":
var file = handlerSocket.GetPackage().ToString();
- Logger.LogAsync("b", $"user ", "c", user.name, "b", " requested file ", "c", file);
+ Logger.Log("b", $"user ", "c", user.name, "b", " requested file ", "c", file);
if (file == "manifest.dtsod")
{
lock (manifestLocker) fsp.UploadFile("share\\manifest.dtsod");
@@ -129,18 +128,18 @@ static class Server
else fsp.UploadFile($"share\\{file}");
break;
case "requesting uuid":
- Logger.LogAsync("b", $"user ", "c", user.name, "b", " requested uuid");
+ Logger.Log("b", $"user ", "c", user.name, "b", " requested uuid");
handlerSocket.SendPackage(user.uuid.ToBytes());
break;
case "excess files found":
- Logger.LogAsync("b", $"user ", "c", user.name, "b", " sent excess files list");
+ Logger.Log("b", $"user ", "c", user.name, "b", " sent excess files list");
fsp.DownloadFile($"excesses\\{user.name}-" +
$"{DateTime.Now.ToString(CultureInfo.InvariantCulture).НормализоватьДляПути()}.txt");
break;
case "sending launcher error":
- Logger.LogAsync("y", "user ", "c", user.name, "y", "is sending error:");
+ Logger.Log("y", "user ", "c", user.name, "y", "is sending error:");
string error = handlerSocket.GetPackage().ToString();
- Logger.LogAsync("y", error + '\n');
+ Logger.Log("y", error + '\n');
break;
default:
throw new Exception("unknown request: " + request);
@@ -152,13 +151,13 @@ static class Server
// неизвестный юзер
else
{
- Logger.LogAsync("y", $"user with hash <{hash.HashToString()}> not found");
+ Logger.Log("y", $"user with hash <{hash.HashToString()}> not found");
handlerSocket.SendPackage("user not found".ToBytes());
}
}
catch (Exception ex)
{
- Logger.LogAsync("y", $"UserStart() error:\n message:\n {ex}");
+ Logger.Log("y", $"UserStart() error:\n message:\n {ex}");
if (mainSocket.Connected)
{
mainSocket.Shutdown(SocketShutdown.Both);
@@ -169,7 +168,7 @@ static class Server
{
if (handlerSocket.Connected) handlerSocket.Shutdown(SocketShutdown.Both);
handlerSocket.Close();
- Logger.LogAsync("g", "user disconnected");
+ Logger.Log("g", "user disconnected");
}
}
@@ -191,7 +190,7 @@ static class Server
.MergeToString("\",\"")
.Replace($"share\\sync_and_remove\\", "")+
"\"];");
- };
+ }
}
static bool FindUser(byte[] hash, out (string name, string uuid) user)
diff --git a/launcher-server/launcher-server.csproj b/launcher-server/launcher-server.csproj
index 5286e13..964f1e2 100644
--- a/launcher-server/launcher-server.csproj
+++ b/launcher-server/launcher-server.csproj
@@ -3,7 +3,7 @@
Exe
net6.0
- launcher_server
+ Launcher.Server
disable
disable
full