]> git.lizzy.rs Git - minetest.git/blobdiff - src/itemdef.h
Only include keycode unittests in client build (fixes #4559)
[minetest.git] / src / itemdef.h
index 385becd4868381f5574fab2cfefeede1043b0271..dcb98e8a945d01c49e2e3bb1010d6493516765ab 100644 (file)
@@ -1,7 +1,7 @@
 /*
-Minetest-c55
-Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
-Copyright (C) 2011 Kahrl <kahrl@gmx.net>
+Minetest
+Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
+Copyright (C) 2013 Kahrl <kahrl@gmx.net>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -21,11 +21,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef ITEMDEF_HEADER
 #define ITEMDEF_HEADER
 
-#include "common_irrlicht.h"
+#include "irrlichttypes_extrabloated.h"
 #include <string>
 #include <iostream>
 #include <set>
 #include "itemgroup.h"
+#include "sound.h"
 class IGameDef;
 struct ToolCapabilities;
 
@@ -60,20 +61,20 @@ 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;
 
-       /*
-               Cached stuff
-       */
-#ifndef SERVER
-       video::ITexture *inventory_texture;
-       scene::IMesh *wield_mesh;
-#endif
+       // Client shall immediately place this node when player places the item.
+       // Server will update the precise end result a moment later.
+       // "" = no prediction
+       std::string node_placement_prediction;
 
        /*
                Some helpful methods
@@ -83,7 +84,7 @@ struct ItemDefinition
        ItemDefinition& operator=(const ItemDefinition &def);
        ~ItemDefinition();
        void reset();
-       void serialize(std::ostream &os) const;
+       void serialize(std::ostream &os, u16 protocol_version) const;
        void deSerialize(std::istream &is);
 private:
        void resetInitial();
@@ -103,8 +104,16 @@ class IItemDefManager
        virtual std::set<std::string> getAll() const=0;
        // Check if item is known
        virtual bool isKnown(const std::string &name) const=0;
+#ifndef SERVER
+       // Get item inventory texture
+       virtual video::ITexture* getInventoryTexture(const std::string &name,
+                       IGameDef *gamedef) const=0;
+       // Get item wield mesh
+       virtual scene::IMesh* getWieldMesh(const std::string &name,
+               IGameDef *gamedef) const=0;
+#endif
 
-       virtual void serialize(std::ostream &os)=0;
+       virtual void serialize(std::ostream &os, u16 protocol_version)=0;
 };
 
 class IWritableItemDefManager : public IItemDefManager
@@ -121,27 +130,32 @@ class IWritableItemDefManager : public IItemDefManager
        virtual std::set<std::string> getAll() const=0;
        // Check if item is known
        virtual bool isKnown(const std::string &name) const=0;
+#ifndef SERVER
+       // Get item inventory texture
+       virtual video::ITexture* getInventoryTexture(const std::string &name,
+                       IGameDef *gamedef) const=0;
+       // Get item wield mesh
+       virtual scene::IMesh* getWieldMesh(const std::string &name,
+               IGameDef *gamedef) const=0;
+#endif
 
        // Remove all registered item and node definitions and aliases
        // Then re-add the builtin item definitions
        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.
        virtual void registerAlias(const std::string &name,
                        const std::string &convert_to)=0;
 
-       /*
-               Update inventory textures and wield meshes to latest
-               return values of ITextureSource and INodeDefManager.
-               Call after updating the texture atlas of a texture source.
-       */
-       virtual void updateTexturesAndMeshes(IGameDef *gamedef)=0;
-
-       virtual void serialize(std::ostream &os)=0;
+       virtual void serialize(std::ostream &os, u16 protocol_version)=0;
        virtual void deSerialize(std::istream &is)=0;
+
+       // Do stuff asked by threads that can only be done in the main thread
+       virtual void processQueue(IGameDef *gamedef)=0;
 };
 
 IWritableItemDefManager* createItemDefManager();