]> git.lizzy.rs Git - minetest.git/blobdiff - src/event.h
imageScaleNNAA: Fix image clipping on rect- instead of image dimensions (#9896)
[minetest.git] / src / event.h
index 9e7a0dbf5b482842dd4adc1877c17978fec31f6a..149f7eecd906dd40f06f3f1c0064e6f81e4c99db 100644 (file)
@@ -1,6 +1,6 @@
 /*
-Minetest-c55
-Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -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
-