public override bool Build(CompileMessages errors, bool forceRebuild) { if (!base.Build(errors, forceRebuild)) { return(false); } try { string baseGameFileName = Factory.AGSEditor.BaseGameFileName; string exeFileName = baseGameFileName + ".exe"; BuildTargetWindows targetWin = BuildTargetsInfo.FindBuildTargetByName("Windows") as BuildTargetWindows; if (targetWin == null) { errors.Add(new CompileError("Debug build depends on Windows build target being available! Your AGS installation may be corrupted!")); return(false); } string compiledEXE = targetWin.GetCompiledPath(exeFileName); string compiledDat = targetWin.GetCompiledPath(baseGameFileName + ".ags"); string sourceEXE = Path.Combine(Factory.AGSEditor.EditorDirectory, AGSEditor.ENGINE_EXE_FILE_NAME); Utilities.DeleteFileIfExists(compiledEXE); Utilities.DeleteFileIfExists(compiledDat); File.Copy(sourceEXE, exeFileName, true); BusyDialog.Show("Please wait while we prepare to run the game...", new BusyDialog.ProcessingHandler(CreateDebugFiles), errors); if (errors.HasErrors) { return(false); } Utilities.DeleteFileIfExists(GetDebugPath(exeFileName)); File.Move(exeFileName, GetDebugPath(exeFileName)); // copy configuration from Compiled folder to use with Debugging string cfgFilePath = targetWin.GetCompiledPath(AGSEditor.CONFIG_FILE_NAME); if (File.Exists(cfgFilePath)) { File.Copy(cfgFilePath, GetDebugPath(AGSEditor.CONFIG_FILE_NAME), true); } else { cfgFilePath = Path.Combine(AGSEditor.OUTPUT_DIRECTORY, Path.Combine(AGSEditor.DATA_OUTPUT_DIRECTORY, AGSEditor.CONFIG_FILE_NAME)); if (File.Exists(cfgFilePath)) { File.Copy(cfgFilePath, GetDebugPath(AGSEditor.CONFIG_FILE_NAME), true); } } foreach (Plugin plugin in Factory.AGSEditor.CurrentGame.Plugins) { File.Copy(Path.Combine(Factory.AGSEditor.EditorDirectory, plugin.FileName), GetDebugPath(plugin.FileName), true); } // Copy files from Compiled/Data to Compiled/Windows, because this is currently where game will be looking them up targetWin.CopyAuxiliaryGameFiles(Path.Combine(AGSEditor.OUTPUT_DIRECTORY, AGSEditor.DATA_OUTPUT_DIRECTORY), false); } catch (Exception ex) { errors.Add(new CompileError("Unexpected error: " + ex.Message)); return(false); } return(true); }