[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