From 0ca72189fd7bef87892839461e59fe94fc239ced Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 19 May 2015 23:16:31 -0400 Subject: TSAGE: Beginnings of game & scene classes for Sherlock Holmes Logo display --- engines/tsage/detection_tables.h | 16 ++++ engines/tsage/globals.cpp | 7 ++ engines/tsage/module.mk | 1 + engines/tsage/sherlock/sherlock_logo.cpp | 149 +++++++++++++++++++++++++++++++ engines/tsage/sherlock/sherlock_logo.h | 73 +++++++++++++++ engines/tsage/tsage.h | 3 +- 6 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 engines/tsage/sherlock/sherlock_logo.cpp create mode 100644 engines/tsage/sherlock/sherlock_logo.h (limited to 'engines/tsage') diff --git a/engines/tsage/detection_tables.h b/engines/tsage/detection_tables.h index da283a27e7..1ff0cde18c 100644 --- a/engines/tsage/detection_tables.h +++ b/engines/tsage/detection_tables.h @@ -185,6 +185,22 @@ static const tSageGameDescription gameDescriptions[] = { GType_Ringworld2, GF_CD | GF_ALT_REGIONS | GF_DEMO }, + + // The Lost Files of Sherlock Holmes - The Case of the Serrated Scalpel (Logo) + { + { + "sherlock1", + "Logo", + AD_ENTRY1s("sf3.rlb", "c8e1a82c67c3caf57368eadde13dc15f", 0), + Common::EN_ANY, + Common::kPlatformDOS, + ADGF_NO_FLAGS, + GUIO0() + }, + GType_Sherlock1, + GF_FLOPPY + }, + { AD_TABLE_END_MARKER, 0, 0 } }; diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index e75febfdbc..3b78af3e3e 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -27,6 +27,7 @@ #include "tsage/ringworld/ringworld_logic.h" #include "tsage/ringworld2/ringworld2_logic.h" #include "tsage/ringworld2/ringworld2_scenes0.h" +#include "tsage/sherlock/sherlock_logo.h" #include "tsage/staticres.h" namespace TsAGE { @@ -156,6 +157,12 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface _game = new Ringworld2::Ringworld2Game(); _sceneHandler = new Ringworld2::SceneHandlerExt(); break; + + case GType_Sherlock1: + _inventory = nullptr; + _sceneHandler = new SceneHandler(); + _game = new Sherlock::SherlockLogo(); + break; } } diff --git a/engines/tsage/module.mk b/engines/tsage/module.mk index d62f398c20..e23b157a95 100644 --- a/engines/tsage/module.mk +++ b/engines/tsage/module.mk @@ -47,6 +47,7 @@ MODULE_OBJS := \ ringworld2/ringworld2_vampire.o \ saveload.o \ scenes.o \ + sherlock/sherlock_logo.o \ sound.o \ staticres.o \ tsage.o \ diff --git a/engines/tsage/sherlock/sherlock_logo.cpp b/engines/tsage/sherlock/sherlock_logo.cpp new file mode 100644 index 0000000000..cca6982210 --- /dev/null +++ b/engines/tsage/sherlock/sherlock_logo.cpp @@ -0,0 +1,149 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "tsage/sherlock/sherlock_logo.h" +#include "tsage/scenes.h" +#include "tsage/tsage.h" + +namespace TsAGE { + +namespace Sherlock { + +void SherlockLogo::start() { + // Start the demo's single scene + g_globals->_sceneManager.changeScene(1); + + g_globals->_events.setCursor(CURSOR_NONE); +} + +Scene *SherlockLogo::createScene(int sceneNumber) { + // The demo only has a single scene, so ignore the scene number and always return it + return new SherlockLogoScene(); +} + +bool SherlockLogo::canLoadGameStateCurrently() { + return false; +} + +bool SherlockLogo::canSaveGameStateCurrently() { + return false; +} + +void SherlockLogo::processEvent(Event &event) { + if (event.eventType == EVENT_BUTTON_DOWN || (event.eventType == EVENT_KEYPRESS && + event.kbd.keycode == Common::KEYCODE_ESCAPE)) + quitGame(); +} + +void SherlockLogo::quitGame() { + g_vm->quitGame(); +} + +/*--------------------------------------------------------------------------*/ + +void SherlockLogoScene::Action1::signal() { + SherlockLogoScene &scene = *(SherlockLogoScene *)GLOBALS._sceneManager._scene; + + switch (_actionIndex++) { + case 0: + GLOBALS._scenePalette.loadPalette(1111); + GLOBALS._scenePalette.loadPalette(1); + GLOBALS._scenePalette.refresh(); + setDelay(1); + break; + + case 1: + GLOBALS._scenePalette.addFader(scene._palette1._palette, 256, 6, this); + break; + + case 2: + scene._object1.postInit(); + scene._object1.setVisage("0016.vis"); + scene._object1._strip = 1; + scene._object1._frame = 1; + scene._object1.setPosition(Common::Point(169, 107)); + scene._object1.changeZoom(100); + scene._object1._numFrames = 7; + scene._object1.animate(ANIM_MODE_5, this); + break; + + case 3: + scene._object1._strip = 2; + scene._object1._strip = 1; + scene._object1.changeZoom(100); + scene._object1.animate(ANIM_MODE_4, 4, 11, 1, this); + break; + + case 4: + GLOBALS._scenePalette.addFader(scene._palette2._palette, 256, 6, this); + break; + + case 5: + scene._rect1 = Rect(0, 26, 312, 190); + scene._gfxManager2.activate(); + scene._gfxManager2.fillRect(scene._rect1, 0); + scene._gfxManager2.deactivate(); + //word_2B4AA = 3; + + setDelay(10); + break; + + case 6: + GLOBALS._scenePalette.loadPalette(12); + GLOBALS._scenePalette.refresh(); + break; + + // TODO + + default: + break; + } +} + +/*--------------------------------------------------------------------------*/ + +void SherlockLogoScene::postInit(SceneObjectList *OwnerList) { + loadScene(10); + Scene::postInit(OwnerList); + + _palette1.loadPalette(10); + _palette2.loadPalette(1111); + _palette2.loadPalette(1); + _palette3.loadPalette(1111); + _palette3.loadPalette(14); + + _object4.postInit(); + _object4.setVisage("0019.vis"); + _object4._strip = 1; + _object4._frame = 1; + _object4.setPosition(Common::Point(155, 94)); + _object4.changeZoom(100); + _object4.animate(ANIM_MODE_NONE, nullptr); + _object4.hide(); + + setAction(&_action1); +} + + +} // End of namespace Sherlock + +} // End of namespace TsAGE diff --git a/engines/tsage/sherlock/sherlock_logo.h b/engines/tsage/sherlock/sherlock_logo.h new file mode 100644 index 0000000000..947ea086bc --- /dev/null +++ b/engines/tsage/sherlock/sherlock_logo.h @@ -0,0 +1,73 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef TSAGE_SHERLOCK_LOGO_H +#define TSAGE_SHERLOCK_LOGO_H + +#include "common/scummsys.h" +#include "tsage/events.h" +#include "tsage/core.h" +#include "tsage/scenes.h" +#include "tsage/globals.h" +#include "tsage/sound.h" + +namespace TsAGE { + +namespace Sherlock { + +using namespace TsAGE; + +class Object : public SceneObject { +public: + void setVisage(const Common::String &name) {} +}; + +class SherlockLogo: public Game { +public: + virtual void start(); + virtual Scene *createScene(int sceneNumber); + virtual void quitGame(); + virtual void processEvent(Event &event); + virtual bool canSaveGameStateCurrently(); + virtual bool canLoadGameStateCurrently(); +}; + +class SherlockLogoScene: public Scene { + class Action1 : public Action { + public: + virtual void signal(); + }; +public: + ScenePalette _palette1, _palette2, _palette3; + Object _object1, _object2, _object3, _object4; + Action1 _action1; + Rect _rect1; + GfxManager _gfxManager2; + + virtual void postInit(SceneObjectList *OwnerList = NULL); +}; + +} // End of namespace Sherlock + +} // End of namespace TsAGE + +#endif diff --git a/engines/tsage/tsage.h b/engines/tsage/tsage.h index ea4f5da6ea..667a8daa59 100644 --- a/engines/tsage/tsage.h +++ b/engines/tsage/tsage.h @@ -42,7 +42,8 @@ namespace TsAGE { enum { GType_Ringworld = 0, GType_BlueForce = 1, - GType_Ringworld2 = 2 + GType_Ringworld2 = 2, + GType_Sherlock1 = 5 }; enum { -- cgit v1.2.3 From 3fea1f49937410c671d3155eb785fc382a08757d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 20 May 2015 22:20:52 -0400 Subject: TSAGE: Implemented scene logic for Sherlock Logo --- engines/tsage/sherlock/sherlock_logo.cpp | 178 ++++++++++++++++++++++++++++++- engines/tsage/sherlock/sherlock_logo.h | 1 + 2 files changed, 177 insertions(+), 2 deletions(-) (limited to 'engines/tsage') diff --git a/engines/tsage/sherlock/sherlock_logo.cpp b/engines/tsage/sherlock/sherlock_logo.cpp index cca6982210..e2c5629bfc 100644 --- a/engines/tsage/sherlock/sherlock_logo.cpp +++ b/engines/tsage/sherlock/sherlock_logo.cpp @@ -103,18 +103,189 @@ void SherlockLogoScene::Action1::signal() { scene._gfxManager2.fillRect(scene._rect1, 0); scene._gfxManager2.deactivate(); //word_2B4AA = 3; - setDelay(10); break; case 6: GLOBALS._scenePalette.loadPalette(12); GLOBALS._scenePalette.refresh(); + setDelay(1); + break; + + case 7: + scene._object1.setVisage("0012.vis"); + scene._object1._strip = 1; + scene._object1._frame = 1; + scene._object1.changeZoom(100); + scene._object1.setPosition(Common::Point(170, 142)); + scene._object1._numFrames = 7; + scene._object1.animate(ANIM_MODE_5, nullptr); + ADD_MOVER(scene._object1, 158, 71); + break; + + case 8: + GLOBALS._scenePalette.addFader(scene._palette3._palette, 256, 40, this); + break; + + case 9: + scene._object2.postInit(nullptr); + scene._object2.setVisage("0014.vis"); + scene._object2._strip = 1; + scene._object2._frame = 1; + scene._object2.setPosition(Common::Point(152, 98)); + scene._object2.changeZoom(100); + scene._object2.animate(ANIM_MODE_NONE, nullptr); + setDelay(120); + break; + + case 10: + scene._object3.postInit(); + scene._object2.setVisage("0018.vis"); + scene._object2._strip = 1; + scene._object2._frame = 1; + scene._object2.setPosition(Common::Point(33, 91)); + scene._object2.changeZoom(100); + scene._object2.animate(ANIM_MODE_NONE, nullptr); + setDelay(5); + break; + + case 11: + scene._object3._frame = 2; + scene._object3.setPosition(Common::Point(44, 124)); + setDelay(5); + break; + + case 12: + scene._object3._frame = 3; + scene._object3.setPosition(Common::Point(64, 153)); + setDelay(5); + break; + + case 13: + scene._object3._frame = 4; + scene._object3.setPosition(Common::Point(87, 174)); + setDelay(5); + break; + + case 14: + scene._object3._frame = 5; + scene._object3.setPosition(Common::Point(114, 191)); + setDelay(5); + break; + + case 15: + scene._object3._frame = 6; + scene._object3.setPosition(Common::Point(125, 184)); + setDelay(5); + break; + + case 16: + scene._object3._frame = 7; + scene._object3.setPosition(Common::Point(154, 187)); + setDelay(5); + break; + + case 17: + scene._object3._frame = 8; + scene._object3.setPosition(Common::Point(181, 182)); + setDelay(5); + break; + + case 18: + scene._object3._frame = 9; + scene._object3.setPosition(Common::Point(191, 167)); + setDelay(5); + break; + + case 19: + scene._object3._frame = 10; + scene._object3.setPosition(Common::Point(190, 150)); + setDelay(5); break; - // TODO + case 20: + scene._object3._frame = 11; + scene._object3.setPosition(Common::Point(182, 139)); + setDelay(5); + break; + + case 21: + scene._object3._frame = 11; + scene._object3.setPosition(Common::Point(170, 130)); + setDelay(5); + break; + + case 22: + scene._object3._frame = 11; + scene._object3.setPosition(Common::Point(158, 121)); + setDelay(8); + break; + + case 23: + scene._object3.hide(); + scene._object4.show(); + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + + case 24: + scene._object4._frame = 2; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + + case 25: + scene._object2.remove(); + setDelay(1); + break; + + case 26: + scene._object4._frame = 3; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + + case 27: + scene._object4._frame = 4; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + break; + + case 28: + scene._object4._frame = 5; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + break; + + case 29: + scene._object4._frame = 6; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + break; + + case 30: + scene._object4._frame = 7; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + break; + + case 31: + scene._object4._frame = 8; + scene._object4.setPosition(Common::Point(155, 94)); + setDelay(8); + break; + + case 32: + setDelay(180); + break; default: + scene.finish(); + remove(); break; } } @@ -143,6 +314,9 @@ void SherlockLogoScene::postInit(SceneObjectList *OwnerList) { setAction(&_action1); } +void SherlockLogoScene::finish() { + g_vm->quitGame(); +} } // End of namespace Sherlock diff --git a/engines/tsage/sherlock/sherlock_logo.h b/engines/tsage/sherlock/sherlock_logo.h index 947ea086bc..1f3eb15c53 100644 --- a/engines/tsage/sherlock/sherlock_logo.h +++ b/engines/tsage/sherlock/sherlock_logo.h @@ -64,6 +64,7 @@ public: GfxManager _gfxManager2; virtual void postInit(SceneObjectList *OwnerList = NULL); + void finish(); }; } // End of namespace Sherlock -- cgit v1.2.3 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(-) (limited to 'engines/tsage') 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 From 0141dd1af3ac63801d3fcb80d200b8a4719ba55f Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 29 May 2015 23:31:23 -0400 Subject: TSAGE: Showing background of Sherlock Logo scene --- engines/tsage/core.cpp | 2 +- engines/tsage/sherlock/sherlock_logo.cpp | 7 +++++++ engines/tsage/sherlock/sherlock_logo.h | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'engines/tsage') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 3105a9008e..e8fef014c0 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1521,7 +1521,7 @@ void ScenePalette::changeBackground(const Rect &bounds, FadeMode fadeMode) { } Rect tempRect = bounds; - if (g_vm->getGameID() != GType_Ringworld) + if (g_vm->getGameID() != GType_Ringworld && g_vm->getGameID() != GType_Sherlock1) tempRect.setHeight(T2_GLOBALS._interfaceY); g_globals->_screenSurface.copyFrom(g_globals->_sceneManager._scene->_backSurface, diff --git a/engines/tsage/sherlock/sherlock_logo.cpp b/engines/tsage/sherlock/sherlock_logo.cpp index 58cefe551b..13594c8de0 100644 --- a/engines/tsage/sherlock/sherlock_logo.cpp +++ b/engines/tsage/sherlock/sherlock_logo.cpp @@ -73,6 +73,13 @@ void SherlockSceneHandler::postInit(SceneObjectList *OwnerList) { /*--------------------------------------------------------------------------*/ +void Object::setVisage(const Common::String &name) { + int visageNum = atoi(name.c_str()); + SceneObject::setVisage(visageNum); +} + +/*--------------------------------------------------------------------------*/ + 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 c9fb50e6ef..fcc96386e0 100644 --- a/engines/tsage/sherlock/sherlock_logo.h +++ b/engines/tsage/sherlock/sherlock_logo.h @@ -38,7 +38,7 @@ using namespace TsAGE; class Object : public SceneObject { public: - void setVisage(const Common::String &name) {} + void setVisage(const Common::String &name); }; class SherlockLogo: public Game { -- cgit v1.2.3 From bb9586de9e0da450bbc18119bbcd82975f146c27 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 30 May 2015 09:40:04 -0400 Subject: TSAGE: Fixes for display of Sherlock Logo scene --- engines/tsage/core.cpp | 2 +- engines/tsage/graphics.cpp | 3 ++- engines/tsage/sherlock/sherlock_logo.cpp | 33 ++++++++++++++++++++++---------- engines/tsage/sherlock/sherlock_logo.h | 1 - 4 files changed, 26 insertions(+), 13 deletions(-) (limited to 'engines/tsage') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index e8fef014c0..c1c4c27e32 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -2806,7 +2806,7 @@ void SceneObject::updateScreen() { srcRect.right = ((srcRect.right + 3) / 4) * 4; srcRect.clip(g_globals->_sceneManager._scene->_sceneBounds); - if (g_vm->getGameID() != GType_Ringworld) { + if (g_vm->getGameID() != GType_Ringworld && g_vm->getGameID() != GType_Sherlock1) { if (T2_GLOBALS._uiElements._visible) srcRect.bottom = MIN(srcRect.bottom, T2_GLOBALS._interfaceY); } diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index ce24c76290..156503fb51 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -1289,7 +1289,8 @@ void GfxManager::setDefaults() { _font._edgeSize = Common::Point(1, 1); _font._colors = g_globals->_fontColors; - _font.setFontNumber(g_globals->_gfxFontNumber); + if (g_globals->_gfxFontNumber >= 0) + _font.setFontNumber(g_globals->_gfxFontNumber); } void GfxManager::activate() { diff --git a/engines/tsage/sherlock/sherlock_logo.cpp b/engines/tsage/sherlock/sherlock_logo.cpp index 13594c8de0..437fdc6d94 100644 --- a/engines/tsage/sherlock/sherlock_logo.cpp +++ b/engines/tsage/sherlock/sherlock_logo.cpp @@ -29,6 +29,9 @@ namespace TsAGE { namespace Sherlock { void SherlockLogo::start() { + GLOBALS._gfxFontNumber = -1; + GLOBALS.gfxManager().setDefaults(); + // Start the demo's single scene g_globals->_sceneManager.changeScene(1); @@ -85,6 +88,7 @@ void SherlockLogoScene::Action1::signal() { switch (_actionIndex++) { case 0: + // Load scene palette GLOBALS._scenePalette.loadPalette(1111); GLOBALS._scenePalette.loadPalette(1); GLOBALS._scenePalette.refresh(); @@ -92,10 +96,12 @@ void SherlockLogoScene::Action1::signal() { break; case 1: + // Fade in the spotlight background GLOBALS._scenePalette.addFader(scene._palette1._palette, 256, 6, this); break; case 2: + // First half of square, circle, and triangle bouncing scene._object1.postInit(); scene._object1.setVisage("0016.vis"); scene._object1._strip = 1; @@ -107,20 +113,22 @@ void SherlockLogoScene::Action1::signal() { break; case 3: + // Remainder of bouncing square, circle, and triangle coming to rest scene._object1._strip = 2; - scene._object1._strip = 1; + scene._object1._frame = 1; scene._object1.changeZoom(100); - scene._object1.animate(ANIM_MODE_4, 4, 11, 1, this); + scene._object1.animate(ANIM_MODE_4, 11, 1, this); break; case 4: + // Fade out background without fading out the shapes GLOBALS._scenePalette.addFader(scene._palette2._palette, 256, 6, this); break; case 5: - scene._rect1 = Rect(0, 26, 312, 190); + scene._backSurface.fillRect(scene._sceneBounds, 0); scene._gfxManager2.activate(); - scene._gfxManager2.fillRect(scene._rect1, 0); + scene._gfxManager2.fillRect(scene._sceneBounds, 0); scene._gfxManager2.deactivate(); //word_2B4AA = 3; setDelay(10); @@ -133,6 +141,7 @@ void SherlockLogoScene::Action1::signal() { break; case 7: + // Animation of shapes expanding upwards to form larger EA logo scene._object1.setVisage("0012.vis"); scene._object1._strip = 1; scene._object1._frame = 1; @@ -148,6 +157,7 @@ void SherlockLogoScene::Action1::signal() { break; case 9: + // Show 'Electronic Arts' company name scene._object2.postInit(nullptr); scene._object2.setVisage("0014.vis"); scene._object2._strip = 1; @@ -159,13 +169,14 @@ void SherlockLogoScene::Action1::signal() { break; case 10: + // Remainder of steps is positioning and sizing hand cursorin an arc scene._object3.postInit(); - scene._object2.setVisage("0018.vis"); - scene._object2._strip = 1; - scene._object2._frame = 1; - scene._object2.setPosition(Common::Point(33, 91)); - scene._object2.changeZoom(100); - scene._object2.animate(ANIM_MODE_NONE, nullptr); + scene._object3.setVisage("0018.vis"); + scene._object3._strip = 1; + scene._object3._frame = 1; + scene._object3.setPosition(Common::Point(33, 91)); + scene._object3.changeZoom(100); + scene._object3.animate(ANIM_MODE_NONE, nullptr); setDelay(5); break; @@ -242,6 +253,7 @@ void SherlockLogoScene::Action1::signal() { break; case 23: + // Show a highlighting of the company name scene._object3.hide(); scene._object4.show(); scene._object4.setPosition(Common::Point(155, 94)); @@ -316,6 +328,7 @@ void SherlockLogoScene::postInit(SceneObjectList *OwnerList) { loadScene(10); Scene::postInit(OwnerList); + _palette1.loadPalette(1111); _palette1.loadPalette(10); _palette2.loadPalette(1111); _palette2.loadPalette(1); diff --git a/engines/tsage/sherlock/sherlock_logo.h b/engines/tsage/sherlock/sherlock_logo.h index fcc96386e0..95fc0e272f 100644 --- a/engines/tsage/sherlock/sherlock_logo.h +++ b/engines/tsage/sherlock/sherlock_logo.h @@ -65,7 +65,6 @@ public: ScenePalette _palette1, _palette2, _palette3; Object _object1, _object2, _object3, _object4; Action1 _action1; - Rect _rect1; GfxManager _gfxManager2; virtual void postInit(SceneObjectList *OwnerList = NULL); -- cgit v1.2.3