X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=src%2Fevent.h;h=149f7eecd906dd40f06f3f1c0064e6f81e4c99db;hb=cb00632e23a41d8d171631de9d85e168b251b80e;hp=cfc222d5d26d9b7539dbb928e1124550202ef6e7;hpb=22e186b4aa88b585e71500c4e9a03bf69b0b6191;p=dragonfireclient.git diff --git a/src/event.h b/src/event.h index cfc222d5d..149f7eecd 100644 --- a/src/event.h +++ b/src/event.h @@ -17,40 +17,44 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef EVENT_HEADER -#define EVENT_HEADER +#pragma once + +#include "irrlichttypes.h" class MtEvent { public: - virtual ~MtEvent(){}; - //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 { public: - virtual ~MtEventReceiver(){}; + virtual ~MtEventReceiver() = default; virtual void onEvent(MtEvent *e) = 0; }; @@ -59,14 +63,9 @@ typedef void (*event_receive_func)(MtEvent *e, void *data); class MtEventManager { public: - virtual ~MtEventManager(){}; + 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; }; - -#endif -