2014-10-06 12:50:05 +00:00
/* 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 .
*
*/
/*
* This code is based on Labyrinth of Time code with assistance of
*
* Copyright ( c ) 1993 Terra Nova Development
* Copyright ( c ) 2004 The Wyrmkeep Entertainment Co .
*
*/
# include "common/debug-channels.h"
# include "common/scummsys.h"
# include "common/error.h"
# include "common/fs.h"
# include "common/rect.h"
# include "engines/util.h"
2015-02-25 01:13:26 +00:00
# include "gui/message.h"
2014-10-06 12:50:05 +00:00
# include "lab/lab.h"
# include "lab/labfun.h"
2014-12-27 11:23:20 +00:00
# include "engines/advancedDetector.h"
2014-10-06 12:50:05 +00:00
namespace Lab {
2014-12-25 18:13:52 +00:00
LabEngine * g_lab ;
2014-12-27 11:23:20 +00:00
LabEngine : : LabEngine ( OSystem * syst , const ADGameDescription * gameDesc )
2015-02-25 01:13:26 +00:00
: Engine ( syst ) , _gameDescription ( gameDesc ) , _extraGameFeatures ( 0 ) {
2014-12-25 18:13:52 +00:00
g_lab = this ;
2014-10-06 12:50:05 +00:00
}
LabEngine : : ~ LabEngine ( ) {
// Remove all of our debug levels here
DebugMan . clearAllDebugChannels ( ) ;
}
Common : : Error LabEngine : : run ( ) {
2014-12-27 13:18:40 +00:00
if ( getFeatures ( ) & GF_LOWRES )
initGraphics ( 320 , 200 , false ) ;
else
initGraphics ( 640 , 480 , true ) ;
2014-10-06 12:50:05 +00:00
g_music = new Music ( ) ;
2015-02-25 01:13:26 +00:00
if ( getPlatform ( ) = = Common : : kPlatformWindows ) {
// Check if this is the Wyrmkeep trial
Common : : File roomFile ;
bool knownVersion = true ;
bool roomFileOpened = roomFile . open ( " game/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 ;
}
}
}
2014-12-27 13:18:40 +00:00
go ( ) ;
2014-10-06 12:50:05 +00:00
return Common : : kNoError ;
}
2015-02-19 13:20:05 +00:00
Common : : String LabEngine : : generateSaveFileName ( uint slot ) {
return Common : : String : : format ( " %s.%03u " , _targetName . c_str ( ) , slot ) ;
}
2014-10-06 12:50:05 +00:00
} // End of namespace Lab