#ifndef SERVEROBJECT_HEADER
#define SERVEROBJECT_HEADER
-#include "common_irrlicht.h"
+#include "irrlichttypes.h"
#include "activeobject.h"
#include "utility.h"
class ServerEnvironment;
class InventoryItem;
+class Player;
class ServerActiveObject : public ActiveObject
{
NOTE: m_env can be NULL, but step() isn't called if it is.
Prototypes are used that way.
*/
- ServerActiveObject(ServerEnvironment *env, u16 id, v3f pos);
+ ServerActiveObject(ServerEnvironment *env, v3f pos);
virtual ~ServerActiveObject();
+ virtual void addedToEnvironment(u16 id);
+
// Create a certain type of ServerActiveObject
static ServerActiveObject* create(u8 type,
ServerEnvironment *env, u16 id, v3f pos,
/*
Some simple getters/setters
*/
- v3f getBasePosition()
- {return m_base_position;}
- void setBasePosition(v3f pos)
- {m_base_position = pos;}
- ServerEnvironment* getEnv()
- {return m_env;}
+ v3f getBasePosition(){ return m_base_position; }
+ void setBasePosition(v3f pos){ m_base_position = pos; }
+ ServerEnvironment* getEnv(){ return m_env; }
+ /*
+ Some more dynamic interface
+ */
+ virtual void setPos(v3f pos)
+ { setBasePosition(pos); }
+ // continuous: if true, object does not stop immediately at pos
+ virtual void moveTo(v3f pos, bool continuous)
+ { setBasePosition(pos); }
+ // If object has moved less than this and data has not changed,
+ // saving to disk may be omitted
+ virtual float getMinimumSavedMovement()
+ { return 2.0*BS; }
+
/*
Step object in time.
Messages added to messages are sent to client over network.
If the object doesn't return an item, this will be called.
Return value is tool wear.
*/
- virtual u16 punch(const std::string &toolname, v3f dir)
+ virtual u16 punch(const std::string &toolname, v3f dir,
+ const std::string &playername)
{return 0;}
+
+ /*
+ */
+ virtual void rightClick(Player *player){}
+
+ virtual bool isPeaceful(){return true;}
/*
Number of players which know about this object. Object won't be
protected:
// Used for creating objects based on type
typedef ServerActiveObject* (*Factory)
- (ServerEnvironment *env, u16 id, v3f pos,
+ (ServerEnvironment *env, v3f pos,
const std::string &data);
static void registerType(u16 type, Factory f);