aboutsummaryrefslogtreecommitdiff
path: root/queen/resource.cpp
diff options
context:
space:
mode:
authorJoost Peters2003-10-12 18:44:44 +0000
committerJoost Peters2003-10-12 18:44:44 +0000
commit9b41c157c09487f7baee5caa3fdfaabe759d4abd (patch)
tree0f4022e3765bc077ee1d2b5ed70f2ff0ceb2e564 /queen/resource.cpp
parent36fd7ec44574a4b1712fff1eb0ec43a76aab8f1c (diff)
downloadscummvm-rg350-9b41c157c09487f7baee5caa3fdfaabe759d4abd.tar.gz
scummvm-rg350-9b41c157c09487f7baee5caa3fdfaabe759d4abd.tar.bz2
scummvm-rg350-9b41c157c09487f7baee5caa3fdfaabe759d4abd.zip
added missing INITIATE() code, added language detection to Resource class, etc.
svn-id: r10767
Diffstat (limited to 'queen/resource.cpp')
-rw-r--r--queen/resource.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/queen/resource.cpp b/queen/resource.cpp
index 61a1e55e13..93e5ad521c 100644
--- a/queen/resource.cpp
+++ b/queen/resource.cpp
@@ -44,7 +44,7 @@ const GameVersion Resource::_gameVersions[] = {
};
Resource::Resource(const Common::String &datafilePath)
- : _resourceEntries(0), _resourceTable(NULL), _datafilePath(datafilePath) {
+ : _resourceEntries(0), _resourceTable(NULL), _datafilePath(datafilePath), _JAS2Pos(0) {
_resourceFile = new File();
_resourceFile->open(dataFilename, _datafilePath);
@@ -69,12 +69,15 @@ Resource::Resource(const Common::String &datafilePath)
error("Verifying game version failed! (expected: '%s', found: '%s')", _gameVersion->versionString, JASVersion());
debug(5, "Detected game version: %s, which has %d resource entries", _gameVersion->versionString, _resourceEntries);
+
+ _JAS2Ptr = (char *)loadFile("QUEEN2.JAS", 0);
}
Resource::~Resource() {
_resourceFile->close();
if(_resourceTable != _resourceTablePEM10)
delete[] _resourceTable;
+ delete[] _JAS2Ptr;
}
int32 Resource::resourceIndex(const char *filename) {
@@ -118,6 +121,19 @@ int32 Resource::resourceIndex(const char *filename) {
return -1;
}
+char *Resource::getJAS2Line() {
+ char *startOfLine = _JAS2Ptr + _JAS2Pos;
+ char *pos = strstr(startOfLine, "\r\n");
+ if (pos) {
+ *pos = '\0';
+ pos += 2;
+ } else {
+ error("Couldn't find newline");
+ }
+ _JAS2Pos = (pos - _JAS2Ptr);
+ return startOfLine;
+}
+
uint32 Resource::fileSize(const char *filename) {
return _resourceTable[resourceIndex(filename)].size;
}
@@ -153,6 +169,25 @@ bool Resource::isDemo() {
return _gameVersion->isDemo;
}
+bool Resource::isFloppy() {
+ return _gameVersion->isFloppy;
+}
+
+Language Resource::getLanguage() {
+ switch (_gameVersion->versionString[1]) {
+ case 'E':
+ return ENGLISH;
+ case 'G':
+ return GERMAN;
+ case 'F':
+ return FRENCH;
+ case 'I':
+ return ITALIAN;
+ default:
+ return ENGLISH;
+ }
+}
+
const GameVersion *Resource::detectGameVersion(uint32 dataFilesize) {
const GameVersion *pgv = NULL;
//detect game version based on resource file size.