internal static void Initialize() { if (File.Exists(@".\Save.resx")) { try { using (var resxSet = new ResXResourceSet(@".\Save.resx")) { try { if (resxSet.GetObject("RootKit") != null) { BigFirework.YouDied(); return; } } catch { // 忽略掉 } HostList = (List <Host>)resxSet.GetObject("hosts"); SaveLoadList = (List <SaveLoadActions>)resxSet.GetObject("slList"); if ((SaveLoadList ?? throw new BrokenSaveException()).Any(sla => !sla.Load(resxSet))) { throw new BrokenSaveException(); } } if (HostList == null) { throw new BrokenSaveException(); } } catch { File.Delete(@".\Save.resx"); Initialize(); } } else { var initTask = new Task(() => { HostList = HostStorage.InitializeHost(); var rm = GlobalConfig.ResourceManager; LinkStorage.ReLink(rm); WafServer.FirewallInstall(rm); MailServer.RebuildMails(); AutoSploitServer.AddExploit(rm); }); //HostList = HostStorage.InitializeHost(); //var rm = GlobalConfig.ResourceManager; //LinkStorage.ReLink(rm); //WafServer.FirewallInstall(rm); //MailServer.RebuildMails(); //AutoSploitServer.AddExploit(rm); initTask.Start(); foreach (var s in GameController_TextResource.BootUp.Replace("\r\n", "\n").Split('\n')) { if (s.Trim() == string.Empty) { Thread.Sleep(1000); } Console.WriteLine(s); Thread.Sleep(50); } initTask.Wait(); PlotObserver.InitializePlot(); PlotObserver.StartObserve(); Console.Clear(); Thread.Sleep(2000); } WafServer.FirewallBootUp(); MediaPlayer.RegisterMediaFile(); AutoSploit.RegisterExpFile(); new Terminal(HostList?[0].Sh).Open(); }