[Scummvm-git-logs] scummvm master -> 61e18b08f0366771f9057b4d2edb81aaf029735c

sev- noreply at scummvm.org
Sun Apr 28 22:12:29 UTC 2024


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
8287ac9ddc DIRECTOR: Convert Sprite::_trails and Sprite::_stretch into bool
61e18b08f0 DIRECTOR: Show Channels in ImGUI


Commit: 8287ac9ddc231671fe9cb6b91f603023c2d5a9ce
    https://github.com/scummvm/scummvm/commit/8287ac9ddc231671fe9cb6b91f603023c2d5a9ce
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-04-29T00:12:24+02:00

Commit Message:
DIRECTOR: Convert Sprite::_trails and Sprite::_stretch into bool

Changed paths:
    engines/director/castmember/filmloop.cpp
    engines/director/frame.cpp
    engines/director/lingo/lingo-the.cpp
    engines/director/sprite.cpp
    engines/director/sprite.h


diff --git a/engines/director/castmember/filmloop.cpp b/engines/director/castmember/filmloop.cpp
index 2a842fc4da9..f6ac16f0ed0 100644
--- a/engines/director/castmember/filmloop.cpp
+++ b/engines/director/castmember/filmloop.cpp
@@ -180,7 +180,7 @@ void FilmLoopCastMember::loadFilmLoopDataD2(Common::SeekableReadStreamEndian &st
 				}
 
 				sprite._spriteType = kCastMemberSprite;
-				sprite._stretch = 1;
+				sprite._stretch = true;
 
 				uint16 needSize = MIN((uint16)(nextStart - offset), segSize);
 				int startPosition = stream.pos() - channelOffset;
@@ -294,7 +294,7 @@ void FilmLoopCastMember::loadFilmLoopDataD4(Common::SeekableReadStreamEndian &st
 					}
 				}
 
-				sprite._stretch = 1;
+				sprite._stretch = true;
 
 				uint16 needSize = MIN((uint16)(nextStart - offset), segSize);
 				int startPosition = stream.pos() - channelOffset;
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index e3e9d87b6cc..a8ff9d56660 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -331,8 +331,8 @@ void readSpriteDataD2(Common::SeekableReadStreamEndian &stream, Sprite &sprite,
 				sprite._inkData = stream.readByte();
 
 				sprite._ink = static_cast<InkType>(sprite._inkData & 0x3f);
-				sprite._trails = sprite._inkData & 0x40 ? 1 : 0;
-				sprite._stretch = sprite._inkData & 0x80 ? 1 : 0;
+				sprite._trails = sprite._inkData & 0x40 ? true : false;
+				sprite._stretch = sprite._inkData & 0x80 ? true : false;
 			}
 			break;
 		case 6:
@@ -639,8 +639,8 @@ void readSpriteDataD4(Common::SeekableReadStreamEndian &stream, Sprite &sprite,
 				sprite._inkData = stream.readByte();
 
 				sprite._ink = static_cast<InkType>(sprite._inkData & 0x3f);
-				sprite._trails = sprite._inkData & 0x40 ? 1 : 0;
-				sprite._stretch = sprite._inkData & 0x80 ? 1 : 0;
+				sprite._trails = sprite._inkData & 0x40 ? true : false;
+				sprite._stretch = sprite._inkData & 0x80 ? true : false;
 			}
 			break;
 		case 6:
@@ -923,8 +923,8 @@ void readSpriteDataD5(Common::SeekableReadStreamEndian &stream, Sprite &sprite,
 				sprite._inkData = stream.readByte();
 
 				sprite._ink = static_cast<InkType>(sprite._inkData & 0x3f);
-				sprite._trails = sprite._inkData & 0x40 ? 1 : 0;
-				sprite._stretch = sprite._inkData & 0x80 ? 1 : 0;
+				sprite._trails = sprite._inkData & 0x40 ? true : false;
+				sprite._stretch = sprite._inkData & 0x80 ? true : false;
 			}
 			break;
 		case 2:
