diff options
author | Kamil Zbróg | 2013-11-04 11:40:22 +0000 |
---|---|---|
committer | Kamil Zbróg | 2013-11-04 11:40:22 +0000 |
commit | 85694ec1f5793eb4025f4153ef4bf71d3769d699 (patch) | |
tree | c93fab58eb2f52eca244895a9867d28134dbd7f5 /engines/hugo | |
parent | 026390145b0e947be7cccf3d9ba329eb2270a2ed (diff) | |
parent | 9dc35033f523c9c694f24e15ed45ba6194786a25 (diff) | |
download | scummvm-rg350-85694ec1f5793eb4025f4153ef4bf71d3769d699.tar.gz scummvm-rg350-85694ec1f5793eb4025f4153ef4bf71d3769d699.tar.bz2 scummvm-rg350-85694ec1f5793eb4025f4153ef4bf71d3769d699.zip |
Merge remote-tracking branch 'own/prince' into prince-malik
Conflicts:
engines/prince/debugger.cpp
engines/prince/debugger.h
engines/prince/detection.cpp
engines/prince/font.cpp
engines/prince/graphics.cpp
engines/prince/prince.cpp
engines/prince/prince.h
engines/prince/script.cpp
engines/prince/script.h
Diffstat (limited to 'engines/hugo')
-rw-r--r-- | engines/hugo/dialogs.cpp | 12 | ||||
-rw-r--r-- | engines/hugo/display.cpp | 8 | ||||
-rw-r--r-- | engines/hugo/file.cpp | 6 | ||||
-rw-r--r-- | engines/hugo/hugo.cpp | 46 | ||||
-rw-r--r-- | engines/hugo/hugo.h | 5 | ||||
-rw-r--r-- | engines/hugo/intro.cpp | 4 | ||||
-rw-r--r-- | engines/hugo/inventory.cpp | 4 | ||||
-rw-r--r-- | engines/hugo/mouse.cpp | 6 | ||||
-rw-r--r-- | engines/hugo/object.cpp | 42 | ||||
-rw-r--r-- | engines/hugo/parser.cpp | 26 | ||||
-rw-r--r-- | engines/hugo/route.cpp | 13 | ||||
-rw-r--r-- | engines/hugo/route.h | 4 | ||||
-rw-r--r-- | engines/hugo/schedule.cpp | 62 | ||||
-rw-r--r-- | engines/hugo/sound.cpp | 5 | ||||
-rw-r--r-- | engines/hugo/text.cpp | 31 |
15 files changed, 180 insertions, 94 deletions
diff --git a/engines/hugo/dialogs.cpp b/engines/hugo/dialogs.cpp index 5dcee3ae94..23e04dc479 100644 --- a/engines/hugo/dialogs.cpp +++ b/engines/hugo/dialogs.cpp @@ -34,8 +34,10 @@ namespace Hugo { -TopMenu::TopMenu(HugoEngine *vm) : Dialog(0, 0, kMenuWidth, kMenuHeight), _arrayBmp(0), _arraySize(0), - _vm(vm) { +TopMenu::TopMenu(HugoEngine *vm) : Dialog(0, 0, kMenuWidth, kMenuHeight), _vm(vm) { + _arrayBmp = nullptr; + _arraySize = 0; + init(); } @@ -140,12 +142,10 @@ void TopMenu::loadBmpArr(Common::SeekableReadStream &in) { _arrayBmp[i * 2] = bitmapSrc->convertTo(g_system->getOverlayFormat()); _arrayBmp[i * 2 + 1] = new Graphics::Surface(); _arrayBmp[i * 2 + 1]->create(_arrayBmp[i * 2]->w * 2, _arrayBmp[i * 2]->h * 2, g_system->getOverlayFormat()); - byte *src = (byte *)_arrayBmp[i * 2]->getPixels(); - byte *dst = (byte *)_arrayBmp[i * 2 + 1]->getPixels(); for (int j = 0; j < _arrayBmp[i * 2]->h; j++) { - src = (byte *)_arrayBmp[i * 2]->getBasePtr(0, j); - dst = (byte *)_arrayBmp[i * 2 + 1]->getBasePtr(0, j * 2); + byte *src = (byte *)_arrayBmp[i * 2]->getBasePtr(0, j); + byte *dst = (byte *)_arrayBmp[i * 2 + 1]->getBasePtr(0, j * 2); for (int k = _arrayBmp[i * 2]->w; k > 0; k--) { for (int m = _arrayBmp[i * 2]->format.bytesPerPixel; m > 0; m--) { *dst++ = *src++; diff --git a/engines/hugo/display.cpp b/engines/hugo/display.cpp index fbe39b3a0c..3dc9c9a1c3 100644 --- a/engines/hugo/display.cpp +++ b/engines/hugo/display.cpp @@ -75,13 +75,13 @@ static const byte stdMouseCursor[] = { Screen::Screen(HugoEngine *vm) : _vm(vm) { - _mainPalette = 0; - _curPalette = 0; + _mainPalette = nullptr; + _curPalette = nullptr; _dlAddIndex = 0; _dlRestoreIndex = 0; for (int i = 0; i < kNumFonts; i++) { - _arrayFont[i] = 0; + _arrayFont[i] = nullptr; fontLoadedFl[i] = false; } for (int i = 0; i < kBlitListSize; i++) { @@ -100,6 +100,8 @@ Screen::Screen(HugoEngine *vm) : _vm(vm) { _dlRestoreList[i]._dx = 0; _dlRestoreList[i]._dy = 0; } + _fnt = 0; + _paletteSize = 0; } Screen::~Screen() { diff --git a/engines/hugo/file.cpp b/engines/hugo/file.cpp index e58c2e57d6..aa128048af 100644 --- a/engines/hugo/file.cpp +++ b/engines/hugo/file.cpp @@ -246,13 +246,13 @@ SoundPtr FileManager::getSound(const int16 sound, uint16 *size) { // No more to do if SILENCE (called for cleanup purposes) if (sound == _vm->_soundSilence) - return 0; + return nullptr; // Open sounds file Common::File fp; // Handle to SOUND_FILE if (!fp.open(getSoundFilename())) { warning("Hugo Error: File not found %s", getSoundFilename()); - return 0; + return nullptr; } if (!_hasReadHeader) { @@ -519,6 +519,7 @@ void FileManager::readBootFile() { ofp.read(_vm->_boot._pbswitch, sizeof(_vm->_boot._pbswitch)); ofp.read(_vm->_boot._distrib, sizeof(_vm->_boot._distrib)); _vm->_boot._exitLen = ofp.readUint16LE(); + ofp.close(); byte *p = (byte *)&_vm->_boot; @@ -527,7 +528,6 @@ void FileManager::readBootFile() { checksum ^= p[i]; p[i] ^= s_bootCypher[i % s_bootCypherLen]; } - ofp.close(); if (checksum) { Utils::notifyBox(Common::String::format("Corrupted startup file '%s'", getBootFilename())); diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp index b140cfdba2..88e2e4372b 100644 --- a/engines/hugo/hugo.cpp +++ b/engines/hugo/hugo.cpp @@ -46,11 +46,11 @@ namespace Hugo { -HugoEngine *HugoEngine::s_Engine = 0; +HugoEngine *HugoEngine::s_Engine = nullptr; HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(syst), _gameDescription(gd), - _hero(0), _heroImage(0), _defltTunes(0), _numScreens(0), _tunesNbr(0), _soundSilence(0), _soundTest(0), - _screenStates(0), _numStates(0), _score(0), _maxscore(0), _lastTime(0), _curTime(0), _episode(0) + _hero(nullptr), _heroImage(0), _defltTunes(nullptr), _numScreens(0), _tunesNbr(0), _soundSilence(0), _soundTest(0), + _screenStates(nullptr), _numStates(0), _score(0), _maxscore(0), _lastTime(0), _curTime(0), _episode(nullptr) { _system = syst; DebugMan.addDebugChannel(kDebugSchedule, "Schedule", "Script Schedule debug level"); @@ -67,16 +67,16 @@ HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(sy _console = new HugoConsole(this); _rnd = 0; - _screen = NULL; - _mouse = NULL; - _inventory = NULL; - _parser = NULL; - _route = NULL; - _sound = NULL; - _intro = NULL; - _object = NULL; - _text = NULL; - _topMenu = NULL; + _screen = nullptr; + _mouse = nullptr; + _inventory = nullptr; + _parser = nullptr; + _route = nullptr; + _sound = nullptr; + _intro = nullptr; + _object = nullptr; + _text = nullptr; + _topMenu = nullptr; _status._storyModeFl = false; _status._gameOverFl = false; _status._lookFl = false; @@ -93,6 +93,26 @@ HugoEngine::HugoEngine(OSystem *syst, const HugoGameDescription *gd) : Engine(sy _gameType = kGameTypeNone; _platform = Common::kPlatformUnknown; _packedFl = false; + + _numVariant = 0; + _gameVariant = kGameVariantNone; + _normalTPS = 0; + _screenPtr = nullptr; + _config._musicFl = true; + _config._soundFl = true; + _config._turboFl = false; + _look = 0; + _take = 0; + _drop = 0; + _maze._enabledFl = false; + _maze._size = 0; + _maze._x1 = _maze._y1 = _maze._x2 = _maze._y2 = _maze._x3 = _maze._x4 = 0; + _maze._firstScreenIndex = 0; + _boot._checksum = 0; + _boot._registered = kRegShareware; + _boot._exitLen = 0; + _file = nullptr; + _scheduler = nullptr; } HugoEngine::~HugoEngine() { diff --git a/engines/hugo/hugo.h b/engines/hugo/hugo.h index 9f495a9037..6adb5f95d0 100644 --- a/engines/hugo/hugo.h +++ b/engines/hugo/hugo.h @@ -106,7 +106,8 @@ enum GameVariant { kGameVariantH3Win, kGameVariantH1Dos, kGameVariantH2Dos, - kGameVariantH3Dos + kGameVariantH3Dos, + kGameVariantNone }; enum HugoDebugChannels { @@ -259,7 +260,7 @@ public: // Used by the qsort function static HugoEngine &get() { - assert(s_Engine != 0); + assert(s_Engine != nullptr); return *s_Engine; } diff --git a/engines/hugo/intro.cpp b/engines/hugo/intro.cpp index 6f314c8774..5db6c39078 100644 --- a/engines/hugo/intro.cpp +++ b/engines/hugo/intro.cpp @@ -39,9 +39,10 @@ namespace Hugo { -IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm), _introX(0), _introY(0) { +IntroHandler::IntroHandler(HugoEngine *vm) : _vm(vm) { _introXSize = 0; _introTicks = 0; + _introX = _introY = nullptr; } IntroHandler::~IntroHandler() { @@ -74,6 +75,7 @@ void IntroHandler::loadIntroData(Common::SeekableReadStream &in) { void IntroHandler::freeIntroData() { free(_introX); free(_introY); + _introX = _introY = nullptr; } intro_v1d::intro_v1d(HugoEngine *vm) : IntroHandler(vm) { diff --git a/engines/hugo/inventory.cpp b/engines/hugo/inventory.cpp index c2495beadb..03df997866 100644 --- a/engines/hugo/inventory.cpp +++ b/engines/hugo/inventory.cpp @@ -44,7 +44,8 @@ namespace Hugo { static const int kMaxDisp = (kXPix / kInvDx); // Max icons displayable -InventoryHandler::InventoryHandler(HugoEngine *vm) : _vm(vm), _invent(0) { +InventoryHandler::InventoryHandler(HugoEngine *vm) : _vm(vm) { + _invent = nullptr; _firstIconId = 0; _inventoryState = kInventoryOff; // Inventory icon bar state _inventoryHeight = 0; // Inventory icon bar pos @@ -62,6 +63,7 @@ void InventoryHandler::setInventoryState(Istate state) { void InventoryHandler::freeInvent() { free(_invent); + _invent = nullptr; } int16 InventoryHandler::getInventoryObjId() const { diff --git a/engines/hugo/mouse.cpp b/engines/hugo/mouse.cpp index ae286c8afb..4ef3db3e2b 100644 --- a/engines/hugo/mouse.cpp +++ b/engines/hugo/mouse.cpp @@ -45,7 +45,8 @@ namespace Hugo { -MouseHandler::MouseHandler(HugoEngine *vm) : _vm(vm), _hotspots(0) { +MouseHandler::MouseHandler(HugoEngine *vm) : _vm(vm) { + _hotspots = nullptr; _leftButtonFl = false; _rightButtonFl = false; _jumpExitFl = false; // Can't jump to a screen exit @@ -83,6 +84,7 @@ void MouseHandler::setMouseY(int y) { void MouseHandler::freeHotspots() { free(_hotspots); + _hotspots = nullptr; } bool MouseHandler::getJumpExitFl() const { @@ -169,7 +171,7 @@ void MouseHandler::processRightClick(const int16 objId, const int16 cx, const in _vm->_object->useObject(objId); // Use status.objid on object } else { // Clicked over viewport object Object *obj = &_vm->_object->_objects[objId]; - int16 x = 0, y = 0; + int16 x, y; switch (obj->_viewx) { // Where to walk to case -1: // Walk to object position if (_vm->_object->findObjectSpace(obj, &x, &y)) diff --git a/engines/hugo/object.cpp b/engines/hugo/object.cpp index 7b4783e4d8..44f46d2d79 100644 --- a/engines/hugo/object.cpp +++ b/engines/hugo/object.cpp @@ -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; @@ -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; } } } diff --git a/engines/hugo/parser.cpp b/engines/hugo/parser.cpp index 2585c64fd8..57938ec371 100644 --- a/engines/hugo/parser.cpp +++ b/engines/hugo/parser.cpp @@ -44,14 +44,20 @@ namespace Hugo { -Parser::Parser(HugoEngine *vm) : _vm(vm), _putIndex(0), _getIndex(0), _arrayReqs(0), _catchallList(0), _backgroundObjects(0), _cmdList(0) { +Parser::Parser(HugoEngine *vm) : _vm(vm), _putIndex(0), _getIndex(0) { + _catchallList = nullptr; + _arrayReqs = nullptr; + + _backgroundObjects = nullptr; + _backgroundObjectsSize = 0; + _cmdList = nullptr; + _cmdListSize = 0; + _cmdLineIndex = 0; _cmdLineTick = 0; _cmdLineCursor = '_'; _cmdLine[0] = '\0'; - _cmdListSize = 0; _checkDoubleF1Fl = false; - _backgroundObjectsSize = 0; } Parser::~Parser() { @@ -172,7 +178,7 @@ const char *Parser::useBG(const char *name) { return _vm->_text->getVerb(p[i]._verbIndex, 0); } - return 0; + return nullptr; } void Parser::freeParser() { @@ -180,20 +186,24 @@ void Parser::freeParser() { for (int i = 0; _arrayReqs[i] != 0; i++) free(_arrayReqs[i]); free(_arrayReqs); + _arrayReqs = nullptr; } free(_catchallList); + _catchallList = nullptr; if (_backgroundObjects) { for (int i = 0; i < _backgroundObjectsSize; i++) free(_backgroundObjects[i]); free(_backgroundObjects); + _backgroundObjects = nullptr; } if (_cmdList) { for (int i = 0; i < _cmdListSize; i++) free(_cmdList[i]); free(_cmdList); + _cmdList = nullptr; } } @@ -398,9 +408,9 @@ void Parser::command(const char *format, ...) { * Locate any member of object name list appearing in command line */ bool Parser::isWordPresent(char **wordArr) const { - debugC(1, kDebugParser, "isWordPresent(%s)", wordArr[0]); - if (wordArr != 0) { + debugC(1, kDebugParser, "isWordPresent(%s)", wordArr[0]); + for (int i = 0; strlen(wordArr[i]); i++) { if (strstr(_vm->_line, wordArr[i])) return true; @@ -421,7 +431,7 @@ const char *Parser::findNoun() const { return _vm->_text->getNoun(i, 0); } } - return 0; + return nullptr; } /** @@ -436,7 +446,7 @@ const char *Parser::findVerb() const { return _vm->_text->getVerb(i, 0); } } - return 0; + return nullptr; } /** diff --git a/engines/hugo/route.cpp b/engines/hugo/route.cpp index 54dae88c28..dc3c41de9c 100644 --- a/engines/hugo/route.cpp +++ b/engines/hugo/route.cpp @@ -45,6 +45,17 @@ Route::Route(HugoEngine *vm) : _vm(vm) { _routeIndex = -1; // Hero not following a route _routeType = kRouteSpace; // Hero walking to space _routeObjId = -1; // Hero not walking to anything + + for (int i = 0; i < kMaxSeg; i++) + _segment[i]._y = _segment[i]._x1 = _segment[i]._x2 = 0; + + _segmentNumb = 0; + _routeListIndex = 0; + _destX = _destY = 0; + _heroWidth = 0; + _routeFoundFl = false; + _fullStackFl = false; + _fullSegmentFl = false; } void Route::resetRoute() { @@ -303,7 +314,7 @@ Common::Point *Route::newNode() { _routeListIndex++; if (_routeListIndex >= kMaxNodes) // Too many nodes - return 0; // Incomplete route - failure + return nullptr; // Incomplete route - failure _route[_routeListIndex] = _route[_routeListIndex - 1]; // Initialize with previous node return &_route[_routeListIndex]; diff --git a/engines/hugo/route.h b/engines/hugo/route.h index 716829a201..71db1e2583 100644 --- a/engines/hugo/route.h +++ b/engines/hugo/route.h @@ -79,9 +79,11 @@ private: int16 _destY; int16 _heroWidth; // Hero width bool _routeFoundFl; // TRUE when path found - bool _fullStackFl; // TRUE if stack exhausted bool _fullSegmentFl; // Segments exhausted + // CHECKME: Never set to true, could be removed + bool _fullStackFl; // TRUE if stack exhausted + void segment(int16 x, int16 y); bool findRoute(const int16 cx, const int16 cy); Common::Point *newNode(); diff --git a/engines/hugo/schedule.cpp b/engines/hugo/schedule.cpp index 32b8a47df7..17ffa9d391 100644 --- a/engines/hugo/schedule.cpp +++ b/engines/hugo/schedule.cpp @@ -47,10 +47,23 @@ namespace Hugo { -Scheduler::Scheduler(HugoEngine *vm) : _vm(vm), _actListArr(0), _curTick(0), _oldTime(0), _refreshTimeout(0), _points(0), _screenActs(0) { +Scheduler::Scheduler(HugoEngine *vm) : _vm(vm) { + _actListArr = nullptr; + _curTick = 0; + _oldTime = 0; + _refreshTimeout = 0; + _points = nullptr; + _screenActs = nullptr; + memset(_events, 0, sizeof(_events)); _numBonuses = 0; _screenActsSize = 0; + + _actListArrSize = 0; + _alNewscrIndex = 0; + _freeEvent = nullptr; + _headEvent = nullptr; + _tailEvent = nullptr; } Scheduler::~Scheduler() { @@ -69,14 +82,14 @@ void Scheduler::initEventQueue() { // Chain nextEvent from first to last for (int i = kMaxEvents; --i;) _events[i - 1]._nextEvent = &_events[i]; - _events[kMaxEvents - 1]._nextEvent = 0; + _events[kMaxEvents - 1]._nextEvent = nullptr; // Chain prevEvent from last to first for (int i = 1; i < kMaxEvents; i++) _events[i]._prevEvent = &_events[i - 1]; - _events[0]._prevEvent = 0; + _events[0]._prevEvent = nullptr; - _headEvent = _tailEvent = 0; // Event list is empty + _headEvent = _tailEvent = nullptr; // Event list is empty _freeEvent = _events; // Free list is full } @@ -90,7 +103,7 @@ Event *Scheduler::getQueue() { error("An error has occurred: %s", "getQueue"); Event *resEvent = _freeEvent; _freeEvent = _freeEvent->_nextEvent; - resEvent->_nextEvent = 0; + resEvent->_nextEvent = nullptr; return resEvent; } @@ -597,7 +610,7 @@ void Scheduler::loadScreenAct(Common::SeekableReadStream &in) { for (int i = 0; i < numElem; i++) { uint16 numSubElem = in.readUint16BE(); if (numSubElem == 0) { - _screenActs[i] = 0; + _screenActs[i] = nullptr; } else { _screenActs[i] = (uint16 *)malloc(sizeof(uint16) * numSubElem); for (int j = 0; j < numSubElem; j++) @@ -617,11 +630,14 @@ void Scheduler::freeScheduler() { debugC(6, kDebugSchedule, "freeActListArr()"); free(_points); + _points = nullptr; if (_screenActs) { for (int i = 0; i < _screenActsSize; i++) free(_screenActs[i]); free(_screenActs); + _screenActs = nullptr; + _screenActsSize = 0; } if (_actListArr) { @@ -633,6 +649,8 @@ void Scheduler::freeScheduler() { free(_actListArr[i]); } free(_actListArr); + _actListArr = nullptr; + _actListArrSize = 0; } } @@ -698,9 +716,9 @@ void Scheduler::saveEvents(Common::WriteStream *f) { f->writeUint32BE(getTicks()); - int16 freeIndex = (_freeEvent == 0) ? -1 : _freeEvent - _events; - int16 headIndex = (_headEvent == 0) ? -1 : _headEvent - _events; - int16 tailIndex = (_tailEvent == 0) ? -1 : _tailEvent - _events; + int16 freeIndex = (_freeEvent == nullptr) ? -1 : _freeEvent - _events; + int16 headIndex = (_headEvent == nullptr) ? -1 : _headEvent - _events; + int16 tailIndex = (_tailEvent == nullptr) ? -1 : _tailEvent - _events; f->writeSint16BE(freeIndex); f->writeSint16BE(headIndex); @@ -717,8 +735,8 @@ void Scheduler::saveEvents(Common::WriteStream *f) { f->writeSint16BE(subElem); f->writeByte((wrkEvent->_localActionFl) ? 1 : 0); f->writeUint32BE(wrkEvent->_time); - f->writeSint16BE((wrkEvent->_prevEvent == 0) ? -1 : (wrkEvent->_prevEvent - _events)); - f->writeSint16BE((wrkEvent->_nextEvent == 0) ? -1 : (wrkEvent->_nextEvent - _events)); + f->writeSint16BE((wrkEvent->_prevEvent == nullptr) ? -1 : (wrkEvent->_prevEvent - _events)); + f->writeSint16BE((wrkEvent->_nextEvent == nullptr) ? -1 : (wrkEvent->_nextEvent - _events)); } } @@ -1102,7 +1120,7 @@ void Scheduler::restoreEvents(Common::ReadStream *f) { // fix up action pointer (to do better) if ((index == -1) && (subElem == -1)) - _events[i]._action = 0; + _events[i]._action = nullptr; else _events[i]._action = (Act *)&_actListArr[index][subElem]; @@ -1112,12 +1130,12 @@ void Scheduler::restoreEvents(Common::ReadStream *f) { int16 prevIndex = f->readSint16BE(); int16 nextIndex = f->readSint16BE(); - _events[i]._prevEvent = (prevIndex == -1) ? (Event *)0 : &_events[prevIndex]; - _events[i]._nextEvent = (nextIndex == -1) ? (Event *)0 : &_events[nextIndex]; + _events[i]._prevEvent = (prevIndex == -1) ? nullptr : &_events[prevIndex]; + _events[i]._nextEvent = (nextIndex == -1) ? nullptr : &_events[nextIndex]; } - _freeEvent = (freeIndex == -1) ? 0 : &_events[freeIndex]; - _headEvent = (headIndex == -1) ? 0 : &_events[headIndex]; - _tailEvent = (tailIndex == -1) ? 0 : &_events[tailIndex]; + _freeEvent = (freeIndex == -1) ? nullptr : &_events[freeIndex]; + _headEvent = (headIndex == -1) ? nullptr : &_events[headIndex]; + _tailEvent = (tailIndex == -1) ? nullptr : &_events[tailIndex]; // Adjust times to fit our time uint32 curTime = getTicks(); @@ -1156,7 +1174,7 @@ void Scheduler::insertAction(Act *action) { // Now find the place to insert the event if (!_tailEvent) { // Empty queue _tailEvent = _headEvent = curEvent; - curEvent->_nextEvent = curEvent->_prevEvent = 0; + curEvent->_nextEvent = curEvent->_prevEvent = nullptr; } else { Event *wrkEvent = _tailEvent; // Search from latest time back bool found = false; @@ -1178,7 +1196,7 @@ void Scheduler::insertAction(Act *action) { if (!found) { // Must be earliest in list _headEvent->_prevEvent = curEvent; // So insert as new head curEvent->_nextEvent = _headEvent; - curEvent->_prevEvent = 0; + curEvent->_prevEvent = nullptr; _headEvent = curEvent; } } @@ -1424,7 +1442,7 @@ Event *Scheduler::doAction(Event *curEvent) { } if (action->_a0._actType == NEW_SCREEN) { // New_screen() deletes entire list - return 0; // nextEvent = 0 since list now empty + return nullptr; // nextEvent = nullptr since list now empty } else { wrkEvent = curEvent->_nextEvent; delQueue(curEvent); // Return event to free list @@ -1455,9 +1473,9 @@ void Scheduler::delQueue(Event *curEvent) { } if (_headEvent) - _headEvent->_prevEvent = 0; // Mark end of list + _headEvent->_prevEvent = nullptr; // Mark end of list else - _tailEvent = 0; // Empty queue + _tailEvent = nullptr; // Empty queue curEvent->_nextEvent = _freeEvent; // Return p to free list if (_freeEvent) // Special case, if free list was empty diff --git a/engines/hugo/sound.cpp b/engines/hugo/sound.cpp index aefa03cd5e..28dcdc83d6 100644 --- a/engines/hugo/sound.cpp +++ b/engines/hugo/sound.cpp @@ -123,11 +123,12 @@ SoundHandler::SoundHandler(HugoEngine *vm) : _vm(vm) { _speakerStream = new Audio::PCSpeaker(_vm->_mixer->getOutputRate()); _vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_speakerHandle, _speakerStream, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); - _DOSSongPtr = 0; + _DOSSongPtr = nullptr; _curPriority = 0; _pcspkrTimer = 0; _pcspkrOctave = 3; _pcspkrNoteDuration = 2; + _DOSIntroSong = nullptr; } SoundHandler::~SoundHandler() { @@ -210,7 +211,7 @@ void SoundHandler::playSound(int16 sound, const byte priority) { _curPriority = priority; // Get sound data - if ((soundPtr = _vm->_file->getSound(sound, &size)) == 0) + if ((soundPtr = _vm->_file->getSound(sound, &size)) == nullptr) return; Audio::AudioStream *stream = Audio::makeRawStream(soundPtr, size, 11025, Audio::FLAG_UNSIGNED); diff --git a/engines/hugo/text.cpp b/engines/hugo/text.cpp index f8b02bdf68..538a0341e2 100644 --- a/engines/hugo/text.cpp +++ b/engines/hugo/text.cpp @@ -26,9 +26,17 @@ namespace Hugo { -TextHandler::TextHandler(HugoEngine *vm) : _vm(vm), _textData(0), _stringtData(0), - _textEngine(0), _textIntro(0), _textMouse(0), _textParser(0), _textUtil(0), - _screenNames(0), _arrayNouns(0), _arrayVerbs(0) { +TextHandler::TextHandler(HugoEngine *vm) : _vm(vm) { + _textData = nullptr; + _stringtData = nullptr; + _textEngine = nullptr; + _textIntro = nullptr; + _textMouse = nullptr; + _textParser = nullptr; + _textUtil = nullptr; + _screenNames = nullptr; + _arrayNouns = nullptr; + _arrayVerbs = nullptr; } TextHandler::~TextHandler() { @@ -86,9 +94,9 @@ char **TextHandler::loadTextsVariante(Common::ReadStream &in, uint16 *arraySize) int numTexts; int entryLen; int len; - char **res = 0; - char *pos = 0; - char *posBck = 0; + char **res = nullptr; + char *pos = nullptr; + char *posBck = nullptr; for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { numTexts = in.readUint16BE(); @@ -126,21 +134,21 @@ char **TextHandler::loadTextsVariante(Common::ReadStream &in, uint16 *arraySize) } char ***TextHandler::loadTextsArray(Common::ReadStream &in) { - char ***resArray = 0; + char ***resArray = nullptr; uint16 arraySize; for (int varnt = 0; varnt < _vm->_numVariant; varnt++) { arraySize = in.readUint16BE(); if (varnt == _vm->_gameVariant) { resArray = (char ***)malloc(sizeof(char **) * (arraySize + 1)); - resArray[arraySize] = 0; + resArray[arraySize] = nullptr; } for (int i = 0; i < arraySize; i++) { int numTexts = in.readUint16BE(); int entryLen = in.readUint16BE(); char *pos = (char *)malloc(entryLen); - char *posBck = 0; - char **res = 0; + char *posBck = nullptr; + char **res = nullptr; if (varnt == _vm->_gameVariant) { res = (char **)malloc(sizeof(char *) * numTexts); res[0] = pos; @@ -232,6 +240,7 @@ void TextHandler::freeTexts(char **ptr) { free(*ptr - DATAALIGNMENT); free(ptr); + ptr = nullptr; } void TextHandler::freeAllTexts() { @@ -242,12 +251,14 @@ void TextHandler::freeAllTexts() { for (int i = 0; _arrayNouns[i]; i++) freeTexts(_arrayNouns[i]); free(_arrayNouns); + _arrayNouns = nullptr; } if (_arrayVerbs) { for (int i = 0; _arrayVerbs[i]; i++) freeTexts(_arrayVerbs[i]); free(_arrayVerbs); + _arrayVerbs = nullptr; } freeTexts(_screenNames); |