[Scummvm-git-logs] scummvm master -> 961407346d46ef8942daa7b97abcb7128af0eece
mgerhardy
martin.gerhardy at gmail.com
Thu Feb 11 16:05:14 UTC 2021
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:
21aaf4ce43 TWINE: scenery zoom stuff
0f120fe788 TWINE: implemented scenery zoom
6b6048aabb TWINE: fixed pause string in scenery view
15832bdb09 TWINE: exit scenery view in some situations
961407346d TWINE: fixed persisting of settings
Commit: 21aaf4ce4399e4695a8a1d95933a955d4df708bf
https://github.com/scummvm/scummvm/commit/21aaf4ce4399e4695a8a1d95933a955d4df708bf
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-11T17:04:59+01:00
Commit Message:
TWINE: scenery zoom stuff
Changed paths:
engines/twine/debugger/console.cpp
engines/twine/debugger/console.h
engines/twine/menu/menu.cpp
engines/twine/renderer/redraw.cpp
engines/twine/renderer/redraw.h
engines/twine/scene/gamestate.cpp
engines/twine/script/script_life_v1.cpp
engines/twine/text.h
engines/twine/twine.cpp
engines/twine/twine.h
diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index 1ffd9db88c..032b2091b5 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -26,6 +26,7 @@
#include "twine/debugger/debug_grid.h"
#include "twine/debugger/debug_scene.h"
#include "twine/holomap.h"
+#include "twine/renderer/redraw.h"
#include "twine/resources/hqr.h"
#include "twine/scene/gamestate.h"
#include "twine/scene/scene.h"
@@ -42,6 +43,7 @@ TwinEConsole::TwinEConsole(TwinEEngine *engine) : _engine(engine), GUI::Debugger
registerCmd("give_kashes", WRAP_METHOD(TwinEConsole, doGiveKashes));
registerCmd("play_video", WRAP_METHOD(TwinEConsole, doPlayVideo));
registerCmd("change_scene", WRAP_METHOD(TwinEConsole, doChangeScene));
+ registerCmd("toggle_scenery_view", WRAP_METHOD(TwinEConsole, doToggleSceneryView));
registerCmd("magic_points", WRAP_METHOD(TwinEConsole, doAddMagicPoints));
registerCmd("dumpfile", WRAP_METHOD(TwinEConsole, doDumpFile));
registerCmd("list_menutext", WRAP_METHOD(TwinEConsole, doListMenuText));
@@ -86,6 +88,11 @@ bool TwinEConsole::doToggleClipRendering(int argc, const char **argv) {
return true;
}
+bool TwinEConsole::doToggleSceneryView(int argc, const char **argv) {
+ TOGGLE_DEBUG(_engine->_redraw->inSceneryView, "scenery view\n")
+ return true;
+}
+
bool TwinEConsole::doAddMagicPoints(int argc, const char **argv) {
if (argc < 2) {
debugPrintf("Usage: specify the magic points\n");
diff --git a/engines/twine/debugger/console.h b/engines/twine/debugger/console.h
index 4ffdc4903c..9ad3d5a0b9 100644
--- a/engines/twine/debugger/console.h
+++ b/engines/twine/debugger/console.h
@@ -34,6 +34,7 @@ class TwinEConsole : public GUI::Debugger {
private:
TwinEEngine *_engine;
+ bool doToggleSceneryView(int argc, const char **argv);
bool doPlayVideo(int argc, const char **argv);
bool doPrintGameFlag(int argc, const char **argv);
bool doPrintInventoryFlag(int argc, const char **argv);
diff --git a/engines/twine/menu/menu.cpp b/engines/twine/menu/menu.cpp
index 55ce625b3b..f9fe538ceb 100644
--- a/engines/twine/menu/menu.cpp
+++ b/engines/twine/menu/menu.cpp
@@ -118,7 +118,7 @@ static MenuSettings createAdvancedOptionsMenu() {
settings.addButton(TextId::kBehaviourAggressiveManual, MenuButtonTypes::kAggressiveMode);
settings.addButton(TextId::kDetailsPolygonsHigh, MenuButtonTypes::kPolygonDetails);
settings.addButton(TextId::kDetailsShadowHigh, MenuButtonTypes::kShadowSettings);
- settings.addButton(TextId::kScenaryZoomOn, MenuButtonTypes::kSceneryZoom);
+ settings.addButton(TextId::kSceneryZoomOn, MenuButtonTypes::kSceneryZoom);
return settings;
}
@@ -353,9 +353,9 @@ int16 Menu::drawButtons(MenuSettings *menuSettings, bool hover) {
break;
case MenuButtonTypes::kSceneryZoom:
if (_engine->cfgfile.SceZoom) {
- menuSettings->setButtonTextId(i, TextId::kScenaryZoomOn);
+ menuSettings->setButtonTextId(i, TextId::kSceneryZoomOn);
} else {
- menuSettings->setButtonTextId(i, TextId::kNoScenaryZoom);
+ menuSettings->setButtonTextId(i, TextId::kNoSceneryZoom);
}
break;
default:
@@ -592,7 +592,7 @@ int32 Menu::advoptionsMenu() {
case TextId::kBehaviourAggressiveManual:
case TextId::kDetailsPolygonsHigh:
case TextId::kDetailsShadowHigh:
- case TextId::kScenaryZoomOn:
+ case TextId::kSceneryZoomOn:
default:
warning("Unknown menu button handled");
break;
diff --git a/engines/twine/renderer/redraw.cpp b/engines/twine/renderer/redraw.cpp
index 2ab72a0951..3a171eaa47 100644
--- a/engines/twine/renderer/redraw.cpp
+++ b/engines/twine/renderer/redraw.cpp
@@ -260,6 +260,10 @@ int32 Redraw::fillActorDrawingList(bool bgRedraw) {
drawList[drawListPos].offset = 2;
drawListPos++;
}
+ if (inSceneryView && modelActorPos == _engine->_scene->currentlyFollowedActor) {
+ _sceneryViewX = _engine->_renderer->projPosX;
+ _sceneryViewY = _engine->_renderer->projPosY;
+ }
}
}
return drawListPos;
@@ -732,7 +736,7 @@ void Redraw::redrawEngineActions(bool bgRedraw) {
_engine->_screens->lockPalette = false;
}
- if (_engine->zoomScreen) {
+ if (_engine->_redraw->inSceneryView) {
zoomScreenScale();
}
}
diff --git a/engines/twine/renderer/redraw.h b/engines/twine/renderer/redraw.h
index e5707c74ba..5daf7e830b 100644
--- a/engines/twine/renderer/redraw.h
+++ b/engines/twine/renderer/redraw.h
@@ -106,7 +106,7 @@ public:
/** Auxiliar object render position on screen */
Common::Rect renderRect { 0, 0, 0, 0 };
- bool drawInGameTransBox = false;
+ bool inSceneryView = false;
/** Request background redraw */
bool reqBgRedraw = false;
@@ -152,8 +152,6 @@ public:
/** Draw dialogue sprite image */
void drawBubble(int32 actorIdx);
- void zoomScreenScale();
-
/**
* Sort drawing list struct ordered as the first objects appear in the top left corner of the screen
* @param list drawing list variable which contains information of the drawing objects
@@ -161,6 +159,11 @@ public:
*/
void sortDrawingList(DrawListStruct *list, int32 listSize);
+ int _sceneryViewX = 0;
+ int _sceneryViewY = 0;
+
+ void zoomScreenScale();
+
/** Draw list array to grab the necessary */
DrawListStruct drawList[150];
};
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 4d9e083ab1..7fbcd151bf 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -457,7 +457,7 @@ void GameState::processGameoverAnimation() {
_engine->_redraw->redrawEngineActions(true);
_engine->_scene->sceneHero->staticFlags.bIsHidden = 0;
- // TODO: drawInGameTransBox
+ // TODO: inSceneryView
_engine->setPalette(_engine->_screens->paletteRGBA);
_engine->_screens->copyScreen(_engine->frontVideoBuffer, _engine->workVideoBuffer);
uint8 *gameOverPtr = nullptr;
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index 13e24e1257..9af9f08db6 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -1098,16 +1098,16 @@ static int32 lINVISIBLE(TwinEEngine *engine, LifeScriptContext &ctx) {
* @note Opcode @c 0x39
*/
static int32 lZOOM(TwinEEngine *engine, LifeScriptContext &ctx) {
- engine->zoomScreen = ctx.stream.readByte();
+ int zoomScreen = ctx.stream.readByte();
- if (engine->zoomScreen && !engine->_redraw->drawInGameTransBox && engine->cfgfile.SceZoom) {
+ if (zoomScreen && !engine->_redraw->inSceneryView && engine->cfgfile.SceZoom) {
engine->_screens->fadeToBlack(engine->_screens->mainPaletteRGBA);
- engine->initMCGA();
+ engine->initSceneryView();
engine->_screens->setBackPal();
engine->_screens->lockPalette = true;
- } else if (!engine->zoomScreen && engine->_redraw->drawInGameTransBox) {
+ } else if (!zoomScreen && engine->_redraw->inSceneryView) {
engine->_screens->fadeToBlack(engine->_screens->mainPaletteRGBA);
- engine->initSVGA();
+ engine->exitSceneryView();
engine->_screens->setBackPal();
engine->_screens->lockPalette = true;
engine->_redraw->reqBgRedraw = true;
diff --git a/engines/twine/text.h b/engines/twine/text.h
index bf35887da4..dfff94d210 100644
--- a/engines/twine/text.h
+++ b/engines/twine/text.h
@@ -78,7 +78,7 @@ enum _TextId {
kVolumeSettings = 30,
kDetailsPolygonsHigh = 31,
kDetailsShadowHigh = 32,
- //kScenaryZoomOn = 33, // duplicate with 133 - TODO check if this is the same in all languages
+ //kSceneryZoomOn = 33, // duplicate with 133 - TODO check if this is the same in all languages
kCreateNewPlayer = 40,
kCreateSaveGame = 41,
kEnterYourName = 42,
@@ -93,7 +93,7 @@ enum _TextId {
kRemoveProtoPack = 105,
kDetailsPolygonsMiddle = 131,
kShadowsFigures = 132,
- kScenaryZoomOn = 133,
+ kSceneryZoomOn = 133,
kIntroText1 = 150,
kIntroText2 = 151,
kIntroText3 = 152,
@@ -101,7 +101,7 @@ enum _TextId {
kBonusList = 162,
kDetailsPolygonsLow = 231,
kShadowsDisabled = 232,
- kNoScenaryZoom = 233
+ kNoSceneryZoom = 233
};
}
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 482611f0b3..39c7d34a54 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -499,12 +499,12 @@ void TwinEEngine::initEngine() {
_screens->loadMenuImage();
}
-void TwinEEngine::initMCGA() {
- _redraw->drawInGameTransBox = true;
+void TwinEEngine::initSceneryView() {
+ _redraw->inSceneryView = true;
}
-void TwinEEngine::initSVGA() {
- _redraw->drawInGameTransBox = false;
+void TwinEEngine::exitSceneryView() {
+ _redraw->inSceneryView = false;
}
void TwinEEngine::initAll() {
@@ -520,7 +520,7 @@ void TwinEEngine::initAll() {
_resources->initResources();
- initSVGA();
+ exitSceneryView();
}
int TwinEEngine::getRandomNumber(uint max) {
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index 0aa215c40c..ec843c1204 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -264,8 +264,8 @@ public:
int height() const;
Common::Rect rect() const;
- void initMCGA();
- void initSVGA();
+ void initSceneryView();
+ void exitSceneryView();
void queueMovie(const char *filename);
@@ -293,8 +293,6 @@ public:
/** Disable screen recenter */
bool disableScreenRecenter = false;
- int32 zoomScreen = 0;
-
void freezeTime();
void unfreezeTime();
Commit: 0f120fe7888b61eea59e270f63d7241da535cb4d
https://github.com/scummvm/scummvm/commit/0f120fe7888b61eea59e270f63d7241da535cb4d
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-11T17:04:59+01:00
Commit Message:
TWINE: implemented scenery zoom
Changed paths:
engines/twine/renderer/redraw.cpp
diff --git a/engines/twine/renderer/redraw.cpp b/engines/twine/renderer/redraw.cpp
index 3a171eaa47..100e2d0402 100644
--- a/engines/twine/renderer/redraw.cpp
+++ b/engines/twine/renderer/redraw.cpp
@@ -22,6 +22,7 @@
#include "twine/renderer/redraw.h"
#include "common/memstream.h"
+#include "common/system.h"
#include "common/textconsole.h"
#include "graphics/surface.h"
#include "twine/audio/sound.h"
@@ -778,24 +779,16 @@ void Redraw::drawBubble(int32 actorIdx) {
}
void Redraw::zoomScreenScale() {
-#if 0
- // TODO: this is broken
- Graphics::ManagedSurface zoomWorkVideoBuffer;
- zoomWorkVideoBuffer.copyFrom(_engine->workVideoBuffer);
-
- const uint8 *src = (const uint8 *)zoomWorkVideoBuffer.getPixels();
- uint8 *dest = (uint8 *)_engine->workVideoBuffer.getPixels();
- for (int h = 0; h < zoomWorkVideoBuffer.h; h++) {
- for (int w = 0; w < zoomWorkVideoBuffer.w; w++) {
- *dest++ = *src;
- *dest++ = *src++;
- }
- //memcpy(dest, dest - _engine->width(), _engine->width());
- //dest += _engine->width();
- }
- _engine->_screens->copyScreen(_engine->workVideoBuffer, _engine->frontVideoBuffer);
- zoomWorkVideoBuffer.free();
-#endif
+ Graphics::ManagedSurface zoomWorkVideoBuffer(_engine->workVideoBuffer);
+ const int maxW = zoomWorkVideoBuffer.w;
+ const int maxH = zoomWorkVideoBuffer.h;
+ const int left = CLIP<int>(_sceneryViewX - maxW / 4, 0, maxW / 2);
+ const int top = CLIP<int>(_sceneryViewY - maxH / 4, 0, maxH / 2);
+ const Common::Rect srcRect(left, top, left + maxW / 2, top + maxH / 2);
+ const Common::Rect& destRect = zoomWorkVideoBuffer.getBounds();
+ zoomWorkVideoBuffer.transBlitFrom(_engine->frontVideoBuffer, srcRect, destRect);
+ g_system->copyRectToScreen(zoomWorkVideoBuffer.getPixels(), zoomWorkVideoBuffer.pitch, 0, 0, zoomWorkVideoBuffer.w, zoomWorkVideoBuffer.h);
+ g_system->updateScreen();
}
} // namespace TwinE
Commit: 6b6048aabb3a0295968577d6c860a9c321aefedf
https://github.com/scummvm/scummvm/commit/6b6048aabb3a0295968577d6c860a9c321aefedf
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-11T17:04:59+01:00
Commit Message:
TWINE: fixed pause string in scenery view
Changed paths:
engines/twine/text.cpp
engines/twine/text.h
engines/twine/twine.cpp
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index 2544273afa..a582209bb1 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -574,7 +574,7 @@ ProgressiveTextState Text::updateProgressiveText() {
// reached a new line that is about get faded in
_dialTextBoxCurrentLine++;
- _dialTextYPos += _lineHeight;
+ _dialTextYPos += lineHeight;
_dialTextXPos = _dialTextBox.left + PADDING;
if (_dialTextBoxCurrentLine >= _dialTextBoxLines) {
@@ -763,14 +763,14 @@ void Text::textClipFull() {
_dialTextBox.right = _engine->width() - margin;
_dialTextBox.bottom = _engine->height() - margin;
- _dialTextBoxLines = (int32)(_dialTextBox.height() / _lineHeight) - 1;
+ _dialTextBoxLines = (int32)(_dialTextBox.height() / lineHeight) - 1;
_dialTextBoxMaxX = _engine->width() - 2 * margin - 2 * PADDING;
}
void Text::textClipSmall() {
const int32 margin = 16;
_dialTextBoxLines = 3;
- const int32 textHeight = _dialTextBoxLines * _lineHeight;
+ const int32 textHeight = _dialTextBoxLines * lineHeight;
_dialTextBox.left = margin;
_dialTextBox.top = _engine->height() - textHeight - margin - PADDING;
diff --git a/engines/twine/text.h b/engines/twine/text.h
index dfff94d210..e9b28b3fd5 100644
--- a/engines/twine/text.h
+++ b/engines/twine/text.h
@@ -209,7 +209,6 @@ private:
char *_currDialTextPtr = nullptr;
/** Current dialogue text size */
int32 _currDialTextSize = 0;
- static const int32 _lineHeight = 38;
char currMenuTextBuffer[256];
int32 currMenuTextBank = TextBankId::None;
@@ -245,6 +244,8 @@ public:
Text(TwinEEngine *engine);
~Text();
+ static const int32 lineHeight = 38;
+
// TODO: refactor all this variables and related functions
bool _hasValidTextHandle = false;
// renders a triangle if the next side of the text can get activated
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 39c7d34a54..623b3e0605 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -831,9 +831,17 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
// Process Pause
if (_input->toggleActionIfActive(TwinEActionType::Pause)) {
freezeTime();
+ const char *PauseString = "Pause";
_text->setFontColor(COLOR_WHITE);
- _text->drawText(5, 446, "Pause"); // no key for pause in Text Bank
- copyBlockPhys(5, 446, 100, 479);
+ if (_redraw->inSceneryView) {
+ _text->drawText(_redraw->_sceneryViewX + 5, _redraw->_sceneryViewY, PauseString);
+ _redraw->zoomScreenScale();
+ } else {
+ const int width = _text->getTextSize(PauseString);
+ const int bottom = height() - _text->lineHeight;
+ _text->drawText(5, bottom, PauseString);
+ copyBlockPhys(5, bottom, 5 + width, bottom + _text->lineHeight);
+ }
do {
FrameMarker frameWait;
ScopedFPS scopedFps;
Commit: 15832bdb09cade98fe19e4ffbe2b3dcef4ea23f4
https://github.com/scummvm/scummvm/commit/15832bdb09cade98fe19e4ffbe2b3dcef4ea23f4
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-11T17:04:59+01:00
Commit Message:
TWINE: exit scenery view in some situations
Changed paths:
engines/twine/holomap.cpp
engines/twine/menu/menu.cpp
engines/twine/renderer/redraw.h
engines/twine/scene/gamestate.cpp
engines/twine/text.cpp
engines/twine/twine.cpp
diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index e9f3307b21..a86cb96bc4 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -288,6 +288,7 @@ Holomap::TrajectoryData Holomap::loadTrajectoryData(int32 trajectoryIdx) {
void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
debug("Draw trajectory index %i", trajectoryIndex);
+ _engine->exitSceneryView();
_engine->_interface->resetClip();
_engine->_screens->clearScreen();
_engine->setPalette(_engine->_screens->paletteRGBA);
@@ -480,6 +481,8 @@ void Holomap::processHolomap() {
const int32 alphaLightTmp = _engine->_scene->alphaLight;
const int32 betaLightTmp = _engine->_scene->betaLight;
+ _engine->exitSceneryView();
+
_engine->_screens->fadeToBlack(_engine->_screens->paletteRGBA);
_engine->_sound->stopSamples();
_engine->_interface->saveClip();
diff --git a/engines/twine/menu/menu.cpp b/engines/twine/menu/menu.cpp
index f9fe538ceb..64cf77e1cf 100644
--- a/engines/twine/menu/menu.cpp
+++ b/engines/twine/menu/menu.cpp
@@ -977,6 +977,7 @@ void Menu::drawBehaviourMenu(int32 angle) {
}
void Menu::processBehaviourMenu() {
+ _engine->exitSceneryView();
if (_engine->_actor->heroBehaviour == HeroBehaviourType::kProtoPack) {
_engine->_sound->stopSamples();
_engine->_actor->setBehaviour(HeroBehaviourType::kNormal);
diff --git a/engines/twine/renderer/redraw.h b/engines/twine/renderer/redraw.h
index 5daf7e830b..135828c16c 100644
--- a/engines/twine/renderer/redraw.h
+++ b/engines/twine/renderer/redraw.h
@@ -162,6 +162,9 @@ public:
int _sceneryViewX = 0;
int _sceneryViewY = 0;
+ /**
+ * Zooms the area around the scenery view focus positions
+ */
void zoomScreenScale();
/** Draw list array to grab the necessary */
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 7fbcd151bf..ab2c18ed73 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -281,6 +281,7 @@ void GameState::processFoundItem(int32 item) {
_engine->_grid->newCameraY = (_engine->_scene->sceneHero->y + BRICK_HEIGHT) / BRICK_HEIGHT;
_engine->_grid->newCameraZ = (_engine->_scene->sceneHero->z + BRICK_HEIGHT) / BRICK_SIZE;
+ _engine->exitSceneryView();
// Hide hero in scene
_engine->_scene->sceneHero->staticFlags.bIsHidden = 1;
_engine->_redraw->redrawEngineActions(true);
@@ -452,6 +453,7 @@ void GameState::processGameChoices(int32 choiceIdx) {
void GameState::processGameoverAnimation() {
const int32 tmpLbaTime = _engine->lbaTime;
+ _engine->exitSceneryView();
// workaround to fix hero redraw after drowning
_engine->_scene->sceneHero->staticFlags.bIsHidden = 1;
_engine->_redraw->redrawEngineActions(true);
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index a582209bb1..e1621aedd3 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -661,6 +661,7 @@ bool Text::displayText(int32 index, bool showText, bool playVox, bool loop) {
}
bool Text::drawTextProgressive(int32 index, bool playVox, bool loop) {
+ _engine->exitSceneryView();
_engine->_interface->saveClip();
_engine->_interface->resetClip();
_engine->_screens->copyScreen(_engine->frontVideoBuffer, _engine->workVideoBuffer);
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 623b3e0605..a78d73b5d5 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -587,6 +587,7 @@ void TwinEEngine::processBonusList() {
void TwinEEngine::processInventoryAction() {
ScopedEngineFreeze scoped(this);
+ exitSceneryView();
_menu->processInventoryMenu();
switch (loopInventoryItem) {
@@ -674,6 +675,7 @@ void TwinEEngine::processInventoryAction() {
void TwinEEngine::processOptionsMenu() {
ScopedEngineFreeze scoped(this);
+ exitSceneryView();
_sound->pauseSamples();
_menu->inGameOptionsMenu();
_scene->playSceneMusic();
@@ -738,6 +740,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
// Process give up menu - Press ESC
if (_input->toggleAbortAction() && _scene->sceneHero->life > 0 && _scene->sceneHero->entity != -1 && !_scene->sceneHero->staticFlags.bIsHidden) {
freezeTime();
+ exitSceneryView();
const int giveUp = _menu->giveupMenu();
if (giveUp == kQuitEngine) {
return 0;
@@ -821,7 +824,6 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
// Draw holomap
if (_input->toggleActionIfActive(TwinEActionType::OpenHolomap) && _gameState->hasItem(InventoryItems::kiHolomap) && !_gameState->inventoryDisabled()) {
freezeTime();
- //TestRestoreModeSVGA(1);
_holomap->processHolomap();
_screens->lockPalette = true;
unfreezeTime();
Commit: 961407346d46ef8942daa7b97abcb7128af0eece
https://github.com/scummvm/scummvm/commit/961407346d46ef8942daa7b97abcb7128af0eece
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-11T17:04:59+01:00
Commit Message:
TWINE: fixed persisting of settings
Changed paths:
engines/twine/menu/menu.cpp
engines/twine/twine.cpp
diff --git a/engines/twine/menu/menu.cpp b/engines/twine/menu/menu.cpp
index 64cf77e1cf..82b5e3b637 100644
--- a/engines/twine/menu/menu.cpp
+++ b/engines/twine/menu/menu.cpp
@@ -638,7 +638,7 @@ int32 Menu::volumeMenu() {
case TextId::kReturnMenu:
return 0;
case TextId::kSaveSettings:
- // TODO: implement setting persisting
+ ConfMan.flushToDisk();
break;
case kQuitEngine:
return kQuitEngine;
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index a78d73b5d5..3aa749bbe4 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -168,6 +168,7 @@ TwinEEngine::TwinEEngine(OSystem *system, Common::Language language, uint32 flag
}
TwinEEngine::~TwinEEngine() {
+ ConfMan.flushToDisk();
delete _actor;
delete _animations;
delete _collision;
@@ -295,9 +296,9 @@ Common::Error TwinEEngine::run() {
}
}
- ConfMan.setInt("combatauto", _actor->autoAggressive ? 1 : 0);
+ ConfMan.setBool("combatauto", _actor->autoAggressive);
ConfMan.setInt("shadow", cfgfile.ShadowMode);
- ConfMan.setInt("scezoom", cfgfile.SceZoom ? 1 : 0);
+ ConfMan.setBool("scezoom", cfgfile.SceZoom);
ConfMan.setInt("polygondetails", cfgfile.PolygonDetails);
_sound->stopSamples();
More information about the Scummvm-git-logs
mailing list