diff options
author | Paul Gilbert | 2015-07-05 19:16:54 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-07-05 19:16:54 -0400 |
commit | 8570f052a39eb6ba4efe3764eb152076fbcd2f76 (patch) | |
tree | eb71d36ac795fdb5118fb1a864a7843f5edec889 /engines/sherlock/tattoo | |
parent | 24663029035ec9bfd228e2dada39235656ac1daa (diff) | |
download | scummvm-rg350-8570f052a39eb6ba4efe3764eb152076fbcd2f76.tar.gz scummvm-rg350-8570f052a39eb6ba4efe3764eb152076fbcd2f76.tar.bz2 scummvm-rg350-8570f052a39eb6ba4efe3764eb152076fbcd2f76.zip |
SHERLOCK: RT: Cleanup and fleshing out of saving
Diffstat (limited to 'engines/sherlock/tattoo')
-rw-r--r-- | engines/sherlock/tattoo/tattoo_journal.cpp | 4 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_journal.h | 5 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_people.cpp | 61 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_people.h | 5 |
4 files changed, 56 insertions, 19 deletions
diff --git a/engines/sherlock/tattoo/tattoo_journal.cpp b/engines/sherlock/tattoo/tattoo_journal.cpp index 7fdb80ee66..6df5ee7458 100644 --- a/engines/sherlock/tattoo/tattoo_journal.cpp +++ b/engines/sherlock/tattoo/tattoo_journal.cpp @@ -428,10 +428,6 @@ void TattooJournal::drawFrame() { } -void TattooJournal::synchronize(Serializer &s) { - // TODO -} - void TattooJournal::drawControls(int mode) { TattooEngine &vm = *(TattooEngine *)_vm; Screen &screen = *_vm->_screen; diff --git a/engines/sherlock/tattoo/tattoo_journal.h b/engines/sherlock/tattoo/tattoo_journal.h index 7169e60359..5e5cfda8c2 100644 --- a/engines/sherlock/tattoo/tattoo_journal.h +++ b/engines/sherlock/tattoo/tattoo_journal.h @@ -94,11 +94,6 @@ public: * Draw the journal background, frame, and interface buttons */ virtual void drawFrame(); - - /** - * Synchronize the data for a savegame - */ - virtual void synchronize(Serializer &s); }; } // End of namespace Tattoo diff --git a/engines/sherlock/tattoo/tattoo_people.cpp b/engines/sherlock/tattoo/tattoo_people.cpp index 5956d98144..a7d7d2426c 100644 --- a/engines/sherlock/tattoo/tattoo_people.cpp +++ b/engines/sherlock/tattoo/tattoo_people.cpp @@ -967,6 +967,55 @@ void TattooPerson::checkWalkGraphics() { setImageFrame(); } +void TattooPerson::synchronize(Serializer &s) { + s.syncAsSint32LE(_position.x); + s.syncAsSint32LE(_position.y); + s.syncAsSint16LE(_sequenceNumber); + s.syncAsSint16LE(_type); + s.syncString(_walkVGSName); + s.syncString(_description); + s.syncString(_examine); + + // NPC specific properties + s.syncBytes(&_npcPath[0], MAX_NPC_PATH); + s.syncString(_npcName); + s.syncAsSint32LE(_npcPause); + s.syncAsByte(_lookHolmes); + s.syncAsByte(_updateNPCPath); + + // Walk to list + uint count = _walkTo.size(); + s.syncAsUint16LE(count); + if (s.isLoading()) { + // Load path + for (uint idx = 0; idx < count; ++count) { + int xp = 0, yp = 0; + s.syncAsSint16LE(xp); + s.syncAsSint16LE(yp); + _walkTo.push(Common::Point(xp, yp)); + } + } else { + // Save path + Common::Array<Common::Point> path; + + // Save the points of the path + for (uint idx = 0; idx < count; ++idx) { + Common::Point pt = _walkTo.pop(); + s.syncAsSint16LE(pt.x); + s.syncAsSint16LE(pt.y); + path.push_back(pt); + } + + // Re-add the pending points back to the _walkTo queue + for (uint idx = 0; idx < count; ++idx) + _walkTo.push(path[idx]); + } + + // Verbs + for (int idx = 0; idx < 2; ++idx) + _use[idx].synchronize(s); +} + /*----------------------------------------------------------------*/ TattooPeople::TattooPeople(SherlockEngine *vm) : People(vm) { @@ -1176,16 +1225,8 @@ int TattooPeople::findSpeaker(int speaker) { void TattooPeople::synchronize(Serializer &s) { s.syncAsByte(_holmesOn); - for (uint idx = 0; idx < _data.size(); ++idx) { - Person &p = *_data[idx]; - s.syncAsSint32LE(p._position.x); - s.syncAsSint32LE(p._position.y); - s.syncAsSint16LE(p._sequenceNumber); - s.syncAsSint16LE(p._type); - s.syncString(p._walkVGSName); - s.syncString(p._description); - s.syncString(p._examine); - } + for (uint idx = 0; idx < _data.size(); ++idx) + (*this)[idx].synchronize(s); s.syncAsSint16LE(_holmesQuotient); diff --git a/engines/sherlock/tattoo/tattoo_people.h b/engines/sherlock/tattoo/tattoo_people.h index 79794c2dae..4b35998cb4 100644 --- a/engines/sherlock/tattoo/tattoo_people.h +++ b/engines/sherlock/tattoo/tattoo_people.h @@ -173,6 +173,11 @@ public: void checkWalkGraphics(); /** + * Synchronize the data for a savegame + */ + void synchronize(Serializer &s); + + /** * This adjusts the sprites position, as well as it's animation sequence: */ virtual void adjustSprite(); |