aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/lab/engine.cpp39
-rw-r--r--engines/lab/lab.cpp35
-rw-r--r--engines/lab/lab.h3
3 files changed, 41 insertions, 36 deletions
diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp
index 3585134fde..b0b7d38e19 100644
--- a/engines/lab/engine.cpp
+++ b/engines/lab/engine.cpp
@@ -30,6 +30,8 @@
#include "common/config-manager.h"
+#include "gui/message.h"
+
#include "lab/lab.h"
#include "lab/anim.h"
#include "lab/dispman.h"
@@ -100,6 +102,40 @@ static char initColors[] = { '\x00', '\x00', '\x00', '\x30',
'\x24', '\x24', '\x2c', '\x2c',
'\x2c', '\x08', '\x08', '\x08' };
+void LabEngine::handleTrialWarning() {
+ // Check if this is the Wyrmkeep trial
+ Common::File roomFile;
+ bool knownVersion = true;
+ bool roomFileOpened = roomFile.open("rooms/48");
+
+ if (!roomFileOpened)
+ knownVersion = false;
+ else if (roomFile.size() != 892)
+ knownVersion = false;
+ else {
+ roomFile.seek(352);
+ byte checkByte = roomFile.readByte();
+ if (checkByte == 0x00) {
+ // Full Windows version
+ }
+ else if (checkByte == 0x80) {
+ // Wyrmkeep trial version
+ _extraGameFeatures = GF_WINDOWS_TRIAL;
+
+ GUI::MessageDialog trialMessage("This is a trial Windows version of the game. To play the full version, you will need to use the original interpreter and purchase a key from Wyrmkeep");
+ trialMessage.runModal();
+ }
+ else {
+ knownVersion = false;
+ }
+
+ roomFile.close();
+ }
+
+ if (!knownVersion)
+ error("Unknown Windows version found, please report this version to the ScummVM team");
+}
+
uint16 LabEngine::getQuarters() {
return _inventory[kItemQuarter]._quantity;
}
@@ -1001,6 +1037,9 @@ void LabEngine::performAction(uint16 actionMode, Common::Point curPos, uint16 &c
}
void LabEngine::go() {
+ if (getPlatform() == Common::kPlatformWindows)
+ handleTrialWarning();
+
_isHiRes = ((getFeatures() & GF_LOWRES) == 0);
_graphics->setUpScreens();
diff --git a/engines/lab/lab.cpp b/engines/lab/lab.cpp
index 048082cce6..4eb0e4db56 100644
--- a/engines/lab/lab.cpp
+++ b/engines/lab/lab.cpp
@@ -33,7 +33,6 @@
#include "common/error.h"
#include "engines/util.h"
-#include "gui/message.h"
#include "lab/lab.h"
@@ -172,40 +171,6 @@ Common::Error LabEngine::run() {
_console = new Console(this);
_journalBackImage = new Image(this);
- if (getPlatform() == Common::kPlatformWindows) {
- // Check if this is the Wyrmkeep trial
- Common::File roomFile;
- bool knownVersion = true;
- bool roomFileOpened = roomFile.open("rooms/48");
-
- if (!roomFileOpened)
- knownVersion = false;
- else if (roomFile.size() != 892)
- knownVersion = false;
- else {
- roomFile.seek(352);
- byte checkByte = roomFile.readByte();
- if (checkByte == 0x00) {
- // Full Windows version
- } else if (checkByte == 0x80) {
- // Wyrmkeep trial version
- _extraGameFeatures = GF_WINDOWS_TRIAL;
-
- GUI::MessageDialog trialMessage("This is a trial Windows version of the game. To play the full version, you will need to use the original interpreter and purchase a key from Wyrmkeep");
- trialMessage.runModal();
- } else {
- knownVersion = false;
- }
-
- roomFile.close();
-
- if (!knownVersion) {
- warning("Unknown Windows version found, please report this version to the ScummVM team");
- return Common::kNoGameDataFoundError;
- }
- }
- }
-
go();
return Common::kNoError;
diff --git a/engines/lab/lab.h b/engines/lab/lab.h
index c3a5d8bce8..3951f45127 100644
--- a/engines/lab/lab.h
+++ b/engines/lab/lab.h
@@ -487,7 +487,6 @@ private:
void processAltButton(uint16 &curInv, uint16 &lastInv, uint16 buttonId, uint16 &actionMode);
void performAction(uint16 actionMode, Common::Point curPos, uint16 &curInv);
-private:
/**
* Writes the game out to disk.
*/
@@ -498,6 +497,8 @@ private:
*/
bool loadGame(int slot);
void writeSaveGameHeader(Common::OutSaveFile *out, const Common::String &saveName);
+
+ void handleTrialWarning();
};
bool readSaveGameHeader(Common::InSaveFile *in, SaveGameHeader &header);