diff options
author | Joseph-Eugene Winzer | 2018-04-14 11:40:08 +0200 |
---|---|---|
committer | Thierry Crozat | 2018-04-15 18:47:33 +0100 |
commit | d4592b6077aebaf1630b05d1904723c6544d4537 (patch) | |
tree | a5aea1e248fec56f337a19d789de46d1686cbffd /engines/supernova/state.cpp | |
parent | 94ebc96705314eb1e0846fa605943aec20afad72 (diff) | |
download | scummvm-rg350-d4592b6077aebaf1630b05d1904723c6544d4537.tar.gz scummvm-rg350-d4592b6077aebaf1630b05d1904723c6544d4537.tar.bz2 scummvm-rg350-d4592b6077aebaf1630b05d1904723c6544d4537.zip |
SUPERNOVA: Removes global nullObject
Before nullObject was a static member of Object class and now a member
of GameManager. Also the Inventory constructor was extended for taking a
pointer to the nullObject that Invetory::get() returns if no Object was
found.
Diffstat (limited to 'engines/supernova/state.cpp')
-rw-r--r-- | engines/supernova/state.cpp | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/engines/supernova/state.cpp b/engines/supernova/state.cpp index 51e0ee5c73..00a35055b7 100644 --- a/engines/supernova/state.cpp +++ b/engines/supernova/state.cpp @@ -196,7 +196,7 @@ Object *Inventory::get(int index) const { if (index < _numObjects) return _inventory[index]; - return const_cast<Object *>(&Object::nullObject); + return _nullObject; } Object *Inventory::get(ObjectId id) const { @@ -205,7 +205,7 @@ Object *Inventory::get(ObjectId id) const { return _inventory[i]; } - return const_cast<Object *>(&Object::nullObject); + return _nullObject; } @@ -288,7 +288,7 @@ StringId GameManager::guiStatusCommands[] = { }; GameManager::GameManager(SupernovaEngine *vm, Sound *sound) - : _inventory(_inventoryScroll) + : _inventory(&_nullObject, _inventoryScroll) , _vm(vm) , _sound(sound) { initRooms(); @@ -354,11 +354,10 @@ void GameManager::destroyRooms() { delete _rooms[OUTRO]; } - void GameManager::initState() { - Object::setObjectNull(_currentInputObject); - Object::setObjectNull(_inputObject[0]); - Object::setObjectNull(_inputObject[1]); + _currentInputObject = &_nullObject; + _inputObject[0] = &_nullObject; + _inputObject[1] = &_nullObject; _inputVerb = ACTION_WALK; _processInput = false; _guiEnabled = true; @@ -611,8 +610,8 @@ void GameManager::processInput(Common::KeyState &state) { } void GameManager::resetInputState() { - Object::setObjectNull(_inputObject[0]); - Object::setObjectNull(_inputObject[1]); + setObjectNull(_inputObject[0]); + setObjectNull(_inputObject[1]); _inputVerb = ACTION_WALK; _processInput = false; _mouseClicked = false; @@ -659,7 +658,7 @@ void GameManager::processInput() { case onInventory: // Fallthrough if (_inputVerb == ACTION_GIVE || _inputVerb == ACTION_USE) { - if (Object::isNullObject(_inputObject[0])) { + if (isNullObject(_inputObject[0])) { _inputObject[0] = _currentInputObject; if (!_inputObject[0]->hasProperty(COMBINABLE)) _processInput = true; @@ -669,7 +668,7 @@ void GameManager::processInput() { } } else { _inputObject[0] = _currentInputObject; - if (!Object::isNullObject(_currentInputObject)) + if (!isNullObject(_currentInputObject)) _processInput = true; } break; @@ -696,7 +695,7 @@ void GameManager::processInput() { return; } - if (Object::isNullObject(_currentInputObject)) + if (isNullObject(_currentInputObject)) return; if (mouseLocation == onObject || mouseLocation == onInventory) { @@ -775,7 +774,7 @@ void GameManager::processInput() { break; } - Object::setObjectNull(_currentInputObject); + setObjectNull(_currentInputObject); _mouseField = field; if (_mouseField >= 0 && _mouseField < 256) @@ -814,6 +813,14 @@ void GameManager::processInput() { } } +void GameManager::setObjectNull(Object *&obj) { + obj = &_nullObject; +} + +bool GameManager::isNullObject(Object *obj) { + return obj == &_nullObject; +} + void GameManager::corridorOnEntrance() { if (_state._corridorSearch) busted(0); @@ -1874,7 +1881,7 @@ void GameManager::drawStatus() { _vm->renderBox(0, 140, 320, 9, kColorWhite25); _vm->renderText(_vm->getGameString(guiStatusCommands[index]), 1, 141, kColorDarkGreen); - if (Object::isNullObject(_inputObject[0])) + if (isNullObject(_inputObject[0])) _vm->renderText(_currentInputObject->_name); else { _vm->renderText(_inputObject[0]->_name); |