aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/supernova/state.cpp')
-rw-r--r--engines/supernova/state.cpp35
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);