TRECISION: Initial support for the demo version of Nightlong

This commit is contained in:
Filippos Karapetis 2021-05-09 01:55:46 +03:00 committed by SupSuper
parent d0041dfcc5
commit 59d854e30b
4 changed files with 28 additions and 9 deletions

View File

@ -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
};

View File

@ -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;
}

View File

@ -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);

View File

@ -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;