LAB: Reduce passing around of pointers to the near-global _closeDataPtr

This commit is contained in:
Willem Jan Palenstijn 2015-12-26 14:01:45 +01:00
parent 6daf92cbf4
commit e3ce65cce8
3 changed files with 26 additions and 26 deletions

View file

@ -952,13 +952,13 @@ void LabEngine::performAction(uint16 actionMode, Common::Point curPos, uint16 &c
switch (actionMode) {
case 0:
// Take something.
if (doActionRule(curPos, actionMode, _roomNum, &_closeDataPtr))
if (doActionRule(curPos, actionMode, _roomNum))
_curFileName = _newFileName;
else if (takeItem(curPos, &_closeDataPtr))
drawStaticMessage(kTextTakeItem);
else if (doActionRule(curPos, kRuleActionTakeDef, _roomNum, &_closeDataPtr))
else if (doActionRule(curPos, kRuleActionTakeDef, _roomNum))
_curFileName = _newFileName;
else if (doActionRule(curPos, kRuleActionTake, 0, &_closeDataPtr))
else if (doActionRule(curPos, kRuleActionTake, 0))
_curFileName = _newFileName;
else if (curPos.y < (_utils->vgaScaleY(149) + _utils->svgaCord(2)))
drawStaticMessage(kTextNothing);
@ -969,9 +969,9 @@ void LabEngine::performAction(uint16 actionMode, Common::Point curPos, uint16 &c
case 2:
case 3:
// Manipulate an object, Open up a "door" or Close a "door"
if (doActionRule(curPos, actionMode, _roomNum, &_closeDataPtr))
if (doActionRule(curPos, actionMode, _roomNum))
_curFileName = _newFileName;
else if (!doActionRule(curPos, actionMode, 0, &_closeDataPtr)) {
else if (!doActionRule(curPos, actionMode, 0)) {
if (curPos.y < (_utils->vgaScaleY(149) + _utils->svgaCord(2)))
drawStaticMessage(kTextNothing);
}

View file

@ -245,12 +245,12 @@ private:
/**
* Goes through the rules if an action is taken.
*/
bool doActionRule(Common::Point pos, int16 action, int16 roomNum, CloseDataPtr *closePtrList);
bool doActionRule(Common::Point pos, int16 action, int16 roomNum);
/**
* Does the work for doActionRule.
*/
bool doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults);
bool doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closePtr, bool allowDefaults);
/**
* Checks whether the close up is one of the special case closeups.
@ -290,7 +290,7 @@ private:
/**
* Does the work for doActionRule.
*/
bool doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults);
bool doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr closePtr, bool allowDefaults);
/**
* Goes through the rules if the user tries to operate an item on an object.

View file

@ -486,7 +486,7 @@ void LabEngine::doActions(const ActionList &actionList, CloseDataPtr *closePtrLi
}
}
bool LabEngine::doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults) {
bool LabEngine::doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closePtr, bool allowDefaults) {
action++;
if (closePtr) {
@ -504,7 +504,7 @@ bool LabEngine::doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closeP
((rule->_param2 == 0) && allowDefaults)) ||
((action == 1) && (rule->_param2 == -closePtr->_closeUpType))) {
if (checkConditions(rule->_condition)) {
doActions(rule->_actionList, setCloseList);
doActions(rule->_actionList, &_closeDataPtr);
return true;
}
}
@ -515,27 +515,27 @@ bool LabEngine::doActionRuleSub(int16 action, int16 roomNum, CloseDataPtr closeP
return false;
}
bool LabEngine::doActionRule(Common::Point pos, int16 action, int16 roomNum, CloseDataPtr *closePtrList) {
bool LabEngine::doActionRule(Common::Point pos, int16 action, int16 roomNum) {
if (roomNum)
_newFileName = NOFILE;
else
_newFileName = _curFileName;
CloseDataPtr curClosePtr = getObject(pos, *closePtrList);
CloseDataPtr curClosePtr = getObject(pos, _closeDataPtr);
if (doActionRuleSub(action, roomNum, curClosePtr, closePtrList, false))
if (doActionRuleSub(action, roomNum, curClosePtr, false))
return true;
else if (doActionRuleSub(action, roomNum, *closePtrList, closePtrList, false))
else if (doActionRuleSub(action, roomNum, _closeDataPtr, false))
return true;
else if (doActionRuleSub(action, roomNum, curClosePtr, closePtrList, true))
else if (doActionRuleSub(action, roomNum, curClosePtr, true))
return true;
else if (doActionRuleSub(action, roomNum, *closePtrList, closePtrList, true))
else if (doActionRuleSub(action, roomNum, _closeDataPtr, true))
return true;
return false;
}
bool LabEngine::doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr closePtr, CloseDataPtr *setCloseList, bool allowDefaults) {
bool LabEngine::doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr closePtr, bool allowDefaults) {
if (closePtr)
if (closePtr->_closeUpType > 0) {
RuleList *rules = &(_rooms[roomNum]._rules);
@ -550,7 +550,7 @@ bool LabEngine::doOperateRuleSub(int16 itemNum, int16 roomNum, CloseDataPtr clos
((rule->_param1 == itemNum) || ((rule->_param1 == 0) && allowDefaults)) &&
((rule->_param2 == closePtr->_closeUpType) || ((rule->_param2 == 0) && allowDefaults))) {
if (checkConditions(rule->_condition)) {
doActions(rule->_actionList, setCloseList);
doActions(rule->_actionList, &_closeDataPtr);
return true;
}
}
@ -564,24 +564,24 @@ bool LabEngine::doOperateRule(Common::Point pos, int16 ItemNum) {
_newFileName = NOFILE;
CloseDataPtr closePtr = getObject(pos, _closeDataPtr);
if (doOperateRuleSub(ItemNum, _roomNum, closePtr, &_closeDataPtr, false))
if (doOperateRuleSub(ItemNum, _roomNum, closePtr, false))
return true;
else if (doOperateRuleSub(ItemNum, _roomNum, _closeDataPtr, &_closeDataPtr, false))
else if (doOperateRuleSub(ItemNum, _roomNum, _closeDataPtr, false))
return true;
else if (doOperateRuleSub(ItemNum, _roomNum, closePtr, &_closeDataPtr, true))
else if (doOperateRuleSub(ItemNum, _roomNum, closePtr, true))
return true;
else if (doOperateRuleSub(ItemNum, _roomNum, _closeDataPtr, &_closeDataPtr, true))
else if (doOperateRuleSub(ItemNum, _roomNum, _closeDataPtr, true))
return true;
else {
_newFileName = _curFileName;
if (doOperateRuleSub(ItemNum, 0, closePtr, &_closeDataPtr, false))
if (doOperateRuleSub(ItemNum, 0, closePtr, false))
return true;
else if (doOperateRuleSub(ItemNum, 0, _closeDataPtr, &_closeDataPtr, false))
else if (doOperateRuleSub(ItemNum, 0, _closeDataPtr, false))
return true;
else if (doOperateRuleSub(ItemNum, 0, closePtr, &_closeDataPtr, true))
else if (doOperateRuleSub(ItemNum, 0, closePtr, true))
return true;
else if (doOperateRuleSub(ItemNum, 0, _closeDataPtr, &_closeDataPtr, true))
else if (doOperateRuleSub(ItemNum, 0, _closeDataPtr, true))
return true;
}