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";
IBuildTarget targetWin = BuildTargetsInfo.FindBuildTargetByName("Windows");
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 sourceEXE = Path.Combine(Factory.AGSEditor.EditorDirectory, AGSEditor.ENGINE_EXE_FILE_NAME);
Utilities.DeleteFileIfExists(compiledEXE);
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);
}
}
catch (Exception ex)
{
errors.Add(new CompileError("Unexpected error: " + ex.Message));
return false;
}
return true;
}