aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNipun Garg2019-06-07 03:57:03 +0530
committerEugene Sandulenko2019-09-03 17:16:44 +0200
commit8e62d001fcb4bf4f789d578e5b0771cc8d064b24 (patch)
tree6f586d4c2991b06f14ea5900343a1250ab843ea6
parentc846026ef23b93d71fb9f4528ed0f2c10a1b91a1 (diff)
downloadscummvm-rg350-8e62d001fcb4bf4f789d578e5b0771cc8d064b24.tar.gz
scummvm-rg350-8e62d001fcb4bf4f789d578e5b0771cc8d064b24.tar.bz2
scummvm-rg350-8e62d001fcb4bf4f789d578e5b0771cc8d064b24.zip
HDB: Load the mapHeader in loadMap(...)
-rw-r--r--engines/hdb/hdb.cpp3
-rw-r--r--engines/hdb/map-loader.cpp25
-rw-r--r--engines/hdb/map-loader.h5
3 files changed, 28 insertions, 5 deletions
diff --git a/engines/hdb/hdb.cpp b/engines/hdb/hdb.cpp
index 871fe3c5c9..8f0f3a1767 100644
--- a/engines/hdb/hdb.cpp
+++ b/engines/hdb/hdb.cpp
@@ -151,12 +151,13 @@ Common::Error HDBGame::run() {
lua->initScript(luaStream, "MAP00_DEMO_LUA", luaLength);
Common::SeekableReadStream *mapStream = fileMan->findFirstData("MAP00_DEMO_MSM", TYPE_BINARY);
+ int32 mapLength = fileMan->getLength("MAP00_DEMO_MSM", TYPE_BINARY);
if (mapStream == NULL) {
debug("The MAP00_DEMO_MSM MPC entry can't be found.");
return Common::kReadingFailed;
}
- mapLoader->loadMap(mapStream);
+ mapLoader->loadMap(mapStream, mapLength);
#if 0
lua->executeFile("test.lua");
diff --git a/engines/hdb/map-loader.cpp b/engines/hdb/map-loader.cpp
index 85f119771f..ba0917cb7d 100644
--- a/engines/hdb/map-loader.cpp
+++ b/engines/hdb/map-loader.cpp
@@ -28,8 +28,29 @@ MapLoader::MapLoader() {
_mapLoaded = false;
}
-bool MapLoader::loadMap(Common::SeekableReadStream *stream) {
- warning("STUB: MAPLOADER: LOAD MAP");
+bool MapLoader::loadMap(Common::SeekableReadStream *stream, int32 length) {
+
+ if (_mapLoaded) {
+ return false;
+ }
+
+ // Load MSM data into mapHeader
+ mapHeader = new MSMHeader;
+ stream->read(mapHeader->name, 32);
+ mapHeader->width = stream->readUint16LE();
+ mapHeader->height = stream->readUint16LE();
+ mapHeader->background = stream->readUint32LE();
+ mapHeader->foreground = stream->readUint32LE();
+ mapHeader->iconNum = stream->readUint16LE();
+ mapHeader->iconList = stream->readUint32LE();
+ mapHeader->infoNum = stream->readUint16LE();
+ mapHeader->infoList = stream->readUint32LE();
+
+ /*
+ TODO: Set the InMapName in hdb.cpp
+ */
+
+ warning("STUB: MAPLOADER: LOAD MAP INCOMPLETE");
return false;
}
diff --git a/engines/hdb/map-loader.h b/engines/hdb/map-loader.h
index b1b2a4eedf..5f06817ac2 100644
--- a/engines/hdb/map-loader.h
+++ b/engines/hdb/map-loader.h
@@ -27,7 +27,7 @@
namespace HDB {
-struct MSMEntry {
+struct MSMHeader {
char name[32];
uint16 width;
uint16 height;
@@ -56,7 +56,7 @@ class MapLoader {
public:
MapLoader();
- bool loadMap(Common::SeekableReadStream *stream);
+ bool loadMap(Common::SeekableReadStream *stream, int32 length);
int loadTiles();
bool isLoaded() {
@@ -64,6 +64,7 @@ public:
}
private:
+ MSMHeader *mapHeader;
bool _mapLoaded;
};