From 08dc811baa587e40af720eeb3e2fe98d4dbd22d7 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 21 May 2015 18:48:21 -0400 Subject: TSAGE: Implemented game startup code for Sherlock Logo --- engines/tsage/detection.cpp | 1 + engines/tsage/detection_tables.h | 6 +++--- engines/tsage/globals.cpp | 2 +- engines/tsage/sherlock/sherlock_logo.cpp | 13 +++++++++++++ engines/tsage/sherlock/sherlock_logo.h | 5 +++++ engines/tsage/tsage.cpp | 10 ++++++++-- 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/engines/tsage/detection.cpp b/engines/tsage/detection.cpp index 9d61b4d182..388967931d 100644 --- a/engines/tsage/detection.cpp +++ b/engines/tsage/detection.cpp @@ -62,6 +62,7 @@ static const PlainGameDescriptor tSageGameTitles[] = { { "ringworld", "Ringworld: Revenge of the Patriarch" }, { "blueforce", "Blue Force" }, { "ringworld2", "Return to Ringworld" }, + { "sherlock-logo", "The Lost Files of Sherlock Holmes (Logo)" }, { 0, 0 } }; diff --git a/engines/tsage/detection_tables.h b/engines/tsage/detection_tables.h index 1ff0cde18c..1dfc3e6fd2 100644 --- a/engines/tsage/detection_tables.h +++ b/engines/tsage/detection_tables.h @@ -189,9 +189,9 @@ static const tSageGameDescription gameDescriptions[] = { // The Lost Files of Sherlock Holmes - The Case of the Serrated Scalpel (Logo) { { - "sherlock1", - "Logo", - AD_ENTRY1s("sf3.rlb", "c8e1a82c67c3caf57368eadde13dc15f", 0), + "sherlock-logo", + "", + AD_ENTRY1s("sf3.rlb", "153f9b93eda4e95578e31be30e69b5e5", 50419), Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index 3b78af3e3e..1be3e2b6da 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -160,7 +160,7 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface case GType_Sherlock1: _inventory = nullptr; - _sceneHandler = new SceneHandler(); + _sceneHandler = new Sherlock::SherlockSceneHandler(); _game = new Sherlock::SherlockLogo(); break; } diff --git a/engines/tsage/sherlock/sherlock_logo.cpp b/engines/tsage/sherlock/sherlock_logo.cpp index e2c5629bfc..58cefe551b 100644 --- a/engines/tsage/sherlock/sherlock_logo.cpp +++ b/engines/tsage/sherlock/sherlock_logo.cpp @@ -60,6 +60,19 @@ void SherlockLogo::quitGame() { /*--------------------------------------------------------------------------*/ +void SherlockSceneHandler::postInit(SceneObjectList *OwnerList) { + _delayTicks = 2; + + GLOBALS._soundManager.postInit(); + GLOBALS._soundManager.buildDriverList(true); + GLOBALS._soundManager.installConfigDrivers(); + + GLOBALS._sceneManager.setNewScene(10); + GLOBALS._game->start(); +} + +/*--------------------------------------------------------------------------*/ + void SherlockLogoScene::Action1::signal() { SherlockLogoScene &scene = *(SherlockLogoScene *)GLOBALS._sceneManager._scene; diff --git a/engines/tsage/sherlock/sherlock_logo.h b/engines/tsage/sherlock/sherlock_logo.h index 1f3eb15c53..c9fb50e6ef 100644 --- a/engines/tsage/sherlock/sherlock_logo.h +++ b/engines/tsage/sherlock/sherlock_logo.h @@ -51,6 +51,11 @@ public: virtual bool canLoadGameStateCurrently(); }; +class SherlockSceneHandler : public SceneHandler { +public: + virtual void postInit(SceneObjectList *OwnerList); +}; + class SherlockLogoScene: public Scene { class Action1 : public Action { public: diff --git a/engines/tsage/tsage.cpp b/engines/tsage/tsage.cpp index 0b882d5cbf..4412d0670f 100644 --- a/engines/tsage/tsage.cpp +++ b/engines/tsage/tsage.cpp @@ -44,11 +44,12 @@ TSageEngine::TSageEngine(OSystem *system, const tSageGameDescription *gameDesc) _debugger = new DemoDebugger(); else _debugger = new RingworldDebugger(); - } - else if (g_vm->getGameID() == GType_BlueForce) + } else if (g_vm->getGameID() == GType_BlueForce) _debugger = new BlueForceDebugger(); else if (g_vm->getGameID() == GType_Ringworld2) _debugger = new Ringworld2Debugger(); + else if (g_vm->getGameID() == GType_Sherlock1) + _debugger = new DemoDebugger(); } Common::Error TSageEngine::init() { @@ -110,6 +111,11 @@ void TSageEngine::initialize() { // Reset all global variables R2_GLOBALS.reset(); + } else if (g_vm->getGameID() == GType_Sherlock1) { + g_resourceManager->addLib("SF3.RLB"); + g_globals = new Globals(); + + return; } g_globals->gfxManager().setDefaults(); -- cgit v1.2.3