diff options
author | Marisa-Chan | 2014-06-13 21:43:04 +0700 |
---|---|---|
committer | Marisa-Chan | 2014-06-13 21:43:04 +0700 |
commit | 45589950c0fb1a449351e6a00ef10d42290d8bae (patch) | |
tree | 44e4eedcb7e69d5fc386155b000ed038af07251d /engines/hugo/object.cpp | |
parent | 48360645dcd5f8fddb135b6e31ae5cae4be8d77f (diff) | |
parent | 5c005ad3a3f1df0bc968c85c1cf0fc48e36ab0b2 (diff) | |
download | scummvm-rg350-45589950c0fb1a449351e6a00ef10d42290d8bae.tar.gz scummvm-rg350-45589950c0fb1a449351e6a00ef10d42290d8bae.tar.bz2 scummvm-rg350-45589950c0fb1a449351e6a00ef10d42290d8bae.zip |
Merge remote-tracking branch 'upstream/master' into zvision
Conflicts:
engines/zvision/animation/rlf_animation.cpp
engines/zvision/animation_control.h
engines/zvision/core/console.cpp
engines/zvision/core/events.cpp
engines/zvision/cursors/cursor.cpp
engines/zvision/cursors/cursor_manager.cpp
engines/zvision/cursors/cursor_manager.h
engines/zvision/fonts/truetype_font.cpp
engines/zvision/graphics/render_manager.cpp
engines/zvision/graphics/render_manager.h
engines/zvision/inventory/inventory_manager.h
engines/zvision/inventory_manager.h
engines/zvision/meta_animation.h
engines/zvision/module.mk
engines/zvision/scripting/actions.cpp
engines/zvision/scripting/control.h
engines/zvision/scripting/controls/animation_control.cpp
engines/zvision/scripting/controls/animation_control.h
engines/zvision/scripting/controls/input_control.cpp
engines/zvision/scripting/controls/lever_control.cpp
engines/zvision/scripting/controls/timer_node.cpp
engines/zvision/scripting/controls/timer_node.h
engines/zvision/scripting/puzzle.h
engines/zvision/scripting/scr_file_handling.cpp
engines/zvision/scripting/script_manager.cpp
engines/zvision/scripting/script_manager.h
engines/zvision/sidefx.cpp
engines/zvision/sound/zork_raw.cpp
engines/zvision/sound/zork_raw.h
engines/zvision/video/video.cpp
engines/zvision/video/zork_avi_decoder.h
engines/zvision/zvision.cpp
engines/zvision/zvision.h
Diffstat (limited to 'engines/hugo/object.cpp')
-rw-r--r-- | engines/hugo/object.cpp | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/engines/hugo/object.cpp b/engines/hugo/object.cpp index 7b4783e4d8..bbd2b93adc 100644 --- a/engines/hugo/object.cpp +++ b/engines/hugo/object.cpp @@ -8,12 +8,12 @@ * 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. @@ -44,7 +44,9 @@ namespace Hugo { -ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm), _objects(0), _uses(0) { +ObjectHandler::ObjectHandler(HugoEngine *vm) : _vm(vm) { + _uses = nullptr; + _objects = nullptr; _numObj = 0; _objCount = 0; _usesSize = 0; @@ -132,19 +134,19 @@ void ObjectHandler::restoreSeq(Object *obj) { void ObjectHandler::useObject(int16 objId) { debugC(1, kDebugObject, "useObject(%d)", objId); - const char *verb; // Background verb to use directly int16 inventObjId = _vm->_inventory->getInventoryObjId(); - Object *obj = &_objects[objId]; // Ptr to object + Object *obj = &_objects[objId]; // Ptr to object if (inventObjId == -1) { + const char *verb; // Background verb to use directly // Get or use objid directly if ((obj->_genericCmd & TAKE) || obj->_objValue) // Get collectible item sprintf(_vm->_line, "%s %s", _vm->_text->getVerb(_vm->_take, 0), _vm->_text->getNoun(obj->_nounIndex, 0)); - else if (obj->_cmdIndex != 0) // Use non-collectible item if able + else if (obj->_cmdIndex != 0) // Use non-collectible item if able sprintf(_vm->_line, "%s %s", _vm->_text->getVerb(_vm->_parser->getCmdDefaultVerbIdx(obj->_cmdIndex), 0), _vm->_text->getNoun(obj->_nounIndex, 0)); else if ((verb = _vm->_parser->useBG(_vm->_text->getNoun(obj->_nounIndex, 0))) != 0) sprintf(_vm->_line, "%s %s", verb, _vm->_text->getNoun(obj->_nounIndex, 0)); else - return; // Can't use object directly + return; // Can't use object directly } else { // Use status.objid on objid // Default to first cmd verb @@ -249,47 +251,49 @@ void ObjectHandler::lookObject(Object *obj) { void ObjectHandler::freeObjects() { debugC(1, kDebugObject, "freeObjects"); - if (_vm->_hero != 0 && _vm->_hero->_seqList[0]._seqPtr != 0) { + if (_vm->_hero != nullptr && _vm->_hero->_seqList[0]._seqPtr != nullptr) { // Free all sequence lists and image data for (int16 i = 0; i < _numObj; i++) { Object *obj = &_objects[i]; for (int16 j = 0; j < obj->_seqNumb; j++) { Seq *seq = obj->_seqList[j]._seqPtr; Seq *next; - if (seq == 0) // Failure during database load + if (seq == nullptr) // Failure during database load break; - if (seq->_imagePtr != 0) { + if (seq->_imagePtr != nullptr) { free(seq->_imagePtr); - seq->_imagePtr = 0; + seq->_imagePtr = nullptr; } seq = seq->_nextSeqPtr; while (seq != obj->_seqList[j]._seqPtr) { - if (seq->_imagePtr != 0) { + if (seq->_imagePtr != nullptr) { free(seq->_imagePtr); - seq->_imagePtr = 0; + seq->_imagePtr = nullptr; } next = seq->_nextSeqPtr; free(seq); seq = next; } free(seq); + seq = nullptr; } } } - if (_uses) { + if (_uses != nullptr) { for (int16 i = 0; i < _usesSize; i++) free(_uses[i]._targets); free(_uses); + _uses = nullptr; } for (int16 i = 0; i < _objCount; i++) { free(_objects[i]._stateDataIndex); - _objects[i]._stateDataIndex = 0; + _objects[i]._stateDataIndex = nullptr; } free(_objects); - _objects = 0; + _objects = nullptr; } /** @@ -358,7 +362,7 @@ void ObjectHandler::showTakeables() { * Find a clear space around supplied object that hero can walk to */ bool ObjectHandler::findObjectSpace(Object *obj, int16 *destx, int16 *desty) { - debugC(1, kDebugObject, "findObjectSpace(obj, %d, %d)", *destx, *desty); + debugC(1, kDebugObject, "findObjectSpace(...)"); Seq *curImage = obj->_currImagePtr; int16 y = obj->_y + curImage->_y2 - 1; @@ -414,7 +418,7 @@ void ObjectHandler::readUse(Common::ReadStream &in, Uses &curUse) { */ void ObjectHandler::loadObjectUses(Common::ReadStream &in) { Uses tmpUse; - tmpUse._targets = 0; + tmpUse._targets = nullptr; //Read _uses for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { @@ -430,7 +434,7 @@ void ObjectHandler::loadObjectUses(Common::ReadStream &in) { else { readUse(in, tmpUse); free(tmpUse._targets); - tmpUse._targets = 0; + tmpUse._targets = nullptr; } } } @@ -442,7 +446,7 @@ void ObjectHandler::readObject(Common::ReadStream &in, Object &curObject) { uint16 numSubElem = in.readUint16BE(); if (numSubElem == 0) - curObject._stateDataIndex = 0; + curObject._stateDataIndex = nullptr; else curObject._stateDataIndex = (uint16 *)malloc(sizeof(uint16) * numSubElem); for (int j = 0; j < numSubElem; j++) @@ -453,16 +457,16 @@ void ObjectHandler::readObject(Common::ReadStream &in, Object &curObject) { curObject._vyPath = in.readSint16BE(); curObject._actIndex = in.readUint16BE(); curObject._seqNumb = in.readByte(); - curObject._currImagePtr = 0; + curObject._currImagePtr = nullptr; if (curObject._seqNumb == 0) { curObject._seqList[0]._imageNbr = 0; - curObject._seqList[0]._seqPtr = 0; + curObject._seqList[0]._seqPtr = nullptr; } for (int j = 0; j < curObject._seqNumb; j++) { curObject._seqList[j]._imageNbr = in.readUint16BE(); - curObject._seqList[j]._seqPtr = 0; + curObject._seqList[j]._seqPtr = nullptr; } curObject._cycling = (Cycle)in.readByte(); @@ -498,7 +502,7 @@ void ObjectHandler::readObject(Common::ReadStream &in, Object &curObject) { void ObjectHandler::loadObjectArr(Common::ReadStream &in) { debugC(6, kDebugObject, "loadObject(&in)"); Object tmpObject; - tmpObject._stateDataIndex = 0; + tmpObject._stateDataIndex = nullptr; for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { uint16 numElem = in.readUint16BE(); @@ -515,7 +519,7 @@ void ObjectHandler::loadObjectArr(Common::ReadStream &in) { // Skip over uneeded objects. readObject(in, tmpObject); free(tmpObject._stateDataIndex); - tmpObject._stateDataIndex = 0; + tmpObject._stateDataIndex = nullptr; } } } @@ -536,10 +540,8 @@ void ObjectHandler::setCarriedScreen(int screenNum) { * Load _numObj from Hugo.dat */ void ObjectHandler::loadNumObj(Common::ReadStream &in) { - int numElem; - for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { - numElem = in.readUint16BE(); + int numElem = in.readUint16BE(); if (varnt == _vm->_gameVariant) _numObj = numElem; } |