[Scummvm-git-logs] scummvm master -> 844a26e34b6bb9a8d1d883e9869fe96a64d728ec
dreammaster
paulfgilbert at gmail.com
Sat Feb 22 19:42:32 UTC 2020
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
bfc05da365 ULTIMA8: Shifting more console methods to Debugger
dece483ff5 ULTIMA8: Shifting more console methods to Debugger
09c99ae780 ULTIMA8: Shifting more console methods to Debugger
142a65d1ae ULTIMA8: Shifting game/cheat console methods to Debugger
67a5d0d7e3 ULTIMA8: Shifting UCMachine console methods to Debugger
844a26e34b ULTIMA8: Fix compilation of DEBUG code
Commit: bfc05da365b132cb54dcaf7ca73487ba2fcad090
https://github.com/scummvm/scummvm/commit/bfc05da365b132cb54dcaf7ca73487ba2fcad090
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-22T11:42:21-08:00
Commit Message:
ULTIMA8: Shifting more console methods to Debugger
Changed paths:
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/ultima8.h
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 1535203..4795592 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -31,12 +31,30 @@
#include "ultima/ultima8/kernel/memory_manager.h"
#include "ultima/ultima8/kernel/object_manager.h"
#include "ultima/ultima8/misc/id_man.h"
+#include "ultima/ultima8/usecode/uc_machine.h"
#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
+#include "ultima/ultima8/world/world.h"
namespace Ultima {
namespace Ultima8 {
Debugger::Debugger() : Shared::Debugger() {
+ registerCmd("quit", WRAP_METHOD(Debugger, cmdQuit));
+ registerCmd("Ultima8Engine::quit", WRAP_METHOD(Debugger, cmdQuit));
+ registerCmd("Ultima8Engine::saveGame", WRAP_METHOD(Debugger, cmdSaveGame));
+ registerCmd("Ultima8Engine::loadGame", WRAP_METHOD(Debugger, cmdLoadGame));
+ registerCmd("Ultima8Engine::newGame", WRAP_METHOD(Debugger, cmdNewGame));
+ registerCmd("Ultima8Engine::_drawRenderStats", WRAP_METHOD(Debugger, cmdDrawRenderStats));
+ registerCmd("Ultima8Engine::engineStats", WRAP_METHOD(Debugger, cmdEngineStats));
+ registerCmd("Ultima8Engine::changeGame", WRAP_METHOD(Debugger, cmdChangeGame));
+ registerCmd("Ultima8Engine::listGames", WRAP_METHOD(Debugger, cmdListGames));
+ registerCmd("Ultima8Engine::memberVar", WRAP_METHOD(Debugger, cmdMemberVar));
+ registerCmd("Ultima8Engine::setVideoMode", WRAP_METHOD(Debugger, cmdSetVideoMode));
+ registerCmd("Ultima8Engine::toggleAvatarInStasis", WRAP_METHOD(Debugger, cmdToggleAvatarInStasis));
+ registerCmd("Ultima8Engine::togglePaintEditorItems", WRAP_METHOD(Debugger, cmdTogglePaintEditorItems));
+ registerCmd("Ultima8Engine::toggleShowTouchingItems", WRAP_METHOD(Debugger, cmdToggleShowTouchingItems));
+ registerCmd("Ultima8Engine::closeItemGumps", WRAP_METHOD(Debugger, cmdCloseItemGumps));
+
registerCmd("AudioProcess::listSFX", WRAP_METHOD(Debugger, cmdListSFX));
registerCmd("AudioProcess::playSFX", WRAP_METHOD(Debugger, cmdPlaySFX));
registerCmd("AudioProcess::stopSFX", WRAP_METHOD(Debugger, cmdStopSFX));
@@ -81,6 +99,205 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("QuickAvatarMoverProcess::toggleClipping", WRAP_METHOD(Debugger, cmdToggleClipping));
}
+bool Debugger::cmdSaveGame(int argc, const char **argv) {
+ if (argc == 2) {
+ // Save a _game with the given name into the quicksave slot
+ Ultima8Engine::get_instance()->saveGame(1, argv[1]);
+ } else {
+ Ultima8Engine::get_instance()->saveGameDialog();
+ }
+
+ return false;
+}
+
+bool Debugger::cmdLoadGame(int argc, const char **argv) {
+ if (argc == 2) {
+ // Load a _game from the quicksave slot. The second parameter is ignored,
+ // it just needs to be present to differentiate from showing the GUI load dialog
+ Ultima8Engine::get_instance()->loadGameState(1);
+ } else {
+ Ultima8Engine::get_instance()->loadGameDialog();
+ }
+
+ return false;
+}
+
+bool Debugger::cmdNewGame(int argc, const char **argv) {
+ Ultima8Engine::get_instance()->newGame();
+ return false;
+}
+
+bool Debugger::cmdQuit(int argc, const char **argv) {
+ Ultima8Engine::get_instance()->_isRunning = false;
+ return true;
+}
+
+bool Debugger::cmdDrawRenderStats(int argc, const char **argv) {
+ if (argc == 1) {
+ debugPrintf("Ultima8Engine::_drawRenderStats = %s",
+ strBool(Ultima8Engine::get_instance()->_drawRenderStats));
+ return true;
+ } else {
+ Ultima8Engine::get_instance()->_drawRenderStats = Std::strtol(argv[1], 0, 0) != 0;
+ return false;
+ }
+}
+
+bool Debugger::cmdEngineStats(int argc, const char **argv) {
+ Kernel::get_instance()->kernelStats();
+ ObjectManager::get_instance()->objectStats();
+ UCMachine::get_instance()->usecodeStats();
+ World::get_instance()->worldStats();
+
+
+ return true;
+}
+
+bool Debugger::cmdChangeGame(int argc, const char **argv) {
+ if (argc == 1) {
+ debugPrintf("Current _game is: %s\n", Ultima8Engine::get_instance()->_gameInfo->_name.c_str());
+ } else {
+ Ultima8Engine::get_instance()->changeGame(argv[1]);
+ }
+
+ return true;
+}
+
+bool Debugger::cmdListGames(int argc, const char **argv) {
+ Ultima8Engine *app = Ultima8Engine::get_instance();
+ Std::vector<istring> games;
+ games = app->_settingMan->listGames();
+ Std::vector<istring>::iterator iter;
+ for (iter = games.begin(); iter != games.end(); ++iter) {
+ istring _game = *iter;
+ GameInfo *info = app->getGameInfo(_game);
+ debugPrintf("%s: ", _game.c_str());
+ if (info) {
+ Std::string details = info->getPrintDetails();
+ debugPrintf("%s\n", details.c_str());
+ } else {
+ debugPrintf("(unknown)\n");
+ }
+ }
+
+ return true;
+}
+
+bool Debugger::cmdSetVideoMode(int argc, const char **argv) {
+ if (argc != 3) {
+ debugPrintf("Usage: Ultima8Engine::setVidMode width height\n");
+ return true;
+ } else {
+ Ultima8Engine::get_instance()->changeVideoMode(strtol(argv[1], 0, 0), strtol(argv[2], 0, 0));
+ return false;
+ }
+}
+
+bool Debugger::cmdToggleAvatarInStasis(int argc, const char **argv) {
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+ g->toggleAvatarInStasis();
+ debugPrintf("_avatarInStasis = %s\n", strBool(g->isAvatarInStasis()));
+ return true;
+}
+
+bool Debugger::cmdTogglePaintEditorItems(int argc, const char **argv) {
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+ g->togglePaintEditorItems();
+ debugPrintf("_paintEditorItems = %s\n", strBool(g->isPaintEditorItems()));
+ return true;
+}
+
+bool Debugger::cmdToggleShowTouchingItems(int argc, const char **argv) {
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+ g->toggleShowTouchingItems();
+ debugPrintf("ShowTouchingItems = %s\n", strBool(g->isShowTouchingItems()));
+ return true;
+}
+
+bool Debugger::cmdCloseItemGumps(int argc, const char **argv) {
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+ g->getDesktopGump()->CloseItemDependents();
+ return true;
+}
+
+bool Debugger::cmdToggleCheatMode(int argc, const char **argv) {
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+ g->setCheatMode(!g->areCheatsEnabled());
+ debugPrintf("Cheats = %s\n", strBool(g->areCheatsEnabled()));
+ return true;
+}
+
+bool Debugger::cmdMemberVar(int argc, const char **argv) {
+ if (argc == 1) {
+ debugPrintf("Usage: Ultima8Engine::memberVar <member> [newvalue] [updateini]\n");
+ return true;
+ }
+
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+
+ // Set the pointer to the correct type
+ bool *b = 0;
+ int *i = 0;
+ Std::string *str = 0;
+ istring *istr = 0;
+
+ // ini entry name if supported
+ const char *ini = 0;
+
+ if (!scumm_stricmp(argv[1], "_frameLimit")) {
+ b = &g->_frameLimit;
+ ini = "_frameLimit";
+ } else if (!scumm_stricmp(argv[1], "_frameSkip")) {
+ b = &g->_frameSkip;
+ ini = "_frameSkip";
+ } else if (!scumm_stricmp(argv[1], "_interpolate")) {
+ b = &g->_interpolate;
+ ini = "_interpolate";
+ } else {
+ debugPrintf("Unknown member: %s\n", argv[1]);
+ return true;
+ }
+
+ // Set the value
+ if (argc >= 3) {
+ if (b)
+ *b = !scumm_stricmp(argv[2], "yes") || !scumm_stricmp(argv[2], "true");
+ else if (istr)
+ *istr = argv[2];
+ else if (i)
+ *i = Std::strtol(argv[2], 0, 0);
+ else if (str)
+ *str = argv[2];
+
+ // Set config value
+ if (argc >= 4 && ini && *ini && (!scumm_stricmp(argv[3], "yes") || !scumm_stricmp(argv[3], "true"))) {
+ if (b)
+ g->_settingMan->set(ini, *b);
+ else if (istr)
+ g->_settingMan->set(ini, *istr);
+ else if (i)
+ g->_settingMan->set(ini, *i);
+ else if (str)
+ g->_settingMan->set(ini, *str);
+ }
+ }
+
+ // Print the value
+ debugPrintf("Ultima8Engine::%s = ", argv[1]);
+ if (b)
+ debugPrintf("%s", strBool(*b));
+ else if (istr)
+ debugPrintf("%s", istr->c_str());
+ else if (i)
+ debugPrintf("%d", *i);
+ else if (str)
+ debugPrintf("%s", str->c_str());
+ debugPrintf("\n");
+
+ return true;
+}
+
+
bool Debugger::cmdListSFX(int argc, const char **argv) {
AudioProcess *ap = AudioProcess::get_instance();
if (!ap) {
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index e25d5d8..a8c1a03 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -35,6 +35,27 @@ class Ultima1Engine;
*/
class Debugger : public Shared::Debugger {
private:
+ const char *strBool(bool flag) {
+ return flag ? "true" : "false";
+ }
+private:
+ // Engine
+ bool cmdSaveGame(int argc, const char **argv);
+ bool cmdLoadGame(int argc, const char **argv);
+ bool cmdNewGame(int argc, const char **argv);
+ bool cmdQuit(int argc, const char **argv);
+ bool cmdChangeGame(int argc, const char **argv);
+ bool cmdListGames(int argc, const char **argv);
+ bool cmdSetVideoMode(int argc, const char **argv);
+ bool cmdDrawRenderStats(int argc, const char **argv);
+ bool cmdEngineStats(int argc, const char **argv);
+ bool cmdToggleAvatarInStasis(int argc, const char **argv);
+ bool cmdTogglePaintEditorItems(int argc, const char **argv);
+ bool cmdToggleShowTouchingItems(int argc, const char **argv);
+ bool cmdCloseItemGumps(int argc, const char **argv);
+ bool cmdToggleCheatMode(int argc, const char **argv);
+ bool cmdMemberVar(int argc, const char **argv);
+
// Audio Process
bool cmdListSFX(int argc, const char **argv);
bool cmdStopSFX(int argc, const char **argv);
@@ -61,7 +82,9 @@ private:
// Memory Manager
bool cmdMemInfo(int argc, const char **argv);
+#ifdef DEBUG
bool cmdTest(int argc, const char **argv);
+#endif
// Object Manager
bool cmdObjectTypes(int argc, const char **argv);
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 4737a92..17c7657 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -174,48 +174,14 @@ bool Ultima8Engine::initialize() {
_events = new Shared::EventsManager(this);
// Add console commands
- con->AddConsoleCommand("quit", ConCmd_quit);
- con->AddConsoleCommand("Ultima8Engine::quit", ConCmd_quit);
con->AddConsoleCommand("QuitGump::verifyQuit", QuitGump::ConCmd_verifyQuit);
con->AddConsoleCommand("ShapeViewerGump::U8ShapeViewer", ShapeViewerGump::ConCmd_U8ShapeViewer);
con->AddConsoleCommand("MenuGump::showMenu", MenuGump::ConCmd_showMenu);
- con->AddConsoleCommand("Ultima8Engine::_drawRenderStats", ConCmd_drawRenderStats);
- con->AddConsoleCommand("Ultima8Engine::engineStats", ConCmd_engineStats);
-
- con->AddConsoleCommand("Ultima8Engine::changeGame", ConCmd_changeGame);
- con->AddConsoleCommand("Ultima8Engine::listGames", ConCmd_listGames);
-
- con->AddConsoleCommand("Ultima8Engine::memberVar", &Ultima8Engine::ConCmd_memberVar);
- con->AddConsoleCommand("Ultima8Engine::setVideoMode", ConCmd_setVideoMode);
-
- con->AddConsoleCommand("Ultima8Engine::toggleAvatarInStasis", ConCmd_toggleAvatarInStasis);
- con->AddConsoleCommand("Ultima8Engine::togglePaintEditorItems", ConCmd_togglePaintEditorItems);
- con->AddConsoleCommand("Ultima8Engine::toggleShowTouchingItems", ConCmd_toggleShowTouchingItems);
-
- con->AddConsoleCommand("Ultima8Engine::closeItemGumps", ConCmd_closeItemGumps);
return true;
}
void Ultima8Engine::deinitialize() {
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_quit);
- con->RemoveConsoleCommand(QuitGump::ConCmd_verifyQuit);
- con->RemoveConsoleCommand(ShapeViewerGump::ConCmd_U8ShapeViewer);
- con->RemoveConsoleCommand(MenuGump::ConCmd_showMenu);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_drawRenderStats);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_engineStats);
-
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_changeGame);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_listGames);
-
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_memberVar);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_setVideoMode);
-
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_toggleAvatarInStasis);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_togglePaintEditorItems);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_toggleShowTouchingItems);
-
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_closeItemGumps);
}
void Ultima8Engine::startup() {
@@ -338,9 +304,6 @@ void Ultima8Engine::startupGame() {
GraphicSysInit();
// Generic Commands
- con->AddConsoleCommand("Ultima8Engine::saveGame", ConCmd_saveGame);
- con->AddConsoleCommand("Ultima8Engine::loadGame", ConCmd_loadGame);
- con->AddConsoleCommand("Ultima8Engine::newGame", ConCmd_newGame);
#ifdef DEBUG
con->AddConsoleCommand("Pathfinder::visualDebug",
Pathfinder::ConCmd_visualDebug);
@@ -354,7 +317,7 @@ void Ultima8Engine::startupGame() {
con->AddConsoleCommand("Cheat::maxstats", MainActor::ConCmd_maxstats);
con->AddConsoleCommand("Cheat::heal", MainActor::ConCmd_heal);
con->AddConsoleCommand("Cheat::toggleInvincibility", MainActor::ConCmd_toggleInvincibility);
- con->AddConsoleCommand("Cheat::toggle", Ultima8Engine::ConCmd_toggleCheatMode);
+//SVM con->AddConsoleCommand("Cheat::toggle", Ultima8Engine::ConCmd_toggleCheatMode);
con->AddConsoleCommand("MainActor::name", MainActor::ConCmd_name);
con->AddConsoleCommand("MovieGump::play", MovieGump::ConCmd_play);
con->AddConsoleCommand("MusicProcess::playMusic", MusicProcess::ConCmd_playMusic);
@@ -507,36 +470,6 @@ void Ultima8Engine::shutdownGame(bool reloading) {
_saveCount = 0;
_hasCheated = false;
- // Generic Game
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_saveGame);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_loadGame);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_newGame);
-#ifdef DEBUG
- con->RemoveConsoleCommand(Pathfinder::ConCmd_visualDebug);
-#endif
-
- // U8 Only kind of
- con->RemoveConsoleCommand(MainActor::ConCmd_teleport);
- con->RemoveConsoleCommand(MainActor::ConCmd_mark);
- con->RemoveConsoleCommand(MainActor::ConCmd_recall);
- con->RemoveConsoleCommand(MainActor::ConCmd_listmarks);
- con->RemoveConsoleCommand(MainActor::ConCmd_maxstats);
- con->RemoveConsoleCommand(MainActor::ConCmd_heal);
- con->RemoveConsoleCommand(MainActor::ConCmd_toggleInvincibility);
- con->RemoveConsoleCommand(Ultima8Engine::ConCmd_toggleCheatMode);
- con->RemoveConsoleCommand(MainActor::ConCmd_name);
- con->RemoveConsoleCommand(MovieGump::ConCmd_play);
- con->RemoveConsoleCommand(MusicProcess::ConCmd_playMusic);
- con->RemoveConsoleCommand(InverterProcess::ConCmd_invertScreen);
- con->RemoveConsoleCommand(FastAreaVisGump::ConCmd_toggle);
- con->RemoveConsoleCommand(MiniMapGump::ConCmd_toggle);
- con->RemoveConsoleCommand(MainActor::ConCmd_useBackpack);
- con->RemoveConsoleCommand(MainActor::ConCmd_useInventory);
- con->RemoveConsoleCommand(MainActor::ConCmd_useRecall);
- con->RemoveConsoleCommand(MainActor::ConCmd_useBedroll);
- con->RemoveConsoleCommand(MainActor::ConCmd_useKeyring);
- con->RemoveConsoleCommand(MainActor::ConCmd_toggleCombat);
-
// Kill Game
CoreApp::killGame();
@@ -1650,181 +1583,6 @@ bool Ultima8Engine::load(IDataSource *ids, uint32 version) {
return true;
}
-//
-// Console Commands
-//
-
-void Ultima8Engine::ConCmd_saveGame(const Console::ArgvType &argv) {
- if (argv.size() == 2) {
- // Save a _game with the given name into the quicksave slot
- Ultima8Engine::get_instance()->saveGame(1, argv[1]);
- } else {
- Ultima8Engine::get_instance()->saveGameDialog();
- }
-}
-
-void Ultima8Engine::ConCmd_loadGame(const Console::ArgvType &argv) {
- if (argv.size() == 2) {
- // Load a _game from the quicksave slot. The second parameter is ignored,
- // it just needs to be present to differentiate from showing the GUI load dialog
- Ultima8Engine::get_instance()->loadGameState(1);
- } else {
- Ultima8Engine::get_instance()->loadGameDialog();
- }
-}
-
-void Ultima8Engine::ConCmd_newGame(const Console::ArgvType &argv) {
- Ultima8Engine::get_instance()->newGame();
-}
-
-void Ultima8Engine::ConCmd_quit(const Console::ArgvType &argv) {
- Ultima8Engine::get_instance()->_isRunning = false;
-}
-
-void Ultima8Engine::ConCmd_drawRenderStats(const Console::ArgvType &argv) {
- if (argv.size() == 1) {
- pout << "Ultima8Engine::_drawRenderStats = " << Ultima8Engine::get_instance()->_drawRenderStats << Std::endl;
- } else {
- Ultima8Engine::get_instance()->_drawRenderStats = Std::strtol(argv[1].c_str(), 0, 0) != 0;
- }
-}
-
-void Ultima8Engine::ConCmd_engineStats(const Console::ArgvType &argv) {
- Kernel::get_instance()->kernelStats();
- ObjectManager::get_instance()->objectStats();
- UCMachine::get_instance()->usecodeStats();
- World::get_instance()->worldStats();
-}
-
-void Ultima8Engine::ConCmd_changeGame(const Console::ArgvType &argv) {
- if (argv.size() == 1) {
- pout << "Current _game is: " << Ultima8Engine::get_instance()->_gameInfo->_name << Std::endl;
- } else {
- Ultima8Engine::get_instance()->changeGame(argv[1]);
- }
-}
-
-void Ultima8Engine::ConCmd_listGames(const Console::ArgvType &argv) {
- Ultima8Engine *app = Ultima8Engine::get_instance();
- Std::vector<istring> games;
- games = app->_settingMan->listGames();
- Std::vector<istring>::iterator iter;
- for (iter = games.begin(); iter != games.end(); ++iter) {
- istring _game = *iter;
- GameInfo *info = app->getGameInfo(_game);
- con->Printf(MM_INFO, "%s: ", _game.c_str());
- if (info) {
- Std::string details = info->getPrintDetails();
- con->Print(MM_INFO, details.c_str());
- } else {
- con->Print(MM_INFO, "(unknown)");
- }
- con->Print(MM_INFO, "\n");
- }
-}
-
-void Ultima8Engine::ConCmd_setVideoMode(const Console::ArgvType &argv) {
- int _fullScreen = -1;
-
- //if (argv.size() == 4) {
- // if (argv[3] == "_fullScreen") _fullScreen = 1;
- // else _fullScreen = 0;
- //} else
- if (argv.size() != 3) {
- //pout << "Usage: Ultima8Engine::setVidMode width height [_fullScreen/windowed]" << Std::endl;
- pout << "Usage: Ultima8Engine::setVidMode width height" << Std::endl;
- return;
- }
-
- Ultima8Engine::get_instance()->changeVideoMode(strtol(argv[1].c_str(), 0, 0), strtol(argv[2].c_str(), 0, 0), _fullScreen);
-}
-
-void Ultima8Engine::ConCmd_toggleAvatarInStasis(const Console::ArgvType &argv) {
- Ultima8Engine *g = Ultima8Engine::get_instance();
- g->toggleAvatarInStasis();
- pout << "_avatarInStasis = " << g->isAvatarInStasis() << Std::endl;
-}
-
-void Ultima8Engine::ConCmd_togglePaintEditorItems(const Console::ArgvType &argv) {
- Ultima8Engine *g = Ultima8Engine::get_instance();
- g->togglePaintEditorItems();
- pout << "_paintEditorItems = " << g->isPaintEditorItems() << Std::endl;
-}
-
-void Ultima8Engine::ConCmd_toggleShowTouchingItems(const Console::ArgvType &argv) {
- Ultima8Engine *g = Ultima8Engine::get_instance();
- g->toggleShowTouchingItems();
- pout << "ShowTouchingItems = " << g->isShowTouchingItems() << Std::endl;
-}
-
-void Ultima8Engine::ConCmd_closeItemGumps(const Console::ArgvType &argv) {
- Ultima8Engine *g = Ultima8Engine::get_instance();
- g->getDesktopGump()->CloseItemDependents();
-}
-
-void Ultima8Engine::ConCmd_toggleCheatMode(const Console::ArgvType &argv) {
- Ultima8Engine *g = Ultima8Engine::get_instance();
- g->setCheatMode(!g->areCheatsEnabled());
- pout << "Cheats = " << g->areCheatsEnabled() << Std::endl;
-}
-
-void Ultima8Engine::ConCmd_memberVar(const Console::ArgvType &argv) {
- if (argv.size() == 1) {
- pout << "Usage: Ultima8Engine::memberVar <member> [newvalue] [updateini]" << Std::endl;
- return;
- }
-
- Ultima8Engine *g = Ultima8Engine::get_instance();
-
- // Set the pointer to the correct type
- bool *b = 0;
- int *i = 0;
- Std::string *str = 0;
- istring *istr = 0;
-
- // ini entry name if supported
- const char *ini = 0;
-
- if (argv[1] == "_frameLimit") {
- b = &g->_frameLimit;
- ini = "_frameLimit";
- } else if (argv[1] == "_frameSkip") {
- b = &g->_frameSkip;
- ini = "_frameSkip";
- } else if (argv[1] == "_interpolate") {
- b = &g->_interpolate;
- ini = "_interpolate";
- } else {
- pout << "Unknown member: " << argv[1] << Std::endl;
- return;
- }
-
- // Set the value
- if (argv.size() >= 3) {
- if (b) *b = (argv[2] == "yes" || argv[2] == "true");
- else if (istr) *istr = argv[2];
- else if (i) *i = Std::strtol(argv[2].c_str(), 0, 0);
- else if (str) *str = argv[2];
-
- // Set config value
- if (argv.size() >= 4 && ini && *ini && (argv[3] == "yes" || argv[3] == "true")) {
- if (b) g->_settingMan->set(ini, *b);
- else if (istr) g->_settingMan->set(ini, *istr);
- else if (i) g->_settingMan->set(ini, *i);
- else if (str) g->_settingMan->set(ini, *str);
- }
- }
-
- // Print the value
- pout << "Ultima8Engine::" << argv[1] << " = ";
- if (b) pout << ((*b) ? "true" : "false");
- else if (istr) pout << *istr;
- else if (i) pout << *i;
- else if (str) pout << *str;
- pout << Std::endl;
-
- return;
-}
//
// Intrinsics
diff --git a/engines/ultima/ultima8/ultima8.h b/engines/ultima/ultima8/ultima8.h
index 6f7dff4..c961d58 100644
--- a/engines/ultima/ultima8/ultima8.h
+++ b/engines/ultima/ultima8/ultima8.h
@@ -53,6 +53,7 @@ namespace Ultima8 {
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
+class Debugger;
class Kernel;
class MemoryManager;
class UCMachine;
@@ -77,6 +78,7 @@ struct Texture;
class AudioMixer;
class Ultima8Engine : public Shared::UltimaEngine, public CoreApp {
+ friend class Debugger;
private:
Std::list<ObjId> _textModes; //!< Gumps that want text mode
bool _ttfOverrides;
@@ -147,33 +149,6 @@ private:
static void conAutoPaint(void);
- // Load and save games from arbitrary filenames from the console
- static void ConCmd_saveGame(const Console::ArgvType &argv); //!< "Ultima8Engine::saveGame <optional filename>" console command
- static void ConCmd_loadGame(const Console::ArgvType &argv); //!< "Ultima8Engine::loadGame <optional filename>" console command
- static void ConCmd_newGame(const Console::ArgvType &argv); //!< "Ultima8Engine::newGame" console command
-// static void ConCmd_ForceQuit(const Console::ArgvType &argv);
-
- static void ConCmd_quit(const Console::ArgvType &argv); //!< "quit" console command
-
- static void ConCmd_changeGame(const Console::ArgvType &argv); //!< "Ultima8Engine::changeGame" console command
- static void ConCmd_listGames(const Console::ArgvType &argv); //!< "Ultima8Engine::listGames" console command
-
- static void ConCmd_setVideoMode(const Console::ArgvType &argv); //!< "Ultima8Engine::setVideoMode" console command
-
- // This should be a console variable once they are implemented
- static void ConCmd_drawRenderStats(const Console::ArgvType &argv); //!< "Ultima8Engine::drawRenderStats" console command
-
- static void ConCmd_engineStats(const Console::ArgvType &argv); //!< "Ultima8Engine::engineStats" console command
-
- static void ConCmd_toggleAvatarInStasis(const Console::ArgvType &argv); //!< "Ultima8Engine::toggleAvatarInStasis" console command
- static void ConCmd_togglePaintEditorItems(const Console::ArgvType &argv); //!< "Ultima8Engine::togglePaintEditorItems" console command
- static void ConCmd_toggleShowTouchingItems(const Console::ArgvType &argv); //!< "Ultima8Engine::toggleShowTouchingItems" console command
-
- static void ConCmd_closeItemGumps(const Console::ArgvType &argv); //!< "Ultima8Engine::closeItemGumps" console command
-
- static void ConCmd_toggleCheatMode(const Console::ArgvType &argv); //!< "Cheat::toggle" console command
-
- static void ConCmd_memberVar(const Console::ArgvType &argv); //!< "Ultima8Engine::memberVar <member> [newvalue] [updateini]" console command
private:
//! write savegame info (time, ..., game-specifics)
void writeSaveInfo(ODataSource *ods);
Commit: dece483ff564bc21c1b15438f0797cbecb5f9209
https://github.com/scummvm/scummvm/commit/dece483ff564bc21c1b15438f0797cbecb5f9209
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-22T11:42:21-08:00
Commit Message:
ULTIMA8: Shifting more console methods to Debugger
Changed paths:
engines/ultima/ultima8/gumps/menu_gump.cpp
engines/ultima/ultima8/gumps/menu_gump.h
engines/ultima/ultima8/gumps/quit_gump.cpp
engines/ultima/ultima8/gumps/quit_gump.h
engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
engines/ultima/ultima8/gumps/shape_viewer_gump.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/world/actors/main_actor.cpp
engines/ultima/ultima8/world/actors/main_actor.h
diff --git a/engines/ultima/ultima8/gumps/menu_gump.cpp b/engines/ultima/ultima8/gumps/menu_gump.cpp
index a046149..d6eeb5d 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/menu_gump.cpp
@@ -254,11 +254,6 @@ void MenuGump::showMenu() {
gump->setRelativePosition(CENTER);
}
-// static
-void MenuGump::ConCmd_showMenu(const Console::ArgvType &argv) {
- MenuGump::showMenu();
-}
-
//static
void MenuGump::inputName() {
ModalGump *gump = new MenuGump(true);
diff --git a/engines/ultima/ultima8/gumps/menu_gump.h b/engines/ultima/ultima8/gumps/menu_gump.h
index b875992..55aae1c 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.h
+++ b/engines/ultima/ultima8/gumps/menu_gump.h
@@ -50,7 +50,6 @@ public:
void ChildNotify(Gump *child, uint32 message) override;
static void showMenu();
- static void ConCmd_showMenu(const Console::ArgvType &argv);
static void inputName();
diff --git a/engines/ultima/ultima8/gumps/quit_gump.cpp b/engines/ultima/ultima8/gumps/quit_gump.cpp
index 21f797d..8980afa 100644
--- a/engines/ultima/ultima8/gumps/quit_gump.cpp
+++ b/engines/ultima/ultima8/gumps/quit_gump.cpp
@@ -145,10 +145,6 @@ void QuitGump::verifyQuit() {
gump->setRelativePosition(CENTER);
}
-void QuitGump::ConCmd_verifyQuit(const Console::ArgvType &argv) {
- QuitGump::verifyQuit();
-}
-
bool QuitGump::loadData(IDataSource *ids) {
CANT_HAPPEN_MSG("Trying to load ModalGump");
return true;
diff --git a/engines/ultima/ultima8/gumps/quit_gump.h b/engines/ultima/ultima8/gumps/quit_gump.h
index eb23f3e..3dafdcd 100644
--- a/engines/ultima/ultima8/gumps/quit_gump.h
+++ b/engines/ultima/ultima8/gumps/quit_gump.h
@@ -45,8 +45,6 @@ public:
void ChildNotify(Gump *child, uint32 message) override;
static void verifyQuit();
- //! "QuitGump::verifyQuit" console command
- static void ConCmd_verifyQuit(const Console::ArgvType &argv);
bool loadData(IDataSource *ids);
protected:
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
index b7af7a4..0f2a9be 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
@@ -273,10 +273,6 @@ void ShapeViewerGump::U8ShapeViewer() {
gump->InitGump(0);
}
-void ShapeViewerGump::ConCmd_U8ShapeViewer(const Console::ArgvType &argv) {
- ShapeViewerGump::U8ShapeViewer();
-}
-
bool ShapeViewerGump::loadData(IDataSource *ids) {
CANT_HAPPEN_MSG("Trying to load ModalGump");
return false;
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.h b/engines/ultima/ultima8/gumps/shape_viewer_gump.h
index fc1d20e..fdfbc0e 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.h
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.h
@@ -50,7 +50,6 @@ public:
bool OnTextInput(int unicode) override;
static void U8ShapeViewer();
- static void ConCmd_U8ShapeViewer(const Console::ArgvType &argv);
bool loadData(IDataSource *ids);
protected:
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 4795592..86aca34 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -25,6 +25,9 @@
#include "ultima/ultima8/audio/audio_process.h"
#include "ultima/ultima8/conf/setting_manager.h"
#include "ultima/ultima8/gumps/game_map_gump.h"
+#include "ultima/ultima8/gumps/quit_gump.h"
+#include "ultima/ultima8/gumps/shape_viewer_gump.h"
+#include "ultima/ultima8/gumps/menu_gump.h"
#include "ultima/ultima8/kernel/allocator.h"
#include "ultima/ultima8/kernel/hid_manager.h"
#include "ultima/ultima8/kernel/kernel.h"
@@ -32,8 +35,10 @@
#include "ultima/ultima8/kernel/object_manager.h"
#include "ultima/ultima8/misc/id_man.h"
#include "ultima/ultima8/usecode/uc_machine.h"
-#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
#include "ultima/ultima8/world/world.h"
+#include "ultima/ultima8/world/get_object.h"
+#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
+#include "ultima/ultima8/world/actors/main_actor.h"
namespace Ultima {
namespace Ultima8 {
@@ -97,6 +102,40 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("QuickAvatarMoverProcess::stopDescend", WRAP_METHOD(Debugger, cmdStopDescend));
registerCmd("QuickAvatarMoverProcess::toggleQuarterSpeed", WRAP_METHOD(Debugger, cmdToggleQuarterSpeed));
registerCmd("QuickAvatarMoverProcess::toggleClipping", WRAP_METHOD(Debugger, cmdToggleClipping));
+
+ registerCmd("QuitGump::verifyQuit", WRAP_METHOD(Debugger, cmdVerifyQuit));
+ registerCmd("ShapeViewerGump::U8ShapeViewer", WRAP_METHOD(Debugger, cmdU8ShapeViewer));
+ registerCmd("MenuGump::showMenu", WRAP_METHOD(Debugger, cmdShowMenu));
+
+#ifdef DEBUG
+ registerCmd("Pathfinder::visualDebug",
+ Pathfinder::ConCmd_visualDebug);
+#endif
+
+ registerCmd("MainActor::teleport", WRAP_METHOD(Debugger, cmdTeleport));
+ registerCmd("MainActor::mark", WRAP_METHOD(Debugger, cmdMark));
+ registerCmd("MainActor::recall", WRAP_METHOD(Debugger, cmdRecall));
+ registerCmd("MainActor::listmarks", WRAP_METHOD(Debugger, cmdListMarks));
+ registerCmd("MainActor::name", WRAP_METHOD(Debugger, cmdName));
+ registerCmd("MainActor::useBackpack", WRAP_METHOD(Debugger, cmdUseBackpack));
+ registerCmd("MainActor::useInventory", WRAP_METHOD(Debugger, cmdUseInventory));
+ registerCmd("MainActor::useRecall", WRAP_METHOD(Debugger, cmdUseRecall));
+ registerCmd("MainActor::useBedroll", WRAP_METHOD(Debugger, cmdUseBedroll));
+ registerCmd("MainActor::useKeyring", WRAP_METHOD(Debugger, cmdUseKeyring));
+ registerCmd("MainActor::toggleCombat", WRAP_METHOD(Debugger, cmdToggleCombat));
+
+ /*
+ registerCmd("Cheat::maxstats", WRAP_METHOD(Debugger, cmdMaxStats));
+ registerCmd("Cheat::heal", WRAP_METHOD(Debugger, cmdHeal));
+ registerCmd("Cheat::toggleInvincibility", WRAP_METHOD(Debugger, cmdToggleInvincibility));
+ registerCmd("Cheat::toggle", Ultima8Engine::ConCmd_toggleCheatMode);
+
+ registerCmd("MovieGump::play", MovieGump::ConCmd_play);
+ registerCmd("MusicProcess::playMusic", MusicProcess::ConCmd_playMusic);
+ registerCmd("InverterProcess::invertScreen", InverterProcess::ConCmd_invertScreen);
+ registerCmd("FastAreaVisGump::toggle", FastAreaVisGump::ConCmd_toggle);
+ registerCmd("MiniMapGump::toggle", MiniMapGump::ConCmd_toggle);
+ */
}
bool Debugger::cmdSaveGame(int argc, const char **argv) {
@@ -654,6 +693,222 @@ bool Debugger::cmdAdvanceFrame(int argc, const char **argv) {
}
+bool Debugger::cmdTeleport(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *mainActor = getMainActor();
+ int curmap = mainActor->getMapNum();
+
+ switch (argc - 1) {
+ case 1:
+ mainActor->teleport(curmap,
+ strtol(argv[1], 0, 0));
+ break;
+ case 2:
+ mainActor->teleport(strtol(argv[1], 0, 0),
+ strtol(argv[2], 0, 0));
+ break;
+ case 3:
+ mainActor->teleport(curmap,
+ strtol(argv[1], 0, 0),
+ strtol(argv[2], 0, 0),
+ strtol(argv[3], 0, 0));
+ break;
+ case 4:
+ mainActor->teleport(strtol(argv[1], 0, 0),
+ strtol(argv[2], 0, 0),
+ strtol(argv[3], 0, 0),
+ strtol(argv[4], 0, 0));
+ break;
+ default:
+ debugPrintf("teleport usage:\n");
+ debugPrintf("teleport <mapnum> <x> <y> <z>: teleport to (x,y,z) on map mapnum\n");
+ debugPrintf("teleport <x> <y> <z>: teleport to (x,y,z) on current map\n");
+ debugPrintf("teleport <mapnum> <eggnum>: teleport to target egg eggnum on map mapnum\n");
+ debugPrintf("teleport <eggnum>: teleport to target egg eggnum on current map\n");
+ return true;
+ }
+
+ return false;
+}
+
+bool Debugger::cmdMark(int argc, const char **argv) {
+ if (argc == 1) {
+ debugPrintf("Usage: mark <mark>: set named mark to this location\n");
+ return true;
+ }
+
+ SettingManager *settings = SettingManager::get_instance();
+ MainActor *mainActor = getMainActor();
+ int curmap = mainActor->getMapNum();
+ int32 x, y, z;
+ mainActor->getLocation(x, y, z);
+
+ istring confkey = Common::String::format("marks/%s", argv[1]);
+ char buf[100]; // large enough for 4 ints
+ sprintf(buf, "%d %d %d %d", curmap, x, y, z);
+
+ settings->set(confkey, buf);
+ settings->write(); //!! FIXME: clean this up
+
+ debugPrintf("Set mark \"%s\" to %s\n", argv[1], buf);
+ return true;
+}
+
+bool Debugger::cmdRecall(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ if (argc == 1) {
+ debugPrintf("Usage: recall <mark>: recall to named mark\n");
+ return true;
+ }
+
+ SettingManager *settings = SettingManager::get_instance();
+ MainActor *mainActor = getMainActor();
+ Common::String confKey = Common::String::format("marks/%s", argv[1]);
+ Std::string target;
+ if (!settings->get(confKey, target)) {
+ debugPrintf("recall: no such mark\n");
+ return true;
+ }
+
+ int t[4];
+ int n = sscanf(target.c_str(), "%d%d%d%d", &t[0], &t[1], &t[2], &t[3]);
+ if (n != 4) {
+ debugPrintf("recall: invalid mark\n");
+ return true;
+ }
+
+ mainActor->teleport(t[0], t[1], t[2], t[3]);
+ return false;
+}
+
+bool Debugger::cmdListMarks(int argc, const char **argv) {
+ SettingManager *settings = SettingManager::get_instance();
+ Std::vector<istring> marks;
+ marks = settings->listDataKeys("marks");
+ for (Std::vector<istring>::iterator iter = marks.begin();
+ iter != marks.end(); ++iter) {
+ debugPrintf("%s\n", iter->c_str());
+ }
+
+ return true;
+}
+
+bool Debugger::cmdMaxStats(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *mainActor = getMainActor();
+
+ // constants!!
+ mainActor->setStr(25);
+ mainActor->setDex(25);
+ mainActor->setInt(25);
+ mainActor->setHP(mainActor->getMaxHP());
+ mainActor->setMana(mainActor->getMaxMana());
+
+ AudioProcess *audioproc = AudioProcess::get_instance();
+ if (audioproc)
+ audioproc->playSFX(0x36, 0x60, 1, 0); //constants!!
+ return false;
+}
+
+bool Debugger::cmdHeal(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *mainActor = getMainActor();
+
+ mainActor->setHP(mainActor->getMaxHP());
+ mainActor->setMana(mainActor->getMaxMana());
+ return false;
+}
+
+bool Debugger::cmdName(int argc, const char **argv) {
+ MainActor *av = getMainActor();
+ if (argc > 1)
+ av->setName(argv[1]);
+
+ debugPrintf("MainActor::name = \"%s\"\n", av->getName().c_str());
+ return true;
+}
+
+bool Debugger::cmdUseBackpack(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't: avatarInStasis\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+ Item *backpack = getItem(av->getEquip(7));
+ if (backpack)
+ backpack->callUsecodeEvent_use();
+ return false;
+}
+
+bool Debugger::cmdUseInventory(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't: avatarInStasis\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+ av->callUsecodeEvent_use();
+ return false;
+}
+
+bool Debugger::cmdUseRecall(int argc, const char **argv) {
+ MainActor *av = getMainActor();
+ av->useInventoryItem(833);
+ return false;
+}
+
+bool Debugger::cmdUseBedroll(int argc, const char **argv) {
+ MainActor *av = getMainActor();
+ av->useInventoryItem(534);
+ return false;
+}
+
+bool Debugger::cmdUseKeyring(int argc, const char **argv) {
+ MainActor *av = getMainActor();
+ av->useInventoryItem(79);
+ return false;
+}
+
+bool Debugger::cmdToggleCombat(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't: avatarInStasis\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+ av->toggleInCombat();
+ return false;
+}
+
+bool Debugger::cmdToggleInvincibility(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+
+ if (av->getActorFlags() & Actor::ACT_INVINCIBLE) {
+ av->clearActorFlag(Actor::ACT_INVINCIBLE);
+ debugPrintf("Avatar is no longer invincible.\n");
+ } else {
+ av->setActorFlag(Actor::ACT_INVINCIBLE);
+ debugPrintf("Avatar invincible.\n");
+ }
+
+ return true;
+}
+
+
bool Debugger::cmdMemInfo(int argc, const char **argv) {
MemoryManager *mm = MemoryManager::get_instance();
int i, count;
@@ -816,5 +1071,21 @@ bool Debugger::cmdToggleClipping(int argc, const char **argv) {
return true;
}
+
+bool Debugger::cmdVerifyQuit(int argc, const char **argv) {
+ QuitGump::verifyQuit();
+ return false;
+}
+
+bool Debugger::cmdU8ShapeViewer(int argc, const char **argv) {
+ ShapeViewerGump::U8ShapeViewer();
+ return false;
+}
+
+bool Debugger::cmdShowMenu(int argc, const char **argv) {
+ MenuGump::showMenu();
+ return false;
+}
+
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index a8c1a03..6dd03c2 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -80,6 +80,22 @@ private:
bool cmdToggleFrameByFrame(int argc, const char **argv);
bool cmdAdvanceFrame(int argc, const char **argv);
+ // Main Actor
+ bool cmdTeleport(int argc, const char **argv);
+ bool cmdMark(int argc, const char **argv);
+ bool cmdRecall(int argc, const char **argv);
+ bool cmdListMarks(int argc, const char **argv);
+ bool cmdName(int argc, const char **argv);
+ bool cmdMaxStats(int argc, const char **argv);
+ bool cmdHeal(int argc, const char **argv);
+ bool cmdToggleInvincibility(int argc, const char **argv);
+ bool cmdUseBackpack(int argc, const char **argv);
+ bool cmdUseInventory(int argc, const char **argv);
+ bool cmdUseRecall(int argc, const char **argv);
+ bool cmdUseBedroll(int argc, const char **argv);
+ bool cmdUseKeyring(int argc, const char **argv);
+ bool cmdToggleCombat(int argc, const char **argv);
+
// Memory Manager
bool cmdMemInfo(int argc, const char **argv);
#ifdef DEBUG
@@ -105,6 +121,12 @@ private:
bool cmdStopDescend(int argc, const char **argv);
bool cmdToggleQuarterSpeed(int argc, const char **argv);
bool cmdToggleClipping(int argc, const char **argv);
+
+ // Miscellaneous
+ bool cmdVerifyQuit(int argc, const char **argv);
+ bool cmdU8ShapeViewer(int argc, const char **argv);
+ bool cmdShowMenu(int argc, const char **argv);
+
public:
Debugger();
~Debugger() override {}
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 17c7657..4d79000 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -173,11 +173,6 @@ bool Ultima8Engine::initialize() {
// Set up the events manager
_events = new Shared::EventsManager(this);
- // Add console commands
- con->AddConsoleCommand("QuitGump::verifyQuit", QuitGump::ConCmd_verifyQuit);
- con->AddConsoleCommand("ShapeViewerGump::U8ShapeViewer", ShapeViewerGump::ConCmd_U8ShapeViewer);
- con->AddConsoleCommand("MenuGump::showMenu", MenuGump::ConCmd_showMenu);
-
return true;
}
@@ -303,43 +298,6 @@ void Ultima8Engine::startupGame() {
GraphicSysInit();
- // Generic Commands
-#ifdef DEBUG
- con->AddConsoleCommand("Pathfinder::visualDebug",
- Pathfinder::ConCmd_visualDebug);
-#endif
-
- // U8 Game commands
- con->AddConsoleCommand("MainActor::teleport", MainActor::ConCmd_teleport);
- con->AddConsoleCommand("MainActor::mark", MainActor::ConCmd_mark);
- con->AddConsoleCommand("MainActor::recall", MainActor::ConCmd_recall);
- con->AddConsoleCommand("MainActor::listmarks", MainActor::ConCmd_listmarks);
- con->AddConsoleCommand("Cheat::maxstats", MainActor::ConCmd_maxstats);
- con->AddConsoleCommand("Cheat::heal", MainActor::ConCmd_heal);
- con->AddConsoleCommand("Cheat::toggleInvincibility", MainActor::ConCmd_toggleInvincibility);
-//SVM con->AddConsoleCommand("Cheat::toggle", Ultima8Engine::ConCmd_toggleCheatMode);
- con->AddConsoleCommand("MainActor::name", MainActor::ConCmd_name);
- con->AddConsoleCommand("MovieGump::play", MovieGump::ConCmd_play);
- con->AddConsoleCommand("MusicProcess::playMusic", MusicProcess::ConCmd_playMusic);
- con->AddConsoleCommand("InverterProcess::invertScreen",
- InverterProcess::ConCmd_invertScreen);
- con->AddConsoleCommand("FastAreaVisGump::toggle",
- FastAreaVisGump::ConCmd_toggle);
- con->AddConsoleCommand("MiniMapGump::toggle",
- MiniMapGump::ConCmd_toggle);
- con->AddConsoleCommand("MainActor::useBackpack",
- MainActor::ConCmd_useBackpack);
- con->AddConsoleCommand("MainActor::useInventory",
- MainActor::ConCmd_useInventory);
- con->AddConsoleCommand("MainActor::useRecall",
- MainActor::ConCmd_useRecall);
- con->AddConsoleCommand("MainActor::useBedroll",
- MainActor::ConCmd_useBedroll);
- con->AddConsoleCommand("MainActor::useKeyring",
- MainActor::ConCmd_useKeyring);
- con->AddConsoleCommand("MainActor::toggleCombat",
- MainActor::ConCmd_toggleCombat);
-
_gameData = new GameData(_gameInfo);
Std::string bindingsfile;
diff --git a/engines/ultima/ultima8/world/actors/main_actor.cpp b/engines/ultima/ultima8/world/actors/main_actor.cpp
index ff1b985..6b574cc 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.cpp
+++ b/engines/ultima/ultima8/world/actors/main_actor.cpp
@@ -326,137 +326,6 @@ ProcId MainActor::die(uint16 damageType) {
return animprocid;
}
-
-void MainActor::ConCmd_teleport(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- MainActor *mainactor = getMainActor();
- int curmap = mainactor->getMapNum();
-
- switch (argv.size() - 1) {
- case 1:
- mainactor->teleport(curmap,
- strtol(argv[1].c_str(), 0, 0));
- break;
- case 2:
- mainactor->teleport(strtol(argv[1].c_str(), 0, 0),
- strtol(argv[2].c_str(), 0, 0));
- break;
- case 3:
- mainactor->teleport(curmap,
- strtol(argv[1].c_str(), 0, 0),
- strtol(argv[2].c_str(), 0, 0),
- strtol(argv[3].c_str(), 0, 0));
- break;
- case 4:
- mainactor->teleport(strtol(argv[1].c_str(), 0, 0),
- strtol(argv[2].c_str(), 0, 0),
- strtol(argv[3].c_str(), 0, 0),
- strtol(argv[4].c_str(), 0, 0));
- break;
- default:
- pout << "teleport usage:" << Std::endl;
- pout << "teleport <mapnum> <x> <y> <z>: teleport to (x,y,z) on map mapnum" << Std::endl;
- pout << "teleport <x> <y> <z>: teleport to (x,y,z) on current map" << Std::endl;
- pout << "teleport <mapnum> <eggnum>: teleport to target egg eggnum on map mapnum" << Std::endl;
- pout << "teleport <eggnum>: teleport to target egg eggnum on current map" << Std::endl;
- break;
- }
-}
-
-void MainActor::ConCmd_mark(const Console::ArgvType &argv) {
- if (argv.size() == 1) {
- pout << "Usage: mark <mark>: set named mark to this location" << Std::endl;
- return;
- }
-
- SettingManager *settings = SettingManager::get_instance();
- MainActor *mainactor = getMainActor();
- int curmap = mainactor->getMapNum();
- int32 x, y, z;
- mainactor->getLocation(x, y, z);
-
- istring confkey = "marks/" + argv[1];
- char buf[100]; // large enough for 4 ints
- sprintf(buf, "%d %d %d %d", curmap, x, y, z);
-
- settings->set(confkey, buf);
- settings->write(); //!! FIXME: clean this up
-
- pout << "Set mark \"" << argv[1].c_str() << "\" to " << buf << Std::endl;
-}
-
-void MainActor::ConCmd_recall(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- if (argv.size() == 1) {
- pout << "Usage: recall <mark>: recall to named mark" << Std::endl;
- return;
- }
-
- SettingManager *settings = SettingManager::get_instance();
- MainActor *mainactor = getMainActor();
- istring confkey = "marks/" + argv[1];
- Std::string target;
- if (!settings->get(confkey, target)) {
- pout << "recall: no such mark" << Std::endl;
- return;
- }
-
- int t[4];
- int n = sscanf(target.c_str(), "%d%d%d%d", &t[0], &t[1], &t[2], &t[3]);
- if (n != 4) {
- pout << "recall: invalid mark" << Std::endl;
- return;
- }
-
- mainactor->teleport(t[0], t[1], t[2], t[3]);
-}
-
-void MainActor::ConCmd_listmarks(const Console::ArgvType &argv) {
- SettingManager *settings = SettingManager::get_instance();
- Std::vector<istring> marks;
- marks = settings->listDataKeys("marks");
- for (Std::vector<istring>::iterator iter = marks.begin();
- iter != marks.end(); ++iter) {
- pout << (*iter) << Std::endl;
- }
-}
-
-void MainActor::ConCmd_maxstats(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- MainActor *mainactor = getMainActor();
-
- // constants!!
- mainactor->setStr(25);
- mainactor->setDex(25);
- mainactor->setInt(25);
- mainactor->setHP(mainactor->getMaxHP());
- mainactor->setMana(mainactor->getMaxMana());
-
- AudioProcess *audioproc = AudioProcess::get_instance();
- if (audioproc) audioproc->playSFX(0x36, 0x60, 1, 0); //constants!!
-}
-
-void MainActor::ConCmd_heal(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- MainActor *mainactor = getMainActor();
-
- mainactor->setHP(mainactor->getMaxHP());
- mainactor->setMana(mainactor->getMaxMana());
-}
-
-
void MainActor::accumulateStr(int n) {
// already max?
if (_strength == 25) return; //!! constant
@@ -615,34 +484,6 @@ uint32 MainActor::I_isAvatarInCombat(const uint8 * /*args*/,
return 0;
}
-void MainActor::ConCmd_name(const Console::ArgvType &argv) {
- MainActor *av = getMainActor();
- if (argv.size() > 1)
- av->setName(argv[1]);
-
- pout << "MainActor::name = \"" << av->getName() << "\"" << Std::endl;
-}
-
-void MainActor::ConCmd_useBackpack(const Console::ArgvType &argv) {
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- return;
- }
- MainActor *av = getMainActor();
- Item *backpack = getItem(av->getEquip(7));
- if (backpack)
- backpack->callUsecodeEvent_use();
-}
-
-void MainActor::ConCmd_useInventory(const Console::ArgvType &argv) {
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- return;
- }
- MainActor *av = getMainActor();
- av->callUsecodeEvent_use();
-}
-
void MainActor::useInventoryItem(uint32 shapenum) {
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
pout << "Can't: avatarInStasis" << Std::endl;
@@ -660,50 +501,5 @@ void MainActor::useInventoryItem(uint32 shapenum) {
}
-void MainActor::ConCmd_useRecall(const Console::ArgvType &argv) {
- MainActor *av = getMainActor();
- av->useInventoryItem(833);
-}
-
-void MainActor::ConCmd_useBedroll(const Console::ArgvType &argv) {
- MainActor *av = getMainActor();
- av->useInventoryItem(534);
-}
-
-void MainActor::ConCmd_useKeyring(const Console::ArgvType &argv) {
- MainActor *av = getMainActor();
- av->useInventoryItem(79);
-}
-
-void MainActor::ConCmd_toggleCombat(const Console::ArgvType &argv) {
- if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
- pout << "Can't: avatarInStasis" << Std::endl;
- return;
- }
- MainActor *av = getMainActor();
- av->toggleInCombat();
-}
-
-void MainActor::ConCmd_toggleInvincibility(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- MainActor *av = getMainActor();
-
- if (av->getActorFlags() & Actor::ACT_INVINCIBLE) {
-
- av->clearActorFlag(Actor::ACT_INVINCIBLE);
- pout << "Avatar is no longer invincible." << Std::endl;
-
-
- } else {
-
- av->setActorFlag(Actor::ACT_INVINCIBLE);
- pout << "Avatar invincible." << Std::endl;
-
- }
-}
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/world/actors/main_actor.h b/engines/ultima/ultima8/world/actors/main_actor.h
index 26b5a94..b73e70a 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.h
+++ b/engines/ultima/ultima8/world/actors/main_actor.h
@@ -28,9 +28,11 @@
namespace Ultima {
namespace Ultima8 {
+class Debugger;
struct WeaponOverlayFrame;
class MainActor : public Actor {
+ friend class Debugger;
public:
MainActor();
~MainActor() override;
@@ -90,39 +92,6 @@ public:
bool loadData(IDataSource *ids, uint32 version);
- //! "teleport" console command
- static void ConCmd_teleport(const Console::ArgvType &argv);
- //! "mark" console command
- static void ConCmd_mark(const Console::ArgvType &argv);
- //! "recall" console command
- static void ConCmd_recall(const Console::ArgvType &argv);
- //! "listmarks" console command
- static void ConCmd_listmarks(const Console::ArgvType &argv);
- //! "Name" console command
- static void ConCmd_name(const Console::ArgvType &argv);
-
- //! "maxstats" console command
- static void ConCmd_maxstats(const Console::ArgvType &argv);
- //! "heal" console command
- static void ConCmd_heal(const Console::ArgvType &argv);
- //! "toggleInvincibility" console command
- static void ConCmd_toggleInvincibility(const Console::ArgvType &argv);
-
-
- //! "useBackpack" console command
- static void ConCmd_useBackpack(const Console::ArgvType &argv);
- //! "useInventory" console command
- static void ConCmd_useInventory(const Console::ArgvType &argv);
- //! "useRecall" console command
- static void ConCmd_useRecall(const Console::ArgvType &argv);
- //! "useBedroll" console command
- static void ConCmd_useBedroll(const Console::ArgvType &argv);
- //! "useKeyring" console command
- static void ConCmd_useKeyring(const Console::ArgvType &argv);
-
- //! "toggleCombat" console command
- static void ConCmd_toggleCombat(const Console::ArgvType &argv);
-
// p_dynamic_cast stuff
ENABLE_RUNTIME_CLASSTYPE()
Commit: 09c99ae780971c62c2c19149a6096ab3efc259b3
https://github.com/scummvm/scummvm/commit/09c99ae780971c62c2c19149a6096ab3efc259b3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-22T11:42:21-08:00
Commit Message:
ULTIMA8: Shifting more console methods to Debugger
Changed paths:
engines/ultima/ultima8/audio/music_process.cpp
engines/ultima/ultima8/audio/music_process.h
engines/ultima/ultima8/graphics/inverter_process.cpp
engines/ultima/ultima8/graphics/inverter_process.h
engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
engines/ultima/ultima8/gumps/fast_area_vis_gump.h
engines/ultima/ultima8/gumps/minimap_gump.cpp
engines/ultima/ultima8/gumps/minimap_gump.h
engines/ultima/ultima8/gumps/movie_gump.cpp
engines/ultima/ultima8/gumps/movie_gump.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/world/actors/pathfinder.cpp
engines/ultima/ultima8/world/actors/pathfinder.h
diff --git a/engines/ultima/ultima8/audio/music_process.cpp b/engines/ultima/ultima8/audio/music_process.cpp
index f761726..c3ab096 100644
--- a/engines/ultima/ultima8/audio/music_process.cpp
+++ b/engines/ultima/ultima8/audio/music_process.cpp
@@ -263,19 +263,5 @@ uint32 MusicProcess::I_playMusic(const uint8 *args,
return 0;
}
-
-void MusicProcess::ConCmd_playMusic(const Console::ArgvType &argv) {
- if (_theMusicProcess) {
- if (argv.size() != 2) {
- pout << "MusicProcess::playMusic (tracknum)" << Std::endl;
- } else {
- pout << "Playing track " << argv[1] << Std::endl;
- _theMusicProcess->playMusic_internal(atoi(argv[1].c_str()));
- }
- } else {
- pout << "No Music Process" << Std::endl;
- }
-}
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/audio/music_process.h b/engines/ultima/ultima8/audio/music_process.h
index 6ee2a03..afb8732 100644
--- a/engines/ultima/ultima8/audio/music_process.h
+++ b/engines/ultima/ultima8/audio/music_process.h
@@ -31,9 +31,12 @@
namespace Ultima {
namespace Ultima8 {
+class Debugger;
class MidiPlayer;
class MusicProcess : public Process {
+ friend class Debugger;
+
enum MusicStates {
MUSIC_NORMAL = 1,
MUSIC_TRANSITION = 2,
@@ -87,9 +90,6 @@ public:
void run() override;
bool loadData(IDataSource *ids, uint32 version);
-
- // MusicProcess::playMusic console command
- static void ConCmd_playMusic(const Console::ArgvType &argv);
};
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/graphics/inverter_process.cpp b/engines/ultima/ultima8/graphics/inverter_process.cpp
index 6946638..ee088db 100644
--- a/engines/ultima/ultima8/graphics/inverter_process.cpp
+++ b/engines/ultima/ultima8/graphics/inverter_process.cpp
@@ -114,9 +114,5 @@ uint32 InverterProcess::I_invertScreen(const uint8 *args,
return invertScreen();
}
-void InverterProcess::ConCmd_invertScreen(const Console::ArgvType &argv) {
- invertScreen();
-}
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/graphics/inverter_process.h b/engines/ultima/ultima8/graphics/inverter_process.h
index f723963..497d971 100644
--- a/engines/ultima/ultima8/graphics/inverter_process.h
+++ b/engines/ultima/ultima8/graphics/inverter_process.h
@@ -46,7 +46,6 @@ public:
void run() override;
static ProcId invertScreen();
- static void ConCmd_invertScreen(const Console::ArgvType &argv);
INTRINSIC(I_invertScreen);
diff --git a/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp b/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
index 6596ab4..74654fa 100644
--- a/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
+++ b/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
@@ -51,20 +51,6 @@ void FastAreaVisGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool sca
if (currentmap->isChunkFast(xp, yp)) surf->Fill32(0xFFFFFFFF, xp + 1, yp + 1, 1, 1);
}
-void FastAreaVisGump::ConCmd_toggle(const Console::ArgvType &argv) {
- Ultima8Engine *app = Ultima8Engine::get_instance();
- Gump *desktop = app->getDesktopGump();
- Gump *favg = desktop->FindGump(FastAreaVisGump::ClassType);
-
- if (!favg) {
- favg = new FastAreaVisGump;
- favg->InitGump(0);
- favg->setRelativePosition(TOP_RIGHT, -4, 4);
- } else {
- favg->Close();
- }
-}
-
uint16 FastAreaVisGump::TraceObjId(int32 mx, int32 my) {
uint16 objId_ = Gump::TraceObjId(mx, my);
diff --git a/engines/ultima/ultima8/gumps/fast_area_vis_gump.h b/engines/ultima/ultima8/gumps/fast_area_vis_gump.h
index 5c7c651..06e6794 100644
--- a/engines/ultima/ultima8/gumps/fast_area_vis_gump.h
+++ b/engines/ultima/ultima8/gumps/fast_area_vis_gump.h
@@ -38,9 +38,6 @@ public:
void PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) override;
uint16 TraceObjId(int32 mx, int32 my) override;
-
- static void ConCmd_toggle(const Console::ArgvType &argv); //!< "FastAreaVisGump::toggle" console command
-
};
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 72684fc..e763209 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -44,17 +44,12 @@ MiniMapGump::MiniMapGump(int x_, int y_) :
_minimap._format = TEX_FMT_NATIVE;
_minimap._width = _minimap._height = MAP_NUM_CHUNKS * MINMAPGUMP_SCALE;
_minimap._buffer = texbuffer[0];
-
- con->AddConsoleCommand("MiniMapGump::generateWholeMap",
- MiniMapGump::ConCmd_generateWholeMap);
}
MiniMapGump::MiniMapGump() : Gump() {
- con->RemoveConsoleCommand(MiniMapGump::ConCmd_generateWholeMap);
}
MiniMapGump::~MiniMapGump(void) {
- con->RemoveConsoleCommand(MiniMapGump::ConCmd_generateWholeMap);
}
void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) {
@@ -168,37 +163,6 @@ uint32 MiniMapGump::sampleAtPoint(int x_, int y_, CurrentMap *currentmap) {
} else return 0;
}
-void MiniMapGump::ConCmd_toggle(const Console::ArgvType &argv) {
- Ultima8Engine *app = Ultima8Engine::get_instance();
- Gump *desktop = app->getDesktopGump();
- Gump *mmg = desktop->FindGump(MiniMapGump::ClassType);
-
- if (!mmg) {
- mmg = new MiniMapGump(4, 4);
- mmg->InitGump(0);
- mmg->setRelativePosition(TOP_LEFT, 4, 4);
-
- } else {
- mmg->Close();
- }
-}
-
-void MiniMapGump::ConCmd_generateWholeMap(const Console::ArgvType &argv) {
- World *world = World::get_instance();
- CurrentMap *currentmap = world->getCurrentMap();
- currentmap->setWholeMapFast();
-}
-
-uint16 MiniMapGump::TraceObjId(int32 mx, int32 my) {
- uint16 objId_ = Gump::TraceObjId(mx, my);
-
- if (!objId_ || objId_ == 65535)
- if (PointOnGump(mx, my))
- objId_ = getObjId();
-
- return objId_;
-}
-
void MiniMapGump::saveData(ODataSource *ods) {
Gump::saveData(ods);
}
@@ -211,10 +175,18 @@ bool MiniMapGump::loadData(IDataSource *ids, uint32 version) {
_minimap._width = _minimap._height = MAP_NUM_CHUNKS * MINMAPGUMP_SCALE;
_minimap._buffer = texbuffer[0];
- con->AddConsoleCommand("MiniMapGump::generateWholeMap",
- MiniMapGump::ConCmd_generateWholeMap);
return true;
}
+uint16 MiniMapGump::TraceObjId(int32 mx, int32 my) {
+ uint16 objId_ = Gump::TraceObjId(mx, my);
+
+ if (!objId_ || objId_ == 65535)
+ if (PointOnGump(mx, my))
+ objId_ = getObjId();
+
+ return objId_;
+}
+
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.h b/engines/ultima/ultima8/gumps/minimap_gump.h
index db4f457..b198caf 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.h
+++ b/engines/ultima/ultima8/gumps/minimap_gump.h
@@ -50,9 +50,6 @@ public:
void PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) override;
uint16 TraceObjId(int32 mx, int32 my) override;
- static void ConCmd_toggle(const Console::ArgvType &argv); //!< "MiniMapGump::toggle" console command
- static void ConCmd_generateWholeMap(const Console::ArgvType &argv); //!< "MiniMapGump::generateWholeMap" console command
-
bool loadData(IDataSource *ids, uint32 version);
protected:
void saveData(ODataSource *ods) override;
diff --git a/engines/ultima/ultima8/gumps/movie_gump.cpp b/engines/ultima/ultima8/gumps/movie_gump.cpp
index 4409cc2..2fc3700 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.cpp
+++ b/engines/ultima/ultima8/gumps/movie_gump.cpp
@@ -102,26 +102,6 @@ ProcId MovieGump::U8MovieViewer(RawArchive *movie, bool introMusicHack) {
return gump->GetNotifyProcess()->getPid();
}
-//static
-void MovieGump::ConCmd_play(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "play usage: play <moviename>" << Std::endl;
- return;
- }
-
- Std::string filename = "@game/static/" + argv[1] + ".skf";
- FileSystem *filesys = FileSystem::get_instance();
- IDataSource *skf = filesys->ReadFile(filename);
- if (!skf) {
- pout << "movie not found." << Std::endl;
- return;
- }
-
- RawArchive *flex = new RawArchive(skf);
- U8MovieViewer(flex);
-}
-
-
bool MovieGump::loadData(IDataSource *ids) {
return false;
}
diff --git a/engines/ultima/ultima8/gumps/movie_gump.h b/engines/ultima/ultima8/gumps/movie_gump.h
index 3802eda..fa43305 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.h
+++ b/engines/ultima/ultima8/gumps/movie_gump.h
@@ -54,9 +54,6 @@ public:
static ProcId U8MovieViewer(RawArchive *skf, bool introMusicHack = false);
- //! "play" console command
- static void ConCmd_play(const Console::ArgvType &argv);
-
bool loadData(IDataSource *ids);
protected:
void saveData(ODataSource *ods) override;
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 86aca34..fb94ef4 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -23,8 +23,15 @@
#include "ultima/ultima8/misc/debugger.h"
#include "ultima/ultima8/ultima8.h"
#include "ultima/ultima8/audio/audio_process.h"
+#include "ultima/ultima8/audio/music_process.h"
#include "ultima/ultima8/conf/setting_manager.h"
+#include "ultima/ultima8/filesys/file_system.h"
+#include "ultima/ultima8/filesys/raw_archive.h"
+#include "ultima/ultima8/graphics/inverter_process.h"
+#include "ultima/ultima8/gumps/fast_area_vis_gump.h"
#include "ultima/ultima8/gumps/game_map_gump.h"
+#include "ultima/ultima8/gumps/minimap_gump.h"
+#include "ultima/ultima8/gumps/movie_gump.h"
#include "ultima/ultima8/gumps/quit_gump.h"
#include "ultima/ultima8/gumps/shape_viewer_gump.h"
#include "ultima/ultima8/gumps/menu_gump.h"
@@ -64,6 +71,11 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("AudioProcess::playSFX", WRAP_METHOD(Debugger, cmdPlaySFX));
registerCmd("AudioProcess::stopSFX", WRAP_METHOD(Debugger, cmdStopSFX));
+ registerCmd("Cheat::maxstats", WRAP_METHOD(Debugger, cmdMaxStats));
+ registerCmd("Cheat::heal", WRAP_METHOD(Debugger, cmdHeal));
+ registerCmd("Cheat::toggleInvincibility", WRAP_METHOD(Debugger, cmdToggleInvincibility));
+ registerCmd("Cheat::toggle", WRAP_METHOD(Debugger, cmdToggleCheatMode));
+
registerCmd("GameMapGump::toggleHighlightItems", WRAP_METHOD(Debugger, cmdToggleHighlightItems));
registerCmd("GameMapGump::dumpMap", WRAP_METHOD(Debugger, cmdDumpMap));
registerCmd("GameMapGump::incrementSortOrder", WRAP_METHOD(Debugger, cmdIncrementSortOrder));
@@ -80,9 +92,21 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("Kernel::toggleFrameByFrame", WRAP_METHOD(Debugger, cmdToggleFrameByFrame));
registerCmd("Kernel::advanceFrame", WRAP_METHOD(Debugger, cmdAdvanceFrame));
+ registerCmd("MainActor::teleport", WRAP_METHOD(Debugger, cmdTeleport));
+ registerCmd("MainActor::mark", WRAP_METHOD(Debugger, cmdMark));
+ registerCmd("MainActor::recall", WRAP_METHOD(Debugger, cmdRecall));
+ registerCmd("MainActor::listmarks", WRAP_METHOD(Debugger, cmdListMarks));
+ registerCmd("MainActor::name", WRAP_METHOD(Debugger, cmdName));
+ registerCmd("MainActor::useBackpack", WRAP_METHOD(Debugger, cmdUseBackpack));
+ registerCmd("MainActor::useInventory", WRAP_METHOD(Debugger, cmdUseInventory));
+ registerCmd("MainActor::useRecall", WRAP_METHOD(Debugger, cmdUseRecall));
+ registerCmd("MainActor::useBedroll", WRAP_METHOD(Debugger, cmdUseBedroll));
+ registerCmd("MainActor::useKeyring", WRAP_METHOD(Debugger, cmdUseKeyring));
+ registerCmd("MainActor::toggleCombat", WRAP_METHOD(Debugger, cmdToggleCombat));
+
registerCmd("MemoryManager::MemInfo", WRAP_METHOD(Debugger, cmdMemInfo));
#ifdef DEBUG
- registerCmd("MemoryManager::test", WRAP_METHOD(Debugger, cmdTest));
+ registerCmd("MemoryManager::test", WRAP_METHOD(Debugger, cmdTestMemory));
#endif
registerCmd("ObjectManager::objectTypes", WRAP_METHOD(Debugger, cmdObjectTypes));
@@ -103,39 +127,19 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("QuickAvatarMoverProcess::toggleQuarterSpeed", WRAP_METHOD(Debugger, cmdToggleQuarterSpeed));
registerCmd("QuickAvatarMoverProcess::toggleClipping", WRAP_METHOD(Debugger, cmdToggleClipping));
+ registerCmd("FastAreaVisGump::toggle", WRAP_METHOD(Debugger, cmdToggleFastArea));
+ registerCmd("InverterProcess::invertScreen", WRAP_METHOD(Debugger, cmdInvertScreen));
+ registerCmd("MenuGump::showMenu", WRAP_METHOD(Debugger, cmdShowMenu));
+ registerCmd("MiniMapGump::toggle", WRAP_METHOD(Debugger, cmdToggleMinimap));
+ registerCmd("MiniMapGump::generateWholeMap", WRAP_METHOD(Debugger, cmdGenerateWholeMap));
+ registerCmd("MovieGump::play", WRAP_METHOD(Debugger, cmdPlayMovie));
+ registerCmd("MusicProcess::playMusic", WRAP_METHOD(Debugger, cmdPlayMusic));
registerCmd("QuitGump::verifyQuit", WRAP_METHOD(Debugger, cmdVerifyQuit));
registerCmd("ShapeViewerGump::U8ShapeViewer", WRAP_METHOD(Debugger, cmdU8ShapeViewer));
- registerCmd("MenuGump::showMenu", WRAP_METHOD(Debugger, cmdShowMenu));
#ifdef DEBUG
- registerCmd("Pathfinder::visualDebug",
- Pathfinder::ConCmd_visualDebug);
+ registerCmd("Pathfinder::visualDebug", Pathfinder::cmdVisualDebugPathfinder);
#endif
-
- registerCmd("MainActor::teleport", WRAP_METHOD(Debugger, cmdTeleport));
- registerCmd("MainActor::mark", WRAP_METHOD(Debugger, cmdMark));
- registerCmd("MainActor::recall", WRAP_METHOD(Debugger, cmdRecall));
- registerCmd("MainActor::listmarks", WRAP_METHOD(Debugger, cmdListMarks));
- registerCmd("MainActor::name", WRAP_METHOD(Debugger, cmdName));
- registerCmd("MainActor::useBackpack", WRAP_METHOD(Debugger, cmdUseBackpack));
- registerCmd("MainActor::useInventory", WRAP_METHOD(Debugger, cmdUseInventory));
- registerCmd("MainActor::useRecall", WRAP_METHOD(Debugger, cmdUseRecall));
- registerCmd("MainActor::useBedroll", WRAP_METHOD(Debugger, cmdUseBedroll));
- registerCmd("MainActor::useKeyring", WRAP_METHOD(Debugger, cmdUseKeyring));
- registerCmd("MainActor::toggleCombat", WRAP_METHOD(Debugger, cmdToggleCombat));
-
- /*
- registerCmd("Cheat::maxstats", WRAP_METHOD(Debugger, cmdMaxStats));
- registerCmd("Cheat::heal", WRAP_METHOD(Debugger, cmdHeal));
- registerCmd("Cheat::toggleInvincibility", WRAP_METHOD(Debugger, cmdToggleInvincibility));
- registerCmd("Cheat::toggle", Ultima8Engine::ConCmd_toggleCheatMode);
-
- registerCmd("MovieGump::play", MovieGump::ConCmd_play);
- registerCmd("MusicProcess::playMusic", MusicProcess::ConCmd_playMusic);
- registerCmd("InverterProcess::invertScreen", InverterProcess::ConCmd_invertScreen);
- registerCmd("FastAreaVisGump::toggle", FastAreaVisGump::ConCmd_toggle);
- registerCmd("MiniMapGump::toggle", MiniMapGump::ConCmd_toggle);
- */
}
bool Debugger::cmdSaveGame(int argc, const char **argv) {
@@ -1087,5 +1091,102 @@ bool Debugger::cmdShowMenu(int argc, const char **argv) {
return false;
}
+bool Debugger::cmdToggleFastArea(int argc, const char **argv) {
+ Ultima8Engine *app = Ultima8Engine::get_instance();
+ Gump *desktop = app->getDesktopGump();
+ Gump *favg = desktop->FindGump(FastAreaVisGump::ClassType);
+
+ if (!favg) {
+ favg = new FastAreaVisGump;
+ favg->InitGump(0);
+ favg->setRelativePosition(Gump::TOP_RIGHT, -4, 4);
+ } else {
+ favg->Close();
+ }
+
+ return false;
+}
+
+bool Debugger::cmdInvertScreen(int argc, const char **argv) {
+ InverterProcess::invertScreen();
+ return false;
+}
+
+bool Debugger::cmdPlayMovie(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("play usage: play <moviename>\n");
+ return true;
+ }
+
+ Std::string filename = Common::String::format("@game/static/%s.skf", argv[1]);
+ FileSystem *filesys = FileSystem::get_instance();
+ IDataSource *skf = filesys->ReadFile(filename);
+ if (!skf) {
+ debugPrintf("movie not found.\n");
+ return true;
+ }
+
+ RawArchive *flex = new RawArchive(skf);
+ MovieGump::U8MovieViewer(flex);
+ return false;
+}
+
+bool Debugger::cmdPlayMusic(int argc, const char **argv) {
+ if (MusicProcess::_theMusicProcess) {
+ if (argc != 2) {
+ debugPrintf("MusicProcess::playMusic (tracknum)\n");
+ } else {
+ debugPrintf("Playing track %s\n", argv[1]);
+ MusicProcess::_theMusicProcess->playMusic_internal(atoi(argv[1]));
+ return false;
+ }
+ } else {
+ debugPrintf("No Music Process\n");
+ }
+
+ return true;
+}
+
+bool Debugger::cmdToggleMinimap(int argc, const char **argv) {
+ Ultima8Engine *app = Ultima8Engine::get_instance();
+ Gump *desktop = app->getDesktopGump();
+ Gump *mmg = desktop->FindGump(MiniMapGump::ClassType);
+
+ if (!mmg) {
+ mmg = new MiniMapGump(4, 4);
+ mmg->InitGump(0);
+ mmg->setRelativePosition(Gump::TOP_LEFT, 4, 4);
+ } else {
+ mmg->Close();
+ }
+
+ return true;
+}
+
+bool Debugger::cmdGenerateWholeMap(int argc, const char **argv) {
+ World *world = World::get_instance();
+ CurrentMap *currentmap = world->getCurrentMap();
+ currentmap->setWholeMapFast();
+ return false;
+}
+
+#ifdef DEBUG
+bool Debugger::cmdVisualDebugPathfinder(int argc, const char **argv) {
+ if (argc != 2) {
+ pout << "Usage: Pathfinder::visualDebug objid\n");
+ pout << "Specify objid -1 to stop tracing.\n");
+ return;
+ }
+ int p = strtol(argv[1].c_str(), 0, 0);
+ if (p == -1) {
+ visualdebug_actor = 0xFFFF;
+ pout << "Pathfinder: stopped visual tracing\n");
+ } else {
+ visualdebug_actor = (uint16)p;
+ pout << "Pathfinder: visually tracing _actor " << visualdebug_actor << Std::endl;
+ }
+}
+#endif
+
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index 6dd03c2..d45aabc 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -99,7 +99,7 @@ private:
// Memory Manager
bool cmdMemInfo(int argc, const char **argv);
#ifdef DEBUG
- bool cmdTest(int argc, const char **argv);
+ bool cmdTestMemory(int argc, const char **argv);
#endif
// Object Manager
@@ -123,9 +123,18 @@ private:
bool cmdToggleClipping(int argc, const char **argv);
// Miscellaneous
+ bool cmdToggleFastArea(int argc, const char **argv);
bool cmdVerifyQuit(int argc, const char **argv);
bool cmdU8ShapeViewer(int argc, const char **argv);
bool cmdShowMenu(int argc, const char **argv);
+ bool cmdGenerateWholeMap(int argc, const char **argv);
+ bool cmdToggleMinimap(int argc, const char **argv);
+ bool cmdInvertScreen(int argc, const char **argv);
+ bool cmdPlayMovie(int argc, const char **argv);
+ bool cmdPlayMusic(int argc, const char **argv);
+#ifdef DEBUG
+ bool cmdVisualDebugPathfinder(int argc, const char **argv);
+#endif
public:
Debugger();
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.cpp b/engines/ultima/ultima8/world/actors/pathfinder.cpp
index ff7217e..d35ee42 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder.cpp
@@ -624,24 +624,5 @@ bool Pathfinder::pathfind(Std::vector<PathfindingAction> &path) {
return false;
}
-
-#ifdef DEBUG
-void Pathfinder::ConCmd_visualDebug(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "Usage: Pathfinder::visualDebug objid" << Std::endl;
- pout << "Specify objid -1 to stop tracing." << Std::endl;
- return;
- }
- int p = strtol(argv[1].c_str(), 0, 0);
- if (p == -1) {
- visualdebug_actor = 0xFFFF;
- pout << "Pathfinder: stopped visual tracing" << Std::endl;
- } else {
- visualdebug_actor = (uint16)p;
- pout << "Pathfinder: visually tracing _actor " << visualdebug_actor << Std::endl;
- }
-}
-#endif
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.h b/engines/ultima/ultima8/world/actors/pathfinder.h
index b3a3da2..1be98b6 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.h
+++ b/engines/ultima/ultima8/world/actors/pathfinder.h
@@ -76,8 +76,6 @@ public:
bool pathfind(Std::vector<PathfindingAction> &path);
#ifdef DEBUG
- //! "visualDebug" console command
- static void ConCmd_visualDebug(const Console::ArgvType &argv);
static ObjId visualdebug_actor;
#endif
Commit: 142a65d1ae4bbc5d17107dca642161a033ec798d
https://github.com/scummvm/scummvm/commit/142a65d1ae4bbc5d17107dca642161a033ec798d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-22T11:42:21-08:00
Commit Message:
ULTIMA8: Shifting game/cheat console methods to Debugger
Changed paths:
engines/ultima/ultima8/audio/audio_process.h
engines/ultima/ultima8/games/u8_game.cpp
engines/ultima/ultima8/games/u8_game.h
engines/ultima/ultima8/gumps/minimap_gump.cpp
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
diff --git a/engines/ultima/ultima8/audio/audio_process.h b/engines/ultima/ultima8/audio/audio_process.h
index fba6896..b326ee1 100644
--- a/engines/ultima/ultima8/audio/audio_process.h
+++ b/engines/ultima/ultima8/audio/audio_process.h
@@ -116,9 +116,6 @@ public:
//! stop all samples except speech
void stopAllExceptSpeech();
- // AudioProcess::playSound console command
- //static void ConCmd_playSound(const Console::ArgvType &argv);
-
bool loadData(IDataSource *ids, uint32 version);
private:
diff --git a/engines/ultima/ultima8/games/u8_game.cpp b/engines/ultima/ultima8/games/u8_game.cpp
index e15d1ad..641a316 100644
--- a/engines/ultima/ultima8/games/u8_game.cpp
+++ b/engines/ultima/ultima8/games/u8_game.cpp
@@ -58,14 +58,9 @@ U8Game::U8Game() : Game() {
} else {
settingman->setDefault("textdelay", 8);
}
-
- con->AddConsoleCommand("Cheat::items", U8Game::ConCmd_cheatItems);
- con->AddConsoleCommand("Cheat::equip", U8Game::ConCmd_cheatEquip);
}
U8Game::~U8Game() {
- con->RemoveConsoleCommand(U8Game::ConCmd_cheatItems);
- con->RemoveConsoleCommand(U8Game::ConCmd_cheatEquip);
}
bool U8Game::loadFiles() {
@@ -146,201 +141,6 @@ bool U8Game::startGame() {
return true;
}
-void U8Game::ConCmd_cheatItems(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- MainActor *av = getMainActor();
- if (!av) return;
- Container *backpack = getContainer(av->getEquip(7)); // CONSTANT!
- if (!backpack) return;
-
- // obsidian
- Item *money = ItemFactory::createItem(143, 7, 500, 0, 0, 0, 0, true);
- money->moveToContainer(backpack);
- money->setGumpLocation(40, 20);
-
- // skull of quakes
- Item *skull = ItemFactory::createItem(814, 0, 0, 0, 0, 0, 0, true);
- skull->moveToContainer(backpack);
- skull->setGumpLocation(60, 20);
-
- // recall item
- Item *recall = ItemFactory::createItem(833, 0, 0, 0, 0, 0, 0, true);
- recall->moveToContainer(backpack);
- recall->setGumpLocation(20, 20);
-
- // sword
- Item *sword = ItemFactory::createItem(420, 0, 0, 0, 0, 0, 0, true);
- sword->moveToContainer(backpack);
- sword->setGumpLocation(20, 30);
-
- Item *flamesting = ItemFactory::createItem(817, 0, 0, 0, 0, 0, 0, true);
- flamesting->moveToContainer(backpack);
- flamesting->setGumpLocation(20, 30);
-
- Item *hammer = ItemFactory::createItem(815, 0, 0, 0, 0, 0, 0, true);
- hammer->moveToContainer(backpack);
- hammer->setGumpLocation(20, 30);
-
- Item *slayer = ItemFactory::createItem(816, 0, 0, 0, 0, 0, 0, true);
- slayer->moveToContainer(backpack);
- slayer->setGumpLocation(20, 30);
-
- // necromancy reagents
- Item *bagitem = ItemFactory::createItem(637, 0, 0, 0, 0, 0, 0, true);
- bagitem->moveToContainer(backpack);
- bagitem->setGumpLocation(70, 40);
-
- bagitem = ItemFactory::createItem(637, 0, 0, 0, 0, 0, 0, true);
- Container *bag = p_dynamic_cast<Container *>(bagitem);
-
- Item *reagents = ItemFactory::createItem(395, 0, 50, 0, 0, 0, 0, true);
- reagents->moveToContainer(bag);
- reagents->setGumpLocation(10, 10);
- reagents = ItemFactory::createItem(395, 6, 50, 0, 0, 0, 0, true);
- reagents->moveToContainer(bag);
- reagents->setGumpLocation(30, 10);
- reagents = ItemFactory::createItem(395, 8, 50, 0, 0, 0, 0, true);
- reagents->moveToContainer(bag);
- reagents->setGumpLocation(50, 10);
- reagents = ItemFactory::createItem(395, 9, 50, 0, 0, 0, 0, true);
- reagents->moveToContainer(bag);
- reagents->setGumpLocation(20, 30);
- reagents = ItemFactory::createItem(395, 10, 50, 0, 0, 0, 0, true);
- reagents->moveToContainer(bag);
- reagents->setGumpLocation(40, 30);
- reagents = ItemFactory::createItem(395, 14, 50, 0, 0, 0, 0, true);
- reagents->moveToContainer(bag);
- reagents->setGumpLocation(60, 30);
-
- bagitem->moveToContainer(backpack);
- bagitem->setGumpLocation(70, 20);
-
- // theurgy foci
- bagitem = ItemFactory::createItem(637, 0, 0, 0, 0, 0, 0, true);
- bag = p_dynamic_cast<Container *>(bagitem);
-
- Item *focus = ItemFactory::createItem(396, 8, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(10, 10);
- focus = ItemFactory::createItem(396, 9, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(25, 10);
- focus = ItemFactory::createItem(396, 10, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(40, 10);
- focus = ItemFactory::createItem(396, 11, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(55, 10);
- focus = ItemFactory::createItem(396, 12, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(70, 10);
- focus = ItemFactory::createItem(396, 13, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(10, 30);
- focus = ItemFactory::createItem(396, 14, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(30, 30);
- focus = ItemFactory::createItem(396, 15, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(50, 30);
- focus = ItemFactory::createItem(396, 17, 0, 0, 0, 0, 0, true);
- focus->moveToContainer(bag);
- focus->setGumpLocation(70, 30);
-
- bagitem->moveToContainer(backpack);
- bagitem->setGumpLocation(0, 30);
-
-
- // oil flasks
- Item *flask = ItemFactory::createItem(579, 0, 0, 0, 0, 0, 0, true);
- flask->moveToContainer(backpack);
- flask->setGumpLocation(30, 40);
- flask = ItemFactory::createItem(579, 0, 0, 0, 0, 0, 0, true);
- flask->moveToContainer(backpack);
- flask->setGumpLocation(30, 40);
- flask = ItemFactory::createItem(579, 0, 0, 0, 0, 0, 0, true);
- flask->moveToContainer(backpack);
- flask->setGumpLocation(30, 40);
-
- // zealan shield
- Item *shield = ItemFactory::createItem(828, 0, 0, 0, 0, 0, 0, true);
- shield->moveToContainer(backpack);
- shield->randomGumpLocation();
-
- shield = ItemFactory::createItem(539, 0, 0, 0, 0, 0, 0, true);
- shield->moveToContainer(backpack);
- shield->randomGumpLocation();
-
- // armour
- Item *armour = ItemFactory::createItem(64, 0, 0, 0, 0, 0, 0, true);
- armour->moveToContainer(backpack);
- armour->randomGumpLocation();
-
- // death disks
- Item *disk = ItemFactory::createItem(750, 0, 0, 0, 0, 0, 0, true);
- disk->moveToContainer(backpack);
- disk->randomGumpLocation();
-
- disk = ItemFactory::createItem(750, 0, 0, 0, 0, 0, 0, true);
- disk->moveToContainer(backpack);
- disk->randomGumpLocation();
-
- disk = ItemFactory::createItem(750, 0, 0, 0, 0, 0, 0, true);
- disk->moveToContainer(backpack);
- disk->randomGumpLocation();
-}
-
-void U8Game::ConCmd_cheatEquip(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- pout << "Cheats are disabled" << Std::endl;
- return;
- }
- MainActor *av = getMainActor();
- if (!av) return;
- Container *backpack = getContainer(av->getEquip(7)); // CONSTANT!
- if (!backpack) return;
-
- Item *item;
-
- // move all current equipment to backpack
- for (unsigned int i = 0; i < 7; ++i) {
- item = getItem(av->getEquip(i));
- if (item) {
- item->moveToContainer(backpack, false); // no weight/volume check
- item->randomGumpLocation();
- }
- }
-
- // give new equipment:
-
- // deceiver
- item = ItemFactory::createItem(822, 0, 0, 0, 0, 0, 0, true);
- av->setEquip(item, false);
-
- // armour
- item = ItemFactory::createItem(841, 0, 0, 0, 0, 0, 0, true);
- av->setEquip(item, false);
-
- // shield
- item = ItemFactory::createItem(842, 0, 0, 0, 0, 0, 0, true);
- av->setEquip(item, false);
-
- // helmet
- item = ItemFactory::createItem(843, 0, 0, 0, 0, 0, 0, true);
- av->setEquip(item, false);
-
- // arm guards
- item = ItemFactory::createItem(844, 0, 0, 0, 0, 0, 0, true);
- av->setEquip(item, false);
-
- // leggings
- item = ItemFactory::createItem(845, 0, 0, 0, 0, 0, 0, true);
- av->setEquip(item, false);
-}
-
bool U8Game::startInitialUsecode(int saveSlot) {
Process *proc = new StartU8Process(saveSlot);
Kernel::get_instance()->addProcess(proc);
diff --git a/engines/ultima/ultima8/games/u8_game.h b/engines/ultima/ultima8/games/u8_game.h
index b87b5c0..a6f87f8 100644
--- a/engines/ultima/ultima8/games/u8_game.h
+++ b/engines/ultima/ultima8/games/u8_game.h
@@ -48,9 +48,6 @@ public:
void playCredits() override;
void playQuotes() override;
- static void ConCmd_cheatItems(const Console::ArgvType &argv);
- static void ConCmd_cheatEquip(const Console::ArgvType &argv);
-
protected:
Std::string getCreditText(IDataSource *ids);
};
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index e763209..b8b64c1 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -179,13 +179,13 @@ bool MiniMapGump::loadData(IDataSource *ids, uint32 version) {
}
uint16 MiniMapGump::TraceObjId(int32 mx, int32 my) {
- uint16 objId_ = Gump::TraceObjId(mx, my);
+ uint16 objId = Gump::TraceObjId(mx, my);
- if (!objId_ || objId_ == 65535)
+ if (!objId || objId == 65535)
if (PointOnGump(mx, my))
- objId_ = getObjId();
+ objId = getObjId();
- return objId_;
+ return objId;
}
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index fb94ef4..1a98793 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -44,6 +44,7 @@
#include "ultima/ultima8/usecode/uc_machine.h"
#include "ultima/ultima8/world/world.h"
#include "ultima/ultima8/world/get_object.h"
+#include "ultima/ultima8/world/item_factory.h"
#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
#include "ultima/ultima8/world/actors/main_actor.h"
@@ -71,10 +72,12 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("AudioProcess::playSFX", WRAP_METHOD(Debugger, cmdPlaySFX));
registerCmd("AudioProcess::stopSFX", WRAP_METHOD(Debugger, cmdStopSFX));
+ registerCmd("Cheat::toggle", WRAP_METHOD(Debugger, cmdToggleCheatMode));
registerCmd("Cheat::maxstats", WRAP_METHOD(Debugger, cmdMaxStats));
registerCmd("Cheat::heal", WRAP_METHOD(Debugger, cmdHeal));
registerCmd("Cheat::toggleInvincibility", WRAP_METHOD(Debugger, cmdToggleInvincibility));
- registerCmd("Cheat::toggle", WRAP_METHOD(Debugger, cmdToggleCheatMode));
+ registerCmd("Cheat::items", WRAP_METHOD(Debugger, cmdCheatItems));
+ registerCmd("Cheat::equip", WRAP_METHOD(Debugger, cmdCheatEquip));
registerCmd("GameMapGump::toggleHighlightItems", WRAP_METHOD(Debugger, cmdToggleHighlightItems));
registerCmd("GameMapGump::dumpMap", WRAP_METHOD(Debugger, cmdDumpMap));
@@ -263,13 +266,6 @@ bool Debugger::cmdCloseItemGumps(int argc, const char **argv) {
return true;
}
-bool Debugger::cmdToggleCheatMode(int argc, const char **argv) {
- Ultima8Engine *g = Ultima8Engine::get_instance();
- g->setCheatMode(!g->areCheatsEnabled());
- debugPrintf("Cheats = %s\n", strBool(g->areCheatsEnabled()));
- return true;
-}
-
bool Debugger::cmdMemberVar(int argc, const char **argv) {
if (argc == 1) {
debugPrintf("Usage: Ultima8Engine::memberVar <member> [newvalue] [updateini]\n");
@@ -395,6 +391,263 @@ bool Debugger::cmdPlaySFX(int argc, const char **argv) {
}
+bool Debugger::cmdToggleCheatMode(int argc, const char **argv) {
+ Ultima8Engine *g = Ultima8Engine::get_instance();
+ g->setCheatMode(!g->areCheatsEnabled());
+ debugPrintf("Cheats = %s\n", strBool(g->areCheatsEnabled()));
+ return true;
+}
+
+bool Debugger::cmdMaxStats(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *mainActor = getMainActor();
+
+ // constants!!
+ mainActor->setStr(25);
+ mainActor->setDex(25);
+ mainActor->setInt(25);
+ mainActor->setHP(mainActor->getMaxHP());
+ mainActor->setMana(mainActor->getMaxMana());
+
+ AudioProcess *audioproc = AudioProcess::get_instance();
+ if (audioproc)
+ audioproc->playSFX(0x36, 0x60, 1, 0); //constants!!
+ return false;
+}
+
+bool Debugger::cmdCheatItems(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+ if (!av) return true;
+ Container *backpack = getContainer(av->getEquip(7)); // CONSTANT!
+ if (!backpack) return true;
+
+ // obsidian
+ Item *money = ItemFactory::createItem(143, 7, 500, 0, 0, 0, 0, true);
+ money->moveToContainer(backpack);
+ money->setGumpLocation(40, 20);
+
+ // skull of quakes
+ Item *skull = ItemFactory::createItem(814, 0, 0, 0, 0, 0, 0, true);
+ skull->moveToContainer(backpack);
+ skull->setGumpLocation(60, 20);
+
+ // recall item
+ Item *recall = ItemFactory::createItem(833, 0, 0, 0, 0, 0, 0, true);
+ recall->moveToContainer(backpack);
+ recall->setGumpLocation(20, 20);
+
+ // sword
+ Item *sword = ItemFactory::createItem(420, 0, 0, 0, 0, 0, 0, true);
+ sword->moveToContainer(backpack);
+ sword->setGumpLocation(20, 30);
+
+ Item *flamesting = ItemFactory::createItem(817, 0, 0, 0, 0, 0, 0, true);
+ flamesting->moveToContainer(backpack);
+ flamesting->setGumpLocation(20, 30);
+
+ Item *hammer = ItemFactory::createItem(815, 0, 0, 0, 0, 0, 0, true);
+ hammer->moveToContainer(backpack);
+ hammer->setGumpLocation(20, 30);
+
+ Item *slayer = ItemFactory::createItem(816, 0, 0, 0, 0, 0, 0, true);
+ slayer->moveToContainer(backpack);
+ slayer->setGumpLocation(20, 30);
+
+ // necromancy reagents
+ Item *bagitem = ItemFactory::createItem(637, 0, 0, 0, 0, 0, 0, true);
+ bagitem->moveToContainer(backpack);
+ bagitem->setGumpLocation(70, 40);
+
+ bagitem = ItemFactory::createItem(637, 0, 0, 0, 0, 0, 0, true);
+ Container *bag = p_dynamic_cast<Container *>(bagitem);
+
+ Item *reagents = ItemFactory::createItem(395, 0, 50, 0, 0, 0, 0, true);
+ reagents->moveToContainer(bag);
+ reagents->setGumpLocation(10, 10);
+ reagents = ItemFactory::createItem(395, 6, 50, 0, 0, 0, 0, true);
+ reagents->moveToContainer(bag);
+ reagents->setGumpLocation(30, 10);
+ reagents = ItemFactory::createItem(395, 8, 50, 0, 0, 0, 0, true);
+ reagents->moveToContainer(bag);
+ reagents->setGumpLocation(50, 10);
+ reagents = ItemFactory::createItem(395, 9, 50, 0, 0, 0, 0, true);
+ reagents->moveToContainer(bag);
+ reagents->setGumpLocation(20, 30);
+ reagents = ItemFactory::createItem(395, 10, 50, 0, 0, 0, 0, true);
+ reagents->moveToContainer(bag);
+ reagents->setGumpLocation(40, 30);
+ reagents = ItemFactory::createItem(395, 14, 50, 0, 0, 0, 0, true);
+ reagents->moveToContainer(bag);
+ reagents->setGumpLocation(60, 30);
+
+ bagitem->moveToContainer(backpack);
+ bagitem->setGumpLocation(70, 20);
+
+ // theurgy foci
+ bagitem = ItemFactory::createItem(637, 0, 0, 0, 0, 0, 0, true);
+ bag = p_dynamic_cast<Container *>(bagitem);
+
+ Item *focus = ItemFactory::createItem(396, 8, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(10, 10);
+ focus = ItemFactory::createItem(396, 9, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(25, 10);
+ focus = ItemFactory::createItem(396, 10, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(40, 10);
+ focus = ItemFactory::createItem(396, 11, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(55, 10);
+ focus = ItemFactory::createItem(396, 12, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(70, 10);
+ focus = ItemFactory::createItem(396, 13, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(10, 30);
+ focus = ItemFactory::createItem(396, 14, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(30, 30);
+ focus = ItemFactory::createItem(396, 15, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(50, 30);
+ focus = ItemFactory::createItem(396, 17, 0, 0, 0, 0, 0, true);
+ focus->moveToContainer(bag);
+ focus->setGumpLocation(70, 30);
+
+ bagitem->moveToContainer(backpack);
+ bagitem->setGumpLocation(0, 30);
+
+
+ // oil flasks
+ Item *flask = ItemFactory::createItem(579, 0, 0, 0, 0, 0, 0, true);
+ flask->moveToContainer(backpack);
+ flask->setGumpLocation(30, 40);
+ flask = ItemFactory::createItem(579, 0, 0, 0, 0, 0, 0, true);
+ flask->moveToContainer(backpack);
+ flask->setGumpLocation(30, 40);
+ flask = ItemFactory::createItem(579, 0, 0, 0, 0, 0, 0, true);
+ flask->moveToContainer(backpack);
+ flask->setGumpLocation(30, 40);
+
+ // zealan shield
+ Item *shield = ItemFactory::createItem(828, 0, 0, 0, 0, 0, 0, true);
+ shield->moveToContainer(backpack);
+ shield->randomGumpLocation();
+
+ shield = ItemFactory::createItem(539, 0, 0, 0, 0, 0, 0, true);
+ shield->moveToContainer(backpack);
+ shield->randomGumpLocation();
+
+ // armour
+ Item *armour = ItemFactory::createItem(64, 0, 0, 0, 0, 0, 0, true);
+ armour->moveToContainer(backpack);
+ armour->randomGumpLocation();
+
+ // death disks
+ Item *disk = ItemFactory::createItem(750, 0, 0, 0, 0, 0, 0, true);
+ disk->moveToContainer(backpack);
+ disk->randomGumpLocation();
+
+ disk = ItemFactory::createItem(750, 0, 0, 0, 0, 0, 0, true);
+ disk->moveToContainer(backpack);
+ disk->randomGumpLocation();
+
+ disk = ItemFactory::createItem(750, 0, 0, 0, 0, 0, 0, true);
+ disk->moveToContainer(backpack);
+ disk->randomGumpLocation();
+
+ return false;
+}
+
+bool Debugger::cmdCheatEquip(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+ if (!av) return true;
+ Container *backpack = getContainer(av->getEquip(7)); // CONSTANT!
+ if (!backpack) return true;
+
+ Item *item;
+
+ // move all current equipment to backpack
+ for (unsigned int i = 0; i < 7; ++i) {
+ item = getItem(av->getEquip(i));
+ if (item) {
+ item->moveToContainer(backpack, false); // no weight/volume check
+ item->randomGumpLocation();
+ }
+ }
+
+ // give new equipment:
+
+ // deceiver
+ item = ItemFactory::createItem(822, 0, 0, 0, 0, 0, 0, true);
+ av->setEquip(item, false);
+
+ // armour
+ item = ItemFactory::createItem(841, 0, 0, 0, 0, 0, 0, true);
+ av->setEquip(item, false);
+
+ // shield
+ item = ItemFactory::createItem(842, 0, 0, 0, 0, 0, 0, true);
+ av->setEquip(item, false);
+
+ // helmet
+ item = ItemFactory::createItem(843, 0, 0, 0, 0, 0, 0, true);
+ av->setEquip(item, false);
+
+ // arm guards
+ item = ItemFactory::createItem(844, 0, 0, 0, 0, 0, 0, true);
+ av->setEquip(item, false);
+
+ // leggings
+ item = ItemFactory::createItem(845, 0, 0, 0, 0, 0, 0, true);
+ av->setEquip(item, false);
+
+ return false;
+}
+
+bool Debugger::cmdHeal(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *mainActor = getMainActor();
+
+ mainActor->setHP(mainActor->getMaxHP());
+ mainActor->setMana(mainActor->getMaxMana());
+ return false;
+}
+
+bool Debugger::cmdToggleInvincibility(int argc, const char **argv) {
+ if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ debugPrintf("Cheats are disabled\n");
+ return true;
+ }
+ MainActor *av = getMainActor();
+
+ if (av->getActorFlags() & Actor::ACT_INVINCIBLE) {
+ av->clearActorFlag(Actor::ACT_INVINCIBLE);
+ debugPrintf("Avatar is no longer invincible.\n");
+ } else {
+ av->setActorFlag(Actor::ACT_INVINCIBLE);
+ debugPrintf("Avatar invincible.\n");
+ }
+
+ return true;
+}
+
+
bool Debugger::cmdToggleHighlightItems(int argc, const char **argv) {
GameMapGump::Set_highlightItems(!GameMapGump::is_highlightItems());
return false;
@@ -803,38 +1056,6 @@ bool Debugger::cmdListMarks(int argc, const char **argv) {
return true;
}
-bool Debugger::cmdMaxStats(int argc, const char **argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- debugPrintf("Cheats are disabled\n");
- return true;
- }
- MainActor *mainActor = getMainActor();
-
- // constants!!
- mainActor->setStr(25);
- mainActor->setDex(25);
- mainActor->setInt(25);
- mainActor->setHP(mainActor->getMaxHP());
- mainActor->setMana(mainActor->getMaxMana());
-
- AudioProcess *audioproc = AudioProcess::get_instance();
- if (audioproc)
- audioproc->playSFX(0x36, 0x60, 1, 0); //constants!!
- return false;
-}
-
-bool Debugger::cmdHeal(int argc, const char **argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- debugPrintf("Cheats are disabled\n");
- return true;
- }
- MainActor *mainActor = getMainActor();
-
- mainActor->setHP(mainActor->getMaxHP());
- mainActor->setMana(mainActor->getMaxMana());
- return false;
-}
-
bool Debugger::cmdName(int argc, const char **argv) {
MainActor *av = getMainActor();
if (argc > 1)
@@ -894,25 +1115,6 @@ bool Debugger::cmdToggleCombat(int argc, const char **argv) {
return false;
}
-bool Debugger::cmdToggleInvincibility(int argc, const char **argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) {
- debugPrintf("Cheats are disabled\n");
- return true;
- }
- MainActor *av = getMainActor();
-
- if (av->getActorFlags() & Actor::ACT_INVINCIBLE) {
- av->clearActorFlag(Actor::ACT_INVINCIBLE);
- debugPrintf("Avatar is no longer invincible.\n");
- } else {
- av->setActorFlag(Actor::ACT_INVINCIBLE);
- debugPrintf("Avatar invincible.\n");
- }
-
- return true;
-}
-
-
bool Debugger::cmdMemInfo(int argc, const char **argv) {
MemoryManager *mm = MemoryManager::get_instance();
int i, count;
@@ -1173,17 +1375,17 @@ bool Debugger::cmdGenerateWholeMap(int argc, const char **argv) {
#ifdef DEBUG
bool Debugger::cmdVisualDebugPathfinder(int argc, const char **argv) {
if (argc != 2) {
- pout << "Usage: Pathfinder::visualDebug objid\n");
- pout << "Specify objid -1 to stop tracing.\n");
+ debugPrintf("Usage: Pathfinder::visualDebug objid\n");
+ debugPrintf("Specify objid -1 to stop tracing.\n");
return;
}
int p = strtol(argv[1].c_str(), 0, 0);
if (p == -1) {
visualdebug_actor = 0xFFFF;
- pout << "Pathfinder: stopped visual tracing\n");
+ debugPrintf("Pathfinder: stopped visual tracing\n");
} else {
visualdebug_actor = (uint16)p;
- pout << "Pathfinder: visually tracing _actor " << visualdebug_actor << Std::endl;
+ debugPrintf("Pathfinder: visually tracing _actor " << visualdebug_actor << Std::endl;
}
}
#endif
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index d45aabc..9af9124 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -53,7 +53,6 @@ private:
bool cmdTogglePaintEditorItems(int argc, const char **argv);
bool cmdToggleShowTouchingItems(int argc, const char **argv);
bool cmdCloseItemGumps(int argc, const char **argv);
- bool cmdToggleCheatMode(int argc, const char **argv);
bool cmdMemberVar(int argc, const char **argv);
// Audio Process
@@ -61,6 +60,14 @@ private:
bool cmdStopSFX(int argc, const char **argv);
bool cmdPlaySFX(int argc, const char **argv);
+ // Cheats
+ bool cmdToggleCheatMode(int argc, const char **argv);
+ bool cmdCheatItems(int argc, const char **argv);
+ bool cmdCheatEquip(int argc, const char **argv);
+ bool cmdMaxStats(int argc, const char **argv);
+ bool cmdHeal(int argc, const char **argv);
+ bool cmdToggleInvincibility(int argc, const char **argv);
+
// Game Map Gump
bool cmdToggleHighlightItems(int argc, const char **argv);
bool cmdDumpMap(int argc, const char **argvv);
@@ -86,9 +93,6 @@ private:
bool cmdRecall(int argc, const char **argv);
bool cmdListMarks(int argc, const char **argv);
bool cmdName(int argc, const char **argv);
- bool cmdMaxStats(int argc, const char **argv);
- bool cmdHeal(int argc, const char **argv);
- bool cmdToggleInvincibility(int argc, const char **argv);
bool cmdUseBackpack(int argc, const char **argv);
bool cmdUseInventory(int argc, const char **argv);
bool cmdUseRecall(int argc, const char **argv);
Commit: 67a5d0d7e381a45f0495024106a16fcc41af70cb
https://github.com/scummvm/scummvm/commit/67a5d0d7e381a45f0495024106a16fcc41af70cb
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-22T11:42:21-08:00
Commit Message:
ULTIMA8: Shifting UCMachine console methods to Debugger
Changed paths:
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/usecode/uc_machine.cpp
engines/ultima/ultima8/usecode/uc_machine.h
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 1a98793..ae82979 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -42,6 +42,7 @@
#include "ultima/ultima8/kernel/object_manager.h"
#include "ultima/ultima8/misc/id_man.h"
#include "ultima/ultima8/usecode/uc_machine.h"
+#include "ultima/ultima8/usecode/bit_set.h"
#include "ultima/ultima8/world/world.h"
#include "ultima/ultima8/world/get_object.h"
#include "ultima/ultima8/world/item_factory.h"
@@ -130,6 +131,17 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("QuickAvatarMoverProcess::toggleQuarterSpeed", WRAP_METHOD(Debugger, cmdToggleQuarterSpeed));
registerCmd("QuickAvatarMoverProcess::toggleClipping", WRAP_METHOD(Debugger, cmdToggleClipping));
+ registerCmd("UCMachine::getGlobal", WRAP_METHOD(Debugger, cmdGetGlobal));
+ registerCmd("UCMachine::setGlobal", WRAP_METHOD(Debugger, cmdSetGlobal));
+#ifdef DEBUG
+ registerCmd("UCMachine::traceObjID", WRAP_METHOD(Debugger, cmdTraceObjID));
+ registerCmd("UCMachine::tracePID", WRAP_METHOD(Debugger, cmdTracePID));
+ registerCmd("UCMachine::traceClass", WRAP_METHOD(Debugger, cmdTraceClass));
+ registerCmd("UCMachine::traceEvents", WRAP_METHOD(Debugger, cmdTraceEvents));
+ registerCmd("UCMachine::traceAll", WRAP_METHOD(Debugger, cmdTraceAll));
+ registerCmd("UCMachine::stopTrace", WRAP_METHOD(Debugger, cmdStopTrace));
+#endif
+
registerCmd("FastAreaVisGump::toggle", WRAP_METHOD(Debugger, cmdToggleFastArea));
registerCmd("InverterProcess::invertScreen", WRAP_METHOD(Debugger, cmdInvertScreen));
registerCmd("MenuGump::showMenu", WRAP_METHOD(Debugger, cmdShowMenu));
@@ -1278,6 +1290,123 @@ bool Debugger::cmdToggleClipping(int argc, const char **argv) {
}
+bool Debugger::cmdGetGlobal(int argc, const char **argv) {
+ UCMachine *uc = UCMachine::get_instance();
+ if (argc != 3) {
+ debugPrintf("usage: UCMachine::getGlobal offset size\n");
+ return true;
+ }
+
+ unsigned int offset = strtol(argv[1], 0, 0);
+ unsigned int size = strtol(argv[2], 0, 0);
+
+ pout.Print("[%04X %02X] = %d\n", offset, size,
+ uc->_globals->getBits(offset, size));
+
+ return true;
+}
+
+bool Debugger::cmdSetGlobal(int argc, const char **argv) {
+ UCMachine *uc = UCMachine::get_instance();
+ if (argc != 4) {
+ debugPrintf("usage: UCMachine::setGlobal offset size value\n");
+ return true;
+ }
+
+ unsigned int offset = strtol(argv[1], 0, 0);
+ unsigned int size = strtol(argv[2], 0, 0);
+ unsigned int value = strtol(argv[3], 0, 0);
+
+ uc->_globals->setBits(offset, size, value);
+
+ debugPrintf("[%04X %02X] = %d\n", offset, size, uc->_globals->getBits(offset, size));
+ return true;
+}
+
+#ifdef DEBUG
+
+bool Debugger::cmdTracePID(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("Usage: UCMachine::tracePID _pid\n");
+ return true;
+ }
+
+ uint16 _pid = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
+
+ UCMachine *uc = UCMachine::get_instance();
+ uc->tracing_enabled = true;
+ uc->trace_PIDs.insert(_pid);
+
+ debugPrintf("UCMachine: tracing process %d\n", pid);
+ return true;
+}
+
+bool Debugger::cmdTraceObjID(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("Usage: UCMachine::traceObjID objid\n");
+ return true;
+ }
+
+ uint16 objid = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
+
+ UCMachine *uc = UCMachine::get_instance();
+ uc->tracing_enabled = true;
+ uc->trace_ObjIDs.insert(objid);
+
+ debugPrintf("UCMachine: tracing object %d\n", objid);
+ return true;
+}
+
+bool Debugger::cmdTraceClass(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("Usage: UCMachine::traceClass class\n");
+ return true;
+ }
+
+ uint16 ucclass = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
+
+ UCMachine *uc = UCMachine::get_instance();
+ uc->tracing_enabled = true;
+ uc->trace_classes.insert(ucclass);
+
+ debugPrintf("UCMachine: tracing class %d\n", ucclass);
+ return true;
+}
+
+bool Debugger::cmdTraceAll(int argc, const char **argv) {
+ UCMachine *uc = UCMachine::get_instance();
+ uc->tracing_enabled = true;
+ uc->trace_all = true;
+
+ debugPrintf("UCMachine: tracing all usecode\n");
+ return true;
+}
+
+bool Debugger::cmdTraceEvents(int argc, const char **argv) {
+ UCMachine *uc = UCMachine::get_instance();
+ uc->tracing_enabled = true;
+ uc->trace_events = true;
+
+ debugPrintf("UCMachine: tracing usecode events\n");
+ return true;
+}
+
+bool Debugger::cmdStopTrace(const Console::ArgvType &/*argv*/) {
+ UCMachine *uc = UCMachine::get_instance();
+ uc->trace_ObjIDs.clear();
+ uc->trace_PIDs.clear();
+ uc->trace_classes.clear();
+ uc->tracing_enabled = false;
+ uc->trace_all = false;
+ uc->trace_events = false;
+
+ debugPrintf("Trace stopped\n");
+ return true;
+}
+
+#endif
+
+
bool Debugger::cmdVerifyQuit(int argc, const char **argv) {
QuitGump::verifyQuit();
return false;
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index 9af9124..06fea7e 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -126,6 +126,18 @@ private:
bool cmdToggleQuarterSpeed(int argc, const char **argv);
bool cmdToggleClipping(int argc, const char **argv);
+ // UCMachine
+ bool cmdGetGlobal(int argc, const char **argv);
+ bool cmdSetGlobal(int argc, const char **argv);
+#ifdef DEBUG
+ bool cmdTracePID(int argc, const char **argv);
+ bool cmdTraceObjID(int argc, const char **argv);
+ bool cmdTraceClass(int argc, const char **argv);
+ bool cmdTraceAll(int argc, const char **argv);
+ bool cmdTraceEvents(int argc, const char **argv);
+ bool cmdStopTrace(int argc, const char **argv);
+#endif
+
// Miscellaneous
bool cmdToggleFastArea(int argc, const char **argv);
bool cmdVerifyQuit(int argc, const char **argv);
diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 53c5546..4da71e9 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -96,16 +96,7 @@ UCMachine::UCMachine(Intrinsic *iset, unsigned int icount) {
_listIDs = new idMan(1, 65534, 128);
_stringIDs = new idMan(1, 65534, 256);
- con->AddConsoleCommand("UCMachine::getGlobal", ConCmd_getGlobal);
- con->AddConsoleCommand("UCMachine::setGlobal", ConCmd_setGlobal);
#ifdef DEBUG
- con->AddConsoleCommand("UCMachine::traceObjID", ConCmd_traceObjID);
- con->AddConsoleCommand("UCMachine::tracePID", ConCmd_tracePID);
- con->AddConsoleCommand("UCMachine::traceClass", ConCmd_traceClass);
- con->AddConsoleCommand("UCMachine::traceEvents", ConCmd_traceEvents);
- con->AddConsoleCommand("UCMachine::traceAll", ConCmd_traceAll);
- con->AddConsoleCommand("UCMachine::stopTrace", ConCmd_stopTrace);
-
tracing_enabled = false;
trace_all = false;
#endif
@@ -114,17 +105,6 @@ UCMachine::UCMachine(Intrinsic *iset, unsigned int icount) {
UCMachine::~UCMachine() {
con->Print(MM_INFO, "Destroying UCMachine...\n");
-
- con->RemoveConsoleCommand(UCMachine::ConCmd_getGlobal);
- con->RemoveConsoleCommand(UCMachine::ConCmd_setGlobal);
-#ifdef DEBUG
- con->RemoveConsoleCommand(UCMachine::ConCmd_traceObjID);
- con->RemoveConsoleCommand(UCMachine::ConCmd_tracePID);
- con->RemoveConsoleCommand(UCMachine::ConCmd_traceClass);
- con->RemoveConsoleCommand(UCMachine::ConCmd_traceAll);
- con->RemoveConsoleCommand(UCMachine::ConCmd_stopTrace);
-#endif
-
_ucMachine = 0;
delete _globals;
@@ -2359,114 +2339,5 @@ uint32 UCMachine::I_rndRange(const uint8 *args, unsigned int /*argsize*/) {
return (lo + (getRandom() % (hi - lo + 1)));
}
-
-void UCMachine::ConCmd_getGlobal(const Console::ArgvType &argv) {
- UCMachine *uc = UCMachine::get_instance();
- if (argv.size() != 3) {
- pout << "usage: UCMachine::getGlobal offset size" << Std::endl;
- return;
- }
-
- unsigned int offset = strtol(argv[1].c_str(), 0, 0);
- unsigned int size = strtol(argv[2].c_str(), 0, 0);
-
- pout.Print("[%04X %02X] = %d\n", offset, size,
- uc->_globals->getBits(offset, size));
-}
-
-void UCMachine::ConCmd_setGlobal(const Console::ArgvType &argv) {
- UCMachine *uc = UCMachine::get_instance();
- if (argv.size() != 4) {
- pout << "usage: UCMachine::setGlobal offset size value" << Std::endl;
- return;
- }
-
- unsigned int offset = strtol(argv[1].c_str(), 0, 0);
- unsigned int size = strtol(argv[2].c_str(), 0, 0);
- unsigned int value = strtol(argv[3].c_str(), 0, 0);
-
- uc->_globals->setBits(offset, size, value);
-
- pout.Print("[%04X %02X] = %d\n", offset, size,
- uc->_globals->getBits(offset, size));
-}
-
-#ifdef DEBUG
-
-void UCMachine::ConCmd_tracePID(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "Usage: UCMachine::tracePID _pid" << Std::endl;
- return;
- }
-
- uint16 _pid = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
-
- UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_PIDs.insert(_pid);
-
- pout << "UCMachine: tracing process " << _pid << Std::endl;
-}
-
-void UCMachine::ConCmd_traceObjID(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "Usage: UCMachine::traceObjID objid" << Std::endl;
- return;
- }
-
- uint16 objid = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
-
- UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_ObjIDs.insert(objid);
-
- pout << "UCMachine: tracing object " << objid << Std::endl;
-}
-
-void UCMachine::ConCmd_traceClass(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "Usage: UCMachine::traceClass class" << Std::endl;
- return;
- }
-
- uint16 ucclass = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
-
- UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_classes.insert(ucclass);
-
- pout << "UCMachine: tracing class " << ucclass << Std::endl;
-}
-
-void UCMachine::ConCmd_traceAll(const Console::ArgvType &argv) {
- UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_all = true;
-
- pout << "UCMachine: tracing all usecode" << Std::endl;
-}
-
-void UCMachine::ConCmd_traceEvents(const Console::ArgvType &argv) {
- UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_events = true;
-
- pout << "UCMachine: tracing usecode events" << Std::endl;
-}
-
-
-
-void UCMachine::ConCmd_stopTrace(const Console::ArgvType &/*argv*/) {
- UCMachine *uc = UCMachine::get_instance();
- uc->trace_ObjIDs.clear();
- uc->trace_PIDs.clear();
- uc->trace_classes.clear();
- uc->tracing_enabled = false;
- uc->trace_all = false;
- uc->trace_events = false;
-}
-
-#endif
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/usecode/uc_machine.h b/engines/ultima/ultima8/usecode/uc_machine.h
index 0077d03..8c0d00b 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.h
+++ b/engines/ultima/ultima8/usecode/uc_machine.h
@@ -29,6 +29,7 @@
namespace Ultima {
namespace Ultima8 {
+class Debugger;
class Process;
class UCProcess;
class ConvertUsecode;
@@ -39,6 +40,7 @@ class UCList;
class idMan;
class UCMachine {
+ friend class Debugger;
public:
UCMachine(Intrinsic *iset, unsigned int icount);
~UCMachine();
@@ -110,10 +112,6 @@ private:
static UCMachine *_ucMachine;
- static void ConCmd_getGlobal(const Console::ArgvType &argv);
- static void ConCmd_setGlobal(const Console::ArgvType &argv);
-
-
#ifdef DEBUG
// tracing
bool tracing_enabled;
@@ -136,14 +134,6 @@ public:
bool trace_event() {
return (tracing_enabled && (trace_all || trace_events));
}
-
-private:
- static void ConCmd_tracePID(const Console::ArgvType &argv);
- static void ConCmd_traceObjID(const Console::ArgvType &argv);
- static void ConCmd_traceClass(const Console::ArgvType &argv);
- static void ConCmd_traceAll(const Console::ArgvType &argv);
- static void ConCmd_traceEvents(const Console::ArgvType &argv);
- static void ConCmd_stopTrace(const Console::ArgvType &argv);
#endif
};
Commit: 844a26e34b6bb9a8d1d883e9869fe96a64d728ec
https://github.com/scummvm/scummvm/commit/844a26e34b6bb9a8d1d883e9869fe96a64d728ec
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-22T11:42:21-08:00
Commit Message:
ULTIMA8: Fix compilation of DEBUG code
Changed paths:
engines/ultima/nuvie/core/nuvie_defs.h
engines/ultima/shared/std/containers.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/usecode/uc_machine.cpp
engines/ultima/ultima8/usecode/uc_machine.h
engines/ultima/ultima8/world/actors/pathfinder.cpp
engines/ultima/ultima8/world/actors/pathfinder.h
engines/ultima/ultima8/world/item.cpp
diff --git a/engines/ultima/nuvie/core/nuvie_defs.h b/engines/ultima/nuvie/core/nuvie_defs.h
index 983d316..cda8194 100644
--- a/engines/ultima/nuvie/core/nuvie_defs.h
+++ b/engines/ultima/nuvie/core/nuvie_defs.h
@@ -113,6 +113,9 @@ inline void u6debug(bool no_header, const DebugLevelType level, const char *form
extern void u6debug(bool no_header, const DebugLevelType level, const char *format, ...);
#endif
+#ifdef DEBUG
+#undef DEBUG
+#endif
#define DEBUG u6debug
#define U6PATH_DELIMITER '/'
diff --git a/engines/ultima/shared/std/containers.h b/engines/ultima/shared/std/containers.h
index 129fb36..dc4224a 100644
--- a/engines/ultima/shared/std/containers.h
+++ b/engines/ultima/shared/std/containers.h
@@ -107,7 +107,7 @@ template<class T>
class set {
struct Comparitor {
bool operator()(const T &a, const T &b) const {
- return a.Compare(b);
+ return a == b;
}
};
@@ -130,6 +130,13 @@ public:
iterator end() { return _items.end(); }
/**
+ * Clear the set
+ */
+ void clear() {
+ _items.clear();
+ }
+
+ /**
* Inserts a new item
*/
void insert(T val) {
@@ -152,6 +159,15 @@ public:
void swap(set<T> &arr) {
_items.swap(arr);
}
+
+ /**
+ * Find an item
+ */
+ iterator find(T item) {
+ iterator it = begin();
+ for (; it != end() && *it != item; ++it) {}
+ return it;
+ }
};
template<class Key, class Val, class HashFunc = Common::Hash<Key>,
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index ae82979..9580993 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -48,6 +48,7 @@
#include "ultima/ultima8/world/item_factory.h"
#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
#include "ultima/ultima8/world/actors/main_actor.h"
+#include "ultima/ultima8/world/actors/pathfinder.h"
namespace Ultima {
namespace Ultima8 {
@@ -153,7 +154,7 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("ShapeViewerGump::U8ShapeViewer", WRAP_METHOD(Debugger, cmdU8ShapeViewer));
#ifdef DEBUG
- registerCmd("Pathfinder::visualDebug", Pathfinder::cmdVisualDebugPathfinder);
+ registerCmd("Pathfinder::visualDebug", WRAP_METHOD(Debugger, cmdVisualDebugPathfinder));
#endif
}
@@ -1145,7 +1146,7 @@ bool Debugger::cmdMemInfo(int argc, const char **argv) {
}
#ifdef DEBUG
-bool Debugger::cmdTest(int argc, const char **argv) {
+bool Debugger::cmdTestMemory(int argc, const char **argv) {
return true;
}
#endif
@@ -1331,11 +1332,11 @@ bool Debugger::cmdTracePID(int argc, const char **argv) {
return true;
}
- uint16 _pid = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
+ uint16 pid = static_cast<uint16>(strtol(argv[1], 0, 0));
UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_PIDs.insert(_pid);
+ uc->_tracingEnabled = true;
+ uc->_tracePIDs.insert(pid);
debugPrintf("UCMachine: tracing process %d\n", pid);
return true;
@@ -1347,11 +1348,11 @@ bool Debugger::cmdTraceObjID(int argc, const char **argv) {
return true;
}
- uint16 objid = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
+ uint16 objid = static_cast<uint16>(strtol(argv[1], 0, 0));
UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_ObjIDs.insert(objid);
+ uc->_tracingEnabled = true;
+ uc->_traceObjIDs.insert(objid);
debugPrintf("UCMachine: tracing object %d\n", objid);
return true;
@@ -1363,11 +1364,11 @@ bool Debugger::cmdTraceClass(int argc, const char **argv) {
return true;
}
- uint16 ucclass = static_cast<uint16>(strtol(argv[1].c_str(), 0, 0));
+ uint16 ucclass = static_cast<uint16>(strtol(argv[1], 0, 0));
UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_classes.insert(ucclass);
+ uc->_tracingEnabled = true;
+ uc->_traceClasses.insert(ucclass);
debugPrintf("UCMachine: tracing class %d\n", ucclass);
return true;
@@ -1375,8 +1376,8 @@ bool Debugger::cmdTraceClass(int argc, const char **argv) {
bool Debugger::cmdTraceAll(int argc, const char **argv) {
UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_all = true;
+ uc->_tracingEnabled = true;
+ uc->_traceAll = true;
debugPrintf("UCMachine: tracing all usecode\n");
return true;
@@ -1384,21 +1385,21 @@ bool Debugger::cmdTraceAll(int argc, const char **argv) {
bool Debugger::cmdTraceEvents(int argc, const char **argv) {
UCMachine *uc = UCMachine::get_instance();
- uc->tracing_enabled = true;
- uc->trace_events = true;
+ uc->_tracingEnabled = true;
+ uc->_traceEvents = true;
debugPrintf("UCMachine: tracing usecode events\n");
return true;
}
-bool Debugger::cmdStopTrace(const Console::ArgvType &/*argv*/) {
+bool Debugger::cmdStopTrace(int argc, const char **argv) {
UCMachine *uc = UCMachine::get_instance();
- uc->trace_ObjIDs.clear();
- uc->trace_PIDs.clear();
- uc->trace_classes.clear();
- uc->tracing_enabled = false;
- uc->trace_all = false;
- uc->trace_events = false;
+ uc->_traceObjIDs.clear();
+ uc->_tracePIDs.clear();
+ uc->_traceClasses.clear();
+ uc->_tracingEnabled = false;
+ uc->_traceAll = false;
+ uc->_traceEvents = false;
debugPrintf("Trace stopped\n");
return true;
@@ -1506,16 +1507,18 @@ bool Debugger::cmdVisualDebugPathfinder(int argc, const char **argv) {
if (argc != 2) {
debugPrintf("Usage: Pathfinder::visualDebug objid\n");
debugPrintf("Specify objid -1 to stop tracing.\n");
- return;
+ return true;
}
- int p = strtol(argv[1].c_str(), 0, 0);
+ int p = strtol(argv[1], 0, 0);
if (p == -1) {
- visualdebug_actor = 0xFFFF;
+ Pathfinder::_visualDebugActor = 0xFFFF;
debugPrintf("Pathfinder: stopped visual tracing\n");
} else {
- visualdebug_actor = (uint16)p;
- debugPrintf("Pathfinder: visually tracing _actor " << visualdebug_actor << Std::endl;
+ Pathfinder::_visualDebugActor = (uint16)p;
+ debugPrintf("Pathfinder: visually tracing _actor %d\n", Pathfinder::_visualDebugActor);
}
+
+ return true;
}
#endif
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 4d79000..5eab862 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -1337,9 +1337,7 @@ Common::Error Ultima8Engine::loadGameStream(Common::SeekableReadStream *stream)
_settingMan->get("ignore_savegame_mismatch", ignore);
if (!ignore) {
- Error(message, "Error Loading savegame " + filename);
- delete sg;
- return false;
+ error("%s", message.c_str());
}
perr << message << Std::endl;
#else
diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 4da71e9..9bc8967 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -97,8 +97,8 @@ UCMachine::UCMachine(Intrinsic *iset, unsigned int icount) {
_stringIDs = new idMan(1, 65534, 256);
#ifdef DEBUG
- tracing_enabled = false;
- trace_all = false;
+ _tracingEnabled = false;
+ _traceAll = false;
#endif
}
@@ -147,7 +147,7 @@ void UCMachine::execProcess(UCProcess *p) {
#ifdef DEBUG
if (trace_show(p->_pid, p->_itemNum, p->_classId)) {
pout << Std::hex << "running process " << p->_pid
- << ", item " << p->_itemNum << ", type " << p->type
+ << ", item " << p->_itemNum << ", type " << p->_type
<< ", class " << p->_classId << ", offset " << p->_ip
<< Std::dec << Std::endl;
}
@@ -354,7 +354,7 @@ void UCMachine::execProcess(UCProcess *p) {
//! TODO
uint16 arg_bytes = cs.read1();
uint16 func = cs.read2();
- LOGPF(("calli\t\t%04Xh (%02Xh arg bytes) %s \n", func, arg_bytes, _convUse->_intrinsics()[func]));
+ debug(("calli\t\t%04Xh (%02Xh arg bytes) %s \n", func, arg_bytes, _convUse->intrinsics()[func]));
// !constants
if (func >= _intrinsicCount || _intrinsics[func] == 0) {
@@ -1337,7 +1337,7 @@ void UCMachine::execProcess(UCProcess *p) {
#ifdef DEBUG
if (trace_show(p->_pid, p->_itemNum, p->_classId)) {
pout << Std::hex << "(still) running process " << p->_pid
- << ", item " << p->_itemNum << ", type " << p->type
+ << ", item " << p->_itemNum << ", type " << p->_type
<< ", class " << p->_classId << ", offset " << p->_ip
<< Std::dec << Std::endl;
}
@@ -1365,10 +1365,10 @@ void UCMachine::execProcess(UCProcess *p) {
uint16 offset = cs.read2();
uint16 delta = cs.read2();
int this_size = cs.read1();
- (void)cs.read1(); // ??
+ int unknown = cs.read1(); // ??
- LOGPF(("spawn inline\t%04X:%04X+%04X=%04X %02X %02X\n",
- classid, offset, delta, offset + delta, this_size, unknown));
+ debug("spawn inline\t%04X:%04X+%04X=%04X %02X %02X\n",
+ classid, offset, delta, offset + delta, this_size, unknown);
uint32 thisptr = 0;
if (this_size > 0)
diff --git a/engines/ultima/ultima8/usecode/uc_machine.h b/engines/ultima/ultima8/usecode/uc_machine.h
index 8c0d00b..299a4de 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.h
+++ b/engines/ultima/ultima8/usecode/uc_machine.h
@@ -23,6 +23,7 @@
#ifndef ULTIMA8_USECODE_UCMACHINE_H
#define ULTIMA8_USECODE_UCMACHINE_H
+#include "ultima/ultima8/misc/common_types.h"
#include "ultima/shared/std/containers.h"
#include "ultima/ultima8/usecode/intrinsics.h"
@@ -114,25 +115,25 @@ private:
#ifdef DEBUG
// tracing
- bool tracing_enabled;
- bool trace_all;
- bool trace_events;
- Std::set<ObjId> trace_ObjIDs;
- Std::set<ProcId> trace_PIDs;
- Std::set<uint16> trace_classes;
+ bool _tracingEnabled;
+ bool _traceAll;
+ bool _traceEvents;
+ Std::set<ObjId> _traceObjIDs;
+ Std::set<ProcId> _tracePIDs;
+ Std::set<uint16> _traceClasses;
inline bool trace_show(ProcId pid, ObjId objid, uint16 ucclass) {
- if (!tracing_enabled) return false;
- if (trace_all) return true;
- if (trace_ObjIDs.find(objid) != trace_ObjIDs.end()) return true;
- if (trace_PIDs.find(pid) != trace_PIDs.end()) return true;
- if (trace_classes.find(ucclass) != trace_classes.end()) return true;
+ if (!_tracingEnabled) return false;
+ if (_traceAll) return true;
+ if (_traceObjIDs.find(objid) != _traceObjIDs.end()) return true;
+ if (_tracePIDs.find(pid) != _tracePIDs.end()) return true;
+ if (_traceClasses.find(ucclass) != _traceClasses.end()) return true;
return false;
}
public:
bool trace_event() {
- return (tracing_enabled && (trace_all || trace_events));
+ return (_tracingEnabled && (_traceAll || _traceEvents));
}
#endif
};
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.cpp b/engines/ultima/ultima8/world/actors/pathfinder.cpp
index d35ee42..3346711 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder.cpp
@@ -33,7 +33,7 @@ namespace Ultima {
namespace Ultima8 {
#ifdef DEBUG
-ObjId Pathfinder::visualdebug_actor = 0xFFFF;
+ObjId Pathfinder::_visualDebugActor = 0xFFFF;
#endif
struct PathNode {
@@ -403,12 +403,12 @@ void Pathfinder::newNode(PathNode *oldnode, PathfindingState &state,
#endif
#ifdef DEBUG
- if (_actor->getObjId() == visualdebug_actor) {
+ if (_actor->getObjId() == _visualDebugActor) {
RenderSurface *screen = Ultima8Engine::get_instance()->getRenderScreen();
screen->BeginPainting();
drawpath(newnode, 0xFFFFFF00, done);
screen->EndPainting();
- SDL_Delay(250);
+ g_system->delayMillis(250);
if (!done) {
screen->BeginPainting();
drawpath(newnode, 0xFFB0B000, done);
@@ -513,7 +513,7 @@ bool Pathfinder::pathfind(Std::vector<PathfindingAction> &path) {
#endif
#ifdef DEBUG
- if (_actor->getObjId() == visualdebug_actor) {
+ if (_actor->getObjId() == _visualDebugActor) {
RenderSurface *screen = Ultima8Engine::get_instance()->getRenderScreen();
screen->BeginPainting();
if (_targetItem)
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.h b/engines/ultima/ultima8/world/actors/pathfinder.h
index 1be98b6..bb885ec 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.h
+++ b/engines/ultima/ultima8/world/actors/pathfinder.h
@@ -76,7 +76,7 @@ public:
bool pathfind(Std::vector<PathfindingAction> &path);
#ifdef DEBUG
- static ObjId visualdebug_actor;
+ static ObjId _visualDebugActor;
#endif
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index c7fce2d..13e5464 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -1035,8 +1035,8 @@ uint32 Item::callUsecodeEvent(uint32 event, const uint8 *args, int argsize) {
#ifdef DEBUG
if (UCMachine::get_instance()->trace_event()) {
- pout.printf("Item: %d calling usecode event %d @ %04X:%04X\n",
- _objId, event, class_id, offset);
+ pout.Print("Item: %d calling usecode event %d @ %04X:%04X\n",
+ _objId, event, class_id, offset);
}
#endif
More information about the Scummvm-git-logs
mailing list