From ee7d6ca500f803ebae2a5b07a71ad04117a47739 Mon Sep 17 00:00:00 2001 From: denglihong2007 <98096191+denglihong2007@users.noreply.github.com> Date: Sun, 7 Dec 2025 02:46:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=A6=E7=AB=99=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=86=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRSim.Core/Abstractions/IDatabaseService.cs | 2 - CRSim.Core/Services/DatabaseService.cs | 83 ---------- CRSim.Core/Services/NetworkService.cs | 1 + .../CRSim.PlatformDiagram.csproj | 1 + CRSim.sln | 11 +- CRSim/App.xaml.cs | 40 +++-- CRSim/Assets/SplashScreen.scale-200.png | Bin 5372 -> 50131 bytes CRSim/Assets/Square150x150Logo.scale-200.png | Bin 1755 -> 18057 bytes CRSim/Assets/Square44x44Logo.scale-200.png | Bin 637 -> 9109 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 1869 bytes CRSim/Assets/StoreLogo.png | Bin 456 -> 6723 bytes CRSim/Assets/Wide310x150Logo.scale-200.png | Bin 2097 -> 19097 bytes CRSim/CRSim.csproj | 29 ++-- CRSim/Package.appxmanifest | 15 +- CRSim/Services/DialogService.cs | 23 +++ CRSim/Services/IDialogService.cs | 1 + CRSim/ViewModels/SettingsPageViewModel.cs | 69 +-------- .../StationManagementPageViewModel.cs | 33 ++-- CRSim/Views/DashboardPage.xaml.cs | 2 +- .../DialogContents/CreateStationDialog.xaml | 41 +++++ .../CreateStationDialog.xaml.cs | 144 ++++++++++++++++++ CRSim/Views/PlatformDiagramPage.xaml.cs | 4 +- CRSim/Views/PluginManagementPage.xaml.cs | 4 +- CRSim/Views/ScreenSimulatorPage.xaml.cs | 2 +- CRSim/Views/SettingsPage.xaml.cs | 4 +- CRSim/Views/StationManagementPage.xaml | 21 ++- CRSim/Views/StationManagementPage.xaml.cs | 4 +- CRSim/Views/TrainNumberManagementPage.xaml.cs | 4 +- CRSim/Views/WebsiteSimulatorPage.xaml.cs | 2 +- 29 files changed, 311 insertions(+), 229 deletions(-) create mode 100644 CRSim/Views/DialogContents/CreateStationDialog.xaml create mode 100644 CRSim/Views/DialogContents/CreateStationDialog.xaml.cs diff --git a/CRSim.Core/Abstractions/IDatabaseService.cs b/CRSim.Core/Abstractions/IDatabaseService.cs index 5db1362..29b0cfe 100644 --- a/CRSim.Core/Abstractions/IDatabaseService.cs +++ b/CRSim.Core/Abstractions/IDatabaseService.cs @@ -9,9 +9,7 @@ namespace CRSim.Core.Abstractions List GetAllTrainNumbers(); Station GetStationByName(string name); TrainNumber GetTrainNumberByNumber(string number); - void AddStationByName(string name); void AddStation(Station station); - Task ImportStationFrom7D(string path); void AddTrainNumber(TrainNumber trainNumber); void DeleteStation(Station station); void DeleteTrainNumber(TrainNumber trainNumber); diff --git a/CRSim.Core/Services/DatabaseService.cs b/CRSim.Core/Services/DatabaseService.cs index 5e9b199..518e561 100644 --- a/CRSim.Core/Services/DatabaseService.cs +++ b/CRSim.Core/Services/DatabaseService.cs @@ -2,7 +2,6 @@ using CRSim.Core.Models; using CRSim.Core.Utils; using System.Text.Json; -using System.Text.Json.Serialization; namespace CRSim.Core.Services { @@ -39,13 +38,6 @@ namespace CRSim.Core.Services { return _trainNumbers.FirstOrDefault(x => x.Number == number); } - public void AddStationByName(string name) - { - _stations.Add(new Station() - { - Name = name, - }); - } public void DeleteStation(Station station) { @@ -110,81 +102,6 @@ namespace CRSim.Core.Services _trainNumbers.Add(trainNumber); } - public async Task ImportStationFrom7D(string path) - { - Station station = new() { Platforms = [], WaitingAreas = [], TrainStops = [] }; - var stationName = (await File.ReadAllTextAsync(path.Replace("车站广播系统.exe", "info.ini"))).Split("|")[0]; - if (_stations.Any(x => x.Name == stationName)) - { - _stations.Remove(GetStationByName(stationName)); - } - var lines = await File.ReadAllLinesAsync(path.Replace("车站广播系统.exe", "data.csv")); - station.Name = stationName; - foreach (var line in lines) - { - var data = line.Split(','); - var waitingAreaName = string.IsNullOrWhiteSpace(data.Last()) ? "未知" : data.Last(); - var platform = string.IsNullOrWhiteSpace(data[5]) ? "未知" : data[5]; - var ticketCheck = string.IsNullOrWhiteSpace(data[4]) ? string.Empty : data[4]; - - var existingPlatform = station.Platforms.FirstOrDefault(x => x.Name == platform); - if (existingPlatform == null) - { - station.Platforms.Add(new Platform { Name = platform, Length = 20 }); - } - - - var waitingArea = station.WaitingAreas.FirstOrDefault(x => x.Name == waitingAreaName); - if (waitingArea == null) - { - waitingArea = new WaitingArea() { Name = waitingAreaName }; - station.WaitingAreas.Add(waitingArea); - } - - foreach (var ticketCheckName in ticketCheck.Split('|')) - { - if (!string.IsNullOrWhiteSpace(ticketCheckName) && !waitingArea.TicketChecks.Any(x => x.Name == ticketCheckName)) - { - waitingArea.TicketChecks.Add(new TicketCheck { Name = ticketCheckName }); - } - } - - if (!string.IsNullOrEmpty(data[0]) && !station.TrainStops.Any(x => x.Number == data[0])) - { - TimeSpan? arrivalTime = null; - TimeSpan? departureTime = null; - - if (data[2] == stationName) - { - departureTime = TimeSpan.Parse(lines.FirstOrDefault(x => x.Split(",")[0] == data[0] && x.Split(",")[1].Contains("送车"))?.Split(",")[7] ?? string.Empty); - } - else if (data[3] == stationName) - { - arrivalTime = TimeSpan.Parse(data[7]); - } - else - { - arrivalTime = TimeSpan.Parse(data[7]); - departureTime = TimeSpan.Parse(lines.FirstOrDefault(x => x.Split(",")[0] == data[0] && x.Split(",")[1].Contains("送车"))?.Split(",")[7] ?? string.Empty); - } - - station.TrainStops.Add(new TrainStop - { - Number = data[0], - Terminal = data[3], - Origin = data[2], - TicketCheckIds = [.. waitingArea.TicketChecks.Select(x=>x.Id)], - ArrivalTime = arrivalTime, - DepartureTime = departureTime, - Platform = platform, - Length = data[0].StartsWith('G') || data[0].StartsWith('D') || data[0].StartsWith('C') ? Math.Abs(data[0].GetHashCode()) % 3 == 0 ? 8 : 16 : 18, - Landmark = data[8] + "色" ?? null, - }); - } - } - AddStation(station); - } - public void AddStation(Station station) { _stations.Add(station); diff --git a/CRSim.Core/Services/NetworkService.cs b/CRSim.Core/Services/NetworkService.cs index 1aece04..1ad1fc1 100644 --- a/CRSim.Core/Services/NetworkService.cs +++ b/CRSim.Core/Services/NetworkService.cs @@ -3,6 +3,7 @@ using CRSim.Core.Models; using CRSim.Core.Models.Plugin; using System.Net; using System.Text.Json; +using System.Text.Json.Nodes; namespace CRSim.Core.Services { diff --git a/CRSim.PlatformDiagram/CRSim.PlatformDiagram.csproj b/CRSim.PlatformDiagram/CRSim.PlatformDiagram.csproj index 6cdcf5d..1333cef 100644 --- a/CRSim.PlatformDiagram/CRSim.PlatformDiagram.csproj +++ b/CRSim.PlatformDiagram/CRSim.PlatformDiagram.csproj @@ -4,6 +4,7 @@ net9.0-windows10.0.19041.0 enable enable + x64 diff --git a/CRSim.sln b/CRSim.sln index fe707a7..e5d6b67 100644 --- a/CRSim.sln +++ b/CRSim.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.12.35424.110 +# Visual Studio Version 18 +VisualStudioVersion = 18.3.11218.70 d18.3 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CRSim.Core", "CRSim.Core\CRSim.Core.csproj", "{C72B16CC-AA3E-4E0F-A424-07D3987A9FD9}" EndProject @@ -31,10 +31,9 @@ Global {94927020-7AD7-4F6F-A456-F34A8E0BC40A}.Debug|x64.Build.0 = Debug|x64 {94927020-7AD7-4F6F-A456-F34A8E0BC40A}.Release|x64.ActiveCfg = Release|x64 {94927020-7AD7-4F6F-A456-F34A8E0BC40A}.Release|x64.Build.0 = Release|x64 - {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Debug|x64.ActiveCfg = Debug|Any CPU - {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Debug|x64.Build.0 = Debug|Any CPU - {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Release|x64.ActiveCfg = Release|Any CPU - {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Release|x64.Build.0 = Release|Any CPU + {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Debug|x64.ActiveCfg = Debug|x64 + {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Debug|x64.Build.0 = Debug|x64 + {895EE8B3-1A15-4CA8-9AFE-246585732AA5}.Release|x64.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/CRSim/App.xaml.cs b/CRSim/App.xaml.cs index 5ef7982..d7b1713 100644 --- a/CRSim/App.xaml.cs +++ b/CRSim/App.xaml.cs @@ -6,23 +6,38 @@ namespace CRSim { public partial class App : Application { - public static IHost AppHost { get; private set; } + public IHost AppHost { get; private set; } + public static MainWindow MainWindow; - public string[] commandLineArgs; - public CommandLineOptions parsedOptions; - public static string AppVersion { get; set; } = Assembly.GetAssembly(typeof(App)).GetName().Version.ToString(); - private readonly Mutex mutex; + public static string AppVersion { get; set; } + + private Mutex mutex; public App() { + InitializeComponent(); + } + + public static T GetService() + where T : class + { + if ((Current as App)!.AppHost.Services.GetService(typeof(T)) is not T service) + { + throw new ArgumentException($"{typeof(T)} needs to be registered in ConfigureServices within App.xaml.cs."); + } + + return service; + } + + protected override async void OnLaunched(LaunchActivatedEventArgs args) + { + AppVersion = Assembly.GetAssembly(typeof(App)).GetName().Version.ToString(); mutex = new Mutex(true, "CRSim", out bool isNewInstance); if (!isNewInstance) { Environment.Exit(0); } - - var args = Environment.GetCommandLineArgs(); - parsedOptions = CommandLineParser.Parse(args); + var parsedOptions = CommandLineParser.Parse(Environment.GetCommandLineArgs()); if (parsedOptions.Debug) { LaunchDebugConsole(); @@ -57,11 +72,6 @@ namespace CRSim PluginService.InitializePlugins(context, services, parsedOptions.ExternalPluginPath); }) .Build(); - InitializeComponent(); - } - - protected override async void OnLaunched(LaunchActivatedEventArgs args) - { var splashScreenWindow = AppHost.Services.GetRequiredService(); splashScreenWindow.Activate(); await PerformInitializationAsync(splashScreenWindow); @@ -76,10 +86,10 @@ namespace CRSim { if(!Debugger.IsAttached) await Task.Delay(2000); startWindow.Status = "正在加载设置..."; - AppHost.Services.GetService().LoadSettings(); + GetService().LoadSettings(); if (!Debugger.IsAttached) await Task.Delay(500); startWindow.Status = "正在加载数据库..."; - AppHost.Services.GetService().ImportData(AppPaths.ConfigFilePath); + GetService().ImportData(AppPaths.ConfigFilePath); if (!Debugger.IsAttached) await Task.Delay(500); startWindow.Status = new[] { "正在控票…", "正在关闭垃圾桶盖…", "正在刷绿车底…", "正在准备降弓用刑…" }[new Random().Next(4)]; if (!Debugger.IsAttached) await Task.Delay(500); diff --git a/CRSim/Assets/SplashScreen.scale-200.png b/CRSim/Assets/SplashScreen.scale-200.png index 32f486a86792a5e34cd9a8261b394c49b48f86be..6ac2ecb37c6326eeb29a39293c55ab6cd91b0f2d 100644 GIT binary patch literal 50131 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 diff --git a/CRSim/Assets/Square44x44Logo.scale-200.png b/CRSim/Assets/Square44x44Logo.scale-200.png index f713bba67f551ef91020b75716a4dc8ebd744b1c..3ae5799d1385274b1a0e1b3db03c99286ca57fa0 100644 GIT binary patch literal 9109 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 ThaJhR00000NkvXXu0mjfGtj*> literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4eur6?`p#F3T? z4*QO*N&qG7i$)|qpU}?KQ=R_jyp!bp@7??T-@V`Wg@3~TS&n}>X;V=xho-R1`H!oDwJ)wOOnY1-Gqr}7Pz5Pc!vJ(>C zNMPi+^Hgt7U)Z_ePY~eig{-1#_= zoQ?TjCxo9I&ve^2zcW8E{C5P*wR`t;wu{4VMt^~A?tjiW`u8}DO-w>MB8Plz98GOK zm{H8&>2nF70OVwEMxj7_Y9_u-$-wQn(^$B`0KNei!q}S+Jr({Gd;PxzYjy=KF3m2# z9DdplJ2rFS8*~YMgHlLkFOf&0#mFekZLF}=iV2z;@VK=H!b%|;n>%1_Wrl$l1Ni7j z1X3>sqJQgIKhE-#E`Q{Iu`rc?q)kOoUQiL?;AF3L@_-jYE+(UYa2O3uZD^@(1a02i zxEB8vc73=W51U#+@L_9hfh0jTKK?uk4Ud{(y4VDo8tMp*NkQo09k`oYrFHjSZUlLB z8)e|^!;*A7<;8^fqKHKG@Noxvp7o)n>=D-d*?$F&tJo^=;wmA^Ya0oH8f2qm*v)$n zStYgjKKVy5FNA++^xrW&OU)GO48cvy^Lc^=ddlo;T=IMA(+3A zfh*sJf@wM*?Oo3?J~08ezXoD@bR0?nC>Kw3dSn#2KAW#kieSg!kPX38)&T$0k7vj^HaW zMNz-hn_|`>M3_k;x{^$p1t}qMceX>!)mv^9D7vMCEeq8`5$x@kVYMS0-Qqqx>l=ig zjy5Kzrd9dn2OofBK&m*pSoP`+0j3otiy50iv zf~dV4<@uGs)C|_IUV&r#)|0>#$StiyZG#9lEK_WBbx>ht6+D3ONgK4ZG=JX)riqnb zNMOX6t0dJ^omJ^?4HD%biTqwhKJNW18^K0~@Nnh8g`CLr9U}s!g|eCkk}WkXGJiED z0Q#gpCSKQRK&R74wiLe<+O$H}BbG3j#)g0r|$=Us4AnW5axkv%)H^IIl7^v#^>Tdw=F2(to&z zg_fqM_$d~VacM+oHCUJ!!o}`gtXW~H%EHS*36?Bc0LhRHH`DV_dp{nW_x;e{BSv(H zAMX6S480xQ(>~ih)2QO)2$43MCpdBbhPNx*9L%MQQT_83#E}M8RMmj*qK<>R%^%)d zxDfXbs2ZJ#sS#q5?xHaDYk%xKehv#sTIzEW!P$Heq34s3Q!4_)h#^Rh_)Mg7k*7O1 zFjbJbx$oI?t>(N$+{r3MP-G$`j|A{Ma0VPQ6Wm=^kz$%s)*Lj5M(tf<96ECu1vevM zV9SFEF-iUXt6;f(jQ$b1+<*U$Kz>EaY&TVQy$=tCAH2>FxK>^x#D8v|lenK1hX-{} zP+Im7>$wiNL?TxF#)=xmEybi4RX!3SlaRQ3_#u~^LR54Ez9-Kgs(d{dHSO?cYz5xEGZ{PzX4%V&Q2God^&s(_-=#d}gCU_u36uAiq5i9?54}{1( zJkAEp8F^U1M0O#83GgwliUjUs+(iyHU;-wUJ!uK@Iq>S9v_!eQj4fTRMOwOCi?lSk z9%<=vAz}jM-*PQtH@Odn1LZcd^j#o>W$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLk FV1geHar*!O diff --git a/CRSim/Assets/StoreLogo.png b/CRSim/Assets/StoreLogo.png index a4586f26bdf7841cad10f39cdffe2aca3af252c1..4bc10f0145d00123f110ea2032178d3b8a44c7fc 100644 GIT binary patch literal 6723 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 APyhe` diff --git a/CRSim/Assets/Wide310x150Logo.scale-200.png b/CRSim/Assets/Wide310x150Logo.scale-200.png index 8b4a5d0dd5f6c6ab408e1edf04a07888859a9eab..50e68884062a4b7f3d967984a3c68272e4de1838 100644 GIT binary patch literal 19097 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 diff --git a/CRSim/CRSim.csproj b/CRSim/CRSim.csproj index facf08f..52b7469 100644 --- a/CRSim/CRSim.csproj +++ b/CRSim/CRSim.csproj @@ -11,7 +11,6 @@ true true enable - None preview @@ -45,13 +44,10 @@ - - - - - - - + + + + @@ -152,15 +148,20 @@ - False - True - False - False + False + False 10.0.19041.0 Assets\CRSimIcon.ico - False CRSimIcon.png - true False + False + False + SHA256 + False + True + Never + True + 0 + zh-CN \ No newline at end of file diff --git a/CRSim/Package.appxmanifest b/CRSim/Package.appxmanifest index b1cf795..c91189b 100644 --- a/CRSim/Package.appxmanifest +++ b/CRSim/Package.appxmanifest @@ -8,15 +8,15 @@ IgnorableNamespaces="uap rescap"> + Name="53D4FFDC.CRSim" + Publisher="CN=A0D23678-D7D4-4933-B369-1877DD38719C" + Version="3.1.3.0" /> - + - 国铁信息显示模拟 - 电排骨 + CRSim + 电排骨工坊 Assets\CRSimIcon.png @@ -34,7 +34,7 @@ Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> + diff --git a/CRSim/Services/DialogService.cs b/CRSim/Services/DialogService.cs index 8739e1c..9956f19 100644 --- a/CRSim/Services/DialogService.cs +++ b/CRSim/Services/DialogService.cs @@ -252,5 +252,28 @@ namespace CRSim.Services } return null; } + + public async Task CreateStationAsync() + { + ContentDialog dialog = new() + { + XamlRoot = XamlRoot, + Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style, + Title = "新增车站", + PrimaryButtonText = "确定", + CloseButtonText = "取消", + DefaultButton = ContentDialogButton.Primary, + IsPrimaryButtonEnabled = false + }; + var createStationDialog = new CreateStationDialog(isValid => dialog.IsPrimaryButtonEnabled = isValid); + dialog.Content = createStationDialog; + var result = await dialog.ShowAsync(); + if (result == ContentDialogResult.Primary) + { + var inputDialog = dialog.Content as CreateStationDialog; + return inputDialog.GeneratedStation; + } + return null; + } } } diff --git a/CRSim/Services/IDialogService.cs b/CRSim/Services/IDialogService.cs index 00f98bf..1468e9c 100644 --- a/CRSim/Services/IDialogService.cs +++ b/CRSim/Services/IDialogService.cs @@ -4,6 +4,7 @@ { string? GetFile(string[] filter); string? SaveFile(string filter,string fileName); + Task CreateStationAsync(); Task GetInputAsync(string title,string placeholder); Task GetConfirmAsync(string title); Task ShowMessageAsync(string title, string message); diff --git a/CRSim/ViewModels/SettingsPageViewModel.cs b/CRSim/ViewModels/SettingsPageViewModel.cs index 667d0f6..20cf36d 100644 --- a/CRSim/ViewModels/SettingsPageViewModel.cs +++ b/CRSim/ViewModels/SettingsPageViewModel.cs @@ -3,6 +3,8 @@ using System.Diagnostics; using System.Diagnostics.Metrics; using System.IO.Packaging; using System.Reflection; +using System.Security.Policy; +using Windows.System; namespace CRSim.ViewModels { @@ -134,71 +136,8 @@ namespace CRSim.ViewModels } else { - await _dialogService.ShowTextAsync("发现新版本 " + update.Name, update.Body + "\n系统即将下载安装新版本。"); - DispatcherQueue dispatcherQueue = DispatcherQueue.GetForCurrentThread(); - var downloader = new DownloadService(); - UpdateProgress = 0; - try - { - int lastProgress = 0; - var lastUpdate = DateTime.MinValue; - downloader.DownloadProgressChanged += (s, e) => - { - var now = DateTime.Now; - if ((e.ProgressPercentage - lastProgress >= 1) || (now - lastUpdate).TotalMilliseconds >= 100) - { - lastProgress = (int)e.ProgressPercentage; - lastUpdate = now; - - dispatcherQueue.TryEnqueue(() => - { - UpdateProgress = (int)e.ProgressPercentage; - }); - } - }; - var path = Path.Combine(AppPaths.TempPath, "update.zip"); - await downloader.DownloadFileTaskAsync(update.Assets[0].BrowserDownloadUrl, path); - UpdateProgress = 0; - - if (!FileHashHelper.VerifySHA256(path, update.Assets[0].Digest.Split(':')[1])) - { - await _dialogService.ShowMessageAsync("错误", "下载的文件校验失败,请重试。"); - return; - } - - var programDirectory = AppDomain.CurrentDomain.BaseDirectory; - var appExePath = Environment.ProcessPath; - var appName = Path.GetFileName(appExePath); - string batchScript = $@" - @echo off - taskkill /F /IM ""{appName}"" >nul 2>&1 - timeout /t 2 >nul - cd /d ""{programDirectory}"" - powershell -Command ""Expand-Archive -Path '{path}' -DestinationPath '{programDirectory}' -Force"" - del /f /q ""{path}"" - start """" ""{appExePath}"" - exit /b 0 - "; - string batchFilePath = Path.Combine(Path.GetTempPath(), "CRSimUpdate.bat"); - File.WriteAllText(batchFilePath, batchScript); - var processInfo = new ProcessStartInfo - { - FileName = "cmd.exe", - Arguments = $"/c \"{batchFilePath}\"", - WindowStyle = ProcessWindowStyle.Hidden, - UseShellExecute = false, - CreateNoWindow = true - }; - - Process.Start(processInfo); - Application.Current.Exit(); - } - catch (Exception e) - { - await _dialogService.ShowTextAsync("错误", "更新失败。若使用“官方站”,可尝试更换到“镜像站”。\n" + e); - UpdateProgress = 0; - return; - } + await _dialogService.ShowTextAsync("发现新版本 " + update.Name, update.Body + "\n请前往微软商店下载新版本。"); + await Launcher.LaunchUriAsync(new Uri("https://apps.microsoft.com/detail/9n4xhrrmph8v")); } } [RelayCommand] diff --git a/CRSim/ViewModels/StationManagementPageViewModel.cs b/CRSim/ViewModels/StationManagementPageViewModel.cs index fa44d6f..544fad5 100644 --- a/CRSim/ViewModels/StationManagementPageViewModel.cs +++ b/CRSim/ViewModels/StationManagementPageViewModel.cs @@ -1,4 +1,5 @@ using CRSim.Converters; +using CRSim.Core.Models; using CRSim.Core.Models.Plugin; using System.Text.RegularExpressions; @@ -34,11 +35,11 @@ public partial class StationManagementPageViewModel : ObservableObject public ObservableCollection TrainStops { get; private set; } = []; public ObservableCollection FilteredTrainStops =>[.. TrainStops.Where(x => x.Number.ToUpper().Contains(SearchTrainNumberText.ToUpper()))]; - private readonly IDatabaseService _databaseService = App.AppHost.Services.GetService(); + private readonly IDatabaseService _databaseService = App.GetService(); - private readonly IDialogService _dialogService = App.AppHost.Services.GetService(); + private readonly IDialogService _dialogService = App.GetService(); - private readonly INetworkService _networkService = App.AppHost.Services.GetService(); + private readonly INetworkService _networkService = App.GetService(); public StationManagementPageViewModel() { TrainStops.CollectionChanged += (sender, e) => @@ -121,15 +122,15 @@ public partial class StationManagementPageViewModel : ObservableObject [RelayCommand] public async Task AddStation() { - string? station = await _dialogService.GetInputAsync("请输入车站名称", string.Empty); + var station = await _dialogService.CreateStationAsync(); if (station != null) { - if (StationNames.Contains(station)) + if (StationNames.Contains(station.Name)) { - await _dialogService.ShowMessageAsync("添加失败", $"车站 {station} 已存在。"); + await _dialogService.ShowMessageAsync("添加失败", $"车站 {station.Name} 已存在。"); return; } - _databaseService.AddStationByName(station); + _databaseService.AddStation(station); await _databaseService.SaveData(); RefreshStations(); } @@ -167,20 +168,18 @@ public partial class StationManagementPageViewModel : ObservableObject return station; } [RelayCommand] - public async Task ImportFrom7D() + public async Task ExportStation() { - var path = _dialogService.GetFile([".exe"]); + if (!await Validate()) return; + var path = _dialogService.SaveFile(".json", $"{SelectedStation.Name}车站配置"); if (path == null) return; - try + string json = JsonSerializer.Serialize(new Json() { - await _databaseService.ImportStationFrom7D(path); - await _databaseService.SaveData(); - RefreshStations(); - } - catch (Exception e) - { - await _dialogService.ShowMessageAsync("导入失败", "文件格式错误或被占用。\n" + e.Message); + Stations = [GenerateStation(SelectedStation.Name, WaitingAreas, TrainStops, Platforms) ], + TrainNumbers = [] } + , JsonContext.Default.Json); + await File.WriteAllTextAsync(path, json); } #endregion diff --git a/CRSim/Views/DashboardPage.xaml.cs b/CRSim/Views/DashboardPage.xaml.cs index adf9c22..ae9c2f7 100644 --- a/CRSim/Views/DashboardPage.xaml.cs +++ b/CRSim/Views/DashboardPage.xaml.cs @@ -2,7 +2,7 @@ namespace CRSim.Views; public sealed partial class DashboardPage : Page { - public DashboardPageViewModel ViewModel { get; } = App.AppHost.Services.GetService(); + public DashboardPageViewModel ViewModel { get; } = App.GetService(); public DashboardPage() { diff --git a/CRSim/Views/DialogContents/CreateStationDialog.xaml b/CRSim/Views/DialogContents/CreateStationDialog.xaml new file mode 100644 index 0000000..25a814e --- /dev/null +++ b/CRSim/Views/DialogContents/CreateStationDialog.xaml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CRSim/Views/DialogContents/CreateStationDialog.xaml.cs b/CRSim/Views/DialogContents/CreateStationDialog.xaml.cs new file mode 100644 index 0000000..c23b7c7 --- /dev/null +++ b/CRSim/Views/DialogContents/CreateStationDialog.xaml.cs @@ -0,0 +1,144 @@ +namespace CRSim.Views; +public sealed partial class CreateStationDialog : Page +{ + + private readonly IDialogService _dialogService = App.GetService(); + + private Station? _parsedStation = null; + + public Station? GeneratedStation => ToBoolean(Blank.IsChecked) ? new Station + { + Name = textBoxBlank.Text, + Platforms = [], + WaitingAreas = [], + TrainStops = [] + } : _parsedStation; + + private readonly Action _onValidityChanged; + + public bool ToBoolean(bool? value) + { + return value == true; + } + + private void Validate(object sender, object e) + { + if (textBoxBlank == null) return; + bool isValid; + if (ToBoolean(Blank.IsChecked)) + { + isValid = !string.IsNullOrWhiteSpace(textBoxBlank.Text); + } + else + { + isValid = _parsedStation != null; + } + _onValidityChanged?.Invoke(isValid); + } + + public CreateStationDialog(Action onValidityChanged) + { + _onValidityChanged = onValidityChanged; + InitializeComponent(); + } + + private async void ImportFromSS7DSAsync(object sender, RoutedEventArgs e) + { + var path = _dialogService.GetFile([".exe"]); + textBoxBroadcast.Text = path; + if (path == null) return; + try + { + Station station = new() { Platforms = [], WaitingAreas = [], TrainStops = [] }; + var stationName = (await File.ReadAllTextAsync(path.Replace("վ㲥ϵͳ.exe", "info.ini"))).Split("|")[0]; + var lines = await File.ReadAllLinesAsync(path.Replace("վ㲥ϵͳ.exe", "data.csv")); + station.Name = stationName; + foreach (var line in lines) + { + var data = line.Split(','); + var waitingAreaName = string.IsNullOrWhiteSpace(data.Last()) ? "δ֪" : data.Last(); + var platform = string.IsNullOrWhiteSpace(data[5]) ? "δ֪" : data[5]; + var ticketCheck = string.IsNullOrWhiteSpace(data[4]) ? string.Empty : data[4]; + + var existingPlatform = station.Platforms.FirstOrDefault(x => x.Name == platform); + if (existingPlatform == null) + { + station.Platforms.Add(new Platform { Name = platform, Length = 20 }); + } + + + var waitingArea = station.WaitingAreas.FirstOrDefault(x => x.Name == waitingAreaName); + if (waitingArea == null) + { + waitingArea = new WaitingArea() { Name = waitingAreaName }; + station.WaitingAreas.Add(waitingArea); + } + + foreach (var ticketCheckName in ticketCheck.Split('|')) + { + if (!string.IsNullOrWhiteSpace(ticketCheckName) && !waitingArea.TicketChecks.Any(x => x.Name == ticketCheckName)) + { + waitingArea.TicketChecks.Add(new TicketCheck { Name = ticketCheckName }); + } + } + + if (!string.IsNullOrEmpty(data[0]) && !station.TrainStops.Any(x => x.Number == data[0])) + { + TimeSpan? arrivalTime = null; + TimeSpan? departureTime = null; + + if (data[2] == stationName) + { + departureTime = TimeSpan.Parse(lines.FirstOrDefault(x => x.Split(",")[0] == data[0] && x.Split(",")[1].Contains("ͳ"))?.Split(",")[7] ?? string.Empty); + } + else if (data[3] == stationName) + { + arrivalTime = TimeSpan.Parse(data[7]); + } + else + { + arrivalTime = TimeSpan.Parse(data[7]); + departureTime = TimeSpan.Parse(lines.FirstOrDefault(x => x.Split(",")[0] == data[0] && x.Split(",")[1].Contains("ͳ"))?.Split(",")[7] ?? string.Empty); + } + + station.TrainStops.Add(new TrainStop + { + Number = data[0], + Terminal = data[3], + Origin = data[2], + TicketCheckIds = [.. waitingArea.TicketChecks.Select(x => x.Id)], + ArrivalTime = arrivalTime, + DepartureTime = departureTime, + Platform = platform, + Length = data[0].StartsWith('G') || data[0].StartsWith('D') || data[0].StartsWith('C') ? Math.Abs(data[0].GetHashCode()) % 3 == 0 ? 8 : 16 : 18, + Landmark = data[8] + "ɫ" ?? null, + }); + } + } + _parsedStation = station; + } + catch (Exception ex) + { + _parsedStation = null; + } + Validate(this, EventArgs.Empty); + } + + private async void ImportFromFileAsync(object sender, RoutedEventArgs e) + { + var path = _dialogService.GetFile([".json"]); + textBoxFile.Text = path; + if (path == null) return; + try + { + var json = File.ReadAllText(path).Replace("StationStop", "TrainStop"); + var data = JsonSerializer.Deserialize(json, JsonContext.Default.Json); + _parsedStation = data?.Stations.FirstOrDefault(); + } + catch (Exception ex) + { + _parsedStation = null; + } + Validate(this, EventArgs.Empty); + } +} diff --git a/CRSim/Views/PlatformDiagramPage.xaml.cs b/CRSim/Views/PlatformDiagramPage.xaml.cs index 2b48a20..5ea7578 100644 --- a/CRSim/Views/PlatformDiagramPage.xaml.cs +++ b/CRSim/Views/PlatformDiagramPage.xaml.cs @@ -2,7 +2,7 @@ namespace CRSim.Views; public sealed partial class PlatformDiagramPage : Page { - public PlatformDiagramPageViewModel ViewModel { get; } = App.AppHost.Services.GetService(); + public PlatformDiagramPageViewModel ViewModel { get; } = App.GetService(); public PlatformDiagramPage() { @@ -12,6 +12,6 @@ public sealed partial class PlatformDiagramPage : Page private void Page_Loaded(object sender, RoutedEventArgs e) { - App.AppHost.Services.GetService().XamlRoot = this.XamlRoot; + App.GetService().XamlRoot = this.XamlRoot; } } diff --git a/CRSim/Views/PluginManagementPage.xaml.cs b/CRSim/Views/PluginManagementPage.xaml.cs index 303c7cb..0e107f0 100644 --- a/CRSim/Views/PluginManagementPage.xaml.cs +++ b/CRSim/Views/PluginManagementPage.xaml.cs @@ -4,7 +4,7 @@ namespace CRSim.Views; public sealed partial class PluginManagementPage : Page { - public PluginManagementPageViewModel ViewModel { get; } = App.AppHost.Services.GetService(); + public PluginManagementPageViewModel ViewModel { get; } = App.GetService(); public PluginManagementPage() { @@ -18,6 +18,6 @@ public sealed partial class PluginManagementPage : Page private void Page_Loaded(object sender, RoutedEventArgs e) { - App.AppHost.Services.GetService().XamlRoot = this.XamlRoot; + App.GetService().XamlRoot = this.XamlRoot; } } diff --git a/CRSim/Views/ScreenSimulatorPage.xaml.cs b/CRSim/Views/ScreenSimulatorPage.xaml.cs index 8ff3407..ac4ec3c 100644 --- a/CRSim/Views/ScreenSimulatorPage.xaml.cs +++ b/CRSim/Views/ScreenSimulatorPage.xaml.cs @@ -2,7 +2,7 @@ namespace CRSim.Views; public sealed partial class ScreenSimulatorPage : Page { - public ScreenSimulatorPageViewModel ViewModel { get; } = App.AppHost.Services.GetService(); + public ScreenSimulatorPageViewModel ViewModel { get; } = App.GetService(); public ScreenSimulatorPage() { diff --git a/CRSim/Views/SettingsPage.xaml.cs b/CRSim/Views/SettingsPage.xaml.cs index 194e2ff..366e460 100644 --- a/CRSim/Views/SettingsPage.xaml.cs +++ b/CRSim/Views/SettingsPage.xaml.cs @@ -4,7 +4,7 @@ namespace CRSim.Views; public sealed partial class SettingsPage : Page { - public SettingsPageViewModel ViewModel { get; } = App.AppHost.Services.GetService(); + public SettingsPageViewModel ViewModel { get; } = App.GetService(); public SettingsPage() { @@ -18,6 +18,6 @@ public sealed partial class SettingsPage : Page private void Page_Loaded(object sender, RoutedEventArgs e) { - App.AppHost.Services.GetService().XamlRoot = this.XamlRoot; + App.GetService().XamlRoot = this.XamlRoot; } } diff --git a/CRSim/Views/StationManagementPage.xaml b/CRSim/Views/StationManagementPage.xaml index d0ba63b..e7e09f3 100644 --- a/CRSim/Views/StationManagementPage.xaml +++ b/CRSim/Views/StationManagementPage.xaml @@ -55,7 +55,6 @@ - - - - - -