예제 #1
0
 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}"));
     }
 }
예제 #2
0
        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));
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        public async Task <IActionResult> RunThis([FromBody] SubTimetableAction aAction)
        {
            await Program.Host.SaveApiCall(() => TimetableManager.RunThis(aAction), TimetableManager, $"{aAction.actionType}");

            return(Ok());
        }