mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
TWINE: ensure menu background after giving up
also the initial values for the advanced menu entries are correct now
This commit is contained in:
@@ -64,7 +64,7 @@ void GameState::initEngineProjections() {
|
||||
_engine->_renderer->setLightVector(_engine->_scene->alphaLight, _engine->_scene->betaLight, 0);
|
||||
}
|
||||
|
||||
void GameState::initSceneVars() {
|
||||
void GameState::initGameStateVars() {
|
||||
_engine->_extra->resetExtras();
|
||||
|
||||
for (int32 i = 0; i < OVERLAY_MAX_ENTRIES; i++) {
|
||||
@@ -116,7 +116,7 @@ void GameState::initEngineVars() {
|
||||
_engine->_scene->alphaLight = 896;
|
||||
_engine->_scene->betaLight = 950;
|
||||
initEngineProjections();
|
||||
initSceneVars();
|
||||
initGameStateVars();
|
||||
initHeroVars();
|
||||
|
||||
_engine->_scene->newHeroX = 0x2000;
|
||||
@@ -485,4 +485,10 @@ void GameState::processGameoverAnimation() {
|
||||
_engine->lbaTime = tmpLbaTime;
|
||||
}
|
||||
|
||||
void GameState::giveUp() {
|
||||
_engine->_sound->stopSamples();
|
||||
initGameStateVars();
|
||||
_engine->_scene->stopRunningGame();
|
||||
}
|
||||
|
||||
} // namespace TwinE
|
||||
|
||||
@@ -86,7 +86,7 @@ class GameState {
|
||||
private:
|
||||
TwinEEngine *_engine;
|
||||
|
||||
void initSceneVars();
|
||||
void initGameStateVars();
|
||||
void initHeroVars();
|
||||
|
||||
public:
|
||||
@@ -161,6 +161,7 @@ public:
|
||||
|
||||
void processFoundItem(int32 item);
|
||||
|
||||
void giveUp();
|
||||
bool loadGame(Common::SeekableReadStream *file);
|
||||
bool saveGame(Common::WriteStream *file);
|
||||
|
||||
|
||||
+40
-25
@@ -324,6 +324,45 @@ void Menu::drawButtons(MenuSettings *menuSettings, bool hover) {
|
||||
}
|
||||
|
||||
for (int16 i = 0; i < maxButton; ++i) {
|
||||
if (menuSettings == &advOptionsMenuState) {
|
||||
int16 id = menuSettings->getButtonState(i);
|
||||
switch (id) {
|
||||
case MenuButtonTypes::kAgressiveMode:
|
||||
if (_engine->_actor->autoAgressive) {
|
||||
menuSettings->setButtonTextId(i, TextId::kBehaviourAgressiveAuto);
|
||||
} else {
|
||||
menuSettings->setButtonTextId(i, TextId::kBehaviourAgressiveManual);
|
||||
}
|
||||
break;
|
||||
case MenuButtonTypes::kPolygonDetails:
|
||||
if (_engine->cfgfile.PolygonDetails == 0) {
|
||||
menuSettings->setButtonTextId(i, TextId::kDetailsPolygonsLow);
|
||||
} else if (_engine->cfgfile.PolygonDetails == 1) {
|
||||
menuSettings->setButtonTextId(i, TextId::kDetailsPolygonsMiddle);
|
||||
} else {
|
||||
menuSettings->setButtonTextId(i, TextId::kDetailsPolygonsHigh);
|
||||
}
|
||||
break;
|
||||
case MenuButtonTypes::kShadowSettings:
|
||||
if (_engine->cfgfile.ShadowMode == 0) {
|
||||
menuSettings->setButtonTextId(i, TextId::kShadowsDisabled);
|
||||
} else if (_engine->cfgfile.ShadowMode == 1) {
|
||||
menuSettings->setButtonTextId(i, TextId::kShadowsFigures);
|
||||
} else {
|
||||
menuSettings->setButtonTextId(i, TextId::kDetailsShadowHigh);
|
||||
}
|
||||
break;
|
||||
case MenuButtonTypes::kSceneryZoom:
|
||||
if (_engine->cfgfile.SceZoom) {
|
||||
menuSettings->setButtonTextId(i, TextId::kScenaryZoomOn);
|
||||
} else {
|
||||
menuSettings->setButtonTextId(i, TextId::kNoScenaryZoom);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
const int32 menuItemId = menuSettings->getButtonState(i);
|
||||
const char *text = menuSettings->getButtonText(_engine->_text, i);
|
||||
if (hover) {
|
||||
@@ -381,11 +420,6 @@ int32 Menu::processMenu(MenuSettings *menuSettings) {
|
||||
if (_engine->_input->toggleActionIfActive(TwinEActionType::UILeft) || _engine->_input->toggleActionIfActive(TwinEActionType::UIRight)) {
|
||||
_engine->_actor->autoAgressive = !_engine->_actor->autoAgressive;
|
||||
}
|
||||
if (_engine->_actor->autoAgressive) {
|
||||
menuSettings->setActiveButtonTextId(TextId::kBehaviourAgressiveAuto);
|
||||
} else {
|
||||
menuSettings->setActiveButtonTextId(TextId::kBehaviourAgressiveManual);
|
||||
}
|
||||
break;
|
||||
case MenuButtonTypes::kPolygonDetails:
|
||||
if (_engine->_input->toggleActionIfActive(TwinEActionType::UILeft)) {
|
||||
@@ -395,13 +429,6 @@ int32 Menu::processMenu(MenuSettings *menuSettings) {
|
||||
_engine->cfgfile.PolygonDetails++;
|
||||
_engine->cfgfile.PolygonDetails %= 3;
|
||||
}
|
||||
if (_engine->cfgfile.PolygonDetails == 0) {
|
||||
menuSettings->setActiveButtonTextId(TextId::kDetailsPolygonsLow);
|
||||
} else if (_engine->cfgfile.PolygonDetails == 1) {
|
||||
menuSettings->setActiveButtonTextId(TextId::kDetailsPolygonsMiddle);
|
||||
} else {
|
||||
menuSettings->setActiveButtonTextId(TextId::kDetailsPolygonsHigh);
|
||||
}
|
||||
break;
|
||||
case MenuButtonTypes::kShadowSettings:
|
||||
if (_engine->_input->toggleActionIfActive(TwinEActionType::UILeft)) {
|
||||
@@ -411,23 +438,11 @@ int32 Menu::processMenu(MenuSettings *menuSettings) {
|
||||
_engine->cfgfile.ShadowMode++;
|
||||
_engine->cfgfile.ShadowMode %= 3;
|
||||
}
|
||||
if (_engine->cfgfile.ShadowMode == 0) {
|
||||
menuSettings->setActiveButtonTextId(TextId::kShadowsDisabled);
|
||||
} else if (_engine->cfgfile.ShadowMode == 1) {
|
||||
menuSettings->setActiveButtonTextId(TextId::kShadowsFigures);
|
||||
} else {
|
||||
menuSettings->setActiveButtonTextId(TextId::kDetailsShadowHigh);
|
||||
}
|
||||
break;
|
||||
case MenuButtonTypes::kSceneryZoom:
|
||||
if (_engine->_input->toggleActionIfActive(TwinEActionType::UILeft) || _engine->_input->toggleActionIfActive(TwinEActionType::UIRight)) {
|
||||
_engine->cfgfile.SceZoom = !_engine->cfgfile.SceZoom;
|
||||
}
|
||||
if (_engine->cfgfile.SceZoom) {
|
||||
menuSettings->setActiveButtonTextId(TextId::kScenaryZoomOn);
|
||||
} else {
|
||||
menuSettings->setActiveButtonTextId(TextId::kNoScenaryZoom);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -692,7 +707,7 @@ int32 Menu::giveupMenu() {
|
||||
_engine->_sound->resumeSamples();
|
||||
break;
|
||||
case TextId::kGiveUp:
|
||||
_engine->_sound->stopSamples();
|
||||
_engine->_gameState->giveUp();
|
||||
return 1;
|
||||
case TextId::kCreateSaveGame:
|
||||
_engine->_menuOptions->saveGameMenu();
|
||||
|
||||
@@ -536,4 +536,8 @@ void Scene::processActorZones(int32 actorIdx) {
|
||||
}
|
||||
}
|
||||
|
||||
void Scene::stopRunningGame() {
|
||||
currentScene = nullptr;
|
||||
}
|
||||
|
||||
} // namespace TwinE
|
||||
|
||||
@@ -346,6 +346,7 @@ public:
|
||||
void initSceneVars();
|
||||
|
||||
bool isGameRunning() const;
|
||||
void stopRunningGame();
|
||||
|
||||
/**
|
||||
* Process actor zones
|
||||
|
||||
Reference in New Issue
Block a user