@@ -1125,8 +1125,8 @@ void readSpriteDataD6(Common::SeekableReadStreamEndian &stream, Sprite &sprite,
 			sprite._inkData = inkData;
 
 			sprite._ink = static_cast<InkType>(sprite._inkData & 0x3f);
-			sprite._trails = sprite._inkData & 0x40 ? 1 : 0;
-			sprite._stretch = sprite._inkData & 0x80 ? 1 : 0;
+			sprite._trails = sprite._inkData & 0x40 ? true : false;
+			sprite._stretch = sprite._inkData & 0x80 ? true : false;
 			}
 			break;
 		case 2: {
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 10db7194ebe..b9e5a58e65b 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1400,13 +1400,13 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
 		d = channel->_stopTime;
 		break;
 	case kTheStretch:
-		d = sprite->_stretch;
+		d = (sprite->_stretch ? 1 : 0);
 		break;
 	case kTheTop:
 		d = channel->getBbox().top;
 		break;
 	case kTheTrails:
-		d = sprite->_trails;
+		d = (sprite->_trails ? 1 : 0);
 		break;
 	case kTheType:
 		d = sprite->_spriteType;
@@ -1676,10 +1676,10 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
 			warning("Setting stopTime for non-digital video");
 		break;
 	case kTheStretch:
-		if (d.asInt() != sprite->_stretch) {
+		if ((d.asInt() != 0) != sprite->_stretch) {
 			g_director->getCurrentWindow()->addDirtyRect(channel->getBbox());
 
-			sprite->_stretch = d.asInt();
+			sprite->_stretch = (d.asInt() != 0);
 			channel->_dirty = true;
 
 			channel->_width = sprite->_width;
@@ -1687,7 +1687,7 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
 		}
 		break;
 	case kTheTrails:
-		sprite->_trails = d.asInt();
+		sprite->_trails = (d.asInt() ? true : false);
 		break;
 	case kTheType:
 		if (d.asInt() != sprite->_spriteType) {
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index e62afec8e00..7645bf2fb9a 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -48,7 +48,7 @@ Sprite::Sprite(Frame *frame) {
 	_spriteType = kInactiveSprite;
 	_inkData = 0;
 	_ink = kInkTypeCopy;
-	_trails = 0;
+	_trails = false;
 
 	_matte = nullptr;
 	_cast = nullptr;
@@ -67,7 +67,7 @@ Sprite::Sprite(Frame *frame) {
 	_blend = 0;
 
 	_volume = 0;
-	_stretch = 0;
+	_stretch = false;
 }
 
 Sprite& Sprite::operator=(const Sprite &sprite) {
diff --git a/engines/director/sprite.h b/engines/director/sprite.h
index 549c44ef62d..576e5bd31a4 100644
--- a/engines/director/sprite.h
+++ b/engines/director/sprite.h
@@ -98,7 +98,7 @@ public:
 	SpriteType _spriteType;
 	byte _inkData;
 	InkType _ink;
-	uint16 _trails;
+	bool _trails;
 
 	CastMemberID _castId;
 	uint16 _pattern;
@@ -124,7 +124,7 @@ public:
 	byte _blend;
 
 	byte _volume;
-	byte _stretch;
+	bool _stretch;
 };
 
 } // End of namespace Director


Commit: 61e18b08f0366771f9057b4d2edb81aaf029735c
    https://github.com/scummvm/scummvm/commit/61e18b08f0366771f9057b4d2edb81aaf029735c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-04-29T00:12:24+02:00

Commit Message:
DIRECTOR: Show Channels in ImGUI

Changed paths:
    engines/director/debugtools.cpp


diff --git a/engines/director/debugtools.cpp b/engines/director/debugtools.cpp
index fbf02a64b96..a72db5d5227 100644
--- a/engines/director/debugtools.cpp
+++ b/engines/director/debugtools.cpp
@@ -24,13 +24,19 @@
 #include "director/director.h"
 #include "director/lingo/lingo.h"
 #include "director/debugtools.h"
+#include "director/cast.h"
+#include "director/channel.h"
+#include "director/frame.h"
+#include "director/movie.h"
+#include "director/score.h"
+#include "director/sprite.h"
 
 namespace Director {
 
 typedef struct ImGuiState {
 	bool _showCallStack;
 	bool _showVars;
-	bool _showScore;
+	bool _showChannels;
 } ImGuiState;
 
 ImGuiState *_state = nullptr;
@@ -64,14 +70,114 @@ static void showVars() {
 	ImGui::End();
 }
 
-static void showScore() {
-	if (!_state->_showScore)
+static void showChannels() {
+	if (!_state->_showChannels)
 		return;
 
 	ImGui::SetNextWindowPos(ImVec2(20, 160), ImGuiCond_FirstUseEver);
-	ImGui::SetNextWindowSize(ImVec2(120, 120), ImGuiCond_FirstUseEver);
-	if (ImGui::Begin("Score", &_state->_showScore)) {
-		ImGui::Text("WIP");
+	ImGui::SetNextWindowSize(ImVec2(240, 240), ImGuiCond_FirstUseEver);
+
+	if (ImGui::Begin("Channels", &_state->_showChannels)) {
+		Score *score = g_director->getCurrentMovie()->getScore();
+		Frame &frame = *score->_currentFrame;
+
+		CastMemberID defaultPalette = g_director->getCurrentMovie()->getCast()->_defaultPalette;
+		ImGui::Text("TMPO:   tempo: %d, skipFrameFlag: %d, blend: %d, currentFPS: %d",
+			frame._mainChannels.tempo, frame._mainChannels.skipFrameFlag, frame._mainChannels.blend, score->_currentFrameRate);
+		if (!frame._mainChannels.palette.paletteId.isNull()) {
+			ImGui::Text("PAL:    paletteId: %s, firstColor: %d, lastColor: %d, flags: %d, cycleCount: %d, speed: %d, frameCount: %d, fade: %d, delay: %d, style: %d, currentId: %s, defaultId: %s",
+				frame._mainChannels.palette.paletteId.asString().c_str(), frame._mainChannels.palette.firstColor, frame._mainChannels.palette.lastColor, frame._mainChannels.palette.flags,
+				frame._mainChannels.palette.cycleCount, frame._mainChannels.palette.speed, frame._mainChannels.palette.frameCount,
+				frame._mainChannels.palette.fade, frame._mainChannels.palette.delay, frame._mainChannels.palette.style, g_director->_lastPalette.asString().c_str(), defaultPalette.asString().c_str());
+		} else {
+			ImGui::Text("PAL:    paletteId: 000, currentId: %s, defaultId: %s\n", g_director->_lastPalette.asString().c_str(), defaultPalette.asString().c_str());
+		}
+		ImGui::Text("TRAN:   transType: %d, transDuration: %d, transChunkSize: %d",
+			frame._mainChannels.transType, frame._mainChannels.transDuration, frame._mainChannels.transChunkSize);
+		ImGui::Text("SND: 1  sound1: %d, soundType1: %d", frame._mainChannels.sound1.member, frame._mainChannels.soundType1);
+		ImGui::Text("SND: 2  sound2: %d, soundType2: %d", frame._mainChannels.sound2.member, frame._mainChannels.soundType2);
+		ImGui::Text("LSCR:   actionId: %d", frame._mainChannels.actionId.member);
+
+		if (ImGui::BeginTable("Channels", 21, ImGuiTableFlags_Borders)) {
+			ImGui::TableSetupColumn("CH", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("castId", ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("vis", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("inkData", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("ink", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("trails", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("stretch", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("line", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("dims", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("type", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("fg", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("bg", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("script", ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("colorcode", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("blendAmount", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("unk3", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("constraint", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("puppet", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("moveable", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("movieRate", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+			ImGui::TableSetupColumn("movieTime", ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_AngledHeader);
+
+			ImGui::TableAngledHeadersRow();
+			for (int i = 0; i < frame._numChannels; i++) {
+				Channel &channel = *score->_channels[i + 1];
+				Sprite &sprite = *channel._sprite;
+
+				ImGui::TableNextRow();
+
+				ImGui::TableNextColumn();
+				ImGui::Text("%-3d", i + 1);
+				ImGui::TableNextColumn();
+
+				if (sprite._castId.member) {
+					ImGui::Text("%s", sprite._castId.asString().c_str());
+					ImGui::TableNextColumn();
+					ImGui::Checkbox("", &channel._visible);
+					ImGui::TableNextColumn();
+					ImGui::Text("0x%02x", sprite._inkData);
+					ImGui::TableNextColumn();
+					ImGui::Text("%d", sprite._ink);
+					ImGui::TableNextColumn();
+					ImGui::Checkbox("", &sprite._trails);
+					ImGui::TableNextColumn();
+					ImGui::Checkbox("", &sprite._stretch);
+					ImGui::TableNextColumn();
+					ImGui::Text("%d", sprite._thickness);
+					ImGui::TableNextColumn();
+					ImGui::Text("%dx%d@%d,%d", channel._width, channel._height, channel._currentPoint.x, channel._currentPoint.y);
+					ImGui::TableNextColumn();
+					ImGui::Text("%d (%s)", sprite._spriteType, spriteType2str(sprite._spriteType));
+					ImGui::TableNextColumn();
+					ImGui::Text("%d", sprite._foreColor);
+					ImGui::TableNextColumn();
+					ImGui::Text("%d", sprite._backColor);
+					ImGui::TableNextColumn();
+					ImGui::Text("%s", sprite._scriptId.asString().c_str());
+					ImGui::TableNextColumn();
+					ImGui::Text("0x%x", sprite._colorcode);
+					ImGui::TableNextColumn();
+					ImGui::Text("0x%x", sprite._blendAmount);
+					ImGui::TableNextColumn();
+					ImGui::Text("0x%x", sprite._unk3);
+					ImGui::TableNextColumn();
+					ImGui::Text("%d", channel._constraint);
+					ImGui::TableNextColumn();
+					ImGui::Checkbox("", &sprite._puppet);
+					ImGui::TableNextColumn();
+					ImGui::Checkbox("", &sprite._moveable);
+					ImGui::TableNextColumn();
+					ImGui::Text("%f", channel._movieRate);
+					ImGui::TableNextColumn();
+					ImGui::Text("%d (%f)", channel._movieTime, (float)(channel._movieTime/60.0f));
+				} else {
+					ImGui::Text("000");
+				}
+			}
+			ImGui::EndTable();
+		}
 	}
 	ImGui::End();
 }
@@ -96,7 +202,7 @@ void onImGuiRender() {
 		if (ImGui::BeginMenu("View")) {
 			ImGui::MenuItem("CallStack", NULL, &_state->_showCallStack);
 			ImGui::MenuItem("Vars", NULL, &_state->_showVars);
-			ImGui::MenuItem("Score", NULL, &_state->_showScore);
+			ImGui::MenuItem("Channels", NULL, &_state->_showChannels);
 			ImGui::EndMenu();
 		}
 		ImGui::EndMainMenuBar();
@@ -104,7 +210,7 @@ void onImGuiRender() {
 
 	showVars();
 	showCallStack();
-	showScore();
+	showChannels();
 }
 
 void onImGuiCleanup() {




More information about the Scummvm-git-logs mailing list