]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/itemdef.h
Make NodeMetaRef::getmeta a non-static member
[dragonfireclient.git] / src / itemdef.h
index cbbe7e2adcf844ba35db37c9c582bf8f7ac07c61..2ade6116a03fa0a8efbbc4aa7f999f9c4692a2d2 100644 (file)
@@ -26,7 +26,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <iostream>
 #include <set>
 #include "itemgroup.h"
+#include "sound.h"
 class IGameDef;
+class Client;
 struct ToolCapabilities;
 
 /*
@@ -60,12 +62,15 @@ struct ItemDefinition
        /*
                Item stack and interaction properties
        */
-       s16 stack_max;
+       u16 stack_max;
        bool usable;
        bool liquids_pointable;
        // May be NULL. If non-NULL, deleted by destructor
        ToolCapabilities *tool_capabilities;
        ItemGroupList groups;
+       SimpleSoundSpec sound_place;
+       SimpleSoundSpec sound_place_failed;
+       f32 range;
 
        // Client shall immediately place this node when player places the item.
        // Server will update the precise end result a moment later.
@@ -103,10 +108,10 @@ class IItemDefManager
 #ifndef SERVER
        // Get item inventory texture
        virtual video::ITexture* getInventoryTexture(const std::string &name,
-                       IGameDef *gamedef) const=0;
+                       Client *client) const=0;
        // Get item wield mesh
        virtual scene::IMesh* getWieldMesh(const std::string &name,
-               IGameDef *gamedef) const=0;
+               Client *client) const=0;
 #endif
 
        virtual void serialize(std::ostream &os, u16 protocol_version)=0;
@@ -129,10 +134,10 @@ class IWritableItemDefManager : public IItemDefManager
 #ifndef SERVER
        // Get item inventory texture
        virtual video::ITexture* getInventoryTexture(const std::string &name,
-                       IGameDef *gamedef) const=0;
+                       Client *client) const=0;
        // Get item wield mesh
        virtual scene::IMesh* getWieldMesh(const std::string &name,
-               IGameDef *gamedef) const=0;
+               Client *client) const=0;
 #endif
 
        // Remove all registered item and node definitions and aliases
@@ -140,6 +145,7 @@ class IWritableItemDefManager : public IItemDefManager
        virtual void clear()=0;
        // Register item definition
        virtual void registerItem(const ItemDefinition &def)=0;
+       virtual void unregisterItem(const std::string &name)=0;
        // Set an alias so that items named <name> will load as <convert_to>.
        // Alias is not set if <name> has already been defined.
        // Alias will be removed if <name> is defined at a later point of time.