aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNipun Garg2019-07-08 21:43:32 +0530
committerEugene Sandulenko2019-09-03 17:17:15 +0200
commit17eaafacfdf4aa487cb596fd887d89f7bc911883 (patch)
treea2c5472b7ef39473b4d9cf31971de825697e8f0e
parentebbee5cef40a8ce7152df717cd804dbf89a22198 (diff)
downloadscummvm-rg350-17eaafacfdf4aa487cb596fd887d89f7bc911883.tar.gz
scummvm-rg350-17eaafacfdf4aa487cb596fd887d89f7bc911883.tar.bz2
scummvm-rg350-17eaafacfdf4aa487cb596fd887d89f7bc911883.zip
HDB: Unstub code for saving and loading Gfx
-rw-r--r--engines/hdb/ai-init.cpp47
-rw-r--r--engines/hdb/window.h4
2 files changed, 41 insertions, 10 deletions
diff --git a/engines/hdb/ai-init.cpp b/engines/hdb/ai-init.cpp
index b7869e144f..a9416f9c52 100644
--- a/engines/hdb/ai-init.cpp
+++ b/engines/hdb/ai-init.cpp
@@ -1235,7 +1235,7 @@ void AI::restartSystem() {
}
void AI::save(Common::OutSaveFile *out) {
- int i;
+ int i, j;
// Misc Variables
out->writeByte(_playerInvisible);
@@ -1275,7 +1275,6 @@ void AI::save(Common::OutSaveFile *out) {
// Save Inventory
for (i = 0; i < kMaxInventory; i++) {
out->writeUint16LE(_inventory[i].keep);
- warning("STUB: Save Inventory Item");
}
out->writeUint32LE(_numInventory);
@@ -1283,10 +1282,8 @@ void AI::save(Common::OutSaveFile *out) {
for (i = 0; i < kMaxDeliveries; i++) {
out->write(_deliveries[i].itemTextName, 32);
out->write(_deliveries[i].itemGfxName, 32);
- warning("STUB: Save _deliveries[i].itemGfx");
out->write(_deliveries[i].destTextName, 32);
out->write(_deliveries[i].destGfxName, 32);
- warning("STUB: Save _deliveries[i].destGfx");
out->write(_deliveries[i].id, 32);
}
out->writeUint32LE(_numDeliveries);
@@ -1419,7 +1416,7 @@ void AI::save(Common::OutSaveFile *out) {
}
void AI::loadSaveFile(Common::InSaveFile *in) {
- int i;
+ int i, j;
// Clean everything out
restartSystem();
@@ -1462,7 +1459,6 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
// Load Inventory
for (i = 0; i < kMaxInventory; i++) {
_inventory[i].keep = in->readUint16LE();
- warning("STUB: Load Inventory Item");
}
_numInventory = in->readUint32LE();
@@ -1470,10 +1466,8 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
for (i = 0; i < kMaxDeliveries; i++) {
in->read(_deliveries[i].itemTextName, 32);
in->read(_deliveries[i].itemGfxName, 32);
- warning("STUB: Load _deliveries[i].itemGfx");
in->read(_deliveries[i].destTextName, 32);
in->read(_deliveries[i].destGfxName, 32);
- warning("STUB: Load _deliveries[i].destGfx");
in->read(_deliveries[i].id, 32);
}
_numDeliveries = in->readUint32LE();
@@ -1548,6 +1542,43 @@ void AI::loadSaveFile(Common::InSaveFile *in) {
// Load Gatepuddles
_gatePuddles = in->readSint32LE();
+ // Cache Gfx for Panic Zone, if needed
+ for (i = 0; i < _numTeleporters; i++)
+ if ((_teleporters[i].anim1 == 2) ||
+ (_teleporters[i].anim2 == 2) &&
+ !g_hdb->_window->_pzInfo.gfxPanic) {
+ g_hdb->_window->loadPanicZoneGfx();
+ break;
+ }
+
+ // Cache Graphics for Inventory and Deliveries
+ for (i = 0; i < _numInventory; i++) {
+ AIEntity *temp = &_inventory[i].ent;
+
+ // Clear out all ptrs in entity before writing out
+
+ for (j = 0; j < kMaxAnimFrames; j++)
+ temp->blinkGfx[j] = temp->movedownGfx[j] = temp->moveupGfx[j] =
+ temp->moveleftGfx[j] = temp->moverightGfx[j] = temp->standdownGfx[j] =
+ temp->standupGfx[j] = temp->standleftGfx[j] = temp->standrightGfx[j] =
+ temp->special1Gfx[j] = NULL;
+
+ temp->blinkFrames = temp->movedownFrames = temp->moveupFrames = temp->moveleftFrames =
+ temp->moverightFrames = temp->standdownFrames = temp->standupFrames = temp->standleftFrames =
+ temp->standrightFrames = 0;
+
+ temp->draw = NULL;
+ temp->aiDraw = NULL;
+ temp->aiAction = temp->aiInit = temp->aiUse = NULL;
+
+ cacheEntGfx(temp, false);
+ }
+
+ for (i = 0; i < _numDeliveries; i++) {
+ _deliveries[i].itemGfx = g_hdb->_gfx->getTileGfx(_deliveries[i].itemGfxName, -1);
+ _deliveries[i].destGfx = g_hdb->_gfx->getTileGfx(_deliveries[i].destGfxName, -1);
+ }
+
// Load AnimTargets
_animTargets.resize(in->readUint32LE());
for (i = 0; (uint)i < _animTargets.size(); i++) {
diff --git a/engines/hdb/window.h b/engines/hdb/window.h
index be7bbfc99c..21dd98d8d9 100644
--- a/engines/hdb/window.h
+++ b/engines/hdb/window.h
@@ -273,6 +273,8 @@ public:
return _gemGfx;
}
+ PanicZone _pzInfo, _tempPzInfo;
+
private:
DialogInfo _dialogInfo;
@@ -286,8 +288,6 @@ private:
Common::Array<TOut *> _textOutList;
DlvsInfo _dlvsInfo;
- PanicZone _pzInfo, _tempPzInfo;
-
char _msgQueueStr[kMaxMsgQueue][128];
int _msgQueueWait[kMaxMsgQueue];
int _numMsgQueue;