aboutsummaryrefslogtreecommitdiff
path: root/engines/macventure/stringtable.h
diff options
context:
space:
mode:
authorBorja Lorente2016-06-16 17:50:32 +0200
committerBorja Lorente2016-08-14 18:24:58 +0200
commit22db262d57b919a73dea71a353951cc9b0d63d53 (patch)
treee8403ae0d040452da9df51d902245e8369d20fd8 /engines/macventure/stringtable.h
parentb6a5040e35d93ae32ac892653c131a30c2123d6e (diff)
downloadscummvm-rg350-22db262d57b919a73dea71a353951cc9b0d63d53.tar.gz
scummvm-rg350-22db262d57b919a73dea71a353951cc9b0d63d53.tar.bz2
scummvm-rg350-22db262d57b919a73dea71a353951cc9b0d63d53.zip
MACVENTURE: Add string tables
Diffstat (limited to 'engines/macventure/stringtable.h')
-rw-r--r--engines/macventure/stringtable.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/engines/macventure/stringtable.h b/engines/macventure/stringtable.h
new file mode 100644
index 0000000000..87ec9775cb
--- /dev/null
+++ b/engines/macventure/stringtable.h
@@ -0,0 +1,99 @@
+/* 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.
+*
+*/
+
+#ifndef MACVENTURE_STRINGTABLE_H
+#define MACVENTURE_STRINGTABLE_H
+
+#include "macventure/macventure.h"
+
+#include "common/file.h"
+
+namespace MacVenture {
+
+enum StringTableID {
+ kErrorStringTableID = 0x80,
+ kFilenamesStringTableID = 0x81,
+ kCommonArticlesStringTableID = 0x82,
+ kNamingArticlesStringTableID = 0x83,
+ kIndirectArticlesStringTableID = 0x84
+};
+
+class StringTable {
+public:
+ StringTable(MacVentureEngine *engine, Common::MacResManager *resMan, StringTableID id) {
+ _engine = engine;
+ _resourceManager = resMan;
+ _id = id;
+
+ if (!loadStrings())
+ error("Could not load string table %x", id);
+ }
+
+ ~StringTable() {
+
+ }
+
+ const Common::Array<Common::String> *getStrings() {
+ return &_strings;
+ }
+
+private:
+
+ bool loadStrings() {
+ Common::MacResIDArray resArray;
+ Common::SeekableReadStream *res;
+
+ if ((resArray = _resourceManager->getResIDArray(MKTAG('S', 'T', 'R', '#'))).size() == 0)
+ return false;
+
+ res = _resourceManager->getResource(MKTAG('S', 'T', 'R', '#'), _id);
+
+ _strings.push_back("dummy"); // String tables are 1-indexed
+ uint16 numStrings = res->readUint16BE();
+ uint8 strLength = 0;
+ for (uint i = 0; i < numStrings; ++i) {
+ strLength = res->readByte();
+ char* str = new char[strLength + 1];
+ res->read(str, strLength);
+ str[strLength] = '\0';
+ debug(11, "Loaded string %s", str);
+ _strings.push_back(Common::String(str));
+ delete[] str;
+ }
+
+ return true;
+ }
+
+private:
+
+ MacVentureEngine *_engine;
+ Common::MacResManager *_resourceManager;
+
+ StringTableID _id;
+
+ Common::Array<Common::String> _strings;
+};
+
+} // End of namespace MacVenture
+
+#endif
+