diff --git a/engines/trecision/detection.cpp b/engines/trecision/detection.cpp index 18108f7d236..ca053cb3544 100644 --- a/engines/trecision/detection.cpp +++ b/engines/trecision/detection.cpp @@ -86,6 +86,16 @@ static const ADGameDescription gameDescriptions[] = { ADGF_NO_FLAGS, GUIO0() }, + { + "nl", + 0, + AD_ENTRY1s("data.nl", "7665db13ad2a1ceb576531be3e1efb30", 392950), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_DEMO, + GUIO0() + }, + AD_TABLE_END_MARKER }; diff --git a/engines/trecision/metaengine.cpp b/engines/trecision/metaengine.cpp index 434945feae7..eea9f109e64 100644 --- a/engines/trecision/metaengine.cpp +++ b/engines/trecision/metaengine.cpp @@ -36,7 +36,7 @@ class TrecisionMetaEngine : public AdvancedMetaEngine { }; Common::Error TrecisionMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { - *engine = new Trecision::TrecisionEngine(syst); + *engine = new Trecision::TrecisionEngine(syst, desc); return Common::kNoError; } diff --git a/engines/trecision/trecision.cpp b/engines/trecision/trecision.cpp index 465bcabea14..6a5a16c23d9 100644 --- a/engines/trecision/trecision.cpp +++ b/engines/trecision/trecision.cpp @@ -57,7 +57,7 @@ namespace Trecision { TrecisionEngine *g_vm; -TrecisionEngine::TrecisionEngine(OSystem *syst) : Engine(syst) { +TrecisionEngine::TrecisionEngine(OSystem *syst, const ADGameDescription *desc) : Engine(syst), _gameDescription(desc) { const Common::FSNode gameDataDir(ConfMan.get("path")); SearchMan.addSubDirectoryMatching(gameDataDir, "AUTORUN"); SearchMan.addSubDirectoryMatching(gameDataDir, "DATA"); @@ -245,6 +245,10 @@ Common::Error TrecisionEngine::run() { return Common::kNoError; } +bool TrecisionEngine::isDemo() const { + return _gameDescription->flags & ADGF_DEMO; +} + void TrecisionEngine::eventLoop() { Common::Event event; while (g_system->getEventManager()->pollEvent(event)) { @@ -419,12 +423,13 @@ void TrecisionEngine::openDataFiles() { if (!_dataFile.open("nldata.cd0")) error("openDataFiles() - Error opening nldata.cd0"); - if (!Common::File::exists("nlanim.cd1") || - !Common::File::exists("nlanim.cd2") || - !Common::File::exists("nlanim.cd3") - ) - error("openDataFiles() - nlanim.cd1 or nlanim.cd2 or nlanim.cd3 is missing"); - + if (!isDemo()) { + if (!Common::File::exists("nlanim.cd1") || + !Common::File::exists("nlanim.cd2") || + !Common::File::exists("nlanim.cd3")) + error("openDataFiles() - nlanim.cd1 or nlanim.cd2 or nlanim.cd3 is missing"); + } + _font = readData("nlfont.fnt"); int size; _arrows = readData16("frecc.bm", size); diff --git a/engines/trecision/trecision.h b/engines/trecision/trecision.h index 0a807931bdb..f2417bdce1d 100644 --- a/engines/trecision/trecision.h +++ b/engines/trecision/trecision.h @@ -26,6 +26,7 @@ #include "common/str-array.h" #include "common/keyboard.h" #include "common/str.h" +#include "engines/advancedDetector.h" #include "engines/engine.h" #include "graphics/surface.h" @@ -118,11 +119,12 @@ class TrecisionEngine : public Engine { SCamera FCamera; public: - TrecisionEngine(OSystem *syst); + TrecisionEngine(OSystem *syst, const ADGameDescription *desc); ~TrecisionEngine() override; // ScummVM Common::Error run() override; + bool isDemo() const; void eventLoop(); bool hasFeature(EngineFeature f) const override; bool canLoadGameStateCurrently() override { return canPlayerInteract(); } @@ -212,6 +214,8 @@ public: bool isObjectVisible(uint16 objectId) const; void setObjectAnim(uint16 objectId, uint16 animId); + const ADGameDescription *_gameDescription; + Graphics::Surface _thumbnail; uint16 _curRoom;