[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