diff options
-rw-r--r-- | engines/tsage/core.cpp | 5 | ||||
-rw-r--r-- | engines/tsage/events.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/globals.cpp | 19 | ||||
-rw-r--r-- | engines/tsage/globals.h | 4 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_logic.cpp | 47 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_logic.h | 6 | ||||
-rw-r--r-- | engines/tsage/scenes.cpp | 49 | ||||
-rw-r--r-- | engines/tsage/scenes.h | 10 |
8 files changed, 78 insertions, 64 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 78a4cef146..bee2214337 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -3790,8 +3790,9 @@ void SceneHandler::process(Event &event) { } // Mouse press handling - if (_globals->_player._uiEnabled && (event.eventType == EVENT_BUTTON_DOWN) && - !_globals->_sceneItems.empty()) { + bool enabled = (_vm->getGameID() == GType_BlueForce) ? _globals->_player._enabled : + _globals->_player._uiEnabled; + if (enabled && (event.eventType == EVENT_BUTTON_DOWN) && !_globals->_sceneItems.empty()) { // Check if the mouse is on the player if (_globals->_player.contains(event.mousePos)) { playerAction(event); diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp index 00c200eeea..d2ade971fa 100644 --- a/engines/tsage/events.cpp +++ b/engines/tsage/events.cpp @@ -196,7 +196,7 @@ void EventsClass::setCursor(CursorType cursorType) { // Exit cursor (Blue Force) assert(_vm->getGameID() == GType_BlueForce); cursor = _resourceManager->getSubResource(1, 5, 7, &size); - _currentCursor = CURSOR_TALK; + _currentCursor = CURSOR_EXIT; break; case CURSOR_ARROW: diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index 050ad4994b..b13cd98700 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -188,7 +188,24 @@ BlueForceGlobals::BlueForceGlobals(): Globals() { void BlueForceGlobals::synchronize(Serializer &s) { Globals::synchronize(s); - error("Sync variables"); + + s.syncAsSint16LE(_dayNumber); + s.syncAsSint16LE(_v4CEA4); + s.syncAsSint16LE(_v4CEA8); + s.syncAsSint16LE(_driveFromScene); + s.syncAsSint16LE(_driveToScene); + s.syncAsSint16LE(_v4CF9E); + s.syncAsSint16LE(_v4E238); + s.syncAsSint16LE(_v501FC); + s.syncAsSint16LE(_v50696); + s.syncAsSint16LE(_v51C42); + s.syncAsSint16LE(_v51C44); + s.syncAsSint16LE(_interfaceY); + s.syncAsSint16LE(_bookmark); + s.syncAsSint16LE(_mapLocationId); + s.syncAsSint16LE(_clip1Bullets); + s.syncAsSint16LE(_clip2Bullets); + } void BlueForceGlobals::reset() { diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h index 99388027d1..2ddbfb30b9 100644 --- a/engines/tsage/globals.h +++ b/engines/tsage/globals.h @@ -166,6 +166,7 @@ class BlueForceGlobals: public Globals { public: ASoundExt _sound1, _sound2, _sound3; UIElements _uiElements; + StripProxy _stripProxy; int _dayNumber; int _v4CEA4; int _v4CEA8; @@ -173,15 +174,14 @@ public: int _driveToScene; int _v4CF9E; int _v4E238; - int _v50696; int _v501FC; + int _v50696; int _v51C42; int _v51C44; int _interfaceY; Bookmark _bookmark; int _mapLocationId; int _clip1Bullets, _clip2Bullets; - StripProxy _stripProxy; BlueForceGlobals(); void reset(); diff --git a/engines/tsage/ringworld/ringworld_logic.cpp b/engines/tsage/ringworld/ringworld_logic.cpp index 4bd0b0a7f6..a131969633 100644 --- a/engines/tsage/ringworld/ringworld_logic.cpp +++ b/engines/tsage/ringworld/ringworld_logic.cpp @@ -21,8 +21,6 @@ */ #include "common/config-manager.h" -#include "common/translation.h" -#include "gui/saveload.h" #include "tsage/ringworld/ringworld_logic.h" #include "tsage/scenes.h" #include "tsage/tsage.h" @@ -406,51 +404,6 @@ RingworldInvObjectList::RingworldInvObjectList() : /*--------------------------------------------------------------------------*/ -void RingworldGame::restartGame() { - if (MessageDialog::show(RESTART_MSG, CANCEL_BTN_STRING, RESTART_BTN_STRING) == 1) - _globals->_game->restart(); -} - -void RingworldGame::saveGame() { - if (!_vm->canSaveGameStateCurrently()) - MessageDialog::show(SAVING_NOT_ALLOWED_MSG, OK_BTN_STRING); - else { - // Show the save dialog - handleSaveLoad(true, _globals->_sceneHandler->_saveGameSlot, _globals->_sceneHandler->_saveName); - } -} - -void RingworldGame::restoreGame() { - if (!_vm->canLoadGameStateCurrently()) - MessageDialog::show(RESTORING_NOT_ALLOWED_MSG, OK_BTN_STRING); - else { - // Show the load dialog - handleSaveLoad(false, _globals->_sceneHandler->_loadGameSlot, _globals->_sceneHandler->_saveName); - } -} - -void RingworldGame::quitGame() { - if (MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING) == 1) - _vm->quitGame(); -} - -void RingworldGame::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) { - const EnginePlugin *plugin = 0; - EngineMan.findGame(_vm->getGameId(), &plugin); - GUI::SaveLoadChooser *dialog; - if (saveFlag) - dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save")); - else - dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load")); - - dialog->setSaveMode(saveFlag); - - saveSlot = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName()); - saveName = dialog->getResultString(); - - delete dialog; -} - void RingworldGame::start() { // Set some default flags _globals->setFlag(12); diff --git a/engines/tsage/ringworld/ringworld_logic.h b/engines/tsage/ringworld/ringworld_logic.h index 286abd38a1..40b202bd7f 100644 --- a/engines/tsage/ringworld/ringworld_logic.h +++ b/engines/tsage/ringworld/ringworld_logic.h @@ -147,15 +147,9 @@ public: #define RING_INVENTORY (*((::TsAGE::Ringworld::RingworldInvObjectList *)_globals->_inventory)) class RingworldGame: public Game { -protected: - virtual void handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName); public: virtual void start(); virtual void restart(); - virtual void restartGame(); - virtual void saveGame(); - virtual void restoreGame(); - virtual void quitGame(); virtual void endGame(int resNum, int lineNum); virtual Scene *createScene(int sceneNumber); diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp index e8b3189481..d68f5c2ee5 100644 --- a/engines/tsage/scenes.cpp +++ b/engines/tsage/scenes.cpp @@ -20,11 +20,15 @@ * */ +#include "common/config-manager.h" +#include "common/translation.h" +#include "gui/saveload.h" #include "tsage/scenes.h" #include "tsage/globals.h" #include "tsage/ringworld/ringworld_logic.h" #include "tsage/tsage.h" #include "tsage/saveload.h" +#include "tsage/staticres.h" namespace TsAGE { @@ -505,6 +509,51 @@ void Scene::setZoomPercents(int yStart, int minPercent, int yEnd, int maxPercent /*--------------------------------------------------------------------------*/ +void Game::restartGame() { + if (MessageDialog::show(RESTART_MSG, CANCEL_BTN_STRING, RESTART_BTN_STRING) == 1) + _globals->_game->restart(); +} + +void Game::saveGame() { + if (!_vm->canSaveGameStateCurrently()) + MessageDialog::show(SAVING_NOT_ALLOWED_MSG, OK_BTN_STRING); + else { + // Show the save dialog + handleSaveLoad(true, _globals->_sceneHandler->_saveGameSlot, _globals->_sceneHandler->_saveName); + } +} + +void Game::restoreGame() { + if (!_vm->canLoadGameStateCurrently()) + MessageDialog::show(RESTORING_NOT_ALLOWED_MSG, OK_BTN_STRING); + else { + // Show the load dialog + handleSaveLoad(false, _globals->_sceneHandler->_loadGameSlot, _globals->_sceneHandler->_saveName); + } +} + +void Game::quitGame() { + if (MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING) == 1) + _vm->quitGame(); +} + +void Game::handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) { + const EnginePlugin *plugin = 0; + EngineMan.findGame(_vm->getGameId(), &plugin); + GUI::SaveLoadChooser *dialog; + if (saveFlag) + dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save")); + else + dialog = new GUI::SaveLoadChooser(_("Load game:"), _("Load")); + + dialog->setSaveMode(saveFlag); + + saveSlot = dialog->runModalWithPluginAndTarget(plugin, ConfMan.getActiveDomainName()); + saveName = dialog->getResultString(); + + delete dialog; +} + void Game::execute() { // Main game loop bool activeFlag = false; diff --git a/engines/tsage/scenes.h b/engines/tsage/scenes.h index 793013b603..b03b8fa906 100644 --- a/engines/tsage/scenes.h +++ b/engines/tsage/scenes.h @@ -115,7 +115,7 @@ protected: SynchronizedList<GameHandler *> _handlers; static bool notLockedFn(GameHandler *g); - virtual void handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName) {} + virtual void handleSaveLoad(bool saveFlag, int &saveSlot, Common::String &saveName); public: virtual ~Game() {} @@ -125,10 +125,10 @@ public: void execute(); virtual void start() = 0; virtual void restart() {} - virtual void restartGame() {} - virtual void saveGame() {} - virtual void restoreGame() {} - virtual void quitGame() {} + virtual void restartGame(); + virtual void saveGame(); + virtual void restoreGame(); + virtual void quitGame(); virtual void endGame(int resNum, int lineNum) {} virtual Scene *createScene(int sceneNumber) = 0; virtual void processEvent(Event &event) {} |