[Scummvm-git-logs] scummvm master -> 3417916cdd42bb3dbfe2060afe5bb2e2c9b21c40
mgerhardy
noreply at scummvm.org
Wed Oct 9 09:51:57 UTC 2024
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8a1aa15544 TWINE: renamed palette members and functions to match the original sources
43d18713c9 TWINE: renaming (fla) to match the original sources
6be51ef289 TWINE: renamed to match original sources
9903a2afa2 TWINE: further renaming of variables to match the original sources
3417916cdd TWINE: extended debugger to show the current active palette
Commit: 8a1aa15544dcc6aeb3c23c6f369b07255e40ef5a
https://github.com/scummvm/scummvm/commit/8a1aa15544dcc6aeb3c23c6f369b07255e40ef5a
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2024-10-09T08:53:04+02:00
Commit Message:
TWINE: renamed palette members and functions to match the original sources
Changed paths:
engines/twine/debugger/console.cpp
engines/twine/holomap_v1.cpp
engines/twine/menu/menuoptions.cpp
engines/twine/movies.cpp
engines/twine/renderer/redraw.cpp
engines/twine/renderer/screens.cpp
engines/twine/renderer/screens.h
engines/twine/resources/resources.cpp
engines/twine/scene/gamestate.cpp
engines/twine/scene/scene.cpp
engines/twine/script/script_life.cpp
engines/twine/script/script_life_v2.cpp
engines/twine/script/script_move.cpp
engines/twine/twine.cpp
diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index b191d02534b..e401df3c6cf 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -318,7 +318,7 @@ bool TwinEConsole::doGiveKashes(int argc, const char **argv) {
}
bool TwinEConsole::doToggleDarkPal(int argc, const char **argv) {
- if (_engine->_screens->_useAlternatePalette) {
+ if (_engine->_screens->_flagPalettePcx) {
debugPrintf("Disabling dark palette\n");
_engine->_screens->setNormalPal();
} else {
diff --git a/engines/twine/holomap_v1.cpp b/engines/twine/holomap_v1.cpp
index b6aae1eb5d8..38f79ba59b3 100644
--- a/engines/twine/holomap_v1.cpp
+++ b/engines/twine/holomap_v1.cpp
@@ -338,7 +338,7 @@ void HolomapV1::drawHolomapTrajectory(int32 trajectoryIndex) {
_engine->_screens->clearScreen();
initHoloDatas();
- _engine->setPalette(_engine->_screens->_paletteRGBACustom);
+ _engine->setPalette(_engine->_screens->_palettePcx);
ScopedEngineFreeze timeFreeze(_engine);
const int32 cameraPosX = _engine->width() / 2 + 80;
@@ -422,7 +422,7 @@ void HolomapV1::drawHolomapTrajectory(int32 trajectoryIndex) {
}
_engine->_screens->clearScreen();
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->setPalette(_engine->_screens->_ptrPal);
_engine->_gameState->init3DGame();
_engine->_interface->restoreClip();
@@ -527,11 +527,11 @@ void HolomapV1::holoMap() {
_engine->_gameState->init3DGame();
- _engine->_screens->fadeToBlack(_engine->_screens->_paletteRGBA);
+ _engine->_screens->fadeToBlack(_engine->_screens->_ptrPal);
_engine->_sound->stopSamples();
_engine->_interface->unsetClip();
_engine->_screens->clearScreen();
- _engine->_screens->fadeToBlack(_engine->_screens->_paletteRGBA);
+ _engine->_screens->fadeToBlack(_engine->_screens->_ptrPal);
initHoloDatas();
@@ -671,13 +671,13 @@ void HolomapV1::holoMap() {
if (flagpal) {
flagpal = false;
- _engine->_screens->fadeToPal(_engine->_screens->_paletteRGBACustom);
+ _engine->_screens->fadeToPal(_engine->_screens->_palettePcx);
}
}
_engine->_screens->clearScreen();
_engine->_text->_flagMessageShade = true;
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->setPalette(_engine->_screens->_ptrPal);
_engine->_scene->_alphaLight = alphaLightTmp;
_engine->_scene->_betaLight = betaLightTmp;
diff --git a/engines/twine/menu/menuoptions.cpp b/engines/twine/menu/menuoptions.cpp
index b629c87c9d0..b057e81efa8 100644
--- a/engines/twine/menu/menuoptions.cpp
+++ b/engines/twine/menu/menuoptions.cpp
@@ -76,7 +76,7 @@ void MenuOptions::newGame() {
}
_engine->_cfgfile.FlagDisplayText = tmpFlagDisplayText;
- _engine->_screens->fadeToBlack(_engine->_screens->_paletteRGBACustom);
+ _engine->_screens->fadeToBlack(_engine->_screens->_palettePcx);
_engine->_screens->clearScreen();
if (!aborted) {
@@ -94,7 +94,7 @@ void MenuOptions::newGame() {
_engine->_text->_renderTextTriangle = false;
// set main palette back
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->setPalette(_engine->_screens->_ptrPal);
}
// TODO: dotemu has credits_<lang>.txt files
@@ -121,7 +121,7 @@ void MenuOptions::showEndSequence() {
_engine->_movie->playMovie(FLA_THEEND);
_engine->_screens->clearScreen();
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->setPalette(_engine->_screens->_ptrPal);
}
void MenuOptions::drawSelectableCharacter(int32 x, int32 y) {
diff --git a/engines/twine/movies.cpp b/engines/twine/movies.cpp
index 387a7941374..0d05806b2a7 100644
--- a/engines/twine/movies.cpp
+++ b/engines/twine/movies.cpp
@@ -201,8 +201,8 @@ void Movies::processFrame() {
// FLA movies don't use cross fade
// fade out tricky
if (_fadeOut != 1) {
- _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_paletteRGBACustom);
- _engine->_screens->fadeToBlack(_engine->_screens->_paletteRGBACustom);
+ _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_palettePcx);
+ _engine->_screens->fadeToBlack(_engine->_screens->_palettePcx);
_fadeOut = 1;
}
break;
@@ -305,7 +305,7 @@ void Movies::prepareGIF(int index) {
debug(2, "Show gif with id %i from %s", index, Resources::HQR_FLAGIF_FILE);
delete stream;
_engine->delaySkip(5000);
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->setPalette(_engine->_screens->_ptrPal);
}
void Movies::playGIFMovie(const char *flaName) {
@@ -424,19 +424,19 @@ bool Movies::playMovie(const char *name) { // PlayAnimFla
// Only blit to screen if isn't a fade
if (_fadeOut == -1) {
- _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_paletteRGBACustom);
+ _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_palettePcx);
if (currentFrame == 0) {
// fade in the first frame
- _engine->_screens->fadeIn(_engine->_screens->_paletteRGBACustom);
+ _engine->_screens->fadeIn(_engine->_screens->_palettePcx);
} else {
- _engine->setPalette(_engine->_screens->_paletteRGBACustom);
+ _engine->setPalette(_engine->_screens->_palettePcx);
}
}
// TRICKY: fade in tricky
if (_fadeOutFrames >= 2) {
- _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_paletteRGBACustom);
- _engine->_screens->fadeToPal(_engine->_screens->_paletteRGBACustom);
+ _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_palettePcx);
+ _engine->_screens->fadeToPal(_engine->_screens->_palettePcx);
_fadeOut = -1;
_fadeOutFrames = 0;
}
@@ -447,7 +447,7 @@ bool Movies::playMovie(const char *name) { // PlayAnimFla
warning("Unsupported fla version: %u, %s", version, fileNamePath.c_str());
}
- _engine->_screens->fadeToBlack(_engine->_screens->_paletteRGBACustom);
+ _engine->_screens->fadeToBlack(_engine->_screens->_palettePcx);
_engine->_sound->stopSamples();
return finished;
diff --git a/engines/twine/renderer/redraw.cpp b/engines/twine/renderer/redraw.cpp
index 9c113c985ec..89f438f2091 100644
--- a/engines/twine/renderer/redraw.cpp
+++ b/engines/twine/renderer/redraw.cpp
@@ -881,7 +881,7 @@ void Redraw::redrawEngineActions(bool bgRedraw) { // AffScene
if (bgRedraw) {
_engine->freezeTime(false);
if (_engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_1 && _engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_2) {
- _engine->_screens->fadeOut(_engine->_screens->_paletteRGBA);
+ _engine->_screens->fadeOut(_engine->_screens->_ptrPal);
}
_engine->_screens->clearScreen();
@@ -894,7 +894,7 @@ void Redraw::redrawEngineActions(bool bgRedraw) { // AffScene
_engine->saveFrontBuffer();
if (_engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_1 && _engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_2) {
- _engine->_screens->fadeIn(_engine->_screens->_paletteRGBA);
+ _engine->_screens->fadeIn(_engine->_screens->_ptrPal);
}
} else {
blitBackgroundAreas();
@@ -928,13 +928,13 @@ void Redraw::redrawEngineActions(bool bgRedraw) { // AffScene
flipRedrawAreas();
}
- if (_engine->_screens->_fadePalette) {
- if (_engine->_screens->_useAlternatePalette) {
- _engine->_screens->fadeToPal(_engine->_screens->_paletteRGBA);
+ if (_engine->_screens->_flagFade) {
+ if (_engine->_screens->_flagPalettePcx) {
+ _engine->_screens->fadeToPal(_engine->_screens->_ptrPal);
} else {
_engine->_screens->fadeToPal(_engine->_screens->_mainPaletteRGBA);
}
- _engine->_screens->_fadePalette = false;
+ _engine->_screens->_flagFade = false;
}
}
diff --git a/engines/twine/renderer/screens.cpp b/engines/twine/renderer/screens.cpp
index 380b33d2528..1c63a0c3a75 100644
--- a/engines/twine/renderer/screens.cpp
+++ b/engines/twine/renderer/screens.cpp
@@ -71,7 +71,7 @@ void Screens::loadCustomPalette(const TwineResource &resource) {
warning("Unexpected palette size %s:%i", resource.hqr, resource.index);
}
debug(3, "palette %s:%i with size %i", resource.hqr, resource.index, size);
- convertPalToRGBA(_palette, _paletteRGBACustom);
+ convertPalToRGBA(_palette, _palettePcx);
}
void Screens::convertPalToRGBA(const uint8 *in, uint32 *out) {
@@ -95,10 +95,10 @@ void Screens::loadImage(TwineImage image, bool fadeIn) {
debug(0, "Load image: %i", image.image.index);
Graphics::ManagedSurface& target = _engine->_frontVideoBuffer;
target.transBlitFrom(src, src.getBounds(), target.getBounds(), 0, false, 0, 0xff, nullptr, true);
- const uint32 *pal = _paletteRGBA;
+ const uint32 *pal = _ptrPal;
if (image.palette.index != -1) {
loadCustomPalette(image.palette);
- pal = _paletteRGBACustom;
+ pal = _palettePcx;
}
if (fadeIn) {
fadeToPal(pal);
@@ -110,10 +110,10 @@ void Screens::loadImage(TwineImage image, bool fadeIn) {
bool Screens::loadImageDelay(TwineImage image, int32 seconds) {
loadImage(image);
if (_engine->delaySkip(1000 * seconds)) {
- adjustPalette(0, 0, 0, _paletteRGBACustom, 100);
+ adjustPalette(0, 0, 0, _palettePcx, 100);
return true;
}
- fadeOut(_paletteRGBACustom);
+ fadeOut(_palettePcx);
return false;
}
@@ -229,15 +229,15 @@ void Screens::adjustPalette(uint8 r, uint8 g, uint8 b, const uint32 *rgbaPal, in
_engine->_frontVideoBuffer.update();
}
-void Screens::adjustCrossPalette(const uint32 *pal1, const uint32 *pal2) {
- uint32 pal[NUMOFCOLORS];
+void Screens::fadePalToPal(const uint32 *ptrpal, const uint32 *ptrpal2) {
+ uint32 workpal[NUMOFCOLORS];
int32 counter = 0;
int32 intensity = 0;
- const uint8 *pal1p = (const uint8 *)pal1;
- const uint8 *pal2p = (const uint8 *)pal2;
- uint8 *paletteOut = (uint8 *)pal;
+ const uint8 *pal1p = (const uint8 *)ptrpal;
+ const uint8 *pal2p = (const uint8 *)ptrpal2;
+ uint8 *paletteOut = (uint8 *)workpal;
do {
FrameMarker frame(_engine, DEFAULT_HZ);
counter = 0;
@@ -261,7 +261,7 @@ void Screens::adjustCrossPalette(const uint32 *pal1, const uint32 *pal2) {
counter += 4;
}
- _engine->setPalette(pal);
+ _engine->setPalette(workpal);
intensity++;
_engine->_frontVideoBuffer.update();
} while (intensity <= 100);
@@ -305,39 +305,39 @@ void Screens::blackToWhite() {
void Screens::setDarkPal() {
ScopedEngineFreeze scoped(_engine);
HQR::getEntry(_palette, Resources::HQR_RESS_FILE, RESSHQR_DARKPAL);
- convertPalToRGBA(_palette, _paletteRGBA);
- if (!_fadePalette) {
+ convertPalToRGBA(_palette, _ptrPal);
+ if (!_flagFade) {
// set the palette hard if it should not get faded
- _engine->setPalette(_paletteRGBA);
+ _engine->setPalette(_ptrPal);
}
- _useAlternatePalette = true;
+ _flagPalettePcx = true;
}
void Screens::setNormalPal() {
- _useAlternatePalette = false;
- if (!_fadePalette) {
+ _flagPalettePcx = false;
+ if (!_flagFade) {
// reset the palette hard if it should not get faded
_engine->setPalette(_mainPaletteRGBA);
}
}
-void Screens::setBackPal() {
+void Screens::setBlackPal() {
memset(_palette, 0, sizeof(_palette));
- memset(_paletteRGBA, 0, sizeof(_paletteRGBA));
+ memset(_ptrPal, 0, sizeof(_ptrPal));
- _engine->setPalette(_paletteRGBA);
+ _engine->setPalette(_ptrPal);
_palResetted = true;
}
-void Screens::fadePalRed(const uint32 *pal) {
+void Screens::fadeToRed(const uint32 *pal) {
for (int32 i = 100; i >= 0; i -= 2) {
FrameMarker frame(_engine, DEFAULT_HZ);
adjustPalette(0xFF, 0, 0, pal, i);
}
}
-void Screens::fadeRedPal(const uint32 *pal) {
+void Screens::fadeRedToPal(const uint32 *pal) {
for (int32 i = 0; i <= 100; i += 2) {
FrameMarker frame(_engine, DEFAULT_HZ);
adjustPalette(0xFF, 0, 0, pal, i);
diff --git a/engines/twine/renderer/screens.h b/engines/twine/renderer/screens.h
index 41b2c6c7dd8..89c6e53d4a0 100644
--- a/engines/twine/renderer/screens.h
+++ b/engines/twine/renderer/screens.h
@@ -53,19 +53,19 @@ public:
int32 mapLba2Palette(int32 palIndex);
/** converted in-game palette */
- uint32 _paletteRGBA[NUMOFCOLORS]{0};
+ uint32 _ptrPal[NUMOFCOLORS]{0};
/** converted custom palette */
- uint32 _paletteRGBACustom[NUMOFCOLORS]{0};
+ uint32 _palettePcx[NUMOFCOLORS]{0};
/** flag to check in the game palette was changed */
bool _palResetted = false;
/** flag to check if the main flag is locked */
- bool _fadePalette = false;
+ bool _flagFade = false;
/** flag to check if we are using a different palette than the main one */
- bool _useAlternatePalette = false;
+ bool _flagPalettePcx = false;
/** converted in-game palette */
uint32 _mainPaletteRGBA[NUMOFCOLORS]{0};
@@ -141,7 +141,7 @@ public:
* @param pal1 palette from adjust
* @param pal2 palette to adjust
*/
- void adjustCrossPalette(const uint32 *pal1, const uint32 *pal2);
+ void fadePalToPal(const uint32 *pal1, const uint32 *pal2);
/**
* Fade image to black
@@ -159,19 +159,19 @@ public:
void blackToWhite();
/** Resets both in-game and sdl palettes */
- void setBackPal();
+ void setBlackPal();
/**
* Fade palette to red palette
* @param palette current palette to fade
*/
- void fadePalRed(const uint32 *palette);
+ void fadeToRed(const uint32 *palette);
/**
* Fade red to palette
* @param palette current palette to fade
*/
- void fadeRedPal(const uint32 *palette);
+ void fadeRedToPal(const uint32 *palette);
/**
* Copy a determinate screen buffer to another
diff --git a/engines/twine/resources/resources.cpp b/engines/twine/resources/resources.cpp
index 4e7a4de5d38..9de9c63b8b2 100644
--- a/engines/twine/resources/resources.cpp
+++ b/engines/twine/resources/resources.cpp
@@ -56,8 +56,8 @@ void Resources::initPalettes() {
memcpy(_engine->_screens->_palette, mainPalette, NUMOFCOLORS * 3);
- _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_paletteRGBA);
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->_screens->convertPalToRGBA(_engine->_screens->_palette, _engine->_screens->_ptrPal);
+ _engine->setPalette(_engine->_screens->_ptrPal);
free(mainPalette);
}
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 90521c386aa..e180972eff6 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -516,7 +516,7 @@ void GameState::processGameoverAnimation() {
_engine->_scene->_sceneHero->_staticFlags.bIsInvisible = 0;
// TODO: inSceneryView
- _engine->setPalette(_engine->_screens->_paletteRGBA);
+ _engine->setPalette(_engine->_screens->_ptrPal);
_engine->saveFrontBuffer();
BodyData gameOverPtr;
if (!gameOverPtr.loadFromHQR(Resources::HQR_RESS_FILE, RESSHQR_GAMEOVERMDL, _engine->isLBA1())) {
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index b50d01bdc03..429070d7d30 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -636,7 +636,7 @@ void Scene::changeCube() {
_engine->_movements->_lastJoyFlag = true;
_engine->_grid->_useCellingGrid = -1;
_engine->_grid->_cellingGridIdx = -1;
- _engine->_screens->_fadePalette = false;
+ _engine->_screens->_flagFade = false;
_engine->_renderer->setLightVector(_alphaLight, _betaLight, LBAAngles::ANGLE_0);
_needChangeScene = SCENE_CEILING_GRID_FADE_1;
diff --git a/engines/twine/script/script_life.cpp b/engines/twine/script/script_life.cpp
index 98c50c15f71..c8408401c33 100644
--- a/engines/twine/script/script_life.cpp
+++ b/engines/twine/script/script_life.cpp
@@ -1394,13 +1394,13 @@ int32 ScriptLife::lZOOM(TwinEEngine *engine, LifeScriptContext &ctx) {
if (zoomScreen && !engine->_redraw->_flagMCGA && engine->_cfgfile.SceZoom) {
engine->_screens->fadeToBlack(engine->_screens->_mainPaletteRGBA);
engine->extInitMcga();
- engine->_screens->setBackPal();
- engine->_screens->_fadePalette = true;
+ engine->_screens->setBlackPal();
+ engine->_screens->_flagFade = true;
} else if (!zoomScreen && engine->_redraw->_flagMCGA) {
engine->_screens->fadeToBlack(engine->_screens->_mainPaletteRGBA);
engine->extInitSvga();
- engine->_screens->setBackPal();
- engine->_screens->_fadePalette = true;
+ engine->_screens->setBlackPal();
+ engine->_screens->_flagFade = true;
engine->_redraw->_firstTime = true;
}
@@ -1514,7 +1514,7 @@ int32 ScriptLife::lPLAY_FLA(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::PLAY_FLA(%s)", movie);
engine->_movie->playMovie(movie);
- engine->setPalette(engine->_screens->_paletteRGBA);
+ engine->setPalette(engine->_screens->_ptrPal);
engine->_redraw->_firstTime = true;
return 0;
@@ -1758,8 +1758,8 @@ int32 ScriptLife::lGRM_OFF(TwinEEngine *engine, LifeScriptContext &ctx) {
int32 ScriptLife::lFADE_PAL_RED(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::FADE_PAL_RED()");
ScopedEngineFreeze scoped(engine);
- engine->_screens->fadePalRed(engine->_screens->_mainPaletteRGBA);
- engine->_screens->_useAlternatePalette = false;
+ engine->_screens->fadeToRed(engine->_screens->_mainPaletteRGBA);
+ engine->_screens->_flagPalettePcx = false;
return 0;
}
@@ -1771,9 +1771,9 @@ int32 ScriptLife::lFADE_ALARM_RED(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::FADE_ALARM_RED()");
ScopedEngineFreeze scoped(engine);
HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, RESSHQR_ALARMREDPAL);
- engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
- engine->_screens->fadePalRed(engine->_screens->_paletteRGBA);
- engine->_screens->_useAlternatePalette = true;
+ engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_ptrPal);
+ engine->_screens->fadeToRed(engine->_screens->_ptrPal);
+ engine->_screens->_flagPalettePcx = true;
return 0;
}
@@ -1785,9 +1785,9 @@ int32 ScriptLife::lFADE_ALARM_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::FADE_ALARM_PAL()");
ScopedEngineFreeze scoped(engine);
HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, RESSHQR_ALARMREDPAL);
- engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
- engine->_screens->adjustCrossPalette(engine->_screens->_paletteRGBA, engine->_screens->_mainPaletteRGBA);
- engine->_screens->_useAlternatePalette = false;
+ engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_ptrPal);
+ engine->_screens->fadePalToPal(engine->_screens->_ptrPal, engine->_screens->_mainPaletteRGBA);
+ engine->_screens->_flagPalettePcx = false;
return 0;
}
@@ -1798,8 +1798,8 @@ int32 ScriptLife::lFADE_ALARM_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
int32 ScriptLife::lFADE_RED_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::FADE_RED_PAL()");
ScopedEngineFreeze scoped(engine);
- engine->_screens->fadeRedPal(engine->_screens->_mainPaletteRGBA);
- engine->_screens->_useAlternatePalette = false;
+ engine->_screens->fadeRedToPal(engine->_screens->_mainPaletteRGBA);
+ engine->_screens->_flagPalettePcx = false;
return 0;
}
@@ -1811,9 +1811,9 @@ int32 ScriptLife::lFADE_RED_ALARM(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::FADE_RED_ALARM()");
ScopedEngineFreeze scoped(engine);
HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, RESSHQR_ALARMREDPAL);
- engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
- engine->_screens->fadeRedPal(engine->_screens->_paletteRGBA);
- engine->_screens->_useAlternatePalette = true;
+ engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_ptrPal);
+ engine->_screens->fadeRedToPal(engine->_screens->_ptrPal);
+ engine->_screens->_flagPalettePcx = true;
return 0;
}
@@ -1825,9 +1825,9 @@ int32 ScriptLife::lFADE_PAL_ALARM(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::FADE_PAL_ALARM()");
ScopedEngineFreeze scoped(engine);
HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, RESSHQR_ALARMREDPAL);
- engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
- engine->_screens->adjustCrossPalette(engine->_screens->_mainPaletteRGBA, engine->_screens->_paletteRGBA);
- engine->_screens->_useAlternatePalette = true;
+ engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_ptrPal);
+ engine->_screens->fadePalToPal(engine->_screens->_mainPaletteRGBA, engine->_screens->_ptrPal);
+ engine->_screens->_flagPalettePcx = true;
return 0;
}
@@ -1898,7 +1898,7 @@ int32 ScriptLife::lMESSAGE_SENDELL(TwinEEngine *engine, LifeScriptContext &ctx)
debugC(3, kDebugLevels::kDebugScripts, "LIFE::MESSAGE_SENDELL()");
ScopedEngineFreeze scoped(engine);
engine->testRestoreModeSVGA(true);
- engine->_screens->fadeToBlack(engine->_screens->_paletteRGBA);
+ engine->_screens->fadeToBlack(engine->_screens->_ptrPal);
engine->_screens->loadImage(TwineImage(Resources::HQR_RESS_FILE, 25, 26));
engine->_text->bigWinDial();
engine->_text->setFontCrossColor(COLOR_WHITE);
@@ -1909,9 +1909,9 @@ int32 ScriptLife::lMESSAGE_SENDELL(TwinEEngine *engine, LifeScriptContext &ctx)
engine->_cfgfile.FlagDisplayText = tmpFlagDisplayText;
engine->_text->_flagMessageShade = true;
engine->_text->normalWinDial();
- engine->_screens->fadeToBlack(engine->_screens->_paletteRGBACustom);
+ engine->_screens->fadeToBlack(engine->_screens->_palettePcx);
engine->_screens->clearScreen();
- engine->setPalette(engine->_screens->_paletteRGBA);
+ engine->setPalette(engine->_screens->_ptrPal);
return 0;
}
diff --git a/engines/twine/script/script_life_v2.cpp b/engines/twine/script/script_life_v2.cpp
index fea2e50b2f9..97da5e9da13 100644
--- a/engines/twine/script/script_life_v2.cpp
+++ b/engines/twine/script/script_life_v2.cpp
@@ -203,9 +203,9 @@ int32 ScriptLifeV2::lPALETTE(TwinEEngine *engine, LifeScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "LIFE::PALETTE(%i)", palIndex);
ScopedEngineFreeze scoped(engine);
HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, palIndex);
- engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
- engine->setPalette(engine->_screens->_paletteRGBA);
- engine->_screens->_useAlternatePalette = true;
+ engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_ptrPal);
+ engine->setPalette(engine->_screens->_ptrPal);
+ engine->_screens->_flagPalettePcx = true;
return 0;
}
@@ -567,7 +567,7 @@ int32 ScriptLifeV2::lPLAY_ACF(TwinEEngine *engine, LifeScriptContext &ctx) {
engine->_movie->playMovie(movie);
// TODO: lba2 is doing more stuff here - reset the cinema mode, init the scene and palette stuff
- engine->setPalette(engine->_screens->_paletteRGBA);
+ engine->setPalette(engine->_screens->_ptrPal);
engine->_redraw->_firstTime = true;
return -1;
diff --git a/engines/twine/script/script_move.cpp b/engines/twine/script/script_move.cpp
index 40c24c06def..00a45a257ea 100644
--- a/engines/twine/script/script_move.cpp
+++ b/engines/twine/script/script_move.cpp
@@ -539,7 +539,7 @@ int32 ScriptMove::mPLAY_FLA(TwinEEngine *engine, MoveScriptContext &ctx) {
debugC(3, kDebugLevels::kDebugScripts, "MOVE::PLAY_FLA(%s)", movie);
engine->_movie->playMovie(movie);
- engine->setPalette(engine->_screens->_paletteRGBA);
+ engine->setPalette(engine->_screens->_ptrPal);
engine->_screens->clearScreen();
return 0;
}
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 6d884bbfcd5..ac2f6227d32 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -710,7 +710,7 @@ void TwinEEngine::processActorSamplePosition(int32 actorIdx) {
}
void TwinEEngine::processBookOfBu() {
- _screens->fadeToBlack(_screens->_paletteRGBA);
+ _screens->fadeToBlack(_screens->_ptrPal);
_screens->loadImage(TwineImage(Resources::HQR_RESS_FILE, 15, 16));
_text->initDial(TextBankId::Inventory_Intro_and_Holomap);
_text->_flagMessageShade = false;
@@ -723,11 +723,11 @@ void TwinEEngine::processBookOfBu() {
_text->normalWinDial();
_text->_flagMessageShade = true;
_text->initSceneTextBank();
- _screens->fadeToBlack(_screens->_paletteRGBACustom);
+ _screens->fadeToBlack(_screens->_palettePcx);
_screens->clearScreen();
// TODO: the palette handling here looks wrong
- setPalette(_screens->_paletteRGBA);
- _screens->_fadePalette = true;
+ setPalette(_screens->_ptrPal);
+ _screens->_flagFade = true;
}
void TwinEEngine::processBonusList() {
@@ -750,7 +750,7 @@ void TwinEEngine::processInventoryAction() {
switch (_loopInventoryItem) {
case kiHolomap:
_holomap->holoMap();
- _screens->_fadePalette = true;
+ _screens->_flagFade = true;
break;
case kiMagicBall:
if (_gameState->_usingSabre) {
@@ -983,7 +983,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
// unfreeze here - the redrawEngineActions is also doing a freeze
// see https://bugs.scummvm.org/ticket/14808
unfreezeTime();
- _screens->_fadePalette = true;
+ _screens->_flagFade = true;
_redraw->redrawEngineActions(true);
}
@@ -1140,7 +1140,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
_scene->_sceneHero->setLife(getMaxLife());
_redraw->_firstTime = true;
- _screens->_fadePalette = true;
+ _screens->_flagFade = true;
_gameState->addLeafs(-1);
_actor->_cropBottomScreen = 0;
} else { // game over
@@ -1197,7 +1197,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
bool TwinEEngine::gameEngineLoop() {
_redraw->_firstTime = true;
- _screens->_fadePalette = true;
+ _screens->_flagFade = true;
_movements->setActorAngle(LBAAngles::ANGLE_0, -LBAAngles::ANGLE_90, LBAAngles::ANGLE_1, &_loopMovePtr);
while (_sceneLoopState == SceneLoopState::Continue) {
Commit: 43d18713c94ae890e860807c4345f24eac0c8222
https://github.com/scummvm/scummvm/commit/43d18713c94ae890e860807c4345f24eac0c8222
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2024-10-09T09:59:37+02:00
Commit Message:
TWINE: renaming (fla) to match the original sources
Changed paths:
engines/twine/movies.cpp
engines/twine/movies.h
diff --git a/engines/twine/movies.cpp b/engines/twine/movies.cpp
index 0d05806b2a7..e7f7b07cbc9 100644
--- a/engines/twine/movies.cpp
+++ b/engines/twine/movies.cpp
@@ -160,7 +160,7 @@ void Movies::scaleFla2x() {
}
}
-void Movies::processFrame() {
+void Movies::drawNextFrameFla() {
FLASampleStruct sample;
_frameData.nbFrames = _file.readSint16LE();
@@ -207,7 +207,7 @@ void Movies::processFrame() {
}
break;
case 3:
- _flaPaletteVar = true;
+ _flagFirst = true;
break;
case 4:
// TODO: fade out for 1 second before we stop it
@@ -407,7 +407,7 @@ bool Movies::playMovie(const char *name) { // PlayAnimFla
ScopedKeyMap scopedKeyMap(_engine, cutsceneKeyMapId);
- _flaPaletteVar = true;
+ _flagFirst = true;
do {
FrameMarker frame(_engine, _flaHeaderData.speed);
_engine->readKeys();
@@ -418,7 +418,7 @@ bool Movies::playMovie(const char *name) { // PlayAnimFla
finished = true;
break;
}
- processFrame();
+ drawNextFrameFla();
scaleFla2x();
_engine->_frontVideoBuffer.blitFrom(_engine->_imageBuffer, _engine->_imageBuffer.getBounds(), _engine->_frontVideoBuffer.getBounds());
diff --git a/engines/twine/movies.h b/engines/twine/movies.h
index 14859af865e..3c103df305f 100644
--- a/engines/twine/movies.h
+++ b/engines/twine/movies.h
@@ -65,7 +65,7 @@ private:
int32 _fadeOut = 0;
/** Auxiliar FLA fade out variable to count frames between the fade */
int32 _fadeOutFrames = 0;
- bool _flaPaletteVar = false;
+ bool _flagFirst = false;
/** FLA movie file buffer */
uint8 _flaBuffer[FLASCREEN_WIDTH * FLASCREEN_HEIGHT] {0};
@@ -85,7 +85,7 @@ private:
* to fullscreen or preserve it and use top and button black bars
*/
void scaleFla2x();
- void processFrame();
+ void drawNextFrameFla();
void prepareGIF(int index);
void playGIFMovie(const char *flaName);
Commit: 6be51ef2894e63ae102fd876227fa0ace0a65d4c
https://github.com/scummvm/scummvm/commit/6be51ef2894e63ae102fd876227fa0ace0a65d4c
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2024-10-09T10:01:26+02:00
Commit Message:
TWINE: renamed to match original sources
Changed paths:
engines/twine/scene/scene.cpp
engines/twine/scene/scene.h
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 429070d7d30..25569cd13be 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -494,9 +494,10 @@ bool Scene::initScene(int32 index) {
return false;
}
-void Scene::resetScene() {
+void Scene::clearScene() {
_engine->_extra->resetExtras();
+ // ClearFlagsCube
for (int32 i = 0; i < ARRAYSIZE(_listFlagCube); i++) {
_listFlagCube[i] = 0;
}
@@ -576,7 +577,7 @@ void Scene::changeCube() {
_engine->_sound->stopSamples();
- resetScene();
+ clearScene();
_engine->_actor->loadHeroEntities();
_sceneHero->_controlMode = ControlMode::kManual;
diff --git a/engines/twine/scene/scene.h b/engines/twine/scene/scene.h
index db191260faf..7c1590064ce 100644
--- a/engines/twine/scene/scene.h
+++ b/engines/twine/scene/scene.h
@@ -129,7 +129,7 @@ private:
/** Initialize new scene */
bool initScene(int32 index);
/** Reset scene */
- void resetScene();
+ void clearScene();
// the first actor is the own hero
ActorStruct _sceneActors[NUM_MAX_ACTORS]; // ListObjet
Commit: 9903a2afa250f6c278abb7d757f3d3d0ab8d2fad
https://github.com/scummvm/scummvm/commit/9903a2afa250f6c278abb7d757f3d3d0ab8d2fad
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2024-10-09T11:29:53+02:00
Commit Message:
TWINE: further renaming of variables to match the original sources
Changed paths:
engines/twine/debugger/console.cpp
engines/twine/debugger/debugtools.cpp
engines/twine/holomap_v1.cpp
engines/twine/menu/menuoptions.cpp
engines/twine/renderer/redraw.cpp
engines/twine/scene/buggy.cpp
engines/twine/scene/dart.cpp
engines/twine/scene/gamestate.cpp
engines/twine/scene/grid.cpp
engines/twine/scene/scene.cpp
engines/twine/scene/scene.h
engines/twine/script/script_life.cpp
engines/twine/script/script_move.cpp
engines/twine/twine.cpp
diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index e401df3c6cf..ef4c4b1f075 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -200,7 +200,7 @@ bool TwinEConsole::doSetHolomapTrajectory(int argc, const char **argv) {
debugPrintf("Expected to get a holomap trajectory index as parameter\n");
return true;
}
- _engine->_scene->_holomapTrajectory = atoi(argv[1]);
+ _engine->_scene->_numHolomapTraj = atoi(argv[1]);
_engine->_scene->reloadCurrentScene();
return false;
}
@@ -379,7 +379,7 @@ bool TwinEConsole::doChangeScene(int argc, const char **argv) {
debugPrintf("Scene index out of bounds\n");
return true;
}
- _engine->_scene->_needChangeScene = atoi(argv[1]);
+ _engine->_scene->_newCube = atoi(argv[1]);
_engine->_scene->_heroPositionType = ScenePositionType::kScene;
_engine->_scene->changeCube();
return true;
diff --git a/engines/twine/debugger/debugtools.cpp b/engines/twine/debugger/debugtools.cpp
index 6b2c487be8d..008265e1e6c 100644
--- a/engines/twine/debugger/debugtools.cpp
+++ b/engines/twine/debugger/debugtools.cpp
@@ -237,9 +237,9 @@ static void sceneSelectionCombo(TwinEEngine *engine) {
Common::U32String originalLocationName(engine->_holomap->getLocationName(i), Common::kDos850);
const Common::String locationName = originalLocationName.encode(Common::kUtf8);
Common::String name = Common::String::format("[%03d] %s", i, locationName.c_str());
- if (ImGui::Selectable(name.c_str(), i == engine->_scene->_currentSceneIdx)) {
- scene->_currentSceneIdx = i;
- scene->_needChangeScene = scene->_currentSceneIdx;
+ if (ImGui::Selectable(name.c_str(), i == engine->_scene->_numCube)) {
+ scene->_numCube = i;
+ scene->_newCube = scene->_numCube;
engine->_redraw->_firstTime = true;
}
}
@@ -270,7 +270,7 @@ static void sceneDetailsWindows(TwinEEngine *engine) {
if (ImGui::Begin("Scene", &engine->_debugState->_sceneDetailsWindow)) {
Scene *scene = engine->_scene;
GameState *gameState = engine->_gameState;
- ImGui::Text("Scene: %i", scene->_currentSceneIdx);
+ ImGui::Text("Scene: %i", scene->_numCube);
ImGui::Text("Scene name: %s", gameState->_sceneName);
sceneSelectionCombo(engine);
@@ -342,7 +342,7 @@ static void sceneDetailsWindows(TwinEEngine *engine) {
ImGui::SameLine();
Common::String buttonId = Common::String::format("Activate##activateTrajectory%i", i);
if (ImGui::Button(buttonId.c_str())) {
- scene->_holomapTrajectory = i;
+ scene->_numHolomapTraj = i;
scene->reloadCurrentScene();
}
ImGui::Indent();
@@ -354,8 +354,8 @@ static void sceneDetailsWindows(TwinEEngine *engine) {
ImGui::Unindent();
}
}
- ImGuiEx::InputInt("Previous scene index", &scene->_previousSceneIdx);
- ImGuiEx::InputInt("Need change scene index", &scene->_needChangeScene);
+ ImGuiEx::InputInt("Previous scene index", &scene->_oldcube);
+ ImGuiEx::InputInt("Need change scene index", &scene->_newCube);
ImGui::Text("Climbing flag");
ImGui::SameLine();
diff --git a/engines/twine/holomap_v1.cpp b/engines/twine/holomap_v1.cpp
index 38f79ba59b3..31e8f54459e 100644
--- a/engines/twine/holomap_v1.cpp
+++ b/engines/twine/holomap_v1.cpp
@@ -461,7 +461,7 @@ int32 HolomapV1::searchPrevArrow(int32 num) const {
void HolomapV1::drawListPos(int calpha, int cbeta, int cgamma, bool pos) {
int nbobjets = 0;
DrawListStruct listTri[MAX_HOLO_POS_2];
- const int numCube = _engine->_scene->_currentSceneIdx;
+ const int numCube = _engine->_scene->_numCube;
const int maxHoloPos = _engine->numHoloPos();
for (int n = 0; n < maxHoloPos; ++n) {
if (!(_engine->_gameState->_holomapFlags[n] & HOLOMAP_CAN_FOCUS) && n != numCube) {
@@ -549,7 +549,7 @@ void HolomapV1::holoMap() {
error("Failed to load holomap image");
}
- int32 current = _engine->_scene->_currentSceneIdx;
+ int32 current = _engine->_scene->_numCube;
_engine->_text->drawHolomapLocation(_listHoloPos[current].mess);
int32 otimer = _engine->timerRef;
@@ -575,7 +575,7 @@ void HolomapV1::holoMap() {
if (_engine->_input->toggleActionIfActive(TwinEActionType::HolomapPrev)) {
current = searchPrevArrow(current);
if (current == -1) {
- current = _engine->_scene->_currentSceneIdx;
+ current = _engine->_scene->_numCube;
}
_engine->_text->drawHolomapLocation(_listHoloPos[current].mess);
oalpha = calpha;
@@ -588,7 +588,7 @@ void HolomapV1::holoMap() {
} else if (_engine->_input->toggleActionIfActive(TwinEActionType::HolomapNext)) {
current = searchNextArrow(current);
if (current == -1) {
- current = _engine->_scene->_currentSceneIdx;
+ current = _engine->_scene->_numCube;
}
_engine->_text->drawHolomapLocation(_listHoloPos[current].mess);
oalpha = calpha;
diff --git a/engines/twine/menu/menuoptions.cpp b/engines/twine/menu/menuoptions.cpp
index b057e81efa8..fe070afacf8 100644
--- a/engines/twine/menu/menuoptions.cpp
+++ b/engines/twine/menu/menuoptions.cpp
@@ -102,8 +102,8 @@ void MenuOptions::showCredits() {
const int32 tmpShadowMode = _engine->_cfgfile.ShadowMode;
_engine->_cfgfile.ShadowMode = 0;
_engine->_gameState->initEngineVars();
- _engine->_scene->_currentSceneIdx = LBA1SceneId::Credits_List_Sequence;
- _engine->_scene->_needChangeScene = LBA1SceneId::Credits_List_Sequence;
+ _engine->_scene->_numCube = LBA1SceneId::Credits_List_Sequence;
+ _engine->_scene->_newCube = LBA1SceneId::Credits_List_Sequence;
flagCredits = true;
_engine->gameEngineLoop();
diff --git a/engines/twine/renderer/redraw.cpp b/engines/twine/renderer/redraw.cpp
index 89f438f2091..fed78509490 100644
--- a/engines/twine/renderer/redraw.cpp
+++ b/engines/twine/renderer/redraw.cpp
@@ -880,7 +880,7 @@ void Redraw::redrawEngineActions(bool bgRedraw) { // AffScene
if (bgRedraw) {
_engine->freezeTime(false);
- if (_engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_1 && _engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_2) {
+ if (_engine->_scene->_newCube != SCENE_CEILING_GRID_FADE_1 && _engine->_scene->_newCube != SCENE_CEILING_GRID_FADE_2) {
_engine->_screens->fadeOut(_engine->_screens->_ptrPal);
}
_engine->_screens->clearScreen();
@@ -893,7 +893,7 @@ void Redraw::redrawEngineActions(bool bgRedraw) { // AffScene
updateOverlayTypePosition(tmp_projPosX, tmp_projPosY, _projPosScreen.x, _projPosScreen.y);
_engine->saveFrontBuffer();
- if (_engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_1 && _engine->_scene->_needChangeScene != SCENE_CEILING_GRID_FADE_2) {
+ if (_engine->_scene->_newCube != SCENE_CEILING_GRID_FADE_1 && _engine->_scene->_newCube != SCENE_CEILING_GRID_FADE_2) {
_engine->_screens->fadeIn(_engine->_screens->_ptrPal);
}
} else {
@@ -917,8 +917,8 @@ void Redraw::redrawEngineActions(bool bgRedraw) { // AffScene
_engine->_interface->unsetClip();
// need to be here to fade after drawing all actors in scene
- if (_engine->_scene->_needChangeScene == SCENE_CEILING_GRID_FADE_2) {
- _engine->_scene->_needChangeScene = SCENE_CEILING_GRID_FADE_1;
+ if (_engine->_scene->_newCube == SCENE_CEILING_GRID_FADE_2) {
+ _engine->_scene->_newCube = SCENE_CEILING_GRID_FADE_1;
}
if (bgRedraw) {
diff --git a/engines/twine/scene/buggy.cpp b/engines/twine/scene/buggy.cpp
index b3fa7482c9f..ad46bc93f2f 100644
--- a/engines/twine/scene/buggy.cpp
+++ b/engines/twine/scene/buggy.cpp
@@ -51,7 +51,7 @@ void Buggy::initBuggy(uint8 numobj, uint32 flaginit) {
|| (flaginit && !NumBuggy)) // first initialization
// because the empty buggy cannot be Twinsen
{
- ptb->Cube = _engine->_scene->_currentSceneIdx; // Port-Ludo (Desert)
+ ptb->Cube = _engine->_scene->_numCube; // Port-Ludo (Desert)
ptb->X = ptrobj->_posObj.x;
ptb->Y = ptrobj->_posObj.y;
@@ -66,7 +66,7 @@ void Buggy::initBuggy(uint8 numobj, uint32 flaginit) {
if (_engine->_scene->getActor(OWN_ACTOR_SCENE_INDEX)->_controlMode != ControlMode::kBuggyManual && _engine->_scene->getActor(OWN_ACTOR_SCENE_INDEX)->_controlMode != ControlMode::kBuggy) {
int32 x, y;
- if (_engine->_scene->_currentSceneIdx == ptb->Cube) {
+ if (_engine->_scene->_numCube == ptb->Cube) {
ptrobj->_posObj.x = ptb->X;
ptrobj->_posObj.y = ptb->Y;
ptrobj->_posObj.z = ptb->Z;
@@ -192,7 +192,7 @@ void Buggy::leaveBuggy(HeroBehaviourType behaviour) {
ptb->Y = ptrobj->_posObj.y;
ptb->Z = ptrobj->_posObj.z;
ptb->Beta = ptrobj->_beta;
- ptb->Cube = _engine->_scene->_currentSceneIdx;
+ ptb->Cube = _engine->_scene->_numCube;
// TODO: ObjectClear(ptrobj);
diff --git a/engines/twine/scene/dart.cpp b/engines/twine/scene/dart.cpp
index f8586eb2ebc..7c71c638952 100644
--- a/engines/twine/scene/dart.cpp
+++ b/engines/twine/scene/dart.cpp
@@ -120,7 +120,7 @@ void Dart::CheckDartCol(ActorStruct *ptrobj) {
ptrd = ListDart;
for (n = 0; n < MAX_DARTS; n++, ptrd++) {
- if (ptrd->NumCube == _engine->_scene->_currentSceneIdx && !(ptrd->Flags & DART_TAKEN)) {
+ if (ptrd->NumCube == _engine->_scene->_numCube && !(ptrd->Flags & DART_TAKEN)) {
xt0 = ptrd->PosX + ptrd->XMin;
xt1 = ptrd->PosX + ptrd->XMax;
yt0 = ptrd->PosY + ptrd->YMin;
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index e180972eff6..11d5acf7402 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -116,8 +116,8 @@ void GameState::initEngineVars() {
_engine->_scene->_newHeroPos.y = 24 * SIZE_BRICK_Y;
_engine->_scene->_newHeroPos.z = 16 * SIZE_BRICK_XZ;
- _engine->_scene->_currentSceneIdx = SCENE_CEILING_GRID_FADE_1;
- _engine->_scene->_needChangeScene = LBA1SceneId::Citadel_Island_Prison;
+ _engine->_scene->_numCube = SCENE_CEILING_GRID_FADE_1;
+ _engine->_scene->_newCube = LBA1SceneId::Citadel_Island_Prison;
_engine->_sceneLoopState = SceneLoopState::Continue;
_engine->_scene->_mecaPenguinIdx = -1;
_engine->_menuOptions->flagCredits = false;
@@ -185,7 +185,7 @@ bool GameState::loadGame(Common::SeekableReadStream *file) {
for (uint8 i = 0; i < numGameFlags; ++i) {
setGameFlag(i, file->readByte());
}
- _engine->_scene->_needChangeScene = file->readByte(); // scene index
+ _engine->_scene->_newCube = file->readByte(); // scene index
setChapter(file->readByte());
_engine->_actor->_heroBehaviour = (HeroBehaviourType)file->readByte();
@@ -227,7 +227,7 @@ bool GameState::loadGame(Common::SeekableReadStream *file) {
file->readUint32LE();
}
- _engine->_scene->_currentSceneIdx = SCENE_CEILING_GRID_FADE_1;
+ _engine->_scene->_numCube = SCENE_CEILING_GRID_FADE_1;
_engine->_scene->_heroPositionType = ScenePositionType::kReborn;
return true;
}
@@ -242,7 +242,7 @@ bool GameState::saveGame(Common::WriteStream *file) {
Common::strlcpy(_engine->_menuOptions->_saveGameName, "TwinEngineSave", sizeof(_engine->_menuOptions->_saveGameName));
}
- int32 sceneIdx = _engine->_scene->_currentSceneIdx;
+ int32 sceneIdx = _engine->_scene->_numCube;
if (sceneIdx == Polar_Island_end_scene || sceneIdx == Citadel_Island_end_sequence_1 || sceneIdx == Citadel_Island_end_sequence_2 || sceneIdx == Credits_List_Sequence) {
/* inventoryMagicPoints = 0x50 */
/* herobehaviour = 0 */
diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index fa7d9c9ce0d..8bcc0249b80 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -792,7 +792,7 @@ ShapeType Grid::worldColBrickFull(int32 x, int32 y, int32 z, int32 y2, int32 act
const BlockDataEntry *blockPtr = getAdrBlock(block, 0);
if (blockPtr->brickType == WATER_BRICK) {
// Special check mount funfrock
- if (_engine->_scene->_currentSceneIdx != LBA1SceneId::Polar_Island_on_the_rocky_peak) {
+ if (_engine->_scene->_numCube != LBA1SceneId::Polar_Island_on_the_rocky_peak) {
// full collision
return ShapeType::kSolid;
}
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 25569cd13be..d73f339cd25 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -441,7 +441,7 @@ bool Scene::loadSceneLBA1() {
}
if (_enableEnhancements) {
- switch (_currentSceneIdx) {
+ switch (_numCube) {
case LBA1SceneId::Hamalayi_Mountains_landing_place:
_sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
_sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
@@ -475,7 +475,7 @@ bool Scene::loadSceneLBA1() {
return true;
}
-bool Scene::initScene(int32 index) {
+bool Scene::loadScene(int32 index) {
// load scene from file
if (_engine->isLBA2()) {
index++;
@@ -510,11 +510,11 @@ void Scene::clearScene() {
}
void Scene::reloadCurrentScene() {
- _needChangeScene = _currentSceneIdx;
+ _newCube = _numCube;
}
void Scene::dumpSceneScript(const char *type, int actorIdx, const uint8* script, int size) const {
- Common::String fname = Common::String::format("./dumps/%i-%i.%s", _currentSceneIdx, actorIdx, type);
+ Common::String fname = Common::String::format("./dumps/%i-%i.%s", _numCube, actorIdx, type);
Common::DumpFile out;
if (!out.open(fname.c_str(), true)) {
warning("Scene::dumpSceneScript(): Can not open dump file %s", fname.c_str());
@@ -536,7 +536,7 @@ void Scene::dumpSceneScripts() const {
void Scene::changeCube() {
if (_engine->isLBA1()) {
if (_enableEnhancements) {
- if (_currentSceneIdx == LBA1SceneId::Citadel_Island_Harbor && _needChangeScene == LBA1SceneId::Principal_Island_Harbor) {
+ if (_numCube == LBA1SceneId::Citadel_Island_Harbor && _newCube == LBA1SceneId::Principal_Island_Harbor) {
if (_sceneNumZones >= 15 && _sceneNumTracks >= 8) {
const ZoneStruct *zone = &_sceneZones[15];
const IVec3 &track = _sceneTracks[8];
@@ -551,26 +551,26 @@ void Scene::changeCube() {
}
// change twinsen house destroyed hard-coded
- if (_needChangeScene == LBA1SceneId::Citadel_Island_near_twinsens_house && _engine->_gameState->hasOpenedFunfrocksSafe()) {
- _needChangeScene = LBA1SceneId::Citadel_Island_Twinsens_house_destroyed;
+ if (_newCube == LBA1SceneId::Citadel_Island_near_twinsens_house && _engine->_gameState->hasOpenedFunfrocksSafe()) {
+ _newCube = LBA1SceneId::Citadel_Island_Twinsens_house_destroyed;
}
}
// local backup previous scene
- _previousSceneIdx = _currentSceneIdx;
- _currentSceneIdx = _needChangeScene;
+ _oldcube = _numCube;
+ _numCube = _newCube;
- snprintf(_engine->_gameState->_sceneName, sizeof(_engine->_gameState->_sceneName), "%i %s", _currentSceneIdx, _engine->_holomap->getLocationName(_currentSceneIdx));
- debug(2, "Entering scene %s (came from %i)", _engine->_gameState->_sceneName, _previousSceneIdx);
+ snprintf(_engine->_gameState->_sceneName, sizeof(_engine->_gameState->_sceneName), "%i %s", _numCube, _engine->_holomap->getLocationName(_numCube));
+ debug(2, "Entering scene %s (came from %i)", _engine->_gameState->_sceneName, _oldcube);
if (_engine->isLBA1()) {
- if (_needChangeScene == LBA1SceneId::Polar_Island_end_scene) {
+ if (_newCube == LBA1SceneId::Polar_Island_end_scene) {
_engine->unlockAchievement("LBA_ACH_001");
// if you finish the game in less than 4 hours
if (_engine->getTotalPlayTime() <= 1000 * 60 * 60 * 4) {
_engine->unlockAchievement("LBA_ACH_005");
}
- } else if (_needChangeScene == LBA1SceneId::Brundle_Island_Secret_room) {
+ } else if (_newCube == LBA1SceneId::Brundle_Island_Secret_room) {
_engine->unlockAchievement("LBA_ACH_006");
}
}
@@ -586,23 +586,23 @@ void Scene::changeCube() {
_sceneHero->_offsetTrack = -1;
_sceneHero->_labelTrack = -1;
- initScene(_needChangeScene);
+ loadScene(_newCube);
if (ConfMan.getBool("dump_scripts")) {
dumpSceneScripts();
}
- if (_holomapTrajectory != -1) {
+ if (_numHolomapTraj != -1) {
_engine->testRestoreModeSVGA(false);
- _engine->_holomap->drawHolomapTrajectory(_holomapTrajectory);
- _holomapTrajectory = -1;
+ _engine->_holomap->drawHolomapTrajectory(_numHolomapTraj);
+ _numHolomapTraj = -1;
}
- if (_needChangeScene == LBA1SceneId::Citadel_Island_end_sequence_1 || _needChangeScene == LBA1SceneId::Citadel_Island_end_sequence_2) {
+ if (_newCube == LBA1SceneId::Citadel_Island_end_sequence_1 || _newCube == LBA1SceneId::Citadel_Island_end_sequence_2) {
_sceneTextBank = TextBankId::Tippet_Island;
}
_engine->_text->initSceneTextBank();
- _engine->_grid->initGrid(_needChangeScene);
+ _engine->_grid->initGrid(_newCube);
if (_heroPositionType == ScenePositionType::kZone) {
_newHeroPos = _zoneHeroPos;
@@ -615,7 +615,7 @@ void Scene::changeCube() {
_engine->_renderer->setLightVector(_alphaLight, _betaLight, LBAAngles::ANGLE_0);
- if (_previousSceneIdx != SCENE_CEILING_GRID_FADE_1 && _previousSceneIdx != _needChangeScene) {
+ if (_oldcube != SCENE_CEILING_GRID_FADE_1 && _oldcube != _newCube) {
_engine->_actor->_previousHeroBehaviour = _engine->_actor->_heroBehaviour;
_engine->_actor->_previousHeroAngle = _sceneHero->_beta;
_engine->autoSave();
@@ -640,13 +640,13 @@ void Scene::changeCube() {
_engine->_screens->_flagFade = false;
_engine->_renderer->setLightVector(_alphaLight, _betaLight, LBAAngles::ANGLE_0);
- _needChangeScene = SCENE_CEILING_GRID_FADE_1;
+ _newCube = SCENE_CEILING_GRID_FADE_1;
_enableGridTileRendering = true;
_heroPositionType = ScenePositionType::kNoPosition;
_zoneHeroPos = IVec3();
_sampleAmbienceTime = 0;
- debug(2, "Scene %i music track id: %i", _currentSceneIdx, _cubeJingle);
+ debug(2, "Scene %i music track id: %i", _numCube, _cubeJingle);
if (_cubeJingle != 255) {
_engine->_music->playMusic(_cubeJingle);
}
@@ -683,7 +683,7 @@ void Scene::initSceneVars() {
void Scene::playSceneMusic() {
if (_engine->isLBA1()) {
- if (_currentSceneIdx == LBA1SceneId::Tippet_Island_Twinsun_Cafe && _engine->_gameState->hasArrivedHamalayi()) {
+ if (_numCube == LBA1SceneId::Tippet_Island_Twinsun_Cafe && _engine->_gameState->hasArrivedHamalayi()) {
if (_engine->isCDROM()) {
_engine->_music->playCdTrack(8);
} else {
@@ -775,7 +775,7 @@ void Scene::checkZoneSce(int32 actorIdx) {
error("lba2 zone types not yet implemented");
case ZoneType::kCube:
if (IS_HERO(actorIdx) && actor->_lifePoint > 0) {
- _needChangeScene = zone->num;
+ _newCube = zone->num;
_zoneHeroPos.x = actor->_posObj.x - zone->mins.x + zone->infoData.ChangeScene.x;
_zoneHeroPos.y = actor->_posObj.y - zone->mins.y + zone->infoData.ChangeScene.y;
_zoneHeroPos.z = actor->_posObj.z - zone->mins.z + zone->infoData.ChangeScene.z;
diff --git a/engines/twine/scene/scene.h b/engines/twine/scene/scene.h
index 7c1590064ce..465a5252f9e 100644
--- a/engines/twine/scene/scene.h
+++ b/engines/twine/scene/scene.h
@@ -127,7 +127,7 @@ private:
bool loadSceneLBA2();
/** Initialize new scene */
- bool initScene(int32 index);
+ bool loadScene(int32 index);
/** Reset scene */
void clearScene();
@@ -163,13 +163,13 @@ public:
Scene(TwinEEngine *engine) : _engine(engine) {}
~Scene();
- int32 _needChangeScene = LBA1SceneId::Citadel_Island_Prison;
- int32 _currentSceneIdx = LBA1SceneId::Citadel_Island_Prison; // NumCube
- int32 _previousSceneIdx = LBA1SceneId::Citadel_Island_Prison;
+ int32 _newCube = LBA1SceneId::Citadel_Island_Prison;
+ int32 _numCube = LBA1SceneId::Citadel_Island_Prison; // NumCube
+ int32 _oldcube = LBA1SceneId::Citadel_Island_Prison;
int32 _planet = -1;
- int32 _holomapTrajectory = -1;
+ int32 _numHolomapTraj = -1;
TextBankId _sceneTextBank = TextBankId::None;
int32 _alphaLight = 0;
diff --git a/engines/twine/script/script_life.cpp b/engines/twine/script/script_life.cpp
index c8408401c33..322939ca282 100644
--- a/engines/twine/script/script_life.cpp
+++ b/engines/twine/script/script_life.cpp
@@ -922,7 +922,7 @@ int32 ScriptLife::lMESSAGE(TwinEEngine *engine, LifeScriptContext &ctx) {
engine->_text->drawTextProgressive(textIdx);
if (engine->isLBA1()) {
- if (engine->_scene->_currentSceneIdx == LBA1SceneId::Principal_Island_Library && engine->_scene->_talkingActor == 8 && textIdx == TextId::kStarWarsFanBoy) {
+ if (engine->_scene->_numCube == LBA1SceneId::Principal_Island_Library && engine->_scene->_talkingActor == 8 && textIdx == TextId::kStarWarsFanBoy) {
engine->unlockAchievement("LBA_ACH_008");
}
}
@@ -1314,7 +1314,7 @@ int32 ScriptLife::lGIVE_BONUS(TwinEEngine *engine, LifeScriptContext &ctx) {
int32 ScriptLife::lCHANGE_CUBE(TwinEEngine *engine, LifeScriptContext &ctx) {
const int32 sceneIdx = ctx.stream.readByte();
debugC(3, kDebugLevels::kDebugScripts, "LIFE::CHANGE_CUBE(%i)", (int)sceneIdx);
- engine->_scene->_needChangeScene = sceneIdx;
+ engine->_scene->_newCube = sceneIdx;
engine->_scene->_heroPositionType = ScenePositionType::kScene;
return 0;
}
@@ -1415,7 +1415,7 @@ int32 ScriptLife::lPOS_POINT(TwinEEngine *engine, LifeScriptContext &ctx) {
const int32 trackIdx = ctx.stream.readByte();
debugC(3, kDebugLevels::kDebugScripts, "LIFE::POS_POINT(%i)", (int)trackIdx);
if (engine->_scene->_enableEnhancements) {
- if (IS_HERO(ctx.actorIdx) && engine->_scene->_currentSceneIdx == LBA1SceneId::Citadel_Island_Harbor && trackIdx == 8) {
+ if (IS_HERO(ctx.actorIdx) && engine->_scene->_numCube == LBA1SceneId::Citadel_Island_Harbor && trackIdx == 8) {
ctx.stream.rewind(2);
ctx.stream.writeByte(0x34); // CHANGE_CUBE
ctx.stream.writeByte(LBA1SceneId::Principal_Island_Harbor);
@@ -1935,8 +1935,8 @@ int32 ScriptLife::lANIM_SET(TwinEEngine *engine, LifeScriptContext &ctx) {
* @note Opcode @c 0x60
*/
int32 ScriptLife::lHOLOMAP_TRAJ(TwinEEngine *engine, LifeScriptContext &ctx) {
- engine->_scene->_holomapTrajectory = ctx.stream.readByte();
- debugC(3, kDebugLevels::kDebugScripts, "LIFE::HOLOMAP_TRAJ(%i)", (int)engine->_scene->_holomapTrajectory);
+ engine->_scene->_numHolomapTraj = ctx.stream.readByte();
+ debugC(3, kDebugLevels::kDebugScripts, "LIFE::HOLOMAP_TRAJ(%i)", (int)engine->_scene->_numHolomapTraj);
return 0;
}
@@ -1963,7 +1963,7 @@ int32 ScriptLife::lTHE_END(TwinEEngine *engine, LifeScriptContext &ctx) {
engine->_scene->_sceneHero->setLife(engine->getMaxLife());
engine->_gameState->setMagicPoints(80);
// TODO: lba2 has a different ending
- engine->_scene->_currentSceneIdx = LBA1SceneId::Polar_Island_Final_Battle;
+ engine->_scene->_numCube = LBA1SceneId::Polar_Island_Final_Battle;
engine->_actor->_heroBehaviour = engine->_actor->_previousHeroBehaviour;
engine->_scene->_newHeroPos.x = -1;
engine->_scene->_sceneHero->_beta = engine->_actor->_previousHeroAngle;
diff --git a/engines/twine/script/script_move.cpp b/engines/twine/script/script_move.cpp
index 00a45a257ea..314d763bd96 100644
--- a/engines/twine/script/script_move.cpp
+++ b/engines/twine/script/script_move.cpp
@@ -185,7 +185,7 @@ int32 ScriptMove::mLABEL(TwinEEngine *engine, MoveScriptContext &ctx) {
ctx.actor->_labelTrack = ctx.stream.readByte();
ctx.actor->_offsetLabelTrack = ctx.stream.pos() - 2;
debugC(3, kDebugLevels::kDebugScripts, "MOVE::LABEL(%i)", (int)ctx.actor->_labelTrack);
- if (engine->_scene->_currentSceneIdx == LBA1SceneId::Proxima_Island_Museum && ctx.actor->_actorIdx == 2 &&
+ if (engine->_scene->_numCube == LBA1SceneId::Proxima_Island_Museum && ctx.actor->_actorIdx == 2 &&
(ctx.actor->_labelTrack == 0 || ctx.actor->_labelTrack == 1)) {
engine->unlockAchievement("LBA_ACH_004");
}
@@ -414,7 +414,7 @@ int32 ScriptMove::mOPEN_GENERIC(TwinEEngine *engine, MoveScriptContext &ctx, int
ctx.actor->_speed = 1000;
engine->_movements->setActorAngle(LBAAngles::ANGLE_0, LBAAngles::ANGLE_351, LBAAngles::ANGLE_17, &ctx.actor->realAngle);
}
- if (engine->_scene->_currentSceneIdx == LBA1SceneId::Proxima_Island_Museum && ctx.actor->_actorIdx == 16) {
+ if (engine->_scene->_numCube == LBA1SceneId::Proxima_Island_Museum && ctx.actor->_actorIdx == 16) {
engine->unlockAchievement("LBA_ACH_009");
}
return 0;
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index ac2f6227d32..97a057c6110 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -330,7 +330,7 @@ Common::Error TwinEEngine::run() {
_text->normalWinDial();
_text->_flagMessageShade = true;
_text->_renderTextTriangle = false;
- _scene->_needChangeScene = sceneIndex;
+ _scene->_newCube = sceneIndex;
_scene->_heroPositionType = ScenePositionType::kScene;
_state = EngineState::GameLoop;
}
@@ -866,10 +866,10 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
_queuedFlaMovie.clear();
}
- if (_scene->_needChangeScene > -1) {
+ if (_scene->_newCube > -1) {
if (!isMod() && isDemo() && isLBA1()) {
// the demo only has these scenes
- if (_scene->_needChangeScene != LBA1SceneId::Citadel_Island_Prison && _scene->_needChangeScene != LBA1SceneId::Citadel_Island_outside_the_citadel && _scene->_needChangeScene != LBA1SceneId::Citadel_Island_near_the_tavern) {
+ if (_scene->_newCube != LBA1SceneId::Citadel_Island_Prison && _scene->_newCube != LBA1SceneId::Citadel_Island_outside_the_citadel && _scene->_newCube != LBA1SceneId::Citadel_Island_near_the_tavern) {
_music->playMidiFile(6);
return true;
}
@@ -1131,7 +1131,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
if (_gameState->_inventoryNumLeafs > 0) { // use clover leaf automaticaly
_scene->_sceneHero->_posObj = _scene->_newHeroPos;
- _scene->_needChangeScene = _scene->_currentSceneIdx;
+ _scene->_newCube = _scene->_numCube;
_gameState->setMaxMagicPoints();
_grid->centerOnActor(_scene->_sceneHero);
@@ -1151,11 +1151,11 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
actor->_beta = _actor->_previousHeroAngle;
actor->setLife(getMaxLife());
- if (_scene->_previousSceneIdx != _scene->_currentSceneIdx) {
+ if (_scene->_oldcube != _scene->_numCube) {
_scene->_newHeroPos.x = -1;
_scene->_newHeroPos.y = -1;
_scene->_newHeroPos.z = -1;
- _scene->_currentSceneIdx = _scene->_previousSceneIdx;
+ _scene->_numCube = _scene->_oldcube;
_scene->stopRunningGame();
}
@@ -1173,7 +1173,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
}
}
- if (_scene->_needChangeScene != -1) {
+ if (_scene->_newCube != -1) {
return false;
}
}
@@ -1189,7 +1189,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
_scene->_sceneHero->_staticFlags.bIsInvisible = 0;
}
- _scene->_needChangeScene = SCENE_CEILING_GRID_FADE_1;
+ _scene->_newCube = SCENE_CEILING_GRID_FADE_1;
_redraw->_firstTime = false;
return false;
Commit: 3417916cdd42bb3dbfe2060afe5bb2e2c9b21c40
https://github.com/scummvm/scummvm/commit/3417916cdd42bb3dbfe2060afe5bb2e2c9b21c40
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2024-10-09T11:48:19+02:00
Commit Message:
TWINE: extended debugger to show the current active palette
Changed paths:
engines/twine/debugger/debug_state.h
engines/twine/debugger/debugtools.cpp
diff --git a/engines/twine/debugger/debug_state.h b/engines/twine/debugger/debug_state.h
index 3ba45478130..512876a2d3c 100644
--- a/engines/twine/debugger/debug_state.h
+++ b/engines/twine/debugger/debug_state.h
@@ -89,6 +89,7 @@ public:
bool _sceneDetailsWindow = false;
bool _actorDetailsWindow = true;
bool _sceneFlagsWindow = false;
+ bool _paletteWindow = false;
bool _useFreeCamera = false;
bool _disableGridRendering = false;
diff --git a/engines/twine/debugger/debugtools.cpp b/engines/twine/debugger/debugtools.cpp
index 008265e1e6c..ddba9115b2c 100644
--- a/engines/twine/debugger/debugtools.cpp
+++ b/engines/twine/debugger/debugtools.cpp
@@ -26,6 +26,7 @@
#include "common/str-enc.h"
#include "common/str.h"
#include "common/util.h"
+#include "graphics/palette.h"
#include "twine/debugger/debug_state.h"
#include "twine/debugger/dt-internal.h"
#include "twine/holomap.h"
@@ -166,6 +167,58 @@ static void holomapFlagsWindow(TwinEEngine *engine) {
ImGui::End();
}
+static void addColor(float startingPosX, uint index, const Graphics::Palette &palette) {
+ uint8 r, g, b;
+ palette.get(index, r, g, b);
+ const float borderWidth = 1.0f;
+ ImDrawList *drawList = ImGui::GetWindowDrawList();
+ const ImDrawListFlags backupFlags = drawList->Flags;
+ drawList->Flags &= ~ImDrawListFlags_AntiAliasedLines;
+ const ImVec2 available = ImGui::GetContentRegionAvail();
+ const float contentRegionWidth = available.x + ImGui::GetCursorPosX();
+ const ImVec2 colorButtonSize(ImGui::GetFrameHeight(), ImGui::GetFrameHeight());
+ ImVec2 globalCursorPos = ImGui::GetCursorScreenPos();
+ const ImVec2 &windowPos = ImGui::GetWindowPos();
+ const ImVec2 v1(globalCursorPos.x + borderWidth, globalCursorPos.y + borderWidth);
+ const ImVec2 v2(globalCursorPos.x + colorButtonSize.x, globalCursorPos.y + colorButtonSize.y);
+ drawList->AddRectFilled(v1, v2, IM_COL32(r, g, b, 255));
+
+ ImGui::PushID((int)index);
+ if (ImGui::InvisibleButton("", colorButtonSize)) {
+ }
+ ImGui::SetItemTooltip("Index: %i, R(%d), G(%d), B(%d)", (int)index, (int)r, (int)g, (int)b);
+ ImGui::PopID();
+
+ globalCursorPos.x += colorButtonSize.x;
+ if (globalCursorPos.x > windowPos.x + contentRegionWidth - colorButtonSize.x) {
+ globalCursorPos.x = startingPosX;
+ globalCursorPos.y += colorButtonSize.y;
+ }
+ ImGui::SetCursorScreenPos(globalCursorPos);
+ // restore the draw list flags from above
+ drawList->Flags = backupFlags;
+}
+
+static void paletteWindow(TwinEEngine *engine) {
+ if (!engine->_debugState->_paletteWindow) {
+ return;
+ }
+
+ const ImVec2 available = ImGui::GetContentRegionAvail();
+ const float contentRegionHeight = available.y + ImGui::GetCursorPosY();
+ const ImVec2 windowSize(10.0f * ImGui::GetFrameHeight(), contentRegionHeight);
+ ImGui::SetNextWindowSize(windowSize, ImGuiCond_FirstUseEver);
+
+ if (ImGui::Begin("Palette", &engine->_debugState->_paletteWindow)) {
+ const Graphics::Palette &palette = engine->_frontVideoBuffer.getPalette();
+ const ImVec2 &pos = ImGui::GetCursorScreenPos();
+ for (uint palettePanelIdx = 0; palettePanelIdx < palette.size(); ++palettePanelIdx) {
+ addColor(pos.x, palettePanelIdx, palette);
+ }
+ }
+ ImGui::End();
+}
+
static void sceneFlagsWindow(TwinEEngine *engine) {
if (!engine->_debugState->_sceneFlagsWindow) {
return;
@@ -732,6 +785,9 @@ static void debuggerMenu(TwinEEngine *engine) {
actor->_posObj.y += 1000;
}
if (ImGui::BeginMenu("Palettes")) {
+ if (ImGui::MenuItem("Show palette")) {
+ engine->_debugState->_paletteWindow = true;
+ }
if (ImGui::MenuItem("Dark palette")) {
engine->_screens->setDarkPal();
}
@@ -802,6 +858,7 @@ void onImGuiRender() {
menuTextsWindow(engine);
holomapFlagsWindow(engine);
gameFlagsWindow(engine);
+ paletteWindow(engine);
sceneFlagsWindow(engine);
if (engine->_debugState->_openPopup) {
More information about the Scummvm-git-logs
mailing list