From 37574a3bcf2a85e0faf23b0278b560ab1a36086e Mon Sep 17 00:00:00 2001 From: whiterandrek Date: Mon, 21 May 2018 21:38:02 +0300 Subject: PINK: remove >> << operators --- engines/pink/archive.h | 88 ---------------------- engines/pink/file.h | 1 - engines/pink/objects/actions/action_cel.cpp | 3 +- engines/pink/objects/actions/action_loop.cpp | 3 +- engines/pink/objects/actions/action_play.cpp | 2 +- .../pink/objects/actions/action_play_with_sfx.cpp | 9 ++- .../pink/objects/actions/action_play_with_sfx.h | 4 +- engines/pink/objects/actions/action_sound.cpp | 2 +- engines/pink/objects/actions/action_still.cpp | 2 +- engines/pink/objects/actions/action_talk.cpp | 2 +- engines/pink/objects/actions/action_text.cpp | 8 +- engines/pink/objects/actors/actor.cpp | 4 +- engines/pink/objects/actors/actor.h | 5 +- engines/pink/objects/actors/pda_button_actor.cpp | 1 - engines/pink/objects/actors/supporting_actor.cpp | 6 +- engines/pink/objects/condition.cpp | 6 +- engines/pink/objects/handlers/handler.cpp | 9 ++- engines/pink/objects/handlers/handler.h | 6 +- engines/pink/objects/handlers/handler_mgr.cpp | 4 +- engines/pink/objects/handlers/handler_mgr.h | 8 +- engines/pink/objects/handlers/handler_timer.cpp | 2 +- engines/pink/objects/handlers/handler_timer.h | 4 +- engines/pink/objects/inventory.cpp | 3 +- engines/pink/objects/inventory.h | 10 +-- engines/pink/objects/module.cpp | 2 +- engines/pink/objects/module.h | 2 +- engines/pink/objects/object.cpp | 1 - engines/pink/objects/pages/game_page.cpp | 19 +++-- engines/pink/objects/pages/game_page.h | 2 +- engines/pink/objects/pages/page.cpp | 2 +- engines/pink/objects/pages/page.h | 2 +- engines/pink/objects/sequences/seq_timer.cpp | 2 +- engines/pink/objects/sequences/sequence.cpp | 4 +- engines/pink/objects/sequences/sequence.h | 4 +- engines/pink/objects/sequences/sequence_item.cpp | 3 +- engines/pink/objects/sequences/sequencer.cpp | 3 +- engines/pink/objects/sequences/sequencer.h | 10 +-- engines/pink/objects/side_effect.cpp | 14 ++-- engines/pink/objects/side_effect.h | 8 +- engines/pink/objects/walk/walk_location.cpp | 2 +- engines/pink/objects/walk/walk_location.h | 6 +- engines/pink/objects/walk/walk_mgr.cpp | 2 +- engines/pink/objects/walk/walk_mgr.h | 4 +- engines/pink/pink.cpp | 3 +- engines/pink/pink.h | 3 +- engines/pink/utils.h | 55 ++++++++++++++ 46 files changed, 161 insertions(+), 184 deletions(-) create mode 100644 engines/pink/utils.h (limited to 'engines') diff --git a/engines/pink/archive.h b/engines/pink/archive.h index cc6711e28c..e9369877a5 100644 --- a/engines/pink/archive.h +++ b/engines/pink/archive.h @@ -67,94 +67,6 @@ private: Common::WriteStream *_writeStream; }; -template -inline Archive &operator>>(Archive &archive, Common::Array &arr){ - uint size = archive.readCount(); - arr.resize(size); - for (uint i = 0; i < size; ++i) { - arr[i] = dynamic_cast(archive.readObject()); - assert(arr[i]); - } - return archive; -} - -template -inline Archive &operator>>(Archive &archive, Object &obj){ - obj.load(archive); - return archive; -} - -inline Archive &operator>>(Archive &archive, Common::String &string){ - string = archive.readString(); - return archive; -} - -inline Archive &operator>>(Archive &archive, int32 &num){ - num = archive.readDWORD(); - return archive; -} - -inline Archive &operator>>(Archive &archive, uint32 &num){ - num = archive.readDWORD(); - return archive; -} - -inline Archive &operator>>(Archive &archive, uint16 &num){ - num = archive.readWORD(); - return archive; -} - -inline Archive &operator>>(Archive &archive, Common::StringArray &array){ - uint32 size = archive.readCount(); - array.resize(size); - for (uint i = 0; i < size; ++i) { - array[i] = archive.readString(); - } - return archive; -} - -inline Archive &operator>>(Archive &archive, Common::StringMap &map){ - uint size = archive.readCount(); - for (uint i = 0; i < size; ++i) { - Common::String key = archive.readString(); - Common::String val = archive.readString(); - map.setVal(key, val); - } - return archive; -} - -inline Archive &operator<<(Archive &archive, Common::String &string){ - archive.writeString(string); - return archive; -} - -inline Archive &operator<<(Archive &archive, uint32 &num){ - archive.writeDWORD(num); - return archive; -} - -inline Archive &operator<<(Archive &archive, uint16 &num){ - archive.writeWORD(num); - return archive; -} - -inline Archive &operator<<(Archive &archive, Common::StringArray &array){ - archive.writeWORD(array.size()); - for (uint i = 0; i < array.size(); ++i) { - archive.writeString(array[i]); - } - return archive; -} - -inline Archive &operator<<(Archive &archive, Common::StringMap &map){ - archive.writeWORD(map.size()); - for (Common::StringMap::const_iterator it = map.begin(); it != map.end(); ++it) { - archive.writeString(it->_key); - archive.writeString(it->_value); - } - return archive; -} - } // End of namespace Pink #endif diff --git a/engines/pink/file.h b/engines/pink/file.h index dbcfaae314..d7053a137b 100644 --- a/engines/pink/file.h +++ b/engines/pink/file.h @@ -71,7 +71,6 @@ private: uint32 _timestamp; uint32 _tableOffset; uint32 _tableSize; - ObjectDescription *_table; }; class BroFile : public Common::File { diff --git a/engines/pink/objects/actions/action_cel.cpp b/engines/pink/objects/actions/action_cel.cpp index e878c3e0ae..1b33fd737e 100644 --- a/engines/pink/objects/actions/action_cel.cpp +++ b/engines/pink/objects/actions/action_cel.cpp @@ -38,7 +38,8 @@ ActionCEL::ActionCEL() void ActionCEL::deserialize(Archive &archive) { Action::deserialize(archive); - archive >> _fileName >> _z; + _fileName = archive.readString(); + _z = archive.readDWORD(); } void ActionCEL::start(bool unk) { diff --git a/engines/pink/objects/actions/action_loop.cpp b/engines/pink/objects/actions/action_loop.cpp index 45a1b08e0f..03c04f9dee 100644 --- a/engines/pink/objects/actions/action_loop.cpp +++ b/engines/pink/objects/actions/action_loop.cpp @@ -30,7 +30,8 @@ namespace Pink { void ActionLoop::deserialize(Archive &archive) { ActionPlay::deserialize(archive); uint16 style; - archive >> _intro >> style; + _intro = archive.readDWORD(); + style = archive.readWORD(); switch (style) { case kPingPong: _style = kPingPong; diff --git a/engines/pink/objects/actions/action_play.cpp b/engines/pink/objects/actions/action_play.cpp index d8172a729d..6ab21db32e 100644 --- a/engines/pink/objects/actions/action_play.cpp +++ b/engines/pink/objects/actions/action_play.cpp @@ -31,7 +31,7 @@ namespace Pink { void ActionPlay::deserialize(Archive &archive) { ActionStill::deserialize(archive); - archive >> _stopFrame; + _stopFrame = archive.readDWORD(); } void ActionPlay::toConsole() { diff --git a/engines/pink/objects/actions/action_play_with_sfx.cpp b/engines/pink/objects/actions/action_play_with_sfx.cpp index 2c23fa0903..f54d81c66e 100644 --- a/engines/pink/objects/actions/action_play_with_sfx.cpp +++ b/engines/pink/objects/actions/action_play_with_sfx.cpp @@ -30,7 +30,8 @@ namespace Pink { void ActionPlayWithSfx::deserialize(Pink::Archive &archive) { ActionPlay::deserialize(archive); - archive >> _isLoop >> _sfxArray; + _isLoop = archive.readDWORD(); + _sfxArray.deserialize(archive); } void ActionPlayWithSfx::toConsole() { @@ -79,8 +80,10 @@ ActionPlayWithSfx::~ActionPlayWithSfx() { } void ActionSfx::deserialize(Pink::Archive &archive) { - archive >> _frame >> _volume >> _sfxName; - archive.readObject(); + _frame = archive.readDWORD(); + _volume = archive.readDWORD(); + _sfxName = archive.readString(); + archive.readObject(); // pointer of ActionPlayWithSfx } void ActionSfx::toConsole() { diff --git a/engines/pink/objects/actions/action_play_with_sfx.h b/engines/pink/objects/actions/action_play_with_sfx.h index 44b33420c7..865f3685cc 100644 --- a/engines/pink/objects/actions/action_play_with_sfx.h +++ b/engines/pink/objects/actions/action_play_with_sfx.h @@ -23,8 +23,6 @@ #ifndef PINK_ACTION_PLAY_WITH_SFX_H #define PINK_ACTION_PLAY_WITH_SFX_H -#include "common/array.h" - #include "pink/objects/actions/action_play.h" namespace Pink { @@ -44,7 +42,7 @@ protected: private: void updateSound(); uint32 _isLoop; - Common::Array _sfxArray; + Array _sfxArray; }; class Sound; diff --git a/engines/pink/objects/actions/action_sound.cpp b/engines/pink/objects/actions/action_sound.cpp index a125ec0a2e..196ae61076 100644 --- a/engines/pink/objects/actions/action_sound.cpp +++ b/engines/pink/objects/actions/action_sound.cpp @@ -41,7 +41,7 @@ ActionSound::~ActionSound(){ void ActionSound::deserialize(Archive &archive) { Action::deserialize(archive); - archive >> _fileName; + _fileName = archive.readString(); _volume = archive.readDWORD(); _isLoop = (bool) archive.readDWORD(); _isBackground = (bool) archive.readDWORD(); diff --git a/engines/pink/objects/actions/action_still.cpp b/engines/pink/objects/actions/action_still.cpp index 0bcfcebf3b..6afa2df5aa 100644 --- a/engines/pink/objects/actions/action_still.cpp +++ b/engines/pink/objects/actions/action_still.cpp @@ -31,7 +31,7 @@ namespace Pink { void ActionStill::deserialize(Archive &archive) { ActionCEL::deserialize(archive); - archive >> _startFrame; + _startFrame = archive.readDWORD(); } void ActionStill::toConsole() { diff --git a/engines/pink/objects/actions/action_talk.cpp b/engines/pink/objects/actions/action_talk.cpp index 20abdc00f1..ab15aedfa4 100644 --- a/engines/pink/objects/actions/action_talk.cpp +++ b/engines/pink/objects/actions/action_talk.cpp @@ -31,7 +31,7 @@ namespace Pink { void ActionTalk::deserialize(Archive &archive) { ActionLoop::deserialize(archive); - archive >> _vox; + _vox = archive.readString(); } void ActionTalk::toConsole() { diff --git a/engines/pink/objects/actions/action_text.cpp b/engines/pink/objects/actions/action_text.cpp index 034aa1da1e..27bcafec47 100644 --- a/engines/pink/objects/actions/action_text.cpp +++ b/engines/pink/objects/actions/action_text.cpp @@ -29,10 +29,12 @@ namespace Pink { void ActionText::deserialize(Archive &archive) { for (int i = 0; i < 4 ; ++i) { - archive >> _bounds[i]; + _bounds[i] = archive.readDWORD(); } - archive >> _centered >> _scrollBar - >> _textColor >> _backgroundColor; + _centered = archive.readDWORD(); + _scrollBar = archive.readDWORD(); + _textColor = archive.readDWORD(); + _backgroundColor = archive.readDWORD(); } void ActionText::toConsole() { diff --git a/engines/pink/objects/actors/actor.cpp b/engines/pink/objects/actors/actor.cpp index 67e0b2a7bd..c8079375ab 100644 --- a/engines/pink/objects/actors/actor.cpp +++ b/engines/pink/objects/actors/actor.cpp @@ -32,7 +32,7 @@ namespace Pink { void Actor::deserialize(Archive &archive) { NamedObject::deserialize(archive); _page = static_cast(archive.readObject()); - archive >> _actions; + _actions.deserialize(archive); } void Actor::toConsole() { @@ -135,7 +135,7 @@ Actor::~Actor() { void Actor::loadState(Archive &archive) { Common::String actionName; - archive >> actionName; + actionName = archive.readString(); _action = findAction(actionName); } diff --git a/engines/pink/objects/actors/actor.h b/engines/pink/objects/actors/actor.h index 4992a75194..b7650a20d0 100644 --- a/engines/pink/objects/actors/actor.h +++ b/engines/pink/objects/actors/actor.h @@ -23,10 +23,9 @@ #ifndef PINK_ACTOR_H #define PINK_ACTOR_H -#include "common/array.h" #include "common/rect.h" -#include "pink/objects/object.h" +#include "pink/utils.h" namespace Pink { @@ -81,7 +80,7 @@ public: protected: GamePage *_page; Action *_action; - Common::Array _actions; + Array _actions; bool _isActionEnded; }; diff --git a/engines/pink/objects/actors/pda_button_actor.cpp b/engines/pink/objects/actors/pda_button_actor.cpp index 18e29a617c..d1bd63cee1 100644 --- a/engines/pink/objects/actors/pda_button_actor.cpp +++ b/engines/pink/objects/actors/pda_button_actor.cpp @@ -20,7 +20,6 @@ * */ -#include "pink/archive.h" #include "pink/objects/actors/pda_button_actor.h" namespace Pink { diff --git a/engines/pink/objects/actors/supporting_actor.cpp b/engines/pink/objects/actors/supporting_actor.cpp index 4971cca7c8..04fbb8b18f 100644 --- a/engines/pink/objects/actors/supporting_actor.cpp +++ b/engines/pink/objects/actors/supporting_actor.cpp @@ -20,7 +20,7 @@ * */ -#include "pink/archive.h" +#include "pink/utils.h" #include "pink/constants.h" #include "pink/cursor_mgr.h" #include "pink/objects/inventory.h" @@ -31,7 +31,9 @@ namespace Pink { void SupportingActor::deserialize(Archive &archive) { Actor::deserialize(archive); - archive >> _location >> _pdaLink >> _cursor; + _location = archive.readString(); + _pdaLink = archive.readString(); + _cursor = archive.readString(); _handlerMgr.deserialize(archive); } diff --git a/engines/pink/objects/condition.cpp b/engines/pink/objects/condition.cpp index 3de8605060..be127305a0 100644 --- a/engines/pink/objects/condition.cpp +++ b/engines/pink/objects/condition.cpp @@ -29,7 +29,8 @@ namespace Pink { void Pink::ConditionVariable::deserialize(Archive &archive) { - archive >> _name >> _value; + _name = archive.readString(); + _value = archive.readString(); } bool Pink::ConditionGameVariable::evaluate(Actor *actor) { @@ -73,7 +74,8 @@ void ConditionNotPageVariable::toConsole() { } void ConditionInventoryItemOwner::deserialize(Archive &archive) { - archive >> _item >> _owner; + _item = archive.readString(); + _owner = archive.readString(); } bool ConditionInventoryItemOwner::evaluate(Actor *actor) { diff --git a/engines/pink/objects/handlers/handler.cpp b/engines/pink/objects/handlers/handler.cpp index 4c302224e8..8833153e0c 100644 --- a/engines/pink/objects/handlers/handler.cpp +++ b/engines/pink/objects/handlers/handler.cpp @@ -33,8 +33,8 @@ namespace Pink { void Handler::deserialize(Archive &archive) { - archive >> _conditions; - archive >> _sideEffects; + _conditions.deserialize(archive); + _sideEffects.deserialize(archive); } bool Handler::isSuitable(Actor *actor) { @@ -67,7 +67,7 @@ Handler::~Handler() { void HandlerSequences::deserialize(Archive &archive) { Handler::deserialize(archive); - archive >> _sequences; + _sequences.deserialize(archive); } void HandlerSequences::handle(Actor *actor) { @@ -131,7 +131,8 @@ void HandlerLeftClick::toConsole() { void HandlerUseClick::deserialize(Archive &archive) { HandlerSequences::deserialize(archive); - archive >> _inventoryItem >> _recepient; + _inventoryItem = archive.readString(); + _recepient = archive.readString(); } void HandlerUseClick::toConsole() { diff --git a/engines/pink/objects/handlers/handler.h b/engines/pink/objects/handlers/handler.h index 769a4c3c6a..9d0d29833e 100644 --- a/engines/pink/objects/handlers/handler.h +++ b/engines/pink/objects/handlers/handler.h @@ -44,8 +44,8 @@ public: protected: void executeSideEffects(Actor *actor); - Common::Array _conditions; - Common::Array _sideEffects; + Array _conditions; + Array _sideEffects; }; class Sequence; @@ -58,7 +58,7 @@ public: protected: virtual void execute(Sequence *sequence) = 0; - Common::StringArray _sequences; + StringArray _sequences; }; class HandlerStartPage : public HandlerSequences { diff --git a/engines/pink/objects/handlers/handler_mgr.cpp b/engines/pink/objects/handlers/handler_mgr.cpp index c326ae8aab..2c5230eaeb 100644 --- a/engines/pink/objects/handlers/handler_mgr.cpp +++ b/engines/pink/objects/handlers/handler_mgr.cpp @@ -28,7 +28,9 @@ namespace Pink { void HandlerMgr::deserialize(Archive &archive) { - archive >> _leftClickHandlers >> _useClickHandlers >> _timerHandlers; + _leftClickHandlers.deserialize(archive); + _useClickHandlers.deserialize(archive); + _timerHandlers.deserialize(archive); } void HandlerMgr::toConsole() { diff --git a/engines/pink/objects/handlers/handler_mgr.h b/engines/pink/objects/handlers/handler_mgr.h index f9a073916d..36e2b05513 100644 --- a/engines/pink/objects/handlers/handler_mgr.h +++ b/engines/pink/objects/handlers/handler_mgr.h @@ -23,8 +23,6 @@ #ifndef PINK_HANDLER_MGR_H #define PINK_HANDLER_MGR_H -#include "common/array.h" - #include "pink/objects/object.h" namespace Pink { @@ -58,9 +56,9 @@ private: HandlerLeftClick *findSuitableHandlerLeftClick(Actor *actor); HandlerUseClick *findSuitableHandlerUseClick(Actor *actor, InventoryItem *item); - Common::Array _leftClickHandlers; - Common::Array _useClickHandlers; - Common::Array _timerHandlers; + Array _leftClickHandlers; + Array _useClickHandlers; + Array _timerHandlers; }; } diff --git a/engines/pink/objects/handlers/handler_timer.cpp b/engines/pink/objects/handlers/handler_timer.cpp index e9af952ad1..469b6f9a69 100644 --- a/engines/pink/objects/handlers/handler_timer.cpp +++ b/engines/pink/objects/handlers/handler_timer.cpp @@ -37,7 +37,7 @@ namespace Pink { void HandlerTimerActions::deserialize(Archive &archive) { Handler::deserialize(archive); - archive >> _actions; + _actions.deserialize(archive); } void HandlerTimerActions::toConsole() { diff --git a/engines/pink/objects/handlers/handler_timer.h b/engines/pink/objects/handlers/handler_timer.h index 737804f4ff..b0fb4bc453 100644 --- a/engines/pink/objects/handlers/handler_timer.h +++ b/engines/pink/objects/handlers/handler_timer.h @@ -23,8 +23,6 @@ #ifndef PINK_HANDLER_TIMER_H #define PINK_HANDLER_TIMER_H -#include "common/str-array.h" - #include "pink/objects/handlers/handler.h" namespace Pink { @@ -46,7 +44,7 @@ public: virtual void handle(Actor *actor); private: - Common::StringArray _actions; + StringArray _actions; }; //appear in HokusPokus diff --git a/engines/pink/objects/inventory.cpp b/engines/pink/objects/inventory.cpp index c2607bed74..4280cd5a48 100644 --- a/engines/pink/objects/inventory.cpp +++ b/engines/pink/objects/inventory.cpp @@ -23,7 +23,6 @@ #include "common/debug.h" -#include "pink/archive.h" #include "pink/director.h" #include "pink/pink.h" #include "pink/objects/inventory.h" @@ -59,7 +58,7 @@ InventoryMgr::~InventoryMgr() { } void InventoryMgr::deserialize(Archive &archive) { - archive >> _items; + _items.deserialize(archive); } InventoryItem *InventoryMgr::findInventoryItem(const Common::String &name) { diff --git a/engines/pink/objects/inventory.h b/engines/pink/objects/inventory.h index 8cb4f0aba9..b8de36b8b4 100644 --- a/engines/pink/objects/inventory.h +++ b/engines/pink/objects/inventory.h @@ -23,14 +23,12 @@ #ifndef PINK_INVENTORY_H #define PINK_INVENTORY_H -#include "common/array.h" #include "common/rect.h" -#include "pink/objects/object.h" +#include "pink/utils.h" namespace Pink { - class InventoryItem : public NamedObject { public: virtual void deserialize(Archive &archive); @@ -77,8 +75,7 @@ private: void showNextItem(bool direction); - InventoryItem *_item; - Common::Array _items; + LeadActor *_lead; Actor *_window; @@ -86,6 +83,9 @@ private: Actor *_rightArrow; Actor *_leftArrow; + InventoryItem *_item; + Array _items; + enum State { kIdle = 0, kOpening = 1, diff --git a/engines/pink/objects/module.cpp b/engines/pink/objects/module.cpp index 2b1518704a..6f9fab06dc 100644 --- a/engines/pink/objects/module.cpp +++ b/engines/pink/objects/module.cpp @@ -49,7 +49,7 @@ void Module::load(Archive &archive){ archive.readString(); // skip directory _invMgr.deserialize(archive); - archive >> _pages; + _pages.deserialize(archive); } void Module::init(bool isLoadingSave, const Common::String &pageName) { diff --git a/engines/pink/objects/module.h b/engines/pink/objects/module.h index c19571bd1c..622381d8a3 100644 --- a/engines/pink/objects/module.h +++ b/engines/pink/objects/module.h @@ -65,7 +65,7 @@ private: PinkEngine *_game; GamePage *_page; - Common::Array _pages; + Array _pages; InventoryMgr _invMgr; Common::StringMap _variables; }; diff --git a/engines/pink/objects/object.cpp b/engines/pink/objects/object.cpp index d123aaf473..796b356a6c 100644 --- a/engines/pink/objects/object.cpp +++ b/engines/pink/objects/object.cpp @@ -23,7 +23,6 @@ #include "common/debug.h" #include "pink/archive.h" -#include "pink/objects/object.h" namespace Pink { diff --git a/engines/pink/objects/pages/game_page.cpp b/engines/pink/objects/pages/game_page.cpp index bdfb92bef6..ca9f304225 100644 --- a/engines/pink/objects/pages/game_page.cpp +++ b/engines/pink/objects/pages/game_page.cpp @@ -65,7 +65,7 @@ void GamePage::load(Archive &archive) { _walkMgr->deserialize(archive); _sequencer->deserialize(archive); - archive >> _handlers; + _handlers.deserialize(archive); } void GamePage::init(bool isLoadingSave) { @@ -153,11 +153,17 @@ void GamePage::loadState() { //_variables.clear(1); Common::StringMap mapTest; // HACK. Without it isn't working //archive >> _variables; - archive >> mapTest; + + uint size = archive.readCount(); + for (uint i = 0; i < size; ++i) { + Common::String key = archive.readString(); + Common::String val = archive.readString(); + mapTest.setVal(key, val); + } + _variables = mapTest; - uint16 actorCount; - archive >> actorCount; + uint16 actorCount = archive.readWORD(); Common::String actorName; for (int i = 0; i < actorCount; ++i) { @@ -170,7 +176,10 @@ void GamePage::saveState() { _memFile = new Common::MemoryReadWriteStream(DisposeAfterUse::YES); Archive archive(static_cast(_memFile)); - archive << _variables; + for (Common::StringMap::const_iterator it = _variables.begin(); it != _variables.end(); ++it) { + archive.writeString(it->_key); + archive.writeString(it->_value); + } archive.writeWORD(_actors.size()); for (uint i = 0; i < _actors.size(); ++i) { diff --git a/engines/pink/objects/pages/game_page.h b/engines/pink/objects/pages/game_page.h index 9aa5422981..37584ee3fb 100644 --- a/engines/pink/objects/pages/game_page.h +++ b/engines/pink/objects/pages/game_page.h @@ -67,7 +67,7 @@ private: CursorMgr *_cursorMgr; WalkMgr *_walkMgr; Sequencer *_sequencer; - Common::Array _handlers; + Array _handlers; Common::StringMap _variables; }; diff --git a/engines/pink/objects/pages/page.cpp b/engines/pink/objects/pages/page.cpp index cf2d3a01be..3c46d19b0f 100644 --- a/engines/pink/objects/pages/page.cpp +++ b/engines/pink/objects/pages/page.cpp @@ -34,7 +34,7 @@ void Page::load(Archive &archive) { archive.mapObject(this); NamedObject::deserialize(archive); archive.readString(); //skip directory - archive >> _actors; + _actors.deserialize(archive); } Actor *Page::findActor(const Common::String &name) { diff --git a/engines/pink/objects/pages/page.h b/engines/pink/objects/pages/page.h index c6d82209c5..2d1990c76f 100644 --- a/engines/pink/objects/pages/page.h +++ b/engines/pink/objects/pages/page.h @@ -51,7 +51,7 @@ public: protected: void init(); - Common::Array _actors; + Array _actors; ResourceMgr _resMgr; LeadActor *_leadActor; }; diff --git a/engines/pink/objects/sequences/seq_timer.cpp b/engines/pink/objects/sequences/seq_timer.cpp index c8d166a0cd..e661308c56 100644 --- a/engines/pink/objects/sequences/seq_timer.cpp +++ b/engines/pink/objects/sequences/seq_timer.cpp @@ -35,7 +35,7 @@ SeqTimer::SeqTimer() : _updatesToMessage(0) {} void SeqTimer::deserialize(Archive &archive) { - archive >> _actor; + _actor = archive.readString(); _period = archive.readDWORD(); _range = archive.readDWORD(); _sequencer = static_cast(archive.readObject()); diff --git a/engines/pink/objects/sequences/sequence.cpp b/engines/pink/objects/sequences/sequence.cpp index ae979658f2..4cd041b087 100644 --- a/engines/pink/objects/sequences/sequence.cpp +++ b/engines/pink/objects/sequences/sequence.cpp @@ -46,7 +46,7 @@ Sequence::~Sequence() { void Sequence::deserialize(Archive &archive) { NamedObject::deserialize(archive); _sequencer = static_cast(archive.readObject()); - archive >> _items; + _items.deserialize(archive); } void Sequence::toConsole() { @@ -138,7 +138,7 @@ void Sequence::skipSubSequence() { void SequenceAudio::deserialize(Archive &archive) { Sequence::deserialize(archive); - archive >> _soundName; + _soundName = archive.readString(); } void SequenceAudio::toConsole() { diff --git a/engines/pink/objects/sequences/sequence.h b/engines/pink/objects/sequences/sequence.h index ba6d3be35a..e40b0160e2 100644 --- a/engines/pink/objects/sequences/sequence.h +++ b/engines/pink/objects/sequences/sequence.h @@ -23,8 +23,6 @@ #ifndef PINK_SEQUENCE_H #define PINK_SEQUENCE_H -#include "common/array.h" - #include "pink/objects/object.h" namespace Pink { @@ -58,7 +56,7 @@ public: public: SequenceContext *_context; Sequencer *_sequencer; - Common::Array _items; + Array _items; int _unk; }; diff --git a/engines/pink/objects/sequences/sequence_item.cpp b/engines/pink/objects/sequences/sequence_item.cpp index a6574b15de..07c708baf5 100644 --- a/engines/pink/objects/sequences/sequence_item.cpp +++ b/engines/pink/objects/sequences/sequence_item.cpp @@ -34,7 +34,8 @@ namespace Pink { void SequenceItem::deserialize(Archive &archive) { - archive >> _actor >> _action; + _actor = archive.readString(); + _action = archive.readString(); } void SequenceItem::toConsole() { diff --git a/engines/pink/objects/sequences/sequencer.cpp b/engines/pink/objects/sequences/sequencer.cpp index b8628193ff..852011cce7 100644 --- a/engines/pink/objects/sequences/sequencer.cpp +++ b/engines/pink/objects/sequences/sequencer.cpp @@ -44,7 +44,8 @@ Sequencer::~Sequencer() { } void Sequencer::deserialize(Archive &archive) { - archive >> _sequences >> _timers; + _sequences.deserialize(archive); + _timers.deserialize(archive); } Sequence *Sequencer::findSequence(const Common::String &name) { diff --git a/engines/pink/objects/sequences/sequencer.h b/engines/pink/objects/sequences/sequencer.h index 850649d23e..a48439768b 100644 --- a/engines/pink/objects/sequences/sequencer.h +++ b/engines/pink/objects/sequences/sequencer.h @@ -23,8 +23,6 @@ #ifndef PINK_SEQUENCER_H #define PINK_SEQUENCER_H -#include "common/array.h" - #include "pink/objects/object.h" namespace Pink { @@ -62,10 +60,10 @@ public: SequenceContext *_context; // context array - Common::Array _sequences; - Common::String _currentSequenceName; - Common::Array _timers; - GamePage *_page; + Array _sequences; + Array _timers; + Common::String _currentSequenceName; + GamePage *_page; uint _time; }; diff --git a/engines/pink/objects/side_effect.cpp b/engines/pink/objects/side_effect.cpp index cbd8291498..79d1c7fb2f 100644 --- a/engines/pink/objects/side_effect.cpp +++ b/engines/pink/objects/side_effect.cpp @@ -33,7 +33,8 @@ namespace Pink { void SideEffectExit::deserialize(Archive &archive) { - archive >> _nextModule >> _nextPage; + _nextModule = archive.readString(); + _nextPage = archive.readString(); } void SideEffectExit::execute(Actor *actor) { @@ -45,7 +46,7 @@ void SideEffectExit::toConsole() { } void SideEffectLocation::deserialize(Archive &archive) { - archive >> _location; + _location = archive.readString(); } void SideEffectLocation::execute(Actor *actor) { @@ -60,7 +61,8 @@ void SideEffectLocation::toConsole() { } void SideEffectInventoryItemOwner::deserialize(Archive &archive) { - archive >> _item >> _owner; + _item = archive.readString(); + _owner = archive.readString(); } void SideEffectInventoryItemOwner::execute(Actor *actor) { @@ -74,7 +76,8 @@ void SideEffectInventoryItemOwner::toConsole() { } void SideEffectVariable::deserialize(Pink::Archive &archive) { - archive >> _name >> _value; + _name = archive.readString(); + _value = archive.readString(); } void SideEffectGameVariable::execute(Actor *actor) { @@ -102,7 +105,8 @@ void SideEffectPageVariable::toConsole() { } void SideEffectRandomPageVariable::deserialize(Archive &archive) { - archive >> _name >> _values; + _name = archive.readString(); + _values.deserialize(archive); } void SideEffectRandomPageVariable::execute(Actor *actor) { diff --git a/engines/pink/objects/side_effect.h b/engines/pink/objects/side_effect.h index da6d548753..1a08d854e5 100644 --- a/engines/pink/objects/side_effect.h +++ b/engines/pink/objects/side_effect.h @@ -23,8 +23,7 @@ #ifndef PINK_SIDE_EFFECT_H #define PINK_SIDE_EFFECT_H -#include "common/str-array.h" - +#include "pink/utils.h" #include "pink/objects/object.h" namespace Pink { @@ -46,6 +45,7 @@ public: private: Common::String _nextModule; Common::String _nextPage; + Common::StringMap map; }; class SideEffectLocation : public SideEffect { @@ -106,9 +106,9 @@ public: private: Common::String _name; - Common::StringArray _values; + StringArray _values; }; -} +} // End of namespace Pink #endif diff --git a/engines/pink/objects/walk/walk_location.cpp b/engines/pink/objects/walk/walk_location.cpp index da5718f3d9..e3998daeb5 100644 --- a/engines/pink/objects/walk/walk_location.cpp +++ b/engines/pink/objects/walk/walk_location.cpp @@ -29,7 +29,7 @@ namespace Pink { void WalkLocation::deserialize(Pink::Archive &archive) { NamedObject::deserialize(archive); - archive >> _neighbors; + _neighbors.deserialize(archive); } void WalkLocation::toConsole() { diff --git a/engines/pink/objects/walk/walk_location.h b/engines/pink/objects/walk/walk_location.h index 3de039002d..b9b2a0abae 100644 --- a/engines/pink/objects/walk/walk_location.h +++ b/engines/pink/objects/walk/walk_location.h @@ -22,9 +22,7 @@ #ifndef PINK_WALK_LOCATION_H #define PINK_WALK_LOCATION_H -#include "common/str-array.h" - -#include "pink/objects/object.h" +#include "pink/utils.h" namespace Pink { @@ -35,7 +33,7 @@ public: Common::StringArray &getNeigbors() { return _neighbors;} private: - Common::StringArray _neighbors; + StringArray _neighbors; }; } // End of namespace Pink diff --git a/engines/pink/objects/walk/walk_mgr.cpp b/engines/pink/objects/walk/walk_mgr.cpp index ad447a94bf..4c0b120918 100644 --- a/engines/pink/objects/walk/walk_mgr.cpp +++ b/engines/pink/objects/walk/walk_mgr.cpp @@ -37,7 +37,7 @@ WalkMgr::WalkMgr() void WalkMgr::deserialize(Pink::Archive &archive) { _leadActor = static_cast(archive.readObject()); - archive >> _locations; + _locations.deserialize(archive); } WalkLocation *WalkMgr::findLocation(const Common::String &name) { diff --git a/engines/pink/objects/walk/walk_mgr.h b/engines/pink/objects/walk/walk_mgr.h index 522dcf884c..994796942b 100644 --- a/engines/pink/objects/walk/walk_mgr.h +++ b/engines/pink/objects/walk/walk_mgr.h @@ -23,8 +23,6 @@ #ifndef PINK_WALK_MGR_H #define PINK_WALK_MGR_H -#include "common/array.h" - #include "pink/objects/object.h" #include "pink/objects/walk/walk_shortest_path.h" @@ -65,7 +63,7 @@ private: LeadActor *_leadActor; WalkLocation *_destination; - Common::Array _locations; + Array _locations; WayPoint _current; WayPoint _next; bool _isWalking; diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp index 1923c00250..ee564dc1c6 100644 --- a/engines/pink/pink.cpp +++ b/engines/pink/pink.cpp @@ -30,7 +30,6 @@ #include "pink/pink.h" #include "pink/console.h" -#include "pink/objects/side_effect.h" #include "pink/objects/module.h" #include "pink/objects/actors/lead_actor.h" #include "pink/objects/sequences/sequencer.h" @@ -140,7 +139,7 @@ Common::Error Pink::PinkEngine::run() { void PinkEngine::load(Archive &archive) { archive.readString(); archive.readString(); - archive >> _modules; + _modules.deserialize(archive); } void PinkEngine::initModule(const Common::String &moduleName, bool isLoadingFromSave, const Common::String &pageName) { diff --git a/engines/pink/pink.h b/engines/pink/pink.h index 634adcd430..e77ba7274f 100644 --- a/engines/pink/pink.h +++ b/engines/pink/pink.h @@ -35,6 +35,7 @@ #include "pink/constants.h" #include "pink/director.h" #include "pink/file.h" +#include "pink/utils.h" /* * This is the namespace of the Pink engine. @@ -122,7 +123,7 @@ private: LeadActor *_actor; Module *_module; - Common::Array _modules; + Array _modules; Common::StringMap _variables; diff --git a/engines/pink/utils.h b/engines/pink/utils.h new file mode 100644 index 0000000000..77efdb94b9 --- /dev/null +++ b/engines/pink/utils.h @@ -0,0 +1,55 @@ +/* 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 PINK_UTILS_H +#define PINK_UTILS_H + +#include "pink/archive.h" + +namespace Pink { + +template +class Array : public Common::Array, public Object { +public: + virtual void deserialize(Archive &archive) { + uint size = archive.readCount(); + this->resize(size); + for (uint i = 0; i < size; ++i) { + this->data()[i] = reinterpret_cast(archive.readObject()); // dynamic_cast needs to know complete type + } + } +}; + +class StringArray : public Common::StringArray { +public: + inline void deserialize(Archive &archive) { + uint32 size = archive.readCount(); + this->resize(size); + for (uint i = 0; i < size; ++i) { + this->data()[i] = archive.readString(); + } + } +}; + +} // End of namespace Pink + +#endif \ No newline at end of file -- cgit v1.2.3