aboutsummaryrefslogtreecommitdiff
path: root/engines/lure
diff options
context:
space:
mode:
authorPaul Gilbert2008-01-28 11:28:49 +0000
committerPaul Gilbert2008-01-28 11:28:49 +0000
commite32e1b732cb99e760d4bdb4b72b0dd8a3d96bb7b (patch)
tree98a3b42888938bb2a31aa312ee0a5542e4f62513 /engines/lure
parent0728aa0d7f457579724ec145685795eb76478148 (diff)
downloadscummvm-rg350-e32e1b732cb99e760d4bdb4b72b0dd8a3d96bb7b.tar.gz
scummvm-rg350-e32e1b732cb99e760d4bdb4b72b0dd8a3d96bb7b.tar.bz2
scummvm-rg350-e32e1b732cb99e760d4bdb4b72b0dd8a3d96bb7b.zip
Changed array of method pointers to case statement to fix compiler error in earlier versions of gcc
svn-id: r30672
Diffstat (limited to 'engines/lure')
-rw-r--r--engines/lure/hotspots.cpp149
1 files changed, 106 insertions, 43 deletions
diff --git a/engines/lure/hotspots.cpp b/engines/lure/hotspots.cpp
index c29a82eed2..60e95c3652 100644
--- a/engines/lure/hotspots.cpp
+++ b/engines/lure/hotspots.cpp
@@ -1254,49 +1254,112 @@ void Hotspot::doAction(Action action, HotspotData *hotspot) {
fields.setField(USE_HOTSPOT_ID, hotspot->hotspotId);
}
- ActionProcPtr actionProcList[NPC_JUMP_ADDRESS + 1] = {
- &Hotspot::doNothing,
- &Hotspot::doGet,
- NULL,
- &Hotspot::doOperate,
- &Hotspot::doOperate,
- &Hotspot::doOperate,
- &Hotspot::doOpen,
- &Hotspot::doClose,
- &Hotspot::doLockUnlock,
- &Hotspot::doLockUnlock,
- &Hotspot::doUse,
- &Hotspot::doGive,
- &Hotspot::doTalkTo,
- &Hotspot::doTell,
- NULL,
- &Hotspot::doLook,
- &Hotspot::doLookAt,
- &Hotspot::doLookThrough,
- &Hotspot::doAsk,
- NULL,
- &Hotspot::doDrink,
- &Hotspot::doStatus,
- &Hotspot::doGoto,
- &Hotspot::doReturn,
- &Hotspot::doBribe,
- &Hotspot::doExamine,
- NULL, NULL,
- &Hotspot::npcSetRoomAndBlockedOffset,
- &Hotspot::npcHeySir,
- &Hotspot::npcExecScript,
- &Hotspot::npcResetPausedList,
- &Hotspot::npcSetRandomDest,
- &Hotspot::npcWalkingCheck,
- &Hotspot::npcSetSupportOffset,
- &Hotspot::npcSupportOffsetConditional,
- &Hotspot::npcDispatchAction,
- &Hotspot::npcTalkNpcToNpc,
- &Hotspot::npcPause,
- &Hotspot::npcStartTalking,
- &Hotspot::npcJumpAddress};
-
- (this->*actionProcList[action])(hotspot);
+ // Call the appropriate action method
+ switch (action) {
+ case GET:
+ doGet(hotspot);
+ break;
+ case PUSH:
+ case PULL:
+ case OPERATE:
+ doOperate(hotspot);
+ break;
+ case OPEN:
+ doOpen(hotspot);
+ break;
+ case CLOSE:
+ doClose(hotspot);
+ break;
+ case LOCK:
+ case UNLOCK:
+ doLockUnlock(hotspot);
+ break;
+ case USE:
+ doUse(hotspot);
+ break;
+ case GIVE:
+ doGive(hotspot);
+ break;
+ case TALK_TO:
+ doTalkTo(hotspot);
+ break;
+ case TELL:
+ doTell(hotspot);
+ break;
+ case LOOK:
+ doLook(hotspot);
+ break;
+ case LOOK_AT:
+ doLookAt(hotspot);
+ break;
+ case LOOK_THROUGH:
+ doLookThrough(hotspot);
+ break;
+ case ASK:
+ doAsk(hotspot);
+ break;
+ case DRINK:
+ doDrink(hotspot);
+ break;
+ case STATUS:
+ doStatus(hotspot);
+ break;
+ case GO_TO:
+ doGoto(hotspot);
+ break;
+ case RETURN:
+ doReturn(hotspot);
+ break;
+ case BRIBE:
+ doBribe(hotspot);
+ break;
+ case EXAMINE:
+ doExamine(hotspot);
+ break;
+ case NPC_SET_ROOM_AND_OFFSET:
+ npcSetRoomAndBlockedOffset(hotspot);
+ break;
+ case NPC_TALK_TO_PLAYER:
+ npcHeySir(hotspot);
+ break;
+ case NPC_EXEC_SCRIPT:
+ npcExecScript(hotspot);
+ break;
+ case NPC_RESET_PAUSED_LIST:
+ npcResetPausedList(hotspot);
+ break;
+ case NPC_SET_RAND_DEST:
+ npcSetRandomDest(hotspot);
+ break;
+ case NPC_WALKING_CHECK:
+ npcWalkingCheck(hotspot);
+ break;
+ case NPC_SET_SUPPORT_OFFSET:
+ npcSetSupportOffset(hotspot);
+ break;
+ case NPC_SUPPORT_OFFSET_COND:
+ npcSupportOffsetConditional(hotspot);
+ break;
+ case NPC_DISPATCH_ACTION:
+ npcDispatchAction(hotspot);
+ break;
+ case NPC_TALK_NPC_TO_NPC:
+ npcTalkNpcToNpc(hotspot);
+ break;
+ case NPC_PAUSE:
+ npcPause(hotspot);
+ break;
+ case NPC_START_TALKING:
+ npcStartTalking(hotspot);
+ break;
+ case NPC_JUMP_ADDRESS:
+ npcJumpAddress(hotspot);
+ break;
+ default:
+ doNothing(hotspot);
+ break;
+ }
+
debugC(ERROR_DETAILED, kLureDebugHotspots, "Action charId=%xh Action=%d/%s Complete",
_hotspotId, (int)action, (action > EXAMINE) ? NULL : stringList.getString((int)action));
}