private void ExecSubActions(SubTimetableAction aAction) { if (aAction is TimetableAction MainAction && MainAction.subAction != null) { MainAction.subAction.ForEach(async A => await Program.Host.SaveApiCall(() => RunThis(A), this, $"{A.actionType}")); } }
private void DeletePlayerOnPlayfield(SubTimetableAction aAction) { var OnPlayfields = aAction.data.Split(";").Select(P => P.Trim()); PlayerManager.Value .QueryPlayer(DB => DB.Players.Where(P => OnPlayfields.Contains(P.Playfield)), P => GameplayManager.Value.WipePlayer(P.SteamId)); }
public void RunThis(SubTimetableAction aAction) { switch (aAction.actionType) { case ActionType.chat: ChatManager.Value.ChatMessageSERV(aAction.data); break; case ActionType.chatUntil: ChatManager.Value.ChatMessageSERV(aAction.data); break; case ActionType.restart: EGSRestart(aAction); break; case ActionType.startEGS: SysteminfoManager.Value.EGSStart(); break; case ActionType.stopEGS: SysteminfoManager.Value.EGSStop(int.TryParse(aAction.data, out int WaitMinutes) ? WaitMinutes : 0);; break; case ActionType.backupFull: BackupManager.Value.FullBackup(BackupManager.Value.CurrentBackupDirectory("")); break; case ActionType.backupStructure: BackupManager.Value.StructureBackup(BackupManager.Value.CurrentBackupDirectory(" - Structures")); break; case ActionType.backupSavegame: BackupManager.Value.SavegameBackup(BackupManager.Value.CurrentBackupDirectory(" - Savegame")); break; case ActionType.backupScenario: BackupManager.Value.ScenarioBackup(BackupManager.Value.CurrentBackupDirectory(" - Scenario")); break; case ActionType.backupMods: BackupManager.Value.ModsBackup(BackupManager.Value.CurrentBackupDirectory(" - Mods")); break; case ActionType.backupEGSMainFiles: BackupManager.Value.EGSMainFilesBackup(BackupManager.Value.CurrentBackupDirectory(" - ESG MainFiles")); break; case ActionType.backupPlayfields: BackupManager.Value.BackupPlayfields(BackupManager.Value.CurrentBackupDirectory(" - Playfields"), aAction.data.Split(';').Select(P => P.Trim()).ToArray()); break; case ActionType.deleteOldBackups: BackupManager.Value.DeleteOldBackups(int.TryParse(aAction.data, out int BackupDays) ? BackupDays : 14); break; case ActionType.deleteOldBackpacks: BackpackManager.Value.DeleteOldBackpacks(int.TryParse(aAction.data, out int BackpackDays) ? BackpackDays : 14); break; case ActionType.deletePlayerOnPlayfield: DeletePlayerOnPlayfield(aAction); break; case ActionType.deleteHistoryBook: HistoryBookManager.Value.DeleteHistory(int.TryParse(aAction.data, out int HistoryDays) ? HistoryDays : 14); break; case ActionType.deleteOldFactoryItems: FactoryManager.Value.DeleteOldFactoryItems(int.TryParse(aAction.data, out int FactoryItemsDays) ? FactoryItemsDays : 14); break; case ActionType.runShell: ExecShell(aAction); break; case ActionType.consoleCommand: GameplayManager.Value.Request_ConsoleCommand(new PString(aAction.data)); break; case ActionType.wipePlayfield: PlayfieldManager.Value.Wipe(aAction.data.Split(':')[1].Split(';').Select(P => P.Trim()), aAction.data.Split(':')[0]); break; case ActionType.resetPlayfield: PlayfieldManager.Value.ResetPlayfield(aAction.data.Split(';').Select(P => P.Trim()).ToArray()); break; case ActionType.recreatePlayfield: PlayfieldManager.Value.RecreatePlayfield(aAction.data.Split(';').Select(P => P.Trim()).ToArray()); break; case ActionType.resetPlayfieldIfEmpty: PlayfieldManager.Value.ResetPlayfieldIfEmpty(aAction.data.Split(';').Select(P => P.Trim()).ToArray()); break; } if (aAction.actionType != ActionType.restart) { ExecSubActions(aAction); } }
private void ExecShell(SubTimetableAction aAction) { var ExecProcess = new Process { StartInfo = new ProcessStartInfo(aAction.data) { UseShellExecute = true, CreateNoWindow = true, WorkingDirectory = EmpyrionConfiguration.SaveGamePath, } }; ExecProcess.Start(); ExecProcess.WaitForExit(60000); }
private void EGSRestart(SubTimetableAction aAction) { RestartState(true); try { SysteminfoManager.Value.EGSStop(int.TryParse(aAction.data, out int WaitMinutes) ? WaitMinutes : 0); Thread.Sleep(10000); ExecSubActions(aAction); SysteminfoManager.Value.EGSStart(); } catch (Exception Error) { Logger.LogError(Error, "EGSRestart"); } RestartState(false); }
public async Task <IActionResult> RunThis([FromBody] SubTimetableAction aAction) { await Program.Host.SaveApiCall(() => TimetableManager.RunThis(aAction), TimetableManager, $"{aAction.actionType}"); return(Ok()); }