summaryrefslogtreecommitdiff
path: root/src/event.h
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2018-03-30 18:32:52 +0200
committerGitHub <noreply@github.com>2018-03-30 18:32:52 +0200
commitce873108aa91d19104f46c5acd3350385e7a4541 (patch)
tree58672a3c803469de71c9ae270beb9a052ba5559a /src/event.h
parent2c490dddc037d7d1cf211bbf28309e31b0abdadd (diff)
downloadminetest-ce873108aa91d19104f46c5acd3350385e7a4541.tar.gz
minetest-ce873108aa91d19104f46c5acd3350385e7a4541.tar.bz2
minetest-ce873108aa91d19104f46c5acd3350385e7a4541.zip
Client eventmanager refactor (#7179)
* Drop EventManager from GameDef & do some client cleanups * EventManager is only used by Client. Don't expose it on Server & GameDef for nothing * Drop Client::event() in favor of direct calls to getEventManager * Cleanup some event put from new + put to put(new) * MtEvent: add Type(u8) enum * This will enhance event performance & ensure stricter type * Drop MtEvent::checkIs (unused) * clang-tidy reported fixes * Code style * Move event_manager.h to the client directory as it's only used by client Add EventManager unittests + switch to unordered_map as order is not important here Drop a unused function
Diffstat (limited to 'src/event.h')
-rw-r--r--src/event.h43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/event.h b/src/event.h
index 488152855..ae200978c 100644
--- a/src/event.h
+++ b/src/event.h
@@ -19,31 +19,36 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#pragma once
+#import "irrlichttypes.h"
+
class MtEvent
{
public:
- virtual ~MtEvent() = default;
- //virtual MtEvent* clone(){ return new IEvent; }
- virtual const char* getType() const = 0;
-
- MtEvent* checkIs(const std::string &type)
+ enum Type : u8
{
- if(type == getType())
- return this;
- return NULL;
- }
+ VIEW_BOBBING_STEP = 0,
+ CAMERA_PUNCH_LEFT,
+ CAMERA_PUNCH_RIGHT,
+ PLAYER_FALLING_DAMAGE,
+ PLAYER_DAMAGE,
+ NODE_DUG,
+ PLAYER_JUMP,
+ PLAYER_REGAIN_GROUND,
+ TYPE_MAX,
+ };
+
+ virtual ~MtEvent() = default;
+ virtual Type getType() const = 0;
};
// An event with no parameters and customizable name
-class SimpleTriggerEvent: public MtEvent
+class SimpleTriggerEvent : public MtEvent
{
- const char *type;
+ Type type;
+
public:
- SimpleTriggerEvent(const char *type):
- type(type)
- {}
- const char* getType() const
- {return type;}
+ SimpleTriggerEvent(Type type) : type(type) {}
+ Type getType() const override { return type; }
};
class MtEventReceiver
@@ -60,9 +65,7 @@ class MtEventManager
public:
virtual ~MtEventManager() = default;
virtual void put(MtEvent *e) = 0;
- virtual void reg(const char *type, event_receive_func f, void *data) = 0;
+ virtual void reg(MtEvent::Type type, event_receive_func f, void *data) = 0;
// If data==NULL, every occurence of f is deregistered.
- virtual void dereg(const char *type, event_receive_func f, void *data) = 0;
- virtual void reg(MtEventReceiver *r, const char *type) = 0;
- virtual void dereg(MtEventReceiver *r, const char *type) = 0;
+ virtual void dereg(MtEvent::Type type, event_receive_func f, void *data) = 0;
};