aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2019-07-09 22:37:25 +0200
committerEugene Sandulenko2019-09-03 17:17:16 +0200
commit42edeb4114279e16e699ba5f65f727acb3040529 (patch)
tree2edd7cfe2302984a193404a94a3f7846a20c37fc
parent458646981f5b2accbf7d741f43a0f21d8c0a6c1e (diff)
downloadscummvm-rg350-42edeb4114279e16e699ba5f65f727acb3040529.tar.gz
scummvm-rg350-42edeb4114279e16e699ba5f65f727acb3040529.tar.bz2
scummvm-rg350-42edeb4114279e16e699ba5f65f727acb3040529.zip
HDB: Fix AI::loadSaveFile()
-rw-r--r--engines/hdb/ai-init.cpp47
1 files changed, 28 insertions, 19 deletions
diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp
index 7fd3551881..7b9a823636 100644
--- a/engines/hdb/ai-init.cpp
+++ b/engines/hdb/ai-init.cpp
@@ -1780,12 +1780,17 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
}
// Load ArrowPaths
- _arrowPaths->resize(in->readUint32LE());
- for (i = 0; (uint)i < _arrowPaths->size(); i++) {
- _arrowPaths->operator[](i)->type = in->readUint16LE();
- _arrowPaths->operator[](i)->dir = (AIDir)in->readSint32LE();
- _arrowPaths->operator[](i)->tileX = in->readUint16LE();
- _arrowPaths->operator[](i)->tileY = in->readUint16LE();
+
+ uint32 arrowPathSIze = in->readUint32LE();
+ for (i = 0; (uint)i < arrowPathSIze; i++) {
+ ArrowPath *arrowPath = new ArrowPath;
+
+ arrowPath->type = in->readUint16LE();
+ arrowPath->dir = (AIDir)in->readSint32LE();
+ arrowPath->tileX = in->readUint16LE();
+ arrowPath->tileY = in->readUint16LE();
+
+ _arrowPaths->push_back(arrowPath);
}
// Load HereT List
@@ -1797,15 +1802,19 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
}
// Load Triggers
- _triggerList->resize(in->readUint32LE());
- for (i = 0; (uint)i < _triggerList->size(); i++) {
- in->read(_triggerList->operator[](i)->id, 32);
- _triggerList->operator[](i)->x = in->readUint16LE();
- _triggerList->operator[](i)->y = in->readUint16LE();
- _triggerList->operator[](i)->value1 = in->readUint16LE();
- _triggerList->operator[](i)->value2 = in->readUint16LE();
- in->read(_triggerList->operator[](i)->luaFuncInit, 32);
- in->read(_triggerList->operator[](i)->luaFuncUse, 32);
+ uint32 tsize = in->readUint32LE();
+ for (i = 0; (uint)i < tsize; i++) {
+ Trigger *t = new Trigger;
+
+ in->read(t->id, 32);
+ t->x = in->readUint16LE();
+ t->y = in->readUint16LE();
+ t->value1 = in->readUint16LE();
+ t->value2 = in->readUint16LE();
+ in->read(t->luaFuncInit, 32);
+ in->read(t->luaFuncUse, 32);
+
+ _triggerList->push_back(t);
}
AIEntity *e;
@@ -1814,8 +1823,8 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
EntFuncPtr draw;
// Load Floats
- _floats->resize(in->readUint32LE());
- for (i = 0; (uint)i < _floats->size(); i++) {
+ uint32 fsize = in->readUint32LE();
+ for (i = 0; (uint)i < fsize; i++) {
e = new AIEntity;
action = init = init2 = use = NULL;
draw = NULL;
@@ -1890,8 +1899,8 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
}
// Load Ents
- _ents->resize(in->readUint32LE());
- for (i = 0; (uint)i < _ents->size(); i++) {
+ uint32 esize = in->readUint32LE();
+ for (i = 0; (uint)i < esize; i++) {
e = new AIEntity;
action = init = init2 = use = NULL;
draw = NULL;