Skip to content

Commit

Permalink
DIRECTOR: Fix missing cast member ID in palette record
Browse files Browse the repository at this point in the history
This is relied on by b_puppetSprite.

Fixes various palette regressions in The Dark Eye.
  • Loading branch information
moralrecordings committed May 31, 2024
1 parent 6701371 commit 4b4f4da
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
15 changes: 13 additions & 2 deletions engines/director/castmember/palette.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,17 @@ PaletteCastMember::~PaletteCastMember() {
}
}

CastMemberID PaletteCastMember::getPaletteId() {
load();
return _palette ? _palette->id : CastMemberID();
}

void PaletteCastMember::activatePalette() {
load();
if (_palette)
g_director->setPalette(_palette->id);
}

Common::String PaletteCastMember::formatInfo() {
Common::String result;
if (_palette) {
Expand Down Expand Up @@ -89,8 +100,8 @@ void PaletteCastMember::load() {
Common::SeekableReadStreamEndian *pal = arch->getResource(MKTAG('C', 'L', 'U', 'T'), paletteId);
debugC(2, kDebugImages, "PaletteCastMember::load(): linking palette id %d to cast index %d", paletteId, _castId);
PaletteV4 palData = _cast->loadPalette(*pal, paletteId);
CastMemberID cid(_castId, _cast->_castLibID);
g_director->addPalette(cid, palData.palette, palData.length);
palData.id = CastMemberID(_castId, _cast->_castLibID);
g_director->addPalette(palData.id, palData.palette, palData.length);
_palette = new PaletteV4(palData);
delete pal;
} else {
Expand Down
4 changes: 2 additions & 2 deletions engines/director/castmember/palette.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ class PaletteCastMember : public CastMember {
PaletteCastMember(Cast *cast, uint16 castId, Common::SeekableReadStreamEndian &stream, uint16 version);
PaletteCastMember(Cast *cast, uint16 castId, PaletteCastMember &source);
~PaletteCastMember();
CastMemberID getPaletteId() { return _palette ? _palette->id : CastMemberID(0, 0); }
void activatePalette() { if (_palette) g_director->setPalette(_palette->id); }
CastMemberID getPaletteId();
void activatePalette();

Common::String formatInfo() override;

Expand Down

0 comments on commit 4b4f4da

Please sign in to comment.