[Scummvm-git-logs] scummvm master -> 93aa5997c6a8d7babef41482c347c4248d4b8b92
dreammaster
paulfgilbert at gmail.com
Fri Feb 21 06:05:19 UTC 2020
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
fa8d4e5f3b ULTIMA8: Remove deprecated ifdef blocks
681d4cb8df ULTIMA8: Move GameMapGump console methods into Debugger
437cd591bf ULTIMA8: Move Quick Avatar Mover console cmds into Debugger
46c68a4545 ULTIMA8: Moved audio process console cmds to Debugger
93aa5997c6 ULTIMA8: Moving console methods into Debugger
Commit: fa8d4e5f3b1b522e242d590a0545088aca80ab27
https://github.com/scummvm/scummvm/commit/fa8d4e5f3b1b522e242d590a0545088aca80ab27
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-20T19:09:31-08:00
Commit Message:
ULTIMA8: Remove deprecated ifdef blocks
Changed paths:
engines/ultima/ultima8/ultima8.cpp
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index a701acd..fa1bcbc 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -1040,24 +1040,13 @@ void Ultima8Engine::enterTextMode(Gump *gump) {
if (!_textModes.empty()) {
_textModes.remove(gump->getObjId());
- } else {
-#ifdef TODO
- SDL_EnableUNICODE(1);
- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
-#endif
}
_textModes.push_front(gump->getObjId());
}
void Ultima8Engine::leaveTextMode(Gump *gump) {
- if (_textModes.empty()) return;
- _textModes.remove(gump->getObjId());
- if (_textModes.empty()) {
-#ifdef TODO
- SDL_EnableUNICODE(0);
- SDL_EnableKeyRepeat(0, 0);
-#endif
- }
+ if (!_textModes.empty())
+ _textModes.remove(gump->getObjId());
}
void Ultima8Engine::handleEvent(const Common::Event &event) {
Commit: 681d4cb8df7a0cd4c59969f5b1e395c2c7840580
https://github.com/scummvm/scummvm/commit/681d4cb8df7a0cd4c59969f5b1e395c2c7840580
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-20T20:31:00-08:00
Commit Message:
ULTIMA8: Move GameMapGump console methods into Debugger
Changed paths:
engines/ultima/ultima8/gumps/game_map_gump.cpp
engines/ultima/ultima8/gumps/game_map_gump.h
engines/ultima/ultima8/kernel/object.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/ultima8.cpp
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.cpp b/engines/ultima/ultima8/gumps/game_map_gump.cpp
index 463fc67..85b90d0 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.cpp
+++ b/engines/ultima/ultima8/gumps/game_map_gump.cpp
@@ -560,177 +560,6 @@ void GameMapGump::DropItem(Item *item, int mx, int my) {
}
}
-void GameMapGump::ConCmd_toggleHighlightItems(const Console::ArgvType &argv) {
- GameMapGump::Set_highlightItems(!GameMapGump::is_highlightItems());
-}
-
-void GameMapGump::ConCmd_dumpMap(const Console::ArgvType &) {
-#ifdef TODO
- // We only support 32 bits per pixel for now
- if (RenderSurface::format.s_bpp != 32) return;
-
- // Save because we're going to potentially break the game by enlarging
- // the fast area and available object IDs.
- Std::string savefile = "@save/dumpmap";
- Ultima8Engine::get_instance()->saveGame(savefile, "Pre-dumpMap save");
-
- // Increase number of available object IDs.
- ObjectManager::get_instance()->allow64kObjects();
-
- // Actual size
- int32 awidth = 8192;
- int32 aheight = 8192;
-
- int32 xpos = 0;
- int32 ypos = 0;
-
- int32 left = 16384;
- int32 right = -16384;
- int32 top = 16384;
- int32 bot = -16384;
-
- int32 camheight = 256;
-
- // Work out the map limit we do this very coarsly
- // Now render the map
- for (int32 y = 0; y < 64; y++) {
- for (int32 x = 0; x < 64; x++) {
- const Std::list<Item *> *list =
- World::get_instance()->getCurrentMap()->getItemList(x, y);
-
- // Should iterate the items!
- // (items could extend outside of this chunk and they have height)
- if (list && list->size() != 0) {
- int32 l = (x * 512 - y * 512) / 4 - 128;
- int32 r = (x * 512 - y * 512) / 4 + 128;
- int32 t = (x * 512 + y * 512) / 8 - 256;
- int32 b = (x * 512 + y * 512) / 8;
-
- t -= 256; // approx. adjustment for height of items in chunk
-
- if (l < left) left = l;
- if (r > right) right = r;
- if (t < top) top = t;
- if (b > bot) bot = b;
- }
- }
- }
-
- if (right == -16384) return;
-
- // camera height
- bot += camheight;
- top += camheight;
-
- awidth = right - left;
- aheight = bot - top;
-
- ypos = top;
- xpos = left;
-
- // Buffer Size
- int32 bwidth = awidth;
- int32 bheight = 256;
-
- // Tile size
- int32 twidth = bwidth / 8;
- int32 theight = bheight;
-
-
- GameMapGump *g = new GameMapGump(0, 0, twidth, theight);
-
- // HACK: Setting both INVISIBLE and TRANSPARENT flags on the Avatar
- // will make him completely invisible.
- getMainActor()->setFlag(Item::FLG_INVISIBLE);
- getMainActor()->setExtFlag(Item::EXT_TRANSPARENT);
- World::get_instance()->getCurrentMap()->setWholeMapFast();
-
- RenderSurface *s = RenderSurface::CreateSecondaryRenderSurface(bwidth,
- bheight);
- Texture *t = s->GetSurfaceAsTexture();
- // clear buffer
- Std::memset(t->buffer, 0, 4 * bwidth * bheight);
-
-
- // Write tga header
- Std::string filename = "@home/mapdump";
- char buf[32];
- sprintf(buf, "%02d", World::get_instance()->getCurrentMap()->getNum());
- filename += buf;
- filename += ".png";
- ODataSource *ds = FileSystem::get_instance()->WriteFile(filename);
- Std::string pngcomment = "Map ";
- pngcomment += buf;
- pngcomment += ", dumped by Pentagram.";
-
- PNGWriter *pngw = new PNGWriter(ds);
- pngw->init(awidth, aheight, pngcomment);
-
- // Now render the map
- for (int32 y = 0; y < aheight; y += theight) {
- for (int32 x = 0; x < awidth; x += twidth) {
- // Work out 'effective' and world coords
- int32 ex = xpos + x + twidth / 2;
- int32 ey = ypos + y + theight / 2;
- int32 wx = ex * 2 + ey * 4;
- int32 wy = ey * 4 - ex * 2;
-
- s->SetOrigin(x, y % bheight);
- CameraProcess::SetCameraProcess(
- new CameraProcess(wx + 4 * camheight, wy + 4 * camheight, camheight));
- g->Paint(s, 256, false);
-
- }
-
- // Write out the current buffer
- if (((y + theight) % bheight) == 0) {
- for (int i = 0; i < bwidth * bheight; ++i) {
- // Convert to correct pixel format
- uint8 r, g, b;
- UNPACK_RGB8(t->buffer[i], r, g, b);
- uint8 *buf = reinterpret_cast<uint8 *>(&t->buffer[i]);
- buf[0] = b;
- buf[1] = g;
- buf[2] = r;
- buf[3] = 0xFF;
- }
-
- pngw->writeRows(bheight, t);
-
- // clear buffer for next set
- Std::memset(t->buffer, 0, 4 * bwidth * bheight);
- }
- }
-
- pngw->finish();
- delete pngw;
-
- delete ds;
-
- delete g;
- delete s;
-
- // Reload
- Ultima8Engine::get_instance()->loadGame(savefile);
-
- pout << "Map stored in " << filename << "." << Std::endl;
-#endif
-}
-
-void GameMapGump::ConCmd_incrementSortOrder(const Console::ArgvType &argv) {
- GameMapGump *gameMapGump = Ultima8Engine::get_instance()->getGameMapGump();
- if (gameMapGump) {
- gameMapGump->IncSortOrder(1);
- }
-}
-
-void GameMapGump::ConCmd_decrementSortOrder(const Console::ArgvType &argv) {
- GameMapGump *gameMapGump = Ultima8Engine::get_instance()->getGameMapGump();
- if (gameMapGump) {
- gameMapGump->IncSortOrder(-1);
- }
-}
-
void GameMapGump::RenderSurfaceChanged() {
_dims.x += _dims.w / 2;
_dims.y += _dims.h / 2;
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.h b/engines/ultima/ultima8/gumps/game_map_gump.h
index 07bc1eb..a0176d2 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.h
+++ b/engines/ultima/ultima8/gumps/game_map_gump.h
@@ -84,12 +84,6 @@ public:
return _highlightItems;
}
- static void ConCmd_toggleHighlightItems(const Console::ArgvType &argv);
- static void ConCmd_dumpMap(const Console::ArgvType &argv);
-
- static void ConCmd_incrementSortOrder(const Console::ArgvType &argv);
- static void ConCmd_decrementSortOrder(const Console::ArgvType &argv);
-
void RenderSurfaceChanged() override;
protected:
diff --git a/engines/ultima/ultima8/kernel/object.h b/engines/ultima/ultima8/kernel/object.h
index a614b75..0668b2c 100644
--- a/engines/ultima/ultima8/kernel/object.h
+++ b/engines/ultima/ultima8/kernel/object.h
@@ -24,6 +24,7 @@
#define ULTIMA8_KERNEL_OBJECT_H
#include "ultima/ultima8/misc/p_dynamic_cast.h"
+#include "ultima/ultima8/misc/pent_include.h"
namespace Ultima {
namespace Ultima8 {
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index f6ecb46..4144660 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -21,11 +21,190 @@
*/
#include "ultima/ultima8/misc/debugger.h"
+#include "ultima/ultima8/ultima8.h"
+#include "ultima/ultima8/gumps/game_map_gump.h"
namespace Ultima {
namespace Ultima8 {
Debugger::Debugger() : Shared::Debugger() {
+ registerCmd("GameMapGump::toggleHighlightItems", WRAP_METHOD(Debugger, cmdToggleHighlightItems));
+ registerCmd("GameMapGump::dumpMap", WRAP_METHOD(Debugger, cmdDumpMap));
+ registerCmd("GameMapGump::incrementSortOrder", WRAP_METHOD(Debugger, cmdIncrementSortOrder));
+ registerCmd("GameMapGump::decrementSortOrder", WRAP_METHOD(Debugger, cmdDecrementSortOrder));
+}
+
+bool Debugger::cmdToggleHighlightItems(int argc, const char **argv) {
+ GameMapGump::Set_highlightItems(!GameMapGump::is_highlightItems());
+ return false;
+}
+
+bool Debugger::cmdDumpMap(int argc, const char **argv) {
+#ifdef TODO
+ // We only support 32 bits per pixel for now
+ if (RenderSurface::format.s_bpp != 32) return;
+
+ // Save because we're going to potentially break the game by enlarging
+ // the fast area and available object IDs.
+ Std::string savefile = "@save/dumpmap";
+ Ultima8Engine::get_instance()->saveGame(savefile, "Pre-dumpMap save");
+
+ // Increase number of available object IDs.
+ ObjectManager::get_instance()->allow64kObjects();
+
+ // Actual size
+ int32 awidth = 8192;
+ int32 aheight = 8192;
+
+ int32 xpos = 0;
+ int32 ypos = 0;
+
+ int32 left = 16384;
+ int32 right = -16384;
+ int32 top = 16384;
+ int32 bot = -16384;
+
+ int32 camheight = 256;
+
+ // Work out the map limit we do this very coarsly
+ // Now render the map
+ for (int32 y = 0; y < 64; y++) {
+ for (int32 x = 0; x < 64; x++) {
+ const Std::list<Item *> *list =
+ World::get_instance()->getCurrentMap()->getItemList(x, y);
+
+ // Should iterate the items!
+ // (items could extend outside of this chunk and they have height)
+ if (list && list->size() != 0) {
+ int32 l = (x * 512 - y * 512) / 4 - 128;
+ int32 r = (x * 512 - y * 512) / 4 + 128;
+ int32 t = (x * 512 + y * 512) / 8 - 256;
+ int32 b = (x * 512 + y * 512) / 8;
+
+ t -= 256; // approx. adjustment for height of items in chunk
+
+ if (l < left) left = l;
+ if (r > right) right = r;
+ if (t < top) top = t;
+ if (b > bot) bot = b;
+ }
+ }
+ }
+
+ if (right == -16384) return;
+
+ // camera height
+ bot += camheight;
+ top += camheight;
+
+ awidth = right - left;
+ aheight = bot - top;
+
+ ypos = top;
+ xpos = left;
+
+ // Buffer Size
+ int32 bwidth = awidth;
+ int32 bheight = 256;
+
+ // Tile size
+ int32 twidth = bwidth / 8;
+ int32 theight = bheight;
+
+
+ Debugger *g = new Debugger(0, 0, twidth, theight);
+
+ // HACK: Setting both INVISIBLE and TRANSPARENT flags on the Avatar
+ // will make him completely invisible.
+ getMainActor()->setFlag(Item::FLG_INVISIBLE);
+ getMainActor()->setExtFlag(Item::EXT_TRANSPARENT);
+ World::get_instance()->getCurrentMap()->setWholeMapFast();
+
+ RenderSurface *s = RenderSurface::CreateSecondaryRenderSurface(bwidth,
+ bheight);
+ Texture *t = s->GetSurfaceAsTexture();
+ // clear buffer
+ Std::memset(t->buffer, 0, 4 * bwidth * bheight);
+
+
+ // Write tga header
+ Std::string filename = "@home/mapdump";
+ char buf[32];
+ sprintf(buf, "%02d", World::get_instance()->getCurrentMap()->getNum());
+ filename += buf;
+ filename += ".png";
+ ODataSource *ds = FileSystem::get_instance()->WriteFile(filename);
+ Std::string pngcomment = "Map ";
+ pngcomment += buf;
+ pngcomment += ", dumped by Pentagram.";
+
+ PNGWriter *pngw = new PNGWriter(ds);
+ pngw->init(awidth, aheight, pngcomment);
+
+ // Now render the map
+ for (int32 y = 0; y < aheight; y += theight) {
+ for (int32 x = 0; x < awidth; x += twidth) {
+ // Work out 'effective' and world coords
+ int32 ex = xpos + x + twidth / 2;
+ int32 ey = ypos + y + theight / 2;
+ int32 wx = ex * 2 + ey * 4;
+ int32 wy = ey * 4 - ex * 2;
+
+ s->SetOrigin(x, y % bheight);
+ CameraProcess::SetCameraProcess(
+ new CameraProcess(wx + 4 * camheight, wy + 4 * camheight, camheight));
+ g->Paint(s, 256, false);
+
+ }
+
+ // Write out the current buffer
+ if (((y + theight) % bheight) == 0) {
+ for (int i = 0; i < bwidth * bheight; ++i) {
+ // Convert to correct pixel format
+ uint8 r, g, b;
+ UNPACK_RGB8(t->buffer[i], r, g, b);
+ uint8 *buf = reinterpret_cast<uint8 *>(&t->buffer[i]);
+ buf[0] = b;
+ buf[1] = g;
+ buf[2] = r;
+ buf[3] = 0xFF;
+ }
+
+ pngw->writeRows(bheight, t);
+
+ // clear buffer for next set
+ Std::memset(t->buffer, 0, 4 * bwidth * bheight);
+ }
+ }
+
+ pngw->finish();
+ delete pngw;
+
+ delete ds;
+
+ delete g;
+ delete s;
+
+ // Reload
+ Ultima8Engine::get_instance()->loadGame(savefile);
+
+ debugPrintf("Map dumped\n");
+#endif
+ return false;
+}
+
+bool Debugger::cmdIncrementSortOrder(int argc, const char **argv) {
+ GameMapGump *gump = Ultima8Engine::get_instance()->getGameMapGump();
+ if (gump)
+ gump->IncSortOrder(1);
+ return false;
+}
+
+bool Debugger::cmdDecrementSortOrder(int argc, const char **argv) {
+ GameMapGump *gump = Ultima8Engine::get_instance()->getGameMapGump();
+ if (gump)
+ gump->IncSortOrder(-1);
+ return false;
}
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index 99717fd..f893ac4 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -35,7 +35,11 @@ class Ultima1Engine;
*/
class Debugger : public Shared::Debugger {
private:
- bool cmdSpell(int argc, const char **argv);
+ bool cmdToggleHighlightItems(int argc, const char **argv);
+ bool cmdDumpMap(int argc, const char **argvv);
+ bool cmdIncrementSortOrder(int argc, const char **argv);
+ bool cmdDecrementSortOrder(int argc, const char **argv);
+
public:
Debugger();
~Debugger() override {}
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index fa1bcbc..0a40913 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -244,15 +244,6 @@ bool Ultima8Engine::initialize() {
con->AddConsoleCommand("QuickAvatarMoverProcess::toggleClipping",
QuickAvatarMoverProcess::ConCmd_toggleClipping);
- con->AddConsoleCommand("GameMapGump::toggleHighlightItems",
- GameMapGump::ConCmd_toggleHighlightItems);
- con->AddConsoleCommand("GameMapGump::dumpMap",
- GameMapGump::ConCmd_dumpMap);
- con->AddConsoleCommand("GameMapGump::incrementSortOrder",
- GameMapGump::ConCmd_incrementSortOrder);
- con->AddConsoleCommand("GameMapGump::decrementSortOrder",
- GameMapGump::ConCmd_decrementSortOrder);
-
con->AddConsoleCommand("AudioProcess::listSFX", AudioProcess::ConCmd_listSFX);
con->AddConsoleCommand("AudioProcess::playSFX", AudioProcess::ConCmd_playSFX);
con->AddConsoleCommand("AudioProcess::stopSFX", AudioProcess::ConCmd_stopSFX);
@@ -309,11 +300,6 @@ void Ultima8Engine::deinitialize() {
con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_toggleQuarterSpeed);
con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_toggleClipping);
- con->RemoveConsoleCommand(GameMapGump::ConCmd_toggleHighlightItems);
- con->RemoveConsoleCommand(GameMapGump::ConCmd_dumpMap);
- con->RemoveConsoleCommand(GameMapGump::ConCmd_incrementSortOrder);
- con->RemoveConsoleCommand(GameMapGump::ConCmd_decrementSortOrder);
-
con->RemoveConsoleCommand(AudioProcess::ConCmd_listSFX);
con->RemoveConsoleCommand(AudioProcess::ConCmd_stopSFX);
con->RemoveConsoleCommand(AudioProcess::ConCmd_playSFX);
Commit: 437cd591bfa61fb5a68f1633aa8a3382fea88d33
https://github.com/scummvm/scummvm/commit/437cd591bfa61fb5a68f1633aa8a3382fea88d33
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-20T20:57:33-08:00
Commit Message:
ULTIMA8: Move Quick Avatar Mover console cmds into Debugger
Changed paths:
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 4144660..bf71466 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -23,6 +23,7 @@
#include "ultima/ultima8/misc/debugger.h"
#include "ultima/ultima8/ultima8.h"
#include "ultima/ultima8/gumps/game_map_gump.h"
+#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
namespace Ultima {
namespace Ultima8 {
@@ -32,6 +33,22 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("GameMapGump::dumpMap", WRAP_METHOD(Debugger, cmdDumpMap));
registerCmd("GameMapGump::incrementSortOrder", WRAP_METHOD(Debugger, cmdIncrementSortOrder));
registerCmd("GameMapGump::decrementSortOrder", WRAP_METHOD(Debugger, cmdDecrementSortOrder));
+
+ registerCmd("QuickAvatarMoverProcess::startMoveUp", WRAP_METHOD(Debugger, cmdStartMoveUp));
+ registerCmd("QuickAvatarMoverProcess::startMoveDown", WRAP_METHOD(Debugger, cmdStartMoveDown));
+ registerCmd("QuickAvatarMoverProcess::startMoveLeft", WRAP_METHOD(Debugger, cmdStartMoveLeft));
+ registerCmd("QuickAvatarMoverProcess::startMoveRight", WRAP_METHOD(Debugger, cmdStartMoveRight));
+ registerCmd("QuickAvatarMoverProcess::startAscend", WRAP_METHOD(Debugger, cmdStartAscend));
+ registerCmd("QuickAvatarMoverProcess::startDescend", WRAP_METHOD(Debugger, cmdStartDescend));
+ registerCmd("QuickAvatarMoverProcess::stopMoveUp", WRAP_METHOD(Debugger, cmdStopMoveUp));
+ registerCmd("QuickAvatarMoverProcess::stopMoveDown", WRAP_METHOD(Debugger, cmdStopMoveDown));
+ registerCmd("QuickAvatarMoverProcess::stopMoveLeft", WRAP_METHOD(Debugger, cmdStopMoveLeft));
+ registerCmd("QuickAvatarMoverProcess::stopMoveRight", WRAP_METHOD(Debugger, cmdStopMoveRight));
+ registerCmd("QuickAvatarMoverProcess::stopAscend", WRAP_METHOD(Debugger, cmdStopAscend));
+ registerCmd("QuickAvatarMoverProcess::stopDescend", WRAP_METHOD(Debugger, cmdStopDescend));
+ registerCmd("QuickAvatarMoverProcess::toggleQuarterSpeed", WRAP_METHOD(Debugger, cmdToggleQuarterSpeed));
+ registerCmd("QuickAvatarMoverProcess::toggleClipping", WRAP_METHOD(Debugger, cmdToggleClipping));
+
}
bool Debugger::cmdToggleHighlightItems(int argc, const char **argv) {
@@ -207,5 +224,113 @@ bool Debugger::cmdDecrementSortOrder(int argc, const char **argv) {
return false;
}
+
+
+bool Debugger::cmdStartMoveUp(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::startMover(-64, -64, 0, 0);
+ return false;
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ return true;
+ }
+}
+
+bool Debugger::cmdStartMoveDown(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::startMover(+64, +64, 0, 1);
+ return false;
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ return true;
+ }
+}
+
+bool Debugger::cmdStartMoveLeft(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::startMover(-64, +64, 0, 2);
+ return false;
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ return true;
+ }
+}
+
+bool Debugger::cmdStartMoveRight(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::startMover(+64, -64, 0, 3);
+ return false;
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ return true;
+ }
+}
+
+bool Debugger::cmdStartAscend(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::startMover(0, 0, 8, 4);
+ return false;
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ return true;
+ }
+}
+
+bool Debugger::cmdStartDescend(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::startMover(0, 0, -8, 5);
+ return false;
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ return true;
+ }
+}
+
+bool Debugger::cmdStopMoveUp(int argc, const char **argv) {
+ QuickAvatarMoverProcess::terminateMover(0);
+ return false;
+}
+
+bool Debugger::cmdStopMoveDown(int argc, const char **argv) {
+ QuickAvatarMoverProcess::terminateMover(1);
+ return false;
+}
+
+bool Debugger::cmdStopMoveLeft(int argc, const char **argv) {
+ QuickAvatarMoverProcess::terminateMover(2);
+ return false;
+}
+
+bool Debugger::cmdStopMoveRight(int argc, const char **argv) {
+ QuickAvatarMoverProcess::terminateMover(3);
+ return false;
+}
+
+bool Debugger::cmdStopAscend(int argc, const char **argv) {
+ QuickAvatarMoverProcess::terminateMover(4);
+ return false;
+}
+
+bool Debugger::cmdStopDescend(int argc, const char **argv) {
+ QuickAvatarMoverProcess::terminateMover(5);
+ return false;
+}
+
+bool Debugger::cmdToggleQuarterSpeed(int argc, const char **argv) {
+ QuickAvatarMoverProcess::setQuarterSpeed(!QuickAvatarMoverProcess::isQuarterSpeed());
+ return false;
+}
+
+bool Debugger::cmdToggleClipping(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
+ QuickAvatarMoverProcess::toggleClipping();
+ debugPrintf("QuickAvatarMoverProcess::_clipping = %s\n",
+ QuickAvatarMoverProcess::isClipping() ? "true" : "false");
+ } else {
+ debugPrintf("Cheats aren't enabled\n");
+ }
+ return true;
+}
+
} // 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 f893ac4..2c74270 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -35,11 +35,27 @@ class Ultima1Engine;
*/
class Debugger : public Shared::Debugger {
private:
+ // Game Map Gump
bool cmdToggleHighlightItems(int argc, const char **argv);
bool cmdDumpMap(int argc, const char **argvv);
bool cmdIncrementSortOrder(int argc, const char **argv);
bool cmdDecrementSortOrder(int argc, const char **argv);
+ // Quick Avatar Mover Process
+ bool cmdStartMoveUp(int argc, const char **argv);
+ bool cmdStartMoveDown(int argc, const char **argv);
+ bool cmdStartMoveLeft(int argc, const char **argv);
+ bool cmdStartMoveRight(int argc, const char **argv);
+ bool cmdStartAscend(int argc, const char **argv);
+ bool cmdStartDescend(int argc, const char **argv);
+ bool cmdStopMoveUp(int argc, const char **argv);
+ bool cmdStopMoveDown(int argc, const char **argv);
+ bool cmdStopMoveLeft(int argc, const char **argv);
+ bool cmdStopMoveRight(int argc, const char **argv);
+ bool cmdStopAscend(int argc, const char **argv);
+ bool cmdStopDescend(int argc, const char **argv);
+ bool cmdToggleQuarterSpeed(int argc, const char **argv);
+ bool cmdToggleClipping(int argc, const char **argv);
public:
Debugger();
~Debugger() override {}
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 0a40913..5e02897 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -215,35 +215,6 @@ bool Ultima8Engine::initialize() {
con->AddConsoleCommand("MemoryManager::test",
MemoryManager::ConCmd_test);
- con->AddConsoleCommand("QuickAvatarMoverProcess::startMoveUp",
- QuickAvatarMoverProcess::ConCmd_startMoveUp);
- con->AddConsoleCommand("QuickAvatarMoverProcess::startMoveDown",
- QuickAvatarMoverProcess::ConCmd_startMoveDown);
- con->AddConsoleCommand("QuickAvatarMoverProcess::startMoveLeft",
- QuickAvatarMoverProcess::ConCmd_startMoveLeft);
- con->AddConsoleCommand("QuickAvatarMoverProcess::startMoveRight",
- QuickAvatarMoverProcess::ConCmd_startMoveRight);
- con->AddConsoleCommand("QuickAvatarMoverProcess::startAscend",
- QuickAvatarMoverProcess::ConCmd_startAscend);
- con->AddConsoleCommand("QuickAvatarMoverProcess::startDescend",
- QuickAvatarMoverProcess::ConCmd_startDescend);
- con->AddConsoleCommand("QuickAvatarMoverProcess::stopMoveUp",
- QuickAvatarMoverProcess::ConCmd_stopMoveUp);
- con->AddConsoleCommand("QuickAvatarMoverProcess::stopMoveDown",
- QuickAvatarMoverProcess::ConCmd_stopMoveDown);
- con->AddConsoleCommand("QuickAvatarMoverProcess::stopMoveLeft",
- QuickAvatarMoverProcess::ConCmd_stopMoveLeft);
- con->AddConsoleCommand("QuickAvatarMoverProcess::stopMoveRight",
- QuickAvatarMoverProcess::ConCmd_stopMoveRight);
- con->AddConsoleCommand("QuickAvatarMoverProcess::stopAscend",
- QuickAvatarMoverProcess::ConCmd_stopAscend);
- con->AddConsoleCommand("QuickAvatarMoverProcess::stopDescend",
- QuickAvatarMoverProcess::ConCmd_stopDescend);
- con->AddConsoleCommand("QuickAvatarMoverProcess::toggleQuarterSpeed",
- QuickAvatarMoverProcess::ConCmd_toggleQuarterSpeed);
- con->AddConsoleCommand("QuickAvatarMoverProcess::toggleClipping",
- QuickAvatarMoverProcess::ConCmd_toggleClipping);
-
con->AddConsoleCommand("AudioProcess::listSFX", AudioProcess::ConCmd_listSFX);
con->AddConsoleCommand("AudioProcess::playSFX", AudioProcess::ConCmd_playSFX);
con->AddConsoleCommand("AudioProcess::stopSFX", AudioProcess::ConCmd_stopSFX);
@@ -285,21 +256,6 @@ void Ultima8Engine::deinitialize() {
con->RemoveConsoleCommand(MemoryManager::ConCmd_MemInfo);
con->RemoveConsoleCommand(MemoryManager::ConCmd_test);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_startMoveUp);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_startMoveDown);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_startMoveLeft);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_startMoveRight);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_startAscend);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_startDescend);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_stopMoveUp);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_stopMoveDown);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_stopMoveLeft);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_stopMoveRight);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_stopAscend);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_stopDescend);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_toggleQuarterSpeed);
- con->RemoveConsoleCommand(QuickAvatarMoverProcess::ConCmd_toggleClipping);
-
con->RemoveConsoleCommand(AudioProcess::ConCmd_listSFX);
con->RemoveConsoleCommand(AudioProcess::ConCmd_stopSFX);
con->RemoveConsoleCommand(AudioProcess::ConCmd_playSFX);
diff --git a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
index 32f7374..655bbec 100644
--- a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
@@ -179,69 +179,5 @@ bool QuickAvatarMoverProcess::loadData(IDataSource *ids, uint32 version) {
return true;
}
-void QuickAvatarMoverProcess::ConCmd_startMoveUp(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::startMover(-64, -64, 0, 0);
-}
-
-void QuickAvatarMoverProcess::ConCmd_startMoveDown(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::startMover(+64, +64, 0, 1);
-}
-
-void QuickAvatarMoverProcess::ConCmd_startMoveLeft(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::startMover(-64, +64, 0, 2);
-}
-
-void QuickAvatarMoverProcess::ConCmd_startMoveRight(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::startMover(+64, -64, 0, 3);
-}
-
-void QuickAvatarMoverProcess::ConCmd_startAscend(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::startMover(0, 0, 8, 4);
-}
-
-void QuickAvatarMoverProcess::ConCmd_startDescend(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::startMover(0, 0, -8, 5);
-}
-
-void QuickAvatarMoverProcess::ConCmd_stopMoveUp(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::terminateMover(0);
-}
-
-void QuickAvatarMoverProcess::ConCmd_stopMoveDown(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::terminateMover(1);
-}
-
-void QuickAvatarMoverProcess::ConCmd_stopMoveLeft(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::terminateMover(2);
-}
-
-void QuickAvatarMoverProcess::ConCmd_stopMoveRight(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::terminateMover(3);
-}
-
-void QuickAvatarMoverProcess::ConCmd_stopAscend(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::terminateMover(4);
-}
-
-void QuickAvatarMoverProcess::ConCmd_stopDescend(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::terminateMover(5);
-}
-
-void QuickAvatarMoverProcess::ConCmd_toggleQuarterSpeed(const Console::ArgvType &argv) {
- QuickAvatarMoverProcess::setQuarterSpeed(!QuickAvatarMoverProcess::isQuarterSpeed());
-}
-
-void QuickAvatarMoverProcess::ConCmd_toggleClipping(const Console::ArgvType &argv) {
- if (!Ultima8Engine::get_instance()->areCheatsEnabled()) return;
- QuickAvatarMoverProcess::toggleClipping();
- pout << "QuickAvatarMoverProcess::_clipping = " << QuickAvatarMoverProcess::isClipping() << Std::endl;
-}
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
index 34082ec..d9af3c5 100644
--- a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
+++ b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.h
@@ -57,23 +57,6 @@ public:
static void terminateMover(int _dir);
static void startMover(int x, int y, int z, int _dir);
- static void ConCmd_startMoveUp(const Console::ArgvType &argv);
- static void ConCmd_startMoveDown(const Console::ArgvType &argv);
- static void ConCmd_startMoveLeft(const Console::ArgvType &argv);
- static void ConCmd_startMoveRight(const Console::ArgvType &argv);
- static void ConCmd_startAscend(const Console::ArgvType &argv);
- static void ConCmd_startDescend(const Console::ArgvType &argv);
-
- static void ConCmd_stopMoveUp(const Console::ArgvType &argv);
- static void ConCmd_stopMoveDown(const Console::ArgvType &argv);
- static void ConCmd_stopMoveLeft(const Console::ArgvType &argv);
- static void ConCmd_stopMoveRight(const Console::ArgvType &argv);
- static void ConCmd_stopAscend(const Console::ArgvType &argv);
- static void ConCmd_stopDescend(const Console::ArgvType &argv);
-
- static void ConCmd_toggleQuarterSpeed(const Console::ArgvType &argv);
- static void ConCmd_toggleClipping(const Console::ArgvType &argv);
-
bool loadData(IDataSource *ids, uint32 version);
protected:
void saveData(ODataSource *ods) override;
Commit: 46c68a4545357e0f1c7a240e95873e2c042dcda7
https://github.com/scummvm/scummvm/commit/46c68a4545357e0f1c7a240e95873e2c042dcda7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-20T21:15:37-08:00
Commit Message:
ULTIMA8: Moved audio process console cmds to Debugger
Changed paths:
engines/ultima/ultima8/audio/audio_process.cpp
engines/ultima/ultima8/audio/audio_process.h
engines/ultima/ultima8/kernel/process.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/ultima8.cpp
diff --git a/engines/ultima/ultima8/audio/audio_process.cpp b/engines/ultima/ultima8/audio/audio_process.cpp
index 0b690bd..4472d7e 100644
--- a/engines/ultima/ultima8/audio/audio_process.cpp
+++ b/engines/ultima/ultima8/audio/audio_process.cpp
@@ -103,7 +103,7 @@ void AudioProcess::run() {
// Update the channels
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
bool finished = false;
if (!mixer->isPlaying(it->_channel)) {
if (it->_sfxNum == -1)
@@ -113,7 +113,7 @@ void AudioProcess::run() {
}
if (finished)
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
else {
if (it->_sfxNum != -1 && it->_objId) {
@@ -160,10 +160,10 @@ bool AudioProcess::continueSpeech(SampleInfo &si) {
void AudioProcess::saveData(ODataSource *ods) {
Process::saveData(ods);
- ods->write1(static_cast<uint8>(sample_info.size()));
+ ods->write1(static_cast<uint8>(_sampleInfo.size()));
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end(); ++it) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
ods->write2(it->_sfxNum);
ods->write2(it->_priority);
ods->write2(it->_objId);
@@ -223,9 +223,9 @@ int AudioProcess::playSample(AudioSample *sample, int _priority, int _loops, uin
// Erase old sample using _channel (if any)
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (it->_channel == _channel) {
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
} else {
++it;
}
@@ -245,7 +245,7 @@ void AudioProcess::playSFX(int _sfxNum, int _priority, ObjId _objId, int _loops,
if (no_duplicates) {
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (it->_sfxNum == _sfxNum && it->_objId == _objId &&
it->_loops == _loops) {
@@ -255,7 +255,7 @@ void AudioProcess::playSFX(int _sfxNum, int _priority, ObjId _objId, int _loops,
pout << "Sound already playing" << Std::endl;
return;
} else {
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
continue;
}
}
@@ -277,7 +277,7 @@ void AudioProcess::playSFX(int _sfxNum, int _priority, ObjId _objId, int _loops,
if (_channel == -1) return;
// Update list
- sample_info.push_back(SampleInfo(_sfxNum, _priority, _objId, _loops, _channel, _pitchShift, _volume, _lVol, _rVol));
+ _sampleInfo.push_back(SampleInfo(_sfxNum, _priority, _objId, _loops, _channel, _pitchShift, _volume, _lVol, _rVol));
}
void AudioProcess::stopSFX(int _sfxNum, ObjId _objId) {
@@ -286,10 +286,10 @@ void AudioProcess::stopSFX(int _sfxNum, ObjId _objId) {
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (it->_sfxNum == _sfxNum && it->_objId == _objId) {
if (mixer->isPlaying(it->_channel)) mixer->stopSample(it->_channel);
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
} else {
++it;
}
@@ -300,7 +300,7 @@ bool AudioProcess::isSFXPlaying(int _sfxNum) {
//con->Printf("isSFXPlaying(%i)\n", _sfxNum);
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end(); ++it) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
if (it->_sfxNum == _sfxNum)
return true;
}
@@ -313,7 +313,7 @@ void AudioProcess::setVolumeSFX(int _sfxNum, uint8 _volume) {
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end(); ++it) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
if (it->_sfxNum == _sfxNum && it->_sfxNum != -1) {
it->_volume = _volume;
@@ -336,7 +336,7 @@ bool AudioProcess::playSpeech(Std::string &_barked, int shapenum, ObjId _objId,
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (it->_sfxNum == -1 && it->_barked == _barked &&
it->_priority == shapenum && it->_objId == _objId) {
@@ -345,7 +345,7 @@ bool AudioProcess::playSpeech(Std::string &_barked, int shapenum, ObjId _objId,
pout << "Speech already playing" << Std::endl;
return true;
} else {
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
continue;
}
}
@@ -366,7 +366,7 @@ bool AudioProcess::playSpeech(Std::string &_barked, int shapenum, ObjId _objId,
if (_channel == -1) return false;
// Update list
- sample_info.push_back(SampleInfo(_barked, shapenum, _objId, _channel,
+ _sampleInfo.push_back(SampleInfo(_barked, shapenum, _objId, _channel,
speech_start, speech_end, _pitchShift, _volume, 256, 256));
return true;
@@ -384,11 +384,11 @@ void AudioProcess::stopSpeech(Std::string &_barked, int shapenum, ObjId _objId)
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (it->_sfxNum == -1 && it->_priority == shapenum &&
it->_objId == _objId && it->_barked == _barked) {
if (mixer->isPlaying(it->_channel)) mixer->stopSample(it->_channel);
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
} else {
++it;
}
@@ -397,7 +397,7 @@ void AudioProcess::stopSpeech(Std::string &_barked, int shapenum, ObjId _objId)
bool AudioProcess::isSpeechPlaying(Std::string &_barked, int shapenum) {
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end(); ++it) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
if (it->_sfxNum == -1 && it->_priority == shapenum &&
it->_barked == _barked) {
return true;
@@ -414,12 +414,12 @@ void AudioProcess::pauseAllSamples() {
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (mixer->isPlaying(it->_channel)) {
mixer->setPaused(it->_channel, true);
++it;
} else {
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
}
}
@@ -433,12 +433,12 @@ void AudioProcess::unpauseAllSamples() {
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (mixer->isPlaying(it->_channel)) {
mixer->setPaused(it->_channel, false);
++it;
} else {
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
}
}
@@ -449,10 +449,10 @@ void AudioProcess::stopAllExceptSpeech() {
AudioMixer *mixer = AudioMixer::get_instance();
Std::list<SampleInfo>::iterator it;
- for (it = sample_info.begin(); it != sample_info.end();) {
+ for (it = _sampleInfo.begin(); it != _sampleInfo.end();) {
if (it->_barked.empty()) {
if (mixer->isPlaying(it->_channel)) mixer->stopSample(it->_channel);
- it = sample_info.erase(it);
+ it = _sampleInfo.erase(it);
} else {
++it;
}
@@ -545,61 +545,5 @@ uint32 AudioProcess::I_stopSFX(const uint8 *args, unsigned int argsize) {
return 0;
}
-// static
-void AudioProcess::ConCmd_listSFX(const Console::ArgvType &argv) {
- AudioProcess *ap = AudioProcess::get_instance();
- if (!ap) {
- perr << "Error: No AudioProcess" << Std::endl;
- return;
- }
-
- Std::list<SampleInfo>::iterator it;
- for (it = ap->sample_info.begin(); it != ap->sample_info.end(); ++it) {
- pout.Print("Sample: num %d, obj %d, loop %d, prio %d",
- it->_sfxNum, it->_objId, it->_loops, it->_priority);
- if (!it->_barked.empty()) {
- pout << ", speech: \"" << it->_barked.substr(it->_curSpeechStart, it->_curSpeechEnd - it->_curSpeechStart) << "\"";
- }
- pout << Std::endl;
- }
-}
-
-// static
-void AudioProcess::ConCmd_stopSFX(const Console::ArgvType &argv) {
- AudioProcess *ap = AudioProcess::get_instance();
- if (!ap) {
- perr << "Error: No AudioProcess" << Std::endl;
- return;
- }
-
- if (argv.size() < 2) {
- pout << "usage: stopSFX <_sfxNum> [<_objId>]" << Std::endl;
- return;
- }
-
- int _sfxNum = static_cast<int>(strtol(argv[1].c_str(), 0, 0));
- ObjId _objId = (argv.size() >= 3) ? static_cast<ObjId>(strtol(argv[2].c_str(), 0, 0)) : 0;
-
- ap->stopSFX(_sfxNum, _objId);
-}
-
-// static
-void AudioProcess::ConCmd_playSFX(const Console::ArgvType &argv) {
- AudioProcess *ap = AudioProcess::get_instance();
- if (!ap) {
- perr << "Error: No AudioProcess" << Std::endl;
- return;
- }
-
- if (argv.size() < 2) {
- pout << "usage: playSFX <_sfxNum>" << Std::endl;
- return;
- }
-
- int _sfxNum = static_cast<int>(strtol(argv[1].c_str(), 0, 0));
-
- ap->playSFX(_sfxNum, 0x60, 0, 0);
-}
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/audio/audio_process.h b/engines/ultima/ultima8/audio/audio_process.h
index b4b05d4..fba6896 100644
--- a/engines/ultima/ultima8/audio/audio_process.h
+++ b/engines/ultima/ultima8/audio/audio_process.h
@@ -34,8 +34,8 @@ namespace Ultima8 {
class AudioSample;
-class AudioProcess :
- public Process {
+class AudioProcess : public Process {
+public:
struct SampleInfo {
int32 _sfxNum;
int32 _priority;
@@ -60,8 +60,7 @@ class AudioProcess :
_lVol(lv), _rVol(rv) { }
};
- Std::list<SampleInfo> sample_info;
-
+ Std::list<SampleInfo> _sampleInfo;
public:
// p_dynamic_class stuff
ENABLE_RUNTIME_CLASSTYPE()
@@ -80,11 +79,6 @@ public:
INTRINSIC(I_setVolumeSFX);
INTRINSIC(I_stopSFX);
- static void ConCmd_listSFX(const Console::ArgvType &argv);
- static void ConCmd_stopSFX(const Console::ArgvType &argv);
- static void ConCmd_playSFX(const Console::ArgvType &argv);
-
-
void run() override;
void playSFX(int _sfxNum, int _priority, ObjId _objId, int _loops,
diff --git a/engines/ultima/ultima8/kernel/process.h b/engines/ultima/ultima8/kernel/process.h
index 62bcd95..dca4c1d 100644
--- a/engines/ultima/ultima8/kernel/process.h
+++ b/engines/ultima/ultima8/kernel/process.h
@@ -25,6 +25,7 @@
#include "ultima/shared/std/containers.h"
#include "ultima/ultima8/misc/p_dynamic_cast.h"
+#include "ultima/ultima8/misc/pent_include.h"
namespace Ultima {
namespace Ultima8 {
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index bf71466..aae6d81 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -22,6 +22,7 @@
#include "ultima/ultima8/misc/debugger.h"
#include "ultima/ultima8/ultima8.h"
+#include "ultima/ultima8/audio/audio_process.h"
#include "ultima/ultima8/gumps/game_map_gump.h"
#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
@@ -29,6 +30,10 @@ namespace Ultima {
namespace Ultima8 {
Debugger::Debugger() : Shared::Debugger() {
+ registerCmd("AudioProcess::listSFX", WRAP_METHOD(Debugger, cmdListSFX));
+ registerCmd("AudioProcess::playSFX", WRAP_METHOD(Debugger, cmdPlaySFX));
+ registerCmd("AudioProcess::stopSFX", WRAP_METHOD(Debugger, cmdStopSFX));
+
registerCmd("GameMapGump::toggleHighlightItems", WRAP_METHOD(Debugger, cmdToggleHighlightItems));
registerCmd("GameMapGump::dumpMap", WRAP_METHOD(Debugger, cmdDumpMap));
registerCmd("GameMapGump::incrementSortOrder", WRAP_METHOD(Debugger, cmdIncrementSortOrder));
@@ -51,6 +56,60 @@ Debugger::Debugger() : Shared::Debugger() {
}
+
+bool Debugger::cmdListSFX(int argc, const char **argv) {
+ AudioProcess *ap = AudioProcess::get_instance();
+ if (!ap) {
+ debugPrintf("Error: No AudioProcess\n");
+
+ } else {
+ Std::list<AudioProcess::SampleInfo>::iterator it;
+ for (it = ap->_sampleInfo.begin(); it != ap->_sampleInfo.end(); ++it) {
+ debugPrintf("Sample: num %d, obj %d, loop %d, prio %d",
+ it->_sfxNum, it->_objId, it->_loops, it->_priority);
+ if (!it->_barked.empty()) {
+ debugPrintf(", speech: \"%s\"",
+ it->_barked.substr(it->_curSpeechStart, it->_curSpeechEnd - it->_curSpeechStart).c_str());
+ }
+ debugPrintf("\n");
+ }
+ }
+
+ return true;
+}
+
+bool Debugger::cmdStopSFX(int argc, const char **argv) {
+ AudioProcess *ap = AudioProcess::get_instance();
+ if (!ap) {
+ debugPrintf("Error: No AudioProcess\n");
+ return true;
+ } else if (argc < 2) {
+ debugPrintf("usage: stopSFX <_sfxNum> [<_objId>]\n");
+ return true;
+ } else {
+ int _sfxNum = static_cast<int>(strtol(argv[1], 0, 0));
+ ObjId _objId = (argc >= 3) ? static_cast<ObjId>(strtol(argv[2], 0, 0)) : 0;
+
+ ap->stopSFX(_sfxNum, _objId);
+ return false;
+ }
+}
+
+bool Debugger::cmdPlaySFX(int argc, const char **argv) {
+ AudioProcess *ap = AudioProcess::get_instance();
+ if (!ap) {
+ debugPrintf("Error: No AudioProcess\n");
+ return true;
+ } else if (argc < 2) {
+ debugPrintf("usage: playSFX <_sfxNum>\n");
+ return true;
+ } else {
+ int _sfxNum = static_cast<int>(strtol(argv[1], 0, 0));
+ ap->playSFX(_sfxNum, 0x60, 0, 0);
+ return false;
+ }
+}
+
bool Debugger::cmdToggleHighlightItems(int argc, const char **argv) {
GameMapGump::Set_highlightItems(!GameMapGump::is_highlightItems());
return false;
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index 2c74270..b767577 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -35,6 +35,11 @@ class Ultima1Engine;
*/
class Debugger : public Shared::Debugger {
private:
+ // Audio Process
+ bool cmdListSFX(int argc, const char **argv);
+ bool cmdStopSFX(int argc, const char **argv);
+ bool cmdPlaySFX(int argc, const char **argv);
+
// Game Map Gump
bool cmdToggleHighlightItems(int argc, const char **argv);
bool cmdDumpMap(int argc, const char **argvv);
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 5e02897..ac6bc62 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -215,10 +215,6 @@ bool Ultima8Engine::initialize() {
con->AddConsoleCommand("MemoryManager::test",
MemoryManager::ConCmd_test);
- con->AddConsoleCommand("AudioProcess::listSFX", AudioProcess::ConCmd_listSFX);
- con->AddConsoleCommand("AudioProcess::playSFX", AudioProcess::ConCmd_playSFX);
- con->AddConsoleCommand("AudioProcess::stopSFX", AudioProcess::ConCmd_stopSFX);
-
return true;
}
@@ -255,10 +251,6 @@ void Ultima8Engine::deinitialize() {
con->RemoveConsoleCommand(ObjectManager::ConCmd_objectInfo);
con->RemoveConsoleCommand(MemoryManager::ConCmd_MemInfo);
con->RemoveConsoleCommand(MemoryManager::ConCmd_test);
-
- con->RemoveConsoleCommand(AudioProcess::ConCmd_listSFX);
- con->RemoveConsoleCommand(AudioProcess::ConCmd_stopSFX);
- con->RemoveConsoleCommand(AudioProcess::ConCmd_playSFX);
}
void Ultima8Engine::startup() {
Commit: 93aa5997c6a8d7babef41482c347c4248d4b8b92
https://github.com/scummvm/scummvm/commit/93aa5997c6a8d7babef41482c347c4248d4b8b92
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-02-20T22:04:57-08:00
Commit Message:
ULTIMA8: Moving console methods into Debugger
Changed paths:
engines/ultima/ultima8/kernel/hid_manager.cpp
engines/ultima/ultima8/kernel/hid_manager.h
engines/ultima/ultima8/kernel/kernel.cpp
engines/ultima/ultima8/kernel/kernel.h
engines/ultima/ultima8/kernel/memory_manager.cpp
engines/ultima/ultima8/kernel/memory_manager.h
engines/ultima/ultima8/kernel/object_manager.cpp
engines/ultima/ultima8/kernel/object_manager.h
engines/ultima/ultima8/kernel/process.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/ultima8.cpp
diff --git a/engines/ultima/ultima8/kernel/hid_manager.cpp b/engines/ultima/ultima8/kernel/hid_manager.cpp
index 794a7ca..c922477 100644
--- a/engines/ultima/ultima8/kernel/hid_manager.cpp
+++ b/engines/ultima/ultima8/kernel/hid_manager.cpp
@@ -189,52 +189,6 @@ void HIDManager::unbind(const istring &control) {
bind(control, command);
}
-void HIDManager::ConCmd_bind(const Console::ArgvType &argv) {
- Console::ArgvType argv2;
- Console::ArgvType::const_iterator it;
- if (argv.size() < 3) {
- if (! argv.empty())
- pout << "Usage: " << argv[0] << " <key> <action> [<arg> ...]: binds a key or button to an action" << Std::endl;
- return;
- }
- HIDManager *hid = HIDManager::get_instance();
-
- istring control(argv[1]);
-
- it = argv.begin();
- ++it;
- ++it;
- argv2.assign(it, argv.end());
-
- hid->bind(control, argv2);
-}
-
-void HIDManager::ConCmd_unbind(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- if (! argv.empty())
- pout << "Usage: " << argv[0] << " <key>: unbinds a key or button" << Std::endl;
- return;
- }
- HIDManager *hid = HIDManager::get_instance();
-
- istring control(argv[1]);
-
- hid->unbind(control);
-}
-
-void HIDManager::ConCmd_listbinds(const Console::ArgvType &argv) {
- HIDManager *hid = HIDManager::get_instance();
- hid->listBindings();
-}
-
-void HIDManager::ConCmd_save(const Console::ArgvType &argv) {
- HIDManager *hid = HIDManager::get_instance();
- hid->saveBindings();
-
- SettingManager *settings = SettingManager::get_instance();
- settings->write();
-}
-
void HIDManager::listBindings() {
uint16 key, event;
Console::ArgsType command;
diff --git a/engines/ultima/ultima8/kernel/hid_manager.h b/engines/ultima/ultima8/kernel/hid_manager.h
index 95765a9..5d5684c 100644
--- a/engines/ultima/ultima8/kernel/hid_manager.h
+++ b/engines/ultima/ultima8/kernel/hid_manager.h
@@ -36,8 +36,6 @@ private:
Std::vector<Console::ArgvType *> _commands;
typedef Common::HashMap<uint32, Console::ArgvType *> Bindings;
Bindings _bindings;
-
- void listBindings();
public:
HIDManager();
~HIDManager();
@@ -47,6 +45,8 @@ public:
return _hidManager;
}
+ void listBindings();
+
//! execute the Console command associated with the event
//! \param key a HID_KEY used to find an appropriate Console command
//! \param events is a bitset of event/flags
@@ -74,18 +74,6 @@ public:
//! removes all controls to a HIDBinding or the binding to one specified key
//! \param bindingName name of a HIDBinding or the name of key
void unbind(const istring &control);
-
- //! "bind" console command
- static void ConCmd_bind(const Console::ArgvType &argv);
-
- //! "unbind" console command
- static void ConCmd_unbind(const Console::ArgvType &argv);
-
- //! "listbinds" console command
- static void ConCmd_listbinds(const Console::ArgvType &argv);
-
- //! "save" console command
- static void ConCmd_save(const Console::ArgvType &argv);
};
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index 8e9b052..2a3ceb3 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -32,8 +32,6 @@
namespace Ultima {
namespace Ultima8 {
-typedef Std::list<Process *>::iterator ProcessIterator;
-
Kernel *Kernel::kernel = 0;
Kernel::Kernel() : loading(false) {
@@ -257,70 +255,6 @@ void Kernel::processTypes() {
}
}
-void Kernel::ConCmd_processTypes(const Console::ArgvType & /*argv*/) {
- Kernel::get_instance()->processTypes();
-}
-
-void Kernel::ConCmd_listProcesses(const Console::ArgvType &argv) {
- if (argv.size() > 2) {
- pout << "usage: listProcesses [<itemnum>]" << Std::endl;
- return;
- }
-
- Kernel *kern = Kernel::get_instance();
- ObjId item = 0;
- if (argv.size() == 2) {
- item = static_cast<ObjId>(strtol(argv[1].c_str(), 0, 0));
- pout << "Processes for item " << item << ":" << Std::endl;
- } else {
- pout << "Processes:" << Std::endl;
- }
- for (ProcessIterator it = kern->processes.begin();
- it != kern->processes.end(); ++it) {
- Process *p = *it;
- if (argv.size() == 1 || p->_itemNum == item)
- p->dumpInfo();
- }
-
-}
-
-void Kernel::ConCmd_processInfo(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "usage: processInfo <objectnum>" << Std::endl;
- return;
- }
-
- Kernel *kern = Kernel::get_instance();
-
- ProcId procid = static_cast<ProcId>(strtol(argv[1].c_str(), 0, 0));
-
- Process *p = kern->getProcess(procid);
- if (p == 0) {
- pout << "No such process: " << procid << Std::endl;
- } else {
- p->dumpInfo();
- }
-}
-
-void Kernel::ConCmd_toggleFrameByFrame(const Console::ArgvType &argv) {
- Kernel *kern = Kernel::get_instance();
- bool fbf = !kern->isFrameByFrame();
- kern->setFrameByFrame(fbf);
- pout << "FrameByFrame = " << fbf << Std::endl;
- if (fbf)
- kern->pause();
- else
- kern->unpause();
-}
-
-void Kernel::ConCmd_advanceFrame(const Console::ArgvType &argv) {
- Kernel *kern = Kernel::get_instance();
- if (kern->isFrameByFrame()) {
- kern->unpause();
- pout << "FrameByFrame: Next Frame" << Std::endl;
- }
-}
-
uint32 Kernel::getNumProcesses(ObjId objid, uint16 processtype) {
uint32 count = 0;
diff --git a/engines/ultima/ultima8/kernel/kernel.h b/engines/ultima/ultima8/kernel/kernel.h
index 01f2523..18b6433 100644
--- a/engines/ultima/ultima8/kernel/kernel.h
+++ b/engines/ultima/ultima8/kernel/kernel.h
@@ -29,6 +29,7 @@
namespace Ultima {
namespace Ultima8 {
+class Debugger;
class Process;
class idMan;
class IDataSource;
@@ -36,8 +37,11 @@ class ODataSource;
typedef Process *(*ProcessLoadFunc)(IDataSource *, uint32 version);
typedef Std::list<Process *>::const_iterator ProcessIter;
+typedef Std::list<Process *>::iterator ProcessIterator;
+
class Kernel {
+ friend class Debugger;
public:
Kernel();
~Kernel();
@@ -123,18 +127,6 @@ public:
return _frameNum;
};
- //! "Kernel::processTypes" console command
- static void ConCmd_processTypes(const Console::ArgvType &argv);
- //! "Kernel::listProcesses" console command
- static void ConCmd_listProcesses(const Console::ArgvType &argv);
- //! "Kernel::processInfo" console command
- static void ConCmd_processInfo(const Console::ArgvType &argv);
-
- //! "Kernel::toggleFrameByFrame" console command
- static void ConCmd_toggleFrameByFrame(const Console::ArgvType &argv);
- //! "Kernel::advanceFrame" console command
- static void ConCmd_advanceFrame(const Console::ArgvType &argv);
-
INTRINSIC(I_getNumProcesses);
INTRINSIC(I_resetRef);
private:
diff --git a/engines/ultima/ultima8/kernel/memory_manager.cpp b/engines/ultima/ultima8/kernel/memory_manager.cpp
index 39572ea..1e24b2a 100644
--- a/engines/ultima/ultima8/kernel/memory_manager.cpp
+++ b/engines/ultima/ultima8/kernel/memory_manager.cpp
@@ -93,142 +93,5 @@ void MemoryManager::freeResources() {
}
}
-void MemoryManager::ConCmd_MemInfo(const Console::ArgvType &argv) {
- MemoryManager *mm = MemoryManager::get_instance();
- int i, count;
-
- if (!mm)
- return;
-
- count = mm->getAllocatorCount();
- pout << "Allocators: " << count << Std::endl;
- for (i = 0; i < count; ++i) {
- pout << " Allocator " << i << ": " << Std::endl;
- mm->getAllocator(i)->printInfo();
- pout << "==============" << Std::endl;
- }
-}
-
-#ifdef DEBUG
-
-#include <SDL.h>
-// Test classes purely here to check the speed of Allocators vs. normal allocation
-class TestClassBase {
-public:
- TestClassBase() {
- next = 0;
- }
-
- virtual ~TestClassBase() {
- }
-
- void setNext(TestClassBase *n) {
- n->next = next;
- next = n;
- }
-
- void removeNext() {
- TestClassBase *n;
- if (! next)
- return;
- n = next;
- next = n->next;
- delete n;
- }
-
- ENABLE_RUNTIME_CLASSTYPE()
-
- TestClassBase *next;
- int arr[32];
-};
-
-DEFINE_RUNTIME_CLASSTYPE_CODE_BASE_CLASS(TestClassBase)
-
-class TestClassOne: public TestClassBase {
-public:
- TestClassOne() {
- }
-
- virtual ~TestClassOne() {
- }
-
- ENABLE_RUNTIME_CLASSTYPE()
-};
-
-DEFINE_RUNTIME_CLASSTYPE_CODE(TestClassOne, TestClassBase)
-
-
-class TestClassTwo: public TestClassBase {
-public:
- TestClassTwo() {
- }
-
- virtual ~TestClassTwo() {
- }
-
- ENABLE_RUNTIME_CLASSTYPE()
- ENABLE_CUSTOM_MEMORY_ALLOCATION()
-};
-
-DEFINE_RUNTIME_CLASSTYPE_CODE(TestClassTwo, TestClassBase)
-DEFINE_CUSTOM_MEMORY_ALLOCATION(TestClassTwo)
-
-void MemoryManager::ConCmd_test(const Console::ArgvType &argv) {
- // Just some numbers of classes to allocate and free
- int a[10] = {1000, 1231, 2423, 1233, 3213, 2554, 1123, 2432, 3311, 1022};
- int b[10] = {900, 1111, 2321, 1000, 1321, 1432, 1123, 2144, 2443, 0};
- int i, j, repeat;
- uint32 pooled, unpooled;
- TestClassBase *t;
-
- t = new TestClassBase();
-
- unpooled = g_system->getMillis();
- for (repeat = 0; repeat < 100; ++repeat) {
- for (i = 0; i < 10; ++i) {
- // allocate
- for (j = 0; j < a[i]; ++j) {
- t->setNext(new TestClassOne());
- }
- // free
- for (j = 0; j < b[i]; ++j) {
- t->removeNext();
- }
- }
- while (t->next) {
- t->removeNext();
- }
- }
- unpooled = g_system->getMillis() - unpooled;
-
- pooled = g_system->getMillis();
- for (repeat = 0; repeat < 100; ++repeat) {
- for (i = 0; i < 10; ++i) {
- // allocate
- for (j = 0; j < a[i]; ++j) {
- t->setNext(new TestClassTwo());
- }
- // free
- for (j = 0; j < b[i]; ++j) {
- t->removeNext();
- }
- }
- while (t->next) {
- t->removeNext();
- }
- }
- pooled = g_system->getMillis() - pooled;
-
- delete t;
-
- con->Printf("Unpooled Allocation: %d ms\nPooled Allocation: %d ms\n", unpooled, pooled);
-}
-
-#else
-void MemoryManager::ConCmd_test(const Console::ArgvType &argv) {
-}
-
-#endif
-
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/kernel/memory_manager.h b/engines/ultima/ultima8/kernel/memory_manager.h
index 3155ba4..5da99f2 100644
--- a/engines/ultima/ultima8/kernel/memory_manager.h
+++ b/engines/ultima/ultima8/kernel/memory_manager.h
@@ -57,12 +57,6 @@ public:
void freeResources();
- //! "MemoryManager::MemInfo" console command
- static void ConCmd_MemInfo(const Console::ArgvType &argv);
-
- //! "MemoryManager::test" console command
- static void ConCmd_test(const Console::ArgvType &argv);
-
private:
Allocator *_allocators[10];
uint16 _allocatorCount;
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index 8a8d6e2..e3dce30 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -157,37 +157,6 @@ void ObjectManager::objectTypes() {
}
}
-void ObjectManager::ConCmd_objectTypes(const Console::ArgvType & /*argv*/) {
- ObjectManager::get_instance()->objectTypes();
-}
-
-void ObjectManager::ConCmd_objectInfo(const Console::ArgvType &argv) {
- if (argv.size() != 2) {
- pout << "usage: objectInfo <objectnum>" << Std::endl;
- return;
- }
-
- ObjectManager *objman = ObjectManager::get_instance();
-
- ObjId objid = static_cast<ObjId>(strtol(argv[1].c_str(), 0, 0));
-
- Object *obj = objman->getObject(objid);
- if (obj == 0) {
- bool reserved = false;
- if (objid >= 256) // CONSTANT!
- reserved = objman->_objIDs->isIDUsed(objid);
- else
- reserved = objman->_actorIDs->isIDUsed(objid);
- if (reserved)
- pout << "Reserved objid: " << objid << Std::endl;
- else
- pout << "No such object: " << objid << Std::endl;
- } else {
- obj->dumpInfo();
- }
-}
-
-
uint16 ObjectManager::assignObjId(Object *obj, ObjId new_objid) {
if (new_objid == 0xFFFF)
new_objid = _objIDs->getNewID();
diff --git a/engines/ultima/ultima8/kernel/object_manager.h b/engines/ultima/ultima8/kernel/object_manager.h
index 80ed03e..6da343e 100644
--- a/engines/ultima/ultima8/kernel/object_manager.h
+++ b/engines/ultima/ultima8/kernel/object_manager.h
@@ -70,11 +70,6 @@ public:
Object *loadObject(IDataSource *ids, uint32 version);
Object *loadObject(IDataSource *ids, Std::string classname, uint32 version);
- //! "ObjectManager::objectTypes" console command
- static void ConCmd_objectTypes(const Console::ArgvType &argv);
- //! "ObjectManager::objectInfo" console command
- static void ConCmd_objectInfo(const Console::ArgvType &argv);
-
Std::vector<Object *> _objects;
idMan *_objIDs;
idMan *_actorIDs;
diff --git a/engines/ultima/ultima8/kernel/process.h b/engines/ultima/ultima8/kernel/process.h
index dca4c1d..e75a648 100644
--- a/engines/ultima/ultima8/kernel/process.h
+++ b/engines/ultima/ultima8/kernel/process.h
@@ -30,13 +30,14 @@
namespace Ultima {
namespace Ultima8 {
+class Debugger;
class IDataSource;
class ODataSource;
class Process {
-public:
friend class Kernel;
-
+ friend class Debugger;
+public:
virtual void run() = 0;
Process(ObjId _itemNum = 0, uint16 type = 0);
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index aae6d81..1535203 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -23,7 +23,14 @@
#include "ultima/ultima8/misc/debugger.h"
#include "ultima/ultima8/ultima8.h"
#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/kernel/allocator.h"
+#include "ultima/ultima8/kernel/hid_manager.h"
+#include "ultima/ultima8/kernel/kernel.h"
+#include "ultima/ultima8/kernel/memory_manager.h"
+#include "ultima/ultima8/kernel/object_manager.h"
+#include "ultima/ultima8/misc/id_man.h"
#include "ultima/ultima8/world/actors/quick_avatar_mover_process.h"
namespace Ultima {
@@ -39,6 +46,25 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("GameMapGump::incrementSortOrder", WRAP_METHOD(Debugger, cmdIncrementSortOrder));
registerCmd("GameMapGump::decrementSortOrder", WRAP_METHOD(Debugger, cmdDecrementSortOrder));
+ registerCmd("HIDManager::bind", WRAP_METHOD(Debugger, cmdBind));
+ registerCmd("HIDManager::unbind", WRAP_METHOD(Debugger, cmdUnbind));
+ registerCmd("HIDManager::listbinds", WRAP_METHOD(Debugger, cmdListbinds));
+ registerCmd("HIDManager::save", WRAP_METHOD(Debugger, cmdSave));
+
+ registerCmd("Kernel::processTypes", WRAP_METHOD(Debugger, cmdProcessTypes));
+ registerCmd("Kernel::processInfo", WRAP_METHOD(Debugger, cmdProcessInfo));
+ registerCmd("Kernel::listProcesses", WRAP_METHOD(Debugger, cmdListProcesses));
+ registerCmd("Kernel::toggleFrameByFrame", WRAP_METHOD(Debugger, cmdToggleFrameByFrame));
+ registerCmd("Kernel::advanceFrame", WRAP_METHOD(Debugger, cmdAdvanceFrame));
+
+ registerCmd("MemoryManager::MemInfo", WRAP_METHOD(Debugger, cmdMemInfo));
+#ifdef DEBUG
+ registerCmd("MemoryManager::test", WRAP_METHOD(Debugger, cmdTest));
+#endif
+
+ registerCmd("ObjectManager::objectTypes", WRAP_METHOD(Debugger, cmdObjectTypes));
+ registerCmd("ObjectManager::objectInfo", WRAP_METHOD(Debugger, cmdObjectInfo));
+
registerCmd("QuickAvatarMoverProcess::startMoveUp", WRAP_METHOD(Debugger, cmdStartMoveUp));
registerCmd("QuickAvatarMoverProcess::startMoveDown", WRAP_METHOD(Debugger, cmdStartMoveDown));
registerCmd("QuickAvatarMoverProcess::startMoveLeft", WRAP_METHOD(Debugger, cmdStartMoveLeft));
@@ -53,10 +79,8 @@ 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));
-
}
-
bool Debugger::cmdListSFX(int argc, const char **argv) {
AudioProcess *ap = AudioProcess::get_instance();
if (!ap) {
@@ -110,6 +134,7 @@ bool Debugger::cmdPlaySFX(int argc, const char **argv) {
}
}
+
bool Debugger::cmdToggleHighlightItems(int argc, const char **argv) {
GameMapGump::Set_highlightItems(!GameMapGump::is_highlightItems());
return false;
@@ -284,6 +309,189 @@ bool Debugger::cmdDecrementSortOrder(int argc, const char **argv) {
}
+bool Debugger::cmdBind(int argc, const char **argv) {
+ Console::ArgvType argv2;
+ Console::ArgvType::const_iterator it;
+ if (argc < 3) {
+ debugPrintf("Usage: %s <key> <action> [<arg> ...]: binds a key or button to an action\n",
+ argv[0]);
+ return true;
+ } else {
+ HIDManager *hid = HIDManager::get_instance();
+
+ istring control(argv[1]);
+ Common::Array<istring> args;
+ for (int i = 2; i < argc; ++i)
+ args.push_back(argv[i]);
+
+ it = args.begin();
+ ++it;
+ ++it;
+ argv2.assign(it, args.end());
+
+ hid->bind(control, argv2);
+ return false;
+ }
+}
+
+bool Debugger::cmdUnbind(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("Usage: %s <key>: unbinds a key or button\n", argv[0]);
+ return true;
+ } else {
+ HIDManager *hid = HIDManager::get_instance();
+
+ istring control(argv[1]);
+
+ hid->unbind(control);
+ return false;
+ }
+}
+
+bool Debugger::cmdListbinds(int argc, const char **argv) {
+ HIDManager *hid = HIDManager::get_instance();
+ hid->listBindings();
+ return true;
+}
+
+bool Debugger::cmdSave(int argc, const char **argv) {
+ HIDManager *hid = HIDManager::get_instance();
+ hid->saveBindings();
+
+ SettingManager *settings = SettingManager::get_instance();
+ settings->write();
+ return false;
+}
+
+
+
+bool Debugger::cmdProcessTypes(int argc, const char **argv) {
+ Kernel::get_instance()->processTypes();
+ return false;
+}
+
+bool Debugger::cmdListProcesses(int argc, const char **argv) {
+ if (argc > 2) {
+ debugPrintf("usage: listProcesses [<itemnum>]\n");
+ } else {
+ Kernel *kern = Kernel::get_instance();
+ ObjId item = 0;
+ if (argc == 2) {
+ item = static_cast<ObjId>(strtol(argv[1], 0, 0));
+ debugPrintf("Processes for item %d:\n", item);
+ } else {
+ debugPrintf("Processes:\n");
+ }
+ for (ProcessIterator it = kern->processes.begin();
+ it != kern->processes.end(); ++it) {
+ Process *p = *it;
+ if (argc == 1 || p->_itemNum == item)
+ p->dumpInfo();
+ }
+ }
+
+ return true;
+}
+
+bool Debugger::cmdProcessInfo(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("usage: processInfo <objectnum>\n");
+ } else {
+ Kernel *kern = Kernel::get_instance();
+
+ ProcId procid = static_cast<ProcId>(strtol(argv[1], 0, 0));
+
+ Process *p = kern->getProcess(procid);
+ if (p == 0) {
+ debugPrintf("No such process: %d\n", procid);
+ } else {
+ p->dumpInfo();
+ }
+ }
+
+ return true;
+}
+
+bool Debugger::cmdToggleFrameByFrame(int argc, const char **argv) {
+ Kernel *kern = Kernel::get_instance();
+ bool fbf = !kern->isFrameByFrame();
+ kern->setFrameByFrame(fbf);
+ debugPrintf("FrameByFrame = %s\n", fbf ? "true" : "false");
+
+ if (fbf)
+ kern->pause();
+ else
+ kern->unpause();
+
+ return true;
+}
+
+bool Debugger::cmdAdvanceFrame(int argc, const char **argv) {
+ Kernel *kern = Kernel::get_instance();
+ if (kern->isFrameByFrame()) {
+ kern->unpause();
+ debugPrintf("FrameByFrame: Next Frame\n");
+ }
+
+ return true;
+}
+
+
+bool Debugger::cmdMemInfo(int argc, const char **argv) {
+ MemoryManager *mm = MemoryManager::get_instance();
+ int i, count;
+
+ if (mm) {
+ count = mm->getAllocatorCount();
+ debugPrintf("Allocators: %d\n", count);
+ for (i = 0; i < count; ++i) {
+ debugPrintf(" Allocator %d:\n", i);
+ mm->getAllocator(i)->printInfo();
+ debugPrintf("==============\n");
+ }
+ }
+
+ return true;
+}
+
+#ifdef DEBUG
+bool Debugger::cmdTest(int argc, const char **argv) {
+ return true;
+}
+#endif
+
+bool Debugger::cmdObjectTypes(int argc, const char **argv) {
+ ObjectManager::get_instance()->objectTypes();
+ return true;
+}
+
+bool Debugger::cmdObjectInfo(int argc, const char **argv) {
+ if (argc != 2) {
+ debugPrintf("usage: objectInfo <objectnum>\n");
+ } else {
+ ObjectManager *objMan = ObjectManager::get_instance();
+
+ ObjId objid = static_cast<ObjId>(strtol(argv[1], 0, 0));
+
+ Object *obj = objMan->getObject(objid);
+ if (obj == 0) {
+ bool reserved = false;
+ if (objid >= 256) // CONSTANT!
+ reserved = objMan->_objIDs->isIDUsed(objid);
+ else
+ reserved = objMan->_actorIDs->isIDUsed(objid);
+ if (reserved)
+ debugPrintf("Reserved objid: %d\n", objid);
+ else
+ debugPrintf("No such object: %d\n", objid);
+ } else {
+ obj->dumpInfo();
+ }
+ }
+
+ return true;
+}
+
bool Debugger::cmdStartMoveUp(int argc, const char **argv) {
if (Ultima8Engine::get_instance()->areCheatsEnabled()) {
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index b767577..e25d5d8 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -46,6 +46,27 @@ private:
bool cmdIncrementSortOrder(int argc, const char **argv);
bool cmdDecrementSortOrder(int argc, const char **argv);
+ // HID Manager
+ bool cmdBind(int argc, const char **argv);
+ bool cmdUnbind(int argc, const char **argv);
+ bool cmdListbinds(int argc, const char **argv);
+ bool cmdSave(int argc, const char **argv);
+
+ // Kernel
+ bool cmdProcessTypes(int argc, const char **argv);
+ bool cmdListProcesses(int argc, const char **argv);
+ bool cmdProcessInfo(int argc, const char **argv);
+ bool cmdToggleFrameByFrame(int argc, const char **argv);
+ bool cmdAdvanceFrame(int argc, const char **argv);
+
+ // Memory Manager
+ bool cmdMemInfo(int argc, const char **argv);
+ bool cmdTest(int argc, const char **argv);
+
+ // Object Manager
+ bool cmdObjectTypes(int argc, const char **argv);
+ bool cmdObjectInfo(int argc, const char **argv);
+
// Quick Avatar Mover Process
bool cmdStartMoveUp(int argc, const char **argv);
bool cmdStartMoveDown(int argc, const char **argv);
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index ac6bc62..4737a92 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -194,27 +194,6 @@ bool Ultima8Engine::initialize() {
con->AddConsoleCommand("Ultima8Engine::closeItemGumps", ConCmd_closeItemGumps);
- con->AddConsoleCommand("HIDManager::bind", HIDManager::ConCmd_bind);
- con->AddConsoleCommand("HIDManager::unbind", HIDManager::ConCmd_unbind);
- con->AddConsoleCommand("HIDManager::listbinds",
- HIDManager::ConCmd_listbinds);
- con->AddConsoleCommand("HIDManager::save", HIDManager::ConCmd_save);
- con->AddConsoleCommand("Kernel::processTypes", Kernel::ConCmd_processTypes);
- con->AddConsoleCommand("Kernel::processInfo", Kernel::ConCmd_processInfo);
- con->AddConsoleCommand("Kernel::listProcesses",
- Kernel::ConCmd_listProcesses);
- con->AddConsoleCommand("Kernel::toggleFrameByFrame",
- Kernel::ConCmd_toggleFrameByFrame);
- con->AddConsoleCommand("Kernel::advanceFrame", Kernel::ConCmd_advanceFrame);
- con->AddConsoleCommand("ObjectManager::objectTypes",
- ObjectManager::ConCmd_objectTypes);
- con->AddConsoleCommand("ObjectManager::objectInfo",
- ObjectManager::ConCmd_objectInfo);
- con->AddConsoleCommand("MemoryManager::MemInfo",
- MemoryManager::ConCmd_MemInfo);
- con->AddConsoleCommand("MemoryManager::test",
- MemoryManager::ConCmd_test);
-
return true;
}
@@ -237,20 +216,6 @@ void Ultima8Engine::deinitialize() {
con->RemoveConsoleCommand(Ultima8Engine::ConCmd_toggleShowTouchingItems);
con->RemoveConsoleCommand(Ultima8Engine::ConCmd_closeItemGumps);
-
- con->RemoveConsoleCommand(HIDManager::ConCmd_bind);
- con->RemoveConsoleCommand(HIDManager::ConCmd_unbind);
- con->RemoveConsoleCommand(HIDManager::ConCmd_listbinds);
- con->RemoveConsoleCommand(HIDManager::ConCmd_save);
- con->RemoveConsoleCommand(Kernel::ConCmd_processTypes);
- con->RemoveConsoleCommand(Kernel::ConCmd_processInfo);
- con->RemoveConsoleCommand(Kernel::ConCmd_listProcesses);
- con->RemoveConsoleCommand(Kernel::ConCmd_toggleFrameByFrame);
- con->RemoveConsoleCommand(Kernel::ConCmd_advanceFrame);
- con->RemoveConsoleCommand(ObjectManager::ConCmd_objectTypes);
- con->RemoveConsoleCommand(ObjectManager::ConCmd_objectInfo);
- con->RemoveConsoleCommand(MemoryManager::ConCmd_MemInfo);
- con->RemoveConsoleCommand(MemoryManager::ConCmd_test);
}
void Ultima8Engine::startup() {
More information about the Scummvm-git-logs
mailing list