Adds filesize check for kyra.dat, this forces to upgrade always to the newest version though.

svn-id: r23514
This commit is contained in:
Johannes Schickel 2006-07-15 20:46:27 +00:00
parent ea0e3a806c
commit 1ad8d3ee6e
3 changed files with 19 additions and 5 deletions

View file

@ -39,10 +39,10 @@ Resource::Resource(KyraEngine *engine) {
if (_engine->game() == GI_KYRA1) {
// we're loading KYRA.DAT here too (but just for Kyrandia 1)
if (!loadPakFile("KYRA.DAT")) {
GUI::MessageDialog errorMsg("You're missing the 'KYRA.DAT' file, get it from the ScummVM website");
if (!loadPakFile("KYRA.DAT") || !StaticResource::checkKyraDat()) {
GUI::MessageDialog errorMsg("You're missing the 'KYRA.DAT' file or it got corrupted, (re)get it from the ScummVM website");
errorMsg.runModal();
error("couldn't open Kyrandia resource file ('KYRA.DAT') make sure you got one file for your version");
error("You're missing the 'KYRA.DAT' file or it got corrupted, (re)get it from the ScummVM website");
}
// We only need kyra.dat for the demo.
@ -51,7 +51,7 @@ Resource::Resource(KyraEngine *engine) {
// only VRM file we need in the *whole* game for kyra1
if (_engine->features() & GF_TALKIE) {
if !(loadPakFile("CHAPTER1.VRM"))
if (!loadPakFile("CHAPTER1.VRM"))
error("couldn't open pakfile 'CHAPTER1.VRM'");
}
} else if (_engine->game() == GI_KYRA3) {
@ -72,7 +72,7 @@ Resource::Resource(KyraEngine *engine) {
for (FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
if (file->displayName().hasSuffix("PAK") || file->displayName().hasSuffix("APK")) {
if (loadPakFile(file->displayName()) {
if (!loadPakFile(file->displayName())) {
error("couldn't open pakfile '%s'", file->displayName().c_str());
}
}

View file

@ -200,6 +200,8 @@ public:
StaticResource(KyraEngine *engine) : _engine(engine), _resList(), _fileLoader(0), _builtIn(0), _filenameTable(0) {}
~StaticResource() { deinit(); }
static bool checkKyraDat();
bool init();
void deinit();

View file

@ -29,6 +29,18 @@
namespace Kyra {
#define RESFILE_VERSION 12
#define KYRADAT_FILESIZE 67227
bool StaticResource::checkKyraDat() {
Common::File kyraDat;
if (!kyraDat.open("KYRA.DAT"))
return false;
if (kyraDat.size() != KYRADAT_FILESIZE)
return false;
return true;
}
#define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO | GF_AUDIOCD)
#define LANGUAGE_FLAGS (GF_ENGLISH | GF_FRENCH | GF_GERMAN | GF_SPANISH | GF_ITALIAN | GF_LNGUNK)