[Scummvm-git-logs] scummvm master -> be62305248dad42902a0ebc69fbcc67b54c1294d
sev-
noreply at scummvm.org
Sat Feb 4 14:48:53 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
be62305248 DIRECTOR: Implemented debugger commands for drawing bitmapcast outlines and frame number
Commit: be62305248dad42902a0ebc69fbcc67b54c1294d
https://github.com/scummvm/scummvm/commit/be62305248dad42902a0ebc69fbcc67b54c1294d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-02-04T15:48:41+01:00
Commit Message:
DIRECTOR: Implemented debugger commands for drawing bitmapcast outlines and frame number
Changed paths:
engines/director/castmember.cpp
engines/director/debugger.cpp
engines/director/debugger.h
engines/director/director.h
engines/director/types.h
engines/director/window.cpp
diff --git a/engines/director/castmember.cpp b/engines/director/castmember.cpp
index 8ac132a71ff..1bd0c848077 100644
--- a/engines/director/castmember.cpp
+++ b/engines/director/castmember.cpp
@@ -401,6 +401,13 @@ void BitmapCastMember::copyStretchImg(Graphics::Surface *surface, const Common::
} else {
surface->copyFrom(*srcSurf);
}
+
+ if (g_director->_debugDraw & kDebugDrawCast) {
+ surface->frameRect(Common::Rect(0, 0, surface->w, surface->h), _wm->_colorWhite);
+
+ const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kConsoleFont);
+ font->drawString(surface, Common::String::format("%d", _castId), 2, 2, 10, _wm->_colorWhite);
+ }
}
bool BitmapCastMember::isModified() {
diff --git a/engines/director/debugger.cpp b/engines/director/debugger.cpp
index e219f30dfa0..3cb59f28fb7 100644
--- a/engines/director/debugger.cpp
+++ b/engines/director/debugger.cpp
@@ -96,6 +96,8 @@ Debugger::Debugger(): GUI::Debugger() {
registerCmd("bpdisable", WRAP_METHOD(Debugger, cmdBpDisable));
registerCmd("bplist", WRAP_METHOD(Debugger, cmdBpList));
+ registerCmd("draw", WRAP_METHOD(Debugger, cmdDraw));
+
_nextFrame = false;
_nextFrameCounter = 0;
_nextMovie = false;
@@ -179,6 +181,9 @@ bool Debugger::cmdHelp(int argc, const char **argv) {
debugPrintf(" bpenable [n] - Enables a specific breakpoint\n");
debugPrintf(" bpdisable [n] - Disables a specific breakpoint\n");
debugPrintf(" bplist - Lists all breakpoints\n");
+ debugPrintf("\n");
+ debugPrintf("GFX:\n");
+ debugPrintf(" draw [cast|frame|off] - Draws debug outlines for cast or frame number\n");
return true;
}
@@ -766,6 +771,38 @@ bool Debugger::cmdBpList(int argc, const char **argv) {
return true;
}
+bool Debugger::cmdDraw(int argc, const char **argv) {
+ if (argc > 1) {
+ for (int i = 1; i < argc; i++) {
+ if (!scumm_stricmp(argv[i], "off")) {
+ g_director->_debugDraw = 0;
+ } else if (!scumm_stricmp(argv[i], "cast")) {
+ g_director->_debugDraw |= kDebugDrawCast;
+ } else if (!scumm_stricmp(argv[i], "frame")) {
+ g_director->_debugDraw |= kDebugDrawFrame;
+ } else {
+ debugPrintf("Valid parameters are 'cast', 'frame' or 'off'.\n");
+ return true;
+ }
+ }
+ }
+
+ debugPrintf("Draw: ");
+ if (g_director->_debugDraw & kDebugDrawCast)
+ debugPrintf("cast ");
+
+ if (g_director->_debugDraw & kDebugDrawFrame)
+ debugPrintf("frame ");
+
+ if (!g_director->_debugDraw)
+ debugPrintf("off ");
+
+ debugPrintf("\n");
+
+ return true;
+}
+
+
void Debugger::bpUpdateState() {
_bpCheckFunc = false;
_bpCheckMoviePath = false;
diff --git a/engines/director/debugger.h b/engines/director/debugger.h
index a1fa5aea017..16781b7bba6 100644
--- a/engines/director/debugger.h
+++ b/engines/director/debugger.h
@@ -141,6 +141,8 @@ private:
bool cmdBpDisable(int argc, const char **argv);
bool cmdBpList(int argc, const char **argv);
+ bool cmdDraw(int argc, const char **argv);
+
void bpUpdateState();
void bpTest(bool forceCheck = false);
diff --git a/engines/director/director.h b/engines/director/director.h
index b0e79f997bd..335439dd149 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -230,6 +230,8 @@ public:
Graphics::MacWindowManager *_wm;
Graphics::PixelFormat _pixelformat;
+ uint32 _debugDraw = 0;
+
public:
int _colorDepth;
Common::HashMap<int, int> _KeyCodes;
diff --git a/engines/director/types.h b/engines/director/types.h
index 227160543d6..7f28f3f569c 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -400,6 +400,11 @@ enum CompareResult {
kCompareError
};
+enum DebugDrawModes {
+ kDebugDrawCast = 1 << 0,
+ kDebugDrawFrame = 1 << 1,
+};
+
struct Datum;
struct PCell;
typedef Common::Array<Datum> DatumArray;
diff --git a/engines/director/window.cpp b/engines/director/window.cpp
index 4f4b0039d07..f8327f62908 100644
--- a/engines/director/window.cpp
+++ b/engines/director/window.cpp
@@ -170,6 +170,15 @@ bool Window::render(bool forceRedraw, Graphics::ManagedSurface *blitTo) {
}
}
+ if (g_director->_debugDraw & kDebugDrawFrame) {
+ const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kConsoleFont);
+ Common::String msg = Common::String::format("Frame: %d", g_director->getCurrentMovie()->getScore()->getCurrentFrame());
+ uint32 width = font->getStringWidth(msg);
+
+ blitTo->fillRect(Common::Rect(blitTo->w - 3 - width, 1, blitTo->w - 1, font->getFontHeight() + 1), _wm->_colorBlack);
+ font->drawString(blitTo, msg, blitTo->w - 2 - width, 2, width , _wm->_colorWhite);
+ }
+
_dirtyRects.clear();
_contentIsDirty = true;
More information about the Scummvm-git-logs
mailing list