]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/itemdef.h
Enable multiline signs
[dragonfireclient.git] / src / itemdef.h
index 15734ff44450c8dab517edfdd8c23fd9827094d1..699d727bde4a60334073f854b64aa6717d413322 100644 (file)
@@ -4,16 +4,16 @@ Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
 Copyright (C) 2011 Kahrl <kahrl@gmx.net>
 
 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.
 */
@@ -21,27 +21,14 @@ 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 <map>
+#include "itemgroup.h"
 class IGameDef;
 struct ToolCapabilities;
 
-/*
-       Some helpers
-*/
-
-static inline int itemgroup_get(const std::map<std::string, int> &groups,
-               const std::string &name)
-{
-       std::map<std::string, int>::const_iterator i = groups.find(name);
-       if(i == groups.end())
-               return 0;
-       return i->second;
-}
-
 /*
        Base item definition
 */
@@ -78,15 +65,12 @@ struct ItemDefinition
        bool liquids_pointable;
        // May be NULL. If non-NULL, deleted by destructor
        ToolCapabilities *tool_capabilities;
-       std::map<std::string, int> groups;
+       ItemGroupList groups;
 
-       /*
-               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
@@ -116,6 +100,14 @@ 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;
 };
@@ -134,6 +126,14 @@ 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
@@ -146,15 +146,11 @@ class IWritableItemDefManager : public IItemDefManager
        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 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();