X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fserverobject.h;h=8e80225e4f8b7f60a937588abef358c90a13dd93;hb=63867b1a372a4d1a4a4ffdec9d0862b094211a89;hp=fd8a51a9e06d716f7145aa2a9439ded617a669eb;hpb=e4daa4c0658dc8547352dd2039ab74d963a48ff0;p=minetest.git diff --git a/src/serverobject.h b/src/serverobject.h index fd8a51a9e..8e80225e4 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,9 +43,10 @@ Some planning */ class ServerEnvironment; -class InventoryItem; +struct ItemStack; class Player; -struct ToolDiggingProperties; +struct ToolCapabilities; +struct ObjectProperties; class ServerActiveObject : public ActiveObject { @@ -55,17 +58,17 @@ class ServerActiveObject : public ActiveObject 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, @@ -90,10 +93,7 @@ class ServerActiveObject : public ActiveObject { 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 bool isPeaceful(){return true;} + virtual float getMinimumSavedMovement(); virtual std::string getDescription(){return "SAO";} @@ -113,7 +113,7 @@ class ServerActiveObject : public ActiveObject 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 @@ -132,24 +132,49 @@ class ServerActiveObject : public ActiveObject virtual bool isStaticAllowed() const {return true;} - // time_from_last_punch is used for lessening damage if punching fast - virtual void punch(ServerActiveObject *puncher, + // 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 getWieldDiggingProperties(ToolDiggingProperties *dst); - virtual void damageWieldedItem(u16 amount) + virtual void setHP(s16 hp) {} - // If all fits, eats item and returns true. Otherwise returns false. - virtual bool addToInventory(InventoryItem *item) - { return false; } - virtual void addToInventoryLater(InventoryItem *item) + virtual s16 getHP() const + { return 0; } + + virtual void setArmorGroups(const ItemGroupList &armor_groups) {} - virtual void setHP(s16 hp) + 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 s16 getHP() + 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 @@ -207,7 +232,7 @@ class ServerActiveObject : public ActiveObject private: // Used for creating objects based on type - static core::map m_types; + static std::map m_types; }; #endif