diff options
Diffstat (limited to 'src/environment.h')
-rw-r--r-- | src/environment.h | 51 |
1 files changed, 32 insertions, 19 deletions
diff --git a/src/environment.h b/src/environment.h index ac290f932..f5cce5933 100644 --- a/src/environment.h +++ b/src/environment.h @@ -113,25 +113,6 @@ private: }; /* - Active block modifier interface -*/ - -class ServerEnvironment; - -class ActiveBlockModifier -{ -public: - ActiveBlockModifier(){}; - virtual ~ActiveBlockModifier(){}; - - virtual u32 getTriggerContentCount(){ return 1;} - virtual u8 getTriggerContent(u32 i) = 0; - virtual float getActiveInterval() = 0; - virtual u32 getActiveChance() = 0; - virtual void triggerEvent(ServerEnvironment *env, v3s16 p) = 0; -}; - -/* The server-side environment. This is not thread-safe. Server uses an environment mutex. @@ -140,6 +121,7 @@ public: #include "serverobject.h" class Server; +class ActiveBlockModifier; class ServerEnvironment : public Environment { @@ -178,6 +160,7 @@ public: /* ActiveObjects + ------------------------------------------- */ ServerActiveObject* getActiveObject(u16 id); @@ -214,6 +197,13 @@ public: */ ActiveObjectMessage getActiveObjectMessage(); + /* + ActiveBlockModifiers + ------------------------------------------- + */ + + void addActiveBlockModifier(ActiveBlockModifier *abm); + private: /* Remove all objects that satisfy (m_removed && m_known_by_count==0) @@ -263,6 +253,29 @@ private: float m_game_time_fraction_counter; }; +/* + Active block modifier interface. + + These are fed into ServerEnvironment at initialization time; + ServerEnvironment handles deleting them. +*/ + +class ActiveBlockModifier +{ +public: + ActiveBlockModifier(){}; + virtual ~ActiveBlockModifier(){}; + + //virtual core::list<u8> update(ServerEnvironment *env) = 0; + virtual u32 getTriggerContentCount(){ return 1;} + virtual u8 getTriggerContent(u32 i) = 0; + virtual float getActiveInterval() = 0; + // chance of (1 / return value), 0 is disallowed + virtual u32 getActiveChance() = 0; + // This is called usually at interval for 1/chance of the nodes + virtual void triggerEvent(ServerEnvironment *env, v3s16 p) = 0; +}; + #ifndef SERVER #include "clientobject.h" |