aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/game/action.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lastexpress/game/action.cpp')
-rw-r--r--engines/lastexpress/game/action.cpp35
1 files changed, 23 insertions, 12 deletions
diff --git a/engines/lastexpress/game/action.cpp b/engines/lastexpress/game/action.cpp
index 98d74dd1a7..796abf2ce7 100644
--- a/engines/lastexpress/game/action.cpp
+++ b/engines/lastexpress/game/action.cpp
@@ -29,7 +29,6 @@
#include "lastexpress/entities/abbot.h"
#include "lastexpress/entities/anna.h"
-#include "lastexpress/entities/entity.h"
#include "lastexpress/game/beetle.h"
#include "lastexpress/game/entities.h"
@@ -42,9 +41,7 @@
#include "lastexpress/game/state.h"
#include "lastexpress/sound/queue.h"
-#include "lastexpress/sound/sound.h"
-#include "lastexpress/helpers.h"
#include "lastexpress/lastexpress.h"
#include "lastexpress/resource.h"
@@ -332,6 +329,22 @@ static const struct {
{"8042A", 600}
};
+template<class Arg, class Res, class T>
+class Functor1MemConst : public Common::Functor1<Arg, Res> {
+public:
+ typedef Res (T::*FuncType)(Arg) const;
+
+ Functor1MemConst(T *t, const FuncType &func) : _t(t), _func(func) {}
+
+ bool isValid() const { return _func != 0 && _t != 0; }
+ Res operator()(Arg v1) const {
+ return (_t->*_func)(v1);
+ }
+private:
+ mutable T *_t;
+ const FuncType _func;
+};
+
Action::Action(LastExpressEngine *engine) : _engine(engine) {
ADD_ACTION(dummy);
ADD_ACTION(inventory);
@@ -381,7 +394,7 @@ Action::Action(LastExpressEngine *engine) : _engine(engine) {
}
Action::~Action() {
- for (int i = 0; i < (int)_actions.size(); i++)
+ for (uint i = 0; i < _actions.size(); i++)
SAFE_DELETE(_actions[i]);
_actions.clear();
@@ -407,9 +420,7 @@ SceneIndex Action::processHotspot(const SceneHotspot &hotspot) {
//////////////////////////////////////////////////////////////////////////
// Action 0
IMPLEMENT_ACTION(dummy)
- warning("[Action::action_dummy] Dummy action function called (hotspot action: %d)", hotspot.action);
-
- return kSceneInvalid;
+ error("[Action::action_dummy] Dummy action function called (hotspot action: %d)", hotspot.action);
}
//////////////////////////////////////////////////////////////////////////
@@ -1742,14 +1753,14 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
return kCursorBackward;
case SceneHotspot::kActionKnockOnDoor:
- warning("================================= DOOR %03d =================================", object);
+ debugC(2, kLastExpressDebugScenes, "================================= DOOR %03d =================================", object);
if (object >= kObjectMax)
return kCursorNormal;
else
return (CursorStyle)getObjects()->get(object).cursor;
case SceneHotspot::kAction12:
- warning("================================= OBJECT %03d =================================", object);
+ debugC(2, kLastExpressDebugScenes, "================================= OBJECT %03d =================================", object);
if (object >= kObjectMax)
return kCursorNormal;
@@ -1759,7 +1770,7 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
return kCursorNormal;
case SceneHotspot::kActionPickItem:
- warning("================================= ITEM %03d =================================", object);
+ debugC(2, kLastExpressDebugScenes, "================================= ITEM %03d =================================", object);
if (object >= kObjectCompartmentA)
return kCursorNormal;
@@ -1770,7 +1781,7 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
return kCursorNormal;
case SceneHotspot::kActionDropItem:
- warning("================================= ITEM %03d =================================", object);
+ debugC(2, kLastExpressDebugScenes, "================================= ITEM %03d =================================", object);
if (object >= kObjectCompartmentA)
return kCursorNormal;
@@ -1887,7 +1898,7 @@ LABEL_KEY:
// Handle compartment action
case SceneHotspot::kActionCompartment:
case SceneHotspot::kActionExitCompartment:
- warning("================================= DOOR %03d =================================", object);
+ debugC(2, kLastExpressDebugScenes, "================================= DOOR %03d =================================", object);
if (object >= kObjectMax)
return kCursorNormal;