AGS: Move debug globals to Globals
This commit is contained in:
parent
e81f87769d
commit
fd5c11f382
16 changed files with 108 additions and 96 deletions
|
@ -135,7 +135,7 @@ static int main_process_cmdline(ConfigTree &cfg, int argc, const char *argv[]) {
|
||||||
_G(justDisplayVersion) = true;
|
_G(justDisplayVersion) = true;
|
||||||
return 0;
|
return 0;
|
||||||
} else if (scumm_stricmp(arg, "-updatereg") == 0)
|
} else if (scumm_stricmp(arg, "-updatereg") == 0)
|
||||||
debug_flags |= DBG_REGONLY;
|
_G(debug_flags) |= DBG_REGONLY;
|
||||||
#if AGS_PLATFORM_DEBUG
|
#if AGS_PLATFORM_DEBUG
|
||||||
else if ((scumm_stricmp(arg, "--startr") == 0) && (ee < argc - 1)) {
|
else if ((scumm_stricmp(arg, "--startr") == 0) && (ee < argc - 1)) {
|
||||||
_G(override_start_room) = atoi(argv[ee + 1]);
|
_G(override_start_room) = atoi(argv[ee + 1]);
|
||||||
|
@ -196,17 +196,17 @@ static int main_process_cmdline(ConfigTree &cfg, int argc, const char *argv[]) {
|
||||||
INIwritestring(cfg, "graphics", "game_scale_win", argv[++ee]);
|
INIwritestring(cfg, "graphics", "game_scale_win", argv[++ee]);
|
||||||
else
|
else
|
||||||
INIwritestring(cfg, "graphics", "game_scale_win", "max_round");
|
INIwritestring(cfg, "graphics", "game_scale_win", "max_round");
|
||||||
} else if (scumm_stricmp(arg, "--fps") == 0) display_fps = kFPS_Forced;
|
} else if (scumm_stricmp(arg, "--fps") == 0) _G(display_fps) = kFPS_Forced;
|
||||||
else if (scumm_stricmp(arg, "--test") == 0) debug_flags |= DBG_DEBUGMODE;
|
else if (scumm_stricmp(arg, "--test") == 0) _G(debug_flags) |= DBG_DEBUGMODE;
|
||||||
else if (scumm_stricmp(arg, "-noiface") == 0) debug_flags |= DBG_NOIFACE;
|
else if (scumm_stricmp(arg, "-noiface") == 0) _G(debug_flags) |= DBG_NOIFACE;
|
||||||
else if (scumm_stricmp(arg, "-nosprdisp") == 0) debug_flags |= DBG_NODRAWSPRITES;
|
else if (scumm_stricmp(arg, "-nosprdisp") == 0) _G(debug_flags) |= DBG_NODRAWSPRITES;
|
||||||
else if (scumm_stricmp(arg, "-nospr") == 0) debug_flags |= DBG_NOOBJECTS;
|
else if (scumm_stricmp(arg, "-nospr") == 0) _G(debug_flags) |= DBG_NOOBJECTS;
|
||||||
else if (scumm_stricmp(arg, "-noupdate") == 0) debug_flags |= DBG_NOUPDATE;
|
else if (scumm_stricmp(arg, "-noupdate") == 0) _G(debug_flags) |= DBG_NOUPDATE;
|
||||||
else if (scumm_stricmp(arg, "-nosound") == 0) debug_flags |= DBG_NOSFX;
|
else if (scumm_stricmp(arg, "-nosound") == 0) _G(debug_flags) |= DBG_NOSFX;
|
||||||
else if (scumm_stricmp(arg, "-nomusic") == 0) debug_flags |= DBG_NOMUSIC;
|
else if (scumm_stricmp(arg, "-nomusic") == 0) _G(debug_flags) |= DBG_NOMUSIC;
|
||||||
else if (scumm_stricmp(arg, "-noscript") == 0) debug_flags |= DBG_NOSCRIPT;
|
else if (scumm_stricmp(arg, "-noscript") == 0) _G(debug_flags) |= DBG_NOSCRIPT;
|
||||||
else if (scumm_stricmp(arg, "-novideo") == 0) debug_flags |= DBG_NOVIDEO;
|
else if (scumm_stricmp(arg, "-novideo") == 0) _G(debug_flags) |= DBG_NOVIDEO;
|
||||||
else if (scumm_stricmp(arg, "-dbgscript") == 0) debug_flags |= DBG_DBGSCRIPT;
|
else if (scumm_stricmp(arg, "-dbgscript") == 0) _G(debug_flags) |= DBG_DBGSCRIPT;
|
||||||
else if (scumm_stricmp(arg, "--log") == 0) INIwriteint(cfg, "misc", "log", 1);
|
else if (scumm_stricmp(arg, "--log") == 0) INIwriteint(cfg, "misc", "log", 1);
|
||||||
else if (scumm_stricmp(arg, "--no-log") == 0) INIwriteint(cfg, "misc", "log", 0);
|
else if (scumm_stricmp(arg, "--no-log") == 0) INIwriteint(cfg, "misc", "log", 0);
|
||||||
//
|
//
|
||||||
|
@ -332,7 +332,7 @@ Common::Error AGSEngine::run() {
|
||||||
#if AGS_PLATFORM_OS_WINDOWS
|
#if AGS_PLATFORM_OS_WINDOWS
|
||||||
setup_malloc_handling();
|
setup_malloc_handling();
|
||||||
#endif
|
#endif
|
||||||
AGS3::debug_flags = 0;
|
_G(debug_flags) = 0;
|
||||||
|
|
||||||
AGS3::ConfigTree startup_opts;
|
AGS3::ConfigTree startup_opts;
|
||||||
int res = AGS3::main_process_cmdline(startup_opts, ARGC, ARGV);
|
int res = AGS3::main_process_cmdline(startup_opts, ARGC, ARGV);
|
||||||
|
@ -357,7 +357,7 @@ Common::Error AGSEngine::run() {
|
||||||
AGS3::main_set_gamedir(ARGC, ARGV);
|
AGS3::main_set_gamedir(ARGC, ARGV);
|
||||||
|
|
||||||
// Update shell associations and exit
|
// Update shell associations and exit
|
||||||
if (AGS3::debug_flags & DBG_REGONLY)
|
if (_G(debug_flags) & DBG_REGONLY)
|
||||||
return Common::kNoError;
|
return Common::kNoError;
|
||||||
|
|
||||||
_G(loadSaveGameOnStartup) = ConfMan.getInt("save_slot");
|
_G(loadSaveGameOnStartup) = ConfMan.getInt("save_slot");
|
||||||
|
|
|
@ -1828,11 +1828,11 @@ void prepare_room_sprites() {
|
||||||
|
|
||||||
clear_sprite_list();
|
clear_sprite_list();
|
||||||
|
|
||||||
if ((debug_flags & DBG_NOOBJECTS) == 0) {
|
if ((_G(debug_flags) & DBG_NOOBJECTS) == 0) {
|
||||||
prepare_objects_for_drawing();
|
prepare_objects_for_drawing();
|
||||||
prepare_characters_for_drawing();
|
prepare_characters_for_drawing();
|
||||||
|
|
||||||
if ((debug_flags & DBG_NODRAWSPRITES) == 0) {
|
if ((_G(debug_flags) & DBG_NODRAWSPRITES) == 0) {
|
||||||
our_eip = 34;
|
our_eip = 34;
|
||||||
draw_sprite_list();
|
draw_sprite_list();
|
||||||
}
|
}
|
||||||
|
@ -1910,8 +1910,8 @@ void draw_fps(const Rect &viewport) {
|
||||||
|
|
||||||
char fps_buffer[60];
|
char fps_buffer[60];
|
||||||
// Don't display fps if we don't have enough information (because loop count was just reset)
|
// Don't display fps if we don't have enough information (because loop count was just reset)
|
||||||
if (!std::isUndefined(fps)) {
|
if (!std::isUndefined(_G(fps))) {
|
||||||
snprintf(fps_buffer, sizeof(fps_buffer), "FPS: %2.1f / %s", fps, base_buffer);
|
snprintf(fps_buffer, sizeof(fps_buffer), "FPS: %2.1f / %s", _G(fps), base_buffer);
|
||||||
} else {
|
} else {
|
||||||
snprintf(fps_buffer, sizeof(fps_buffer), "FPS: --.- / %s", base_buffer);
|
snprintf(fps_buffer, sizeof(fps_buffer), "FPS: --.- / %s", base_buffer);
|
||||||
}
|
}
|
||||||
|
@ -1950,7 +1950,7 @@ void draw_gui_and_overlays() {
|
||||||
// Draw GUIs - they should always be on top of overlays like
|
// Draw GUIs - they should always be on top of overlays like
|
||||||
// speech background text
|
// speech background text
|
||||||
our_eip = 35;
|
our_eip = 35;
|
||||||
if (((debug_flags & DBG_NOIFACE) == 0) && (displayed_room >= 0)) {
|
if (((_G(debug_flags) & DBG_NOIFACE) == 0) && (displayed_room >= 0)) {
|
||||||
int aa;
|
int aa;
|
||||||
|
|
||||||
if (playerchar->activeinv >= MAX_INV) {
|
if (playerchar->activeinv >= MAX_INV) {
|
||||||
|
@ -2235,7 +2235,7 @@ void construct_engine_overlay() {
|
||||||
gfxDriver->BeginSpriteBatch(viewport, SpriteTransform());
|
gfxDriver->BeginSpriteBatch(viewport, SpriteTransform());
|
||||||
|
|
||||||
// draw the debug console, if appropriate
|
// draw the debug console, if appropriate
|
||||||
if ((_GP(play).debug_mode > 0) && (display_console != 0)) {
|
if ((_GP(play).debug_mode > 0) && (_G(display_console) != 0)) {
|
||||||
const int font = FONT_NORMAL;
|
const int font = FONT_NORMAL;
|
||||||
int ypp = 1;
|
int ypp = 1;
|
||||||
int txtspacing = getfontspacing_outlined(font);
|
int txtspacing = getfontspacing_outlined(font);
|
||||||
|
@ -2249,8 +2249,8 @@ void construct_engine_overlay() {
|
||||||
color_t draw_color = debugConsoleBuffer->GetCompatibleColor(15);
|
color_t draw_color = debugConsoleBuffer->GetCompatibleColor(15);
|
||||||
debugConsoleBuffer->FillRect(Rect(0, 0, viewport.GetWidth() - 1, barheight), draw_color);
|
debugConsoleBuffer->FillRect(Rect(0, 0, viewport.GetWidth() - 1, barheight), draw_color);
|
||||||
color_t text_color = debugConsoleBuffer->GetCompatibleColor(16);
|
color_t text_color = debugConsoleBuffer->GetCompatibleColor(16);
|
||||||
for (int jj = first_debug_line; jj != last_debug_line; jj = (jj + 1) % DEBUG_CONSOLE_NUMLINES) {
|
for (int jj = _G(first_debug_line); jj != _G(last_debug_line); jj = (jj + 1) % DEBUG_CONSOLE_NUMLINES) {
|
||||||
wouttextxy(debugConsoleBuffer, 1, ypp, font, text_color, debug_line[jj]);
|
wouttextxy(debugConsoleBuffer, 1, ypp, font, text_color, _G(debug_line)[jj]);
|
||||||
ypp += txtspacing;
|
ypp += txtspacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2263,7 +2263,7 @@ void construct_engine_overlay() {
|
||||||
invalidate_sprite(0, 0, debugConsole, false);
|
invalidate_sprite(0, 0, debugConsole, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (display_fps != kFPS_Hide)
|
if (_G(display_fps) != kFPS_Hide)
|
||||||
draw_fps(viewport);
|
draw_fps(viewport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -970,8 +970,8 @@ void create_savegame_screenshot(Bitmap *&screenShot) {
|
||||||
// that it supports it. But we want it all the time for ScummVM GMM
|
// that it supports it. But we want it all the time for ScummVM GMM
|
||||||
if (/*_GP(game).options[OPT_SAVESCREENSHOT] */true) {
|
if (/*_GP(game).options[OPT_SAVESCREENSHOT] */true) {
|
||||||
// Render the view without any UI elements
|
// Render the view without any UI elements
|
||||||
int old_flags = debug_flags;
|
int old_flags = _G(debug_flags);
|
||||||
debug_flags |= DBG_NOIFACE;
|
_G(debug_flags) |= DBG_NOIFACE;
|
||||||
construct_game_scene(true);
|
construct_game_scene(true);
|
||||||
|
|
||||||
int usewid = data_to_game_coord(_GP(play).screenshot_width);
|
int usewid = data_to_game_coord(_GP(play).screenshot_width);
|
||||||
|
@ -988,7 +988,7 @@ void create_savegame_screenshot(Bitmap *&screenShot) {
|
||||||
screenShot = CopyScreenIntoBitmap(usewid, usehit);
|
screenShot = CopyScreenIntoBitmap(usewid, usehit);
|
||||||
|
|
||||||
// Restore original screen
|
// Restore original screen
|
||||||
debug_flags = old_flags;
|
_G(debug_flags) = old_flags;
|
||||||
construct_game_scene(true);
|
construct_game_scene(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,7 +126,7 @@ int IsSoundPlaying() {
|
||||||
// returns -1 on failure, channel number on success
|
// returns -1 on failure, channel number on success
|
||||||
int PlaySoundEx(int val1, int channel) {
|
int PlaySoundEx(int val1, int channel) {
|
||||||
|
|
||||||
if (debug_flags & DBG_NOSFX)
|
if (_G(debug_flags) & DBG_NOSFX)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
ScriptAudioClip *aclip = GetAudioClipForOldStyleNumber(_GP(game), false, val1);
|
ScriptAudioClip *aclip = GetAudioClipForOldStyleNumber(_GP(game), false, val1);
|
||||||
|
|
|
@ -138,8 +138,8 @@ void script_debug(int cmdd, int dataa) {
|
||||||
if (goToRoom >= 0)
|
if (goToRoom >= 0)
|
||||||
NewRoom(goToRoom);
|
NewRoom(goToRoom);
|
||||||
} else if (cmdd == 4) {
|
} else if (cmdd == 4) {
|
||||||
if (display_fps != kFPS_Forced)
|
if (_G(display_fps) != kFPS_Forced)
|
||||||
display_fps = (FPSDisplayMode)dataa;
|
_G(display_fps) = (FPSDisplayMode)dataa;
|
||||||
} else if (cmdd == 5) {
|
} else if (cmdd == 5) {
|
||||||
if (dataa == 0) dataa = _GP(game).playercharacter;
|
if (dataa == 0) dataa = _GP(game).playercharacter;
|
||||||
if (_GP(game).chars[dataa].walking < 1) {
|
if (_GP(game).chars[dataa].walking < 1) {
|
||||||
|
|
|
@ -42,7 +42,7 @@ void scrPlayVideo(const char *name, int skip, int flags) {
|
||||||
|
|
||||||
if (_GP(play).fast_forward)
|
if (_GP(play).fast_forward)
|
||||||
return;
|
return;
|
||||||
if (debug_flags & DBG_NOVIDEO)
|
if (_G(debug_flags) & DBG_NOVIDEO)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((flags < 10) && (_GP(usetup).audio_backend == 0)) {
|
if ((flags < 10) && (_GP(usetup).audio_backend == 0)) {
|
||||||
|
|
|
@ -713,7 +713,7 @@ void load_new_room(int newnum, CharacterInfo *forchar) {
|
||||||
update_polled_stuff_if_runtime();
|
update_polled_stuff_if_runtime();
|
||||||
|
|
||||||
_G(roominst) = nullptr;
|
_G(roominst) = nullptr;
|
||||||
if (debug_flags & DBG_NOSCRIPT) ;
|
if (_G(debug_flags) & DBG_NOSCRIPT) ;
|
||||||
else if (_GP(thisroom).CompiledScript != nullptr) {
|
else if (_GP(thisroom).CompiledScript != nullptr) {
|
||||||
compile_room_script();
|
compile_room_script();
|
||||||
if (croom->tsdatasize > 0) {
|
if (croom->tsdatasize > 0) {
|
||||||
|
|
|
@ -20,9 +20,9 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//include <string.h>
|
|
||||||
#include "ags/engine/debugging/consoleoutputtarget.h"
|
#include "ags/engine/debugging/consoleoutputtarget.h"
|
||||||
#include "ags/engine/debugging/debug_log.h"
|
#include "ags/engine/debugging/debug_log.h"
|
||||||
|
#include "ags/globals.h"
|
||||||
|
|
||||||
namespace AGS3 {
|
namespace AGS3 {
|
||||||
namespace AGS {
|
namespace AGS {
|
||||||
|
@ -36,11 +36,11 @@ ConsoleOutputTarget::~ConsoleOutputTarget() {}
|
||||||
void ConsoleOutputTarget::PrintMessage(const DebugMessage &msg) {
|
void ConsoleOutputTarget::PrintMessage(const DebugMessage &msg) {
|
||||||
// limit number of characters for console
|
// limit number of characters for console
|
||||||
// TODO: is there a way to find out how many characters can fit in?
|
// TODO: is there a way to find out how many characters can fit in?
|
||||||
debug_line[last_debug_line] = msg.Text.Left(99);
|
_G(debug_line)[_G(last_debug_line)] = msg.Text.Left(99);
|
||||||
|
|
||||||
last_debug_line = (last_debug_line + 1) % DEBUG_CONSOLE_NUMLINES;
|
_G(last_debug_line) = (_G(last_debug_line) + 1) % DEBUG_CONSOLE_NUMLINES;
|
||||||
if (last_debug_line == first_debug_line)
|
if (_G(last_debug_line) == _G(first_debug_line))
|
||||||
first_debug_line = (first_debug_line + 1) % DEBUG_CONSOLE_NUMLINES;
|
_G(first_debug_line) = (_G(first_debug_line) + 1) % DEBUG_CONSOLE_NUMLINES;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Engine
|
} // namespace Engine
|
||||||
|
|
|
@ -48,7 +48,8 @@
|
||||||
#include "ags/events.h"
|
#include "ags/events.h"
|
||||||
|
|
||||||
#if AGS_PLATFORM_OS_WINDOWS
|
#if AGS_PLATFORM_OS_WINDOWS
|
||||||
//include <winalleg.h>
|
#include <winalleg.h>
|
||||||
|
#include "ags/shared/platform/windows/debug/namedpipesagsdebugger.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace AGS3 {
|
namespace AGS3 {
|
||||||
|
@ -58,14 +59,15 @@ using namespace AGS::Engine;
|
||||||
|
|
||||||
extern char check_dynamic_sprites_at_exit;
|
extern char check_dynamic_sprites_at_exit;
|
||||||
extern int displayed_room;
|
extern int displayed_room;
|
||||||
|
|
||||||
extern char pexbuf[STD_BUFFER_SIZE];
|
extern char pexbuf[STD_BUFFER_SIZE];
|
||||||
|
|
||||||
|
const char *OutputMsgBufID = "buffer";
|
||||||
|
const char *OutputFileID = "file";
|
||||||
|
const char *OutputSystemID = "stdout";
|
||||||
|
const char *OutputGameConsoleID = "console";
|
||||||
|
|
||||||
|
|
||||||
#if AGS_PLATFORM_OS_WINDOWS
|
#if AGS_PLATFORM_OS_WINDOWS
|
||||||
|
|
||||||
#include "ags/shared/platform/windows/debug/namedpipesagsdebugger.h"
|
|
||||||
|
|
||||||
HWND editor_window_handle = 0;
|
HWND editor_window_handle = 0;
|
||||||
|
|
||||||
IAGSEditorDebugger *GetEditorDebugger(const char *instanceToken) {
|
IAGSEditorDebugger *GetEditorDebugger(const char *instanceToken) {
|
||||||
|
@ -80,40 +82,21 @@ IAGSEditorDebugger *GetEditorDebugger(const char *instanceToken) {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int debug_flags = 0;
|
|
||||||
|
|
||||||
String debug_line[DEBUG_CONSOLE_NUMLINES];
|
|
||||||
int first_debug_line = 0, last_debug_line = 0, display_console = 0;
|
|
||||||
|
|
||||||
float fps = std::numeric_limits<float>::quiet_undefined();
|
|
||||||
FPSDisplayMode display_fps = kFPS_Hide;
|
|
||||||
|
|
||||||
std::unique_ptr<MessageBuffer> DebugMsgBuff;
|
|
||||||
std::unique_ptr<LogFile> DebugLogFile;
|
|
||||||
std::unique_ptr<ConsoleOutputTarget> DebugConsole;
|
|
||||||
|
|
||||||
const String OutputMsgBufID = "buffer";
|
|
||||||
const String OutputFileID = "file";
|
|
||||||
const String OutputSystemID = "stdout";
|
|
||||||
const String OutputGameConsoleID = "console";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PDebugOutput create_log_output(const String &name, const String &path = "", LogFile::OpenMode open_mode = LogFile::kLogFile_Overwrite) {
|
PDebugOutput create_log_output(const String &name, const String &path = "", LogFile::OpenMode open_mode = LogFile::kLogFile_Overwrite) {
|
||||||
// Else create new one, if we know this ID
|
// Else create new one, if we know this ID
|
||||||
if (name.CompareNoCase(OutputSystemID) == 0) {
|
if (name.CompareNoCase(OutputSystemID) == 0) {
|
||||||
return _GP(DbgMgr).RegisterOutput(OutputSystemID, AGSPlatformDriver::GetDriver(), kDbgMsg_None);
|
return _GP(DbgMgr).RegisterOutput(OutputSystemID, AGSPlatformDriver::GetDriver(), kDbgMsg_None);
|
||||||
} else if (name.CompareNoCase(OutputFileID) == 0) {
|
} else if (name.CompareNoCase(OutputFileID) == 0) {
|
||||||
DebugLogFile.reset(new LogFile());
|
_GP(DebugLogFile).reset(new LogFile());
|
||||||
String logfile_path = !path.IsEmpty() ? path : String::FromFormat("%s/ags.log", platform->GetAppOutputDirectory());
|
String logfile_path = !path.IsEmpty() ? path : String::FromFormat("%s/ags.log", platform->GetAppOutputDirectory());
|
||||||
if (!DebugLogFile->OpenFile(logfile_path, open_mode))
|
if (!_GP(DebugLogFile)->OpenFile(logfile_path, open_mode))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
platform->WriteStdOut("Logging to %s", logfile_path.GetCStr());
|
platform->WriteStdOut("Logging to %s", logfile_path.GetCStr());
|
||||||
auto dbgout = _GP(DbgMgr).RegisterOutput(OutputFileID, DebugLogFile.get(), kDbgMsg_None);
|
auto dbgout = _GP(DbgMgr).RegisterOutput(OutputFileID, _GP(DebugLogFile).get(), kDbgMsg_None);
|
||||||
return dbgout;
|
return dbgout;
|
||||||
} else if (name.CompareNoCase(OutputGameConsoleID) == 0) {
|
} else if (name.CompareNoCase(OutputGameConsoleID) == 0) {
|
||||||
DebugConsole.reset(new ConsoleOutputTarget());
|
_GP(DebugConsole).reset(new ConsoleOutputTarget());
|
||||||
return _GP(DbgMgr).RegisterOutput(OutputGameConsoleID, DebugConsole.get(), kDbgMsg_None);
|
return _GP(DbgMgr).RegisterOutput(OutputGameConsoleID, _GP(DebugConsole).get(), kDbgMsg_None);
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -206,8 +189,8 @@ void apply_log_config(const ConfigTree &cfg, const String &log_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delegate buffered messages to this new output
|
// Delegate buffered messages to this new output
|
||||||
if (DebugMsgBuff && !was_created_earlier)
|
if (_GP(DebugMsgBuff) && !was_created_earlier)
|
||||||
DebugMsgBuff->Send(log_id);
|
_GP(DebugMsgBuff)->Send(log_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_debug(const ConfigTree &cfg, bool stderr_only) {
|
void init_debug(const ConfigTree &cfg, bool stderr_only) {
|
||||||
|
@ -219,8 +202,8 @@ void init_debug(const ConfigTree &cfg, bool stderr_only) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Message buffer to save all messages in case we read different log settings from config file
|
// Message buffer to save all messages in case we read different log settings from config file
|
||||||
DebugMsgBuff.reset(new MessageBuffer());
|
_GP(DebugMsgBuff).reset(new MessageBuffer());
|
||||||
_GP(DbgMgr).RegisterOutput(OutputMsgBufID, DebugMsgBuff.get(), kDbgMsg_All);
|
_GP(DbgMgr).RegisterOutput(OutputMsgBufID, _GP(DebugMsgBuff).get(), kDbgMsg_All);
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply_debug_config(const ConfigTree &cfg) {
|
void apply_debug_config(const ConfigTree &cfg) {
|
||||||
|
@ -258,7 +241,7 @@ void apply_debug_config(const ConfigTree &cfg) {
|
||||||
|
|
||||||
// If the game was compiled in Debug mode *and* there's no regular file log,
|
// If the game was compiled in Debug mode *and* there's no regular file log,
|
||||||
// then open "warnings.log" for printing script warnings.
|
// then open "warnings.log" for printing script warnings.
|
||||||
if (_GP(game).options[OPT_DEBUGMODE] != 0 && !DebugLogFile) {
|
if (_GP(game).options[OPT_DEBUGMODE] != 0 && !_GP(DebugLogFile)) {
|
||||||
auto dbgout = create_log_output(OutputFileID, "warnings.log", LogFile::kLogFile_OverwriteAtFirstMessage);
|
auto dbgout = create_log_output(OutputFileID, "warnings.log", LogFile::kLogFile_OverwriteAtFirstMessage);
|
||||||
if (dbgout) {
|
if (dbgout) {
|
||||||
dbgout->SetGroupFilter(kDbgGroup_Game, kDbgMsg_Warn);
|
dbgout->SetGroupFilter(kDbgGroup_Game, kDbgMsg_Warn);
|
||||||
|
@ -268,20 +251,20 @@ void apply_debug_config(const ConfigTree &cfg) {
|
||||||
|
|
||||||
// We don't need message buffer beyond this point
|
// We don't need message buffer beyond this point
|
||||||
_GP(DbgMgr).UnregisterOutput(OutputMsgBufID);
|
_GP(DbgMgr).UnregisterOutput(OutputMsgBufID);
|
||||||
DebugMsgBuff.reset();
|
_GP(DebugMsgBuff).reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void shutdown_debug() {
|
void shutdown_debug() {
|
||||||
// Shutdown output subsystem
|
// Shutdown output subsystem
|
||||||
_GP(DbgMgr).UnregisterAll();
|
_GP(DbgMgr).UnregisterAll();
|
||||||
|
|
||||||
DebugMsgBuff.reset();
|
_GP(DebugMsgBuff).reset();
|
||||||
DebugLogFile.reset();
|
_GP(DebugLogFile).reset();
|
||||||
DebugConsole.reset();
|
_GP(DebugConsole).reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void debug_set_console(bool enable) {
|
void debug_set_console(bool enable) {
|
||||||
if (DebugConsole)
|
if (_GP(DebugConsole))
|
||||||
_GP(DbgMgr).GetOutput(OutputGameConsoleID)->SetEnabled(enable);
|
_GP(DbgMgr).GetOutput(OutputGameConsoleID)->SetEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,10 +49,6 @@ bool init_editor_debugging();
|
||||||
// allow LShift to single-step, RShift to pause flow
|
// allow LShift to single-step, RShift to pause flow
|
||||||
void scriptDebugHook(ccInstance *ccinst, int linenum);
|
void scriptDebugHook(ccInstance *ccinst, int linenum);
|
||||||
|
|
||||||
extern AGS::Shared::String debug_line[DEBUG_CONSOLE_NUMLINES];
|
|
||||||
extern int first_debug_line, last_debug_line, display_console;
|
|
||||||
|
|
||||||
|
|
||||||
extern AGSPlatformDriver *platform;
|
extern AGSPlatformDriver *platform;
|
||||||
|
|
||||||
} // namespace AGS3
|
} // namespace AGS3
|
||||||
|
|
|
@ -56,10 +56,6 @@ enum FPSDisplayMode {
|
||||||
kFPS_Forced = 2 // forced shown by the engine arg
|
kFPS_Forced = 2 // forced shown by the engine arg
|
||||||
};
|
};
|
||||||
|
|
||||||
extern float fps;
|
|
||||||
extern FPSDisplayMode display_fps;
|
|
||||||
extern int debug_flags;
|
|
||||||
|
|
||||||
} // namespace AGS3
|
} // namespace AGS3
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -408,13 +408,13 @@ void engine_init_audio() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void engine_init_debug() {
|
void engine_init_debug() {
|
||||||
if ((debug_flags & (~DBG_DEBUGMODE)) > 0) {
|
if ((_G(debug_flags) & (~DBG_DEBUGMODE)) > 0) {
|
||||||
platform->DisplayAlert("Engine debugging enabled.\n"
|
platform->DisplayAlert("Engine debugging enabled.\n"
|
||||||
"\nNOTE: You have selected to enable one or more engine debugging options.\n"
|
"\nNOTE: You have selected to enable one or more engine debugging options.\n"
|
||||||
"These options cause many parts of the game to behave abnormally, and you\n"
|
"These options cause many parts of the game to behave abnormally, and you\n"
|
||||||
"may not see the game as you are used to it. The point is to test whether\n"
|
"may not see the game as you are used to it. The point is to test whether\n"
|
||||||
"the engine passes a point where it is crashing on you normally.\n"
|
"the engine passes a point where it is crashing on you normally.\n"
|
||||||
"[Debug flags enabled: 0x%02X]", debug_flags);
|
"[Debug flags enabled: 0x%02X]", _G(debug_flags));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -863,7 +863,7 @@ void engine_init_game_settings() {
|
||||||
for (ee = 0; ee < MAX_ROOM_BGFRAMES; ee++)
|
for (ee = 0; ee < MAX_ROOM_BGFRAMES; ee++)
|
||||||
_GP(play).raw_modified[ee] = 0;
|
_GP(play).raw_modified[ee] = 0;
|
||||||
_GP(play).game_speed_modifier = 0;
|
_GP(play).game_speed_modifier = 0;
|
||||||
if (debug_flags & DBG_DEBUGMODE)
|
if (_G(debug_flags) & DBG_DEBUGMODE)
|
||||||
_GP(play).debug_mode = 1;
|
_GP(play).debug_mode = 1;
|
||||||
gui_disabled_style = convert_gui_disabled_style(_GP(game).options[OPT_DISABLEOFF]);
|
gui_disabled_style = convert_gui_disabled_style(_GP(game).options[OPT_DISABLEOFF]);
|
||||||
_GP(play).shake_screen_yoff = 0;
|
_GP(play).shake_screen_yoff = 0;
|
||||||
|
|
|
@ -383,7 +383,7 @@ static void check_keyboard_controls() {
|
||||||
|
|
||||||
// debug console
|
// debug console
|
||||||
if ((kgn == '`') && (_GP(play).debug_mode > 0)) {
|
if ((kgn == '`') && (_GP(play).debug_mode > 0)) {
|
||||||
display_console = !display_console;
|
_G(display_console) = !_G(display_console);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +409,7 @@ static void check_keyboard_controls() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((kgn == eAGSKeyCodeCtrlE) && (display_fps == kFPS_Forced)) {
|
if ((kgn == eAGSKeyCodeCtrlE) && (_G(display_fps) == kFPS_Forced)) {
|
||||||
// if --fps paramter is used, Ctrl+E will max out frame rate
|
// if --fps paramter is used, Ctrl+E will max out frame rate
|
||||||
setTimerFps(isTimerFpsMaxed() ? frames_per_second : 1000);
|
setTimerFps(isTimerFpsMaxed() ? frames_per_second : 1000);
|
||||||
return;
|
return;
|
||||||
|
@ -599,7 +599,7 @@ static void game_loop_check_controls(bool checkControls) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void game_loop_do_update() {
|
static void game_loop_do_update() {
|
||||||
if (debug_flags & DBG_NOUPDATE);
|
if (_G(debug_flags) & DBG_NOUPDATE);
|
||||||
else if (game_paused == 0) update_stuff();
|
else if (game_paused == 0) update_stuff();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -703,7 +703,7 @@ static void game_loop_update_fps() {
|
||||||
auto frames = loopcounter - lastcounter;
|
auto frames = loopcounter - lastcounter;
|
||||||
|
|
||||||
if (duration >= std::chrono::milliseconds(1000) && frames > 0) {
|
if (duration >= std::chrono::milliseconds(1000) && frames > 0) {
|
||||||
fps = 1000.0f * frames / duration.count();
|
_G(fps) = 1000.0f * frames / duration.count();
|
||||||
t1 = t2;
|
t1 = t2;
|
||||||
lastcounter = loopcounter;
|
lastcounter = loopcounter;
|
||||||
}
|
}
|
||||||
|
@ -712,8 +712,8 @@ static void game_loop_update_fps() {
|
||||||
float get_current_fps() {
|
float get_current_fps() {
|
||||||
// if we have maxed out framerate then return the frame rate we're seeing instead
|
// if we have maxed out framerate then return the frame rate we're seeing instead
|
||||||
// fps must be greater that 0 or some timings will take forever.
|
// fps must be greater that 0 or some timings will take forever.
|
||||||
if (isTimerFpsMaxed() && fps > 0.0f) {
|
if (isTimerFpsMaxed() && _G(fps) > 0.0f) {
|
||||||
return fps;
|
return _G(fps);
|
||||||
}
|
}
|
||||||
return frames_per_second;
|
return frames_per_second;
|
||||||
}
|
}
|
||||||
|
@ -722,7 +722,7 @@ void set_loop_counter(unsigned int new_counter) {
|
||||||
loopcounter = new_counter;
|
loopcounter = new_counter;
|
||||||
t1 = AGS_Clock::now();
|
t1 = AGS_Clock::now();
|
||||||
lastcounter = loopcounter;
|
lastcounter = loopcounter;
|
||||||
fps = std::numeric_limits<float>::quiet_undefined();
|
_G(fps) = std::numeric_limits<float>::quiet_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateGameOnce(bool checkControls, IDriverDependantBitmap *extraBitmap, int extraX, int extraY) {
|
void UpdateGameOnce(bool checkControls, IDriverDependantBitmap *extraBitmap, int extraX, int extraY) {
|
||||||
|
|
|
@ -1017,7 +1017,7 @@ SOUNDCLIP *load_music_from_disk(int mnum, bool doRepeat) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void play_new_music(int mnum, SOUNDCLIP *music) {
|
static void play_new_music(int mnum, SOUNDCLIP *music) {
|
||||||
if (debug_flags & DBG_NOMUSIC)
|
if (_G(debug_flags) & DBG_NOMUSIC)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((_GP(play).cur_music_number == mnum) && (music == nullptr)) {
|
if ((_GP(play).cur_music_number == mnum) && (music == nullptr)) {
|
||||||
|
|
|
@ -63,12 +63,17 @@
|
||||||
#include "ags/engine/ac/dynobj/scriptregion.h"
|
#include "ags/engine/ac/dynobj/scriptregion.h"
|
||||||
#include "ags/engine/ac/dynobj/scriptstring.h"
|
#include "ags/engine/ac/dynobj/scriptstring.h"
|
||||||
#include "ags/engine/ac/statobj/staticarray.h"
|
#include "ags/engine/ac/statobj/staticarray.h"
|
||||||
|
#include "ags/engine/debugging/consoleoutputtarget.h"
|
||||||
|
#include "ags/engine/debugging/debugger.h"
|
||||||
|
#include "ags/engine/debugging/logfile.h"
|
||||||
|
#include "ags/engine/debugging/messagebuffer.h"
|
||||||
#include "ags/engine/media/audio/ambientsound.h"
|
#include "ags/engine/media/audio/ambientsound.h"
|
||||||
#include "ags/engine/media/audio/audiodefines.h"
|
#include "ags/engine/media/audio/audiodefines.h"
|
||||||
#include "ags/engine/script/executingscript.h"
|
#include "ags/engine/script/executingscript.h"
|
||||||
#include "ags/engine/script/nonblockingscriptfunction.h"
|
#include "ags/engine/script/nonblockingscriptfunction.h"
|
||||||
#include "ags/engine/script/script.h"
|
#include "ags/engine/script/script.h"
|
||||||
#include "ags/engine/script/systemimports.h"
|
#include "ags/engine/script/systemimports.h"
|
||||||
|
#include "ags/lib/std/limits.h"
|
||||||
|
|
||||||
namespace AGS3 {
|
namespace AGS3 {
|
||||||
|
|
||||||
|
@ -84,6 +89,14 @@ Globals::Globals() {
|
||||||
// TODO: double check that ambient sounds array actually needs +1
|
// TODO: double check that ambient sounds array actually needs +1
|
||||||
_ambient = new std::array<AmbientSound>(MAX_SOUND_CHANNELS + 1);
|
_ambient = new std::array<AmbientSound>(MAX_SOUND_CHANNELS + 1);
|
||||||
|
|
||||||
|
// debug.cpp globals
|
||||||
|
_fps = std::numeric_limits<float>::quiet_undefined();
|
||||||
|
_display_fps = kFPS_Hide;
|
||||||
|
_debug_line = new String[DEBUG_CONSOLE_NUMLINES];
|
||||||
|
_DebugMsgBuff = new std::unique_ptr<AGS::Engine::MessageBuffer>();
|
||||||
|
_DebugLogFile = new std::unique_ptr<AGS::Engine::LogFile>();
|
||||||
|
_DebugConsole = new std::unique_ptr<AGS::Engine::ConsoleOutputTarget>();
|
||||||
|
|
||||||
// debugmanager.cpp globals
|
// debugmanager.cpp globals
|
||||||
_DbgMgr = new AGS::Shared::DebugManager();
|
_DbgMgr = new AGS::Shared::DebugManager();
|
||||||
|
|
||||||
|
@ -199,6 +212,12 @@ Globals::~Globals() {
|
||||||
delete _audioChannels;
|
delete _audioChannels;
|
||||||
delete _ambient;
|
delete _ambient;
|
||||||
|
|
||||||
|
// debug.cpp globals
|
||||||
|
delete[] _debug_line;
|
||||||
|
delete _DebugMsgBuff;
|
||||||
|
delete _DebugLogFile;
|
||||||
|
delete _DebugConsole;
|
||||||
|
|
||||||
// debugmanager.cpp globals
|
// debugmanager.cpp globals
|
||||||
delete _DbgMgr;
|
delete _DbgMgr;
|
||||||
|
|
||||||
|
|
|
@ -53,10 +53,19 @@ class GUITextBox;
|
||||||
class RoomStruct;
|
class RoomStruct;
|
||||||
|
|
||||||
} // namespace Shared
|
} // namespace Shared
|
||||||
|
|
||||||
|
namespace Engine {
|
||||||
|
|
||||||
|
class ConsoleOutputTarget;
|
||||||
|
class LogFile;
|
||||||
|
class MessageBuffer;
|
||||||
|
|
||||||
|
} // namespace Engine
|
||||||
} // namespace AGS
|
} // namespace AGS
|
||||||
|
|
||||||
class Navigation;
|
class Navigation;
|
||||||
class SplitLines;
|
class SplitLines;
|
||||||
|
class SpriteCache;
|
||||||
class TTFFontRenderer;
|
class TTFFontRenderer;
|
||||||
class WFNFontRenderer;
|
class WFNFontRenderer;
|
||||||
|
|
||||||
|
@ -101,8 +110,6 @@ struct StaticArray;
|
||||||
struct SystemImports;
|
struct SystemImports;
|
||||||
struct ViewStruct;
|
struct ViewStruct;
|
||||||
|
|
||||||
class SpriteCache;
|
|
||||||
|
|
||||||
class Globals {
|
class Globals {
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -146,6 +153,17 @@ public:
|
||||||
std::vector<Breakpoint> _breakpoints;
|
std::vector<Breakpoint> _breakpoints;
|
||||||
int _numBreakpoints = 0;
|
int _numBreakpoints = 0;
|
||||||
|
|
||||||
|
int _debug_flags = 0;
|
||||||
|
|
||||||
|
String *_debug_line;
|
||||||
|
int _first_debug_line = 0, _last_debug_line = 0, _display_console = 0;
|
||||||
|
|
||||||
|
float _fps;
|
||||||
|
int _display_fps;
|
||||||
|
std::unique_ptr<AGS::Engine::MessageBuffer> *_DebugMsgBuff;
|
||||||
|
std::unique_ptr<AGS::Engine::LogFile> *_DebugLogFile;
|
||||||
|
std::unique_ptr<AGS::Engine::ConsoleOutputTarget> *_DebugConsole;
|
||||||
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue