X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fserverobject.h;h=13a075a2575b52dd59ce3f99ca9caace8d8c6de8;hb=58e6d25e033c76dc91aaac18fdeda92ac23fe0e1;hp=4dac4686368fc8bf77bcd465ee795d5ac46d1681;hpb=ee0d3bacbce612c1abc6016cb7b0d684df25b820;p=oweals%2Fminetest.git diff --git a/src/serverobject.h b/src/serverobject.h index 4dac46863..13a075a25 100644 --- a/src/serverobject.h +++ b/src/serverobject.h @@ -1,18 +1,18 @@ /* -Minetest-c55 -Copyright (C) 2010-2011 celeron55, Perttu Ahola +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ @@ -20,9 +20,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef SERVEROBJECT_HEADER #define SERVEROBJECT_HEADER -#include "irrlichttypes.h" +#include "irrlichttypes_bloated.h" #include "activeobject.h" -#include "utility.h" +#include "inventorymanager.h" +#include "itemgroup.h" +#include "util/container.h" /* @@ -41,8 +43,10 @@ Some planning */ class ServerEnvironment; -class InventoryItem; +struct ItemStack; class Player; +struct ToolCapabilities; +struct ObjectProperties; class ServerActiveObject : public ActiveObject { @@ -54,14 +58,20 @@ public: ServerActiveObject(ServerEnvironment *env, v3f pos); virtual ~ServerActiveObject(); + virtual u8 getSendType() const + { return getType(); } + // Called after id has been set and has been inserted in environment - virtual void addedToEnvironment(){}; + virtual void addedToEnvironment(u32 dtime_s){}; // Called before removing from environment virtual void removingFromEnvironment(){}; // Returns true if object's deletion is the job of the // environment virtual bool environmentDeletes() const { return true; } + + virtual bool unlimitedTransferDistance() const + { return false; } // Create a certain type of ServerActiveObject static ServerActiveObject* create(u8 type, @@ -86,8 +96,7 @@ public: { 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; } + virtual float getMinimumSavedMovement(); virtual bool isPeaceful(){return true;} @@ -109,7 +118,7 @@ public: The return value of this is passed to the client-side object when it is created */ - virtual std::string getClientInitializationData(){return "";} + virtual std::string getClientInitializationData(u16 protocol_version){return "";} /* The return value of this is passed to the server-side object @@ -128,23 +137,49 @@ public: virtual bool isStaticAllowed() const {return true;} - virtual void punch(ServerActiveObject *puncher){} - virtual void rightClick(ServerActiveObject *clicker){} - - // Returns a reference - virtual InventoryItem* getWieldedItem() - { return NULL; } - virtual void damageWieldedItem(u16 amount) - {} - // If all fits, eats item and returns true. Otherwise returns false. - virtual bool addToInventory(InventoryItem *item) - {return false;} - virtual void addToInventoryLater(InventoryItem *item) - {} + // Returns tool wear + virtual int punch(v3f dir, + const ToolCapabilities *toolcap=NULL, + ServerActiveObject *puncher=NULL, + float time_from_last_punch=1000000) + { return 0; } + virtual void rightClick(ServerActiveObject *clicker) + {} virtual void setHP(s16 hp) - {} - virtual s16 getHP() - {return 0;} + {} + virtual s16 getHP() const + { return 0; } + + virtual void setArmorGroups(const ItemGroupList &armor_groups) + {} + virtual void setPhysicsOverride(float physics_override_speed, float physics_override_jump, float physics_override_gravity) + {} + virtual void setAnimation(v2f frames, float frame_speed, float frame_blend) + {} + virtual void setBonePosition(std::string bone, v3f position, v3f rotation) + {} + virtual void setAttachment(int parent_id, std::string bone, v3f position, v3f rotation) + {} + virtual ObjectProperties* accessObjectProperties() + { return NULL; } + virtual void notifyObjectPropertiesModified() + {} + + // Inventory and wielded item + virtual Inventory* getInventory() + { return NULL; } + virtual const Inventory* getInventory() const + { return NULL; } + virtual InventoryLocation getInventoryLocation() const + { return InventoryLocation(); } + virtual void setInventoryModified() + {} + virtual std::string getWieldList() const + { return ""; } + virtual int getWieldIndex() const + { return 0; } + virtual ItemStack getWieldedItem() const; + virtual bool setWieldedItem(const ItemStack &item); /* Number of players which know about this object. Object won't be @@ -202,7 +237,7 @@ protected: private: // Used for creating objects based on type - static core::map m_types; + static std::map m_types; }; #endif