Move tool stuff to tool.{h,cpp}
authorPerttu Ahola <celeron55@gmail.com>
Sun, 13 Nov 2011 14:38:14 +0000 (16:38 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 29 Nov 2011 17:13:41 +0000 (19:13 +0200)
src/CMakeLists.txt
src/inventory.cpp
src/inventory.h
src/materials.cpp
src/tool.cpp [new file with mode: 0644]
src/tool.h [new file with mode: 0644]

index ca5a7756d280b4b6017f565966a5af1e35be5677..cc783855c15b965e6d7d72d67553a0fdd5822624 100644 (file)
@@ -94,6 +94,7 @@ configure_file(
 )
 
 set(common_SRCS
+       tool.cpp
        mapnode_contentfeatures.cpp
        luaentity_common.cpp
        scriptapi.cpp
index ec1a81b180a25013c3c18f79111623d5d24672c8..ea5b696366ee1daac9bdb0bfedefdec2d8bdcb56 100644 (file)
@@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "player.h"
 #include "log.h"
 #include "mapnode_contentfeatures.h"
+#include "tool.h"
 
 /*
        InventoryItem
@@ -166,6 +167,15 @@ InventoryItem *MaterialItem::createCookResult() const
        return item_material_create_cook_result(m_content);
 }
 
+/*
+       ToolItem
+*/
+
+std::string ToolItem::getImageBasename() const
+{
+       return tool_get_imagename(m_toolname);
+}
+
 /*
        CraftItem
 */
index c202d5533125c860dbf15030c2da54840f592ec3..b163fde90a2759fcc12c69e489dfa69fc29a9e7c 100644 (file)
@@ -52,7 +52,7 @@ public:
        virtual InventoryItem* clone() = 0;
 #ifndef SERVER
        // Return the name of the image for this item
-       virtual std::string getBasename() const { return ""; }
+       virtual std::string getImageBasename() const { return ""; }
        // Shall return an image of the item (or NULL)
        virtual video::ITexture * getImage() const { return NULL; }
        // Shall return an image of the item without embellishments (or NULL)
@@ -300,44 +300,16 @@ public:
        {
                return new ToolItem(m_toolname, m_wear);
        }
+
+       std::string getImageBasename() const;
+
 #ifndef SERVER
-       std::string getBasename() const {
-               if(m_toolname == "WPick")
-                       return "tool_woodpick.png";
-               else if(m_toolname == "STPick")
-                       return "tool_stonepick.png";
-               else if(m_toolname == "SteelPick")
-                       return "tool_steelpick.png";
-               else if(m_toolname == "MesePick")
-                       return "tool_mesepick.png";
-               else if(m_toolname == "WShovel")
-                       return "tool_woodshovel.png";
-               else if(m_toolname == "STShovel")
-                       return "tool_stoneshovel.png";
-               else if(m_toolname == "SteelShovel")
-                       return "tool_steelshovel.png";
-               else if(m_toolname == "WAxe")
-                       return "tool_woodaxe.png";
-               else if(m_toolname == "STAxe")
-                       return "tool_stoneaxe.png";
-               else if(m_toolname == "SteelAxe")
-                       return "tool_steelaxe.png";
-               else if(m_toolname == "WSword")
-                       return "tool_woodsword.png";
-               else if(m_toolname == "STSword")
-                       return "tool_stonesword.png";
-               else if(m_toolname == "SteelSword")
-                       return "tool_steelsword.png";
-               else
-                       return "cloud.png";
-}
-       
        video::ITexture * getImage() const
        {
                if(g_texturesource == NULL)
                        return NULL;
                
-               std::string basename = getBasename();
+               std::string basename = getImageBasename();
                
                /*
                        Calculate a progress value with sane amount of
@@ -358,7 +330,7 @@ public:
                if(g_texturesource == NULL)
                        return NULL;
                
-               return g_texturesource->getTextureRaw(getBasename());
+               return g_texturesource->getTextureRaw(getImageBasename());
        }
 #endif
        std::string getText()
index a276914962f330c9a58f58eb4566026e5d2d0a13..d905ca2910a94699a7f2e52a6160a40b16de461d 100644 (file)
@@ -1,75 +1,7 @@
 #include "materials.h"
 #include "mapnode.h"
 #include "mapnode_contentfeatures.h"
-
-
-struct ToolProperties
-{
-       // time = basetime + sum(feature here * feature in MaterialProperties)
-       float basetime;
-       float dt_weight;
-       float dt_crackiness;
-       float dt_crumbliness;
-       float dt_cuttability;
-       float basedurability;
-       float dd_weight;
-       float dd_crackiness;
-       float dd_crumbliness;
-       float dd_cuttability;
-
-       ToolProperties(float a=0.75, float b=0, float c=0, float d=0, float e=0,
-                       float f=50, float g=0, float h=0, float i=0, float j=0):
-               basetime(a),
-               dt_weight(b),
-               dt_crackiness(c),
-               dt_crumbliness(d),
-               dt_cuttability(e),
-               basedurability(f),
-               dd_weight(g),
-               dd_crackiness(h),
-               dd_crumbliness(i),
-               dd_cuttability(j)
-       {}
-};
-
-ToolProperties getToolProperties(const std::string &toolname)
-{
-       // weight, crackiness, crumbleness, cuttability
-       if(toolname == "WPick")
-               return ToolProperties(2.0, 0,-1,2,0, 50, 0,0,0,0);
-       else if(toolname == "STPick")
-               return ToolProperties(1.5, 0,-1,2,0, 100, 0,0,0,0);
-       else if(toolname == "SteelPick")
-               return ToolProperties(1.0, 0,-1,2,0, 300, 0,0,0,0);
-
-       else if(toolname == "MesePick")
-               return ToolProperties(0, 0,0,0,0, 1337, 0,0,0,0);
-       
-       else if(toolname == "WShovel")
-               return ToolProperties(2.0, 0.5,2,-1.5,0.3, 50, 0,0,0,0);
-       else if(toolname == "STShovel")
-               return ToolProperties(1.5, 0.5,2,-1.5,0.1, 100, 0,0,0,0);
-       else if(toolname == "SteelShovel")
-               return ToolProperties(1.0, 0.5,2,-1.5,0.0, 300, 0,0,0,0);
-
-       // weight, crackiness, crumbleness, cuttability
-       else if(toolname == "WAxe")
-               return ToolProperties(2.0, 0.5,-0.2,1,-0.5, 50, 0,0,0,0);
-       else if(toolname == "STAxe")
-               return ToolProperties(1.5, 0.5,-0.2,1,-0.5, 100, 0,0,0,0);
-       else if(toolname == "SteelAxe")
-               return ToolProperties(1.0, 0.5,-0.2,1,-0.5, 300, 0,0,0,0);
-
-       else if(toolname == "WSword")
-               return ToolProperties(3.0, 3,0,1,-1, 50, 0,0,0,0);
-       else if(toolname == "STSword")
-               return ToolProperties(2.5, 3,0,1,-1, 100, 0,0,0,0);
-       else if(toolname == "SteelSword")
-               return ToolProperties(2.0, 3,0,1,-1, 300, 0,0,0,0);
-
-       // Properties of hand
-       return ToolProperties(0.5, 1,0,-1,0, 50, 0,0,0,0);
-}
+#include "tool.h"
 
 DiggingProperties getDiggingProperties(u16 material, const std::string &tool)
 {
@@ -79,7 +11,7 @@ DiggingProperties getDiggingProperties(u16 material, const std::string &tool)
        if(mp.diggability == DIGGABLE_CONSTANT)
                return DiggingProperties(true, mp.constant_time, 0);
 
-       ToolProperties tp = getToolProperties(tool);
+       ToolDiggingProperties tp = tool_get_digging_properties(tool);
        
        float time = tp.basetime;
        time += tp.dt_weight * mp.weight;
diff --git a/src/tool.cpp b/src/tool.cpp
new file mode 100644 (file)
index 0000000..4a4f0e4
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+Minetest-c55
+Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+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
+(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.
+
+You should have received a copy of the GNU 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.
+*/
+
+#include "tool.h"
+
+std::string tool_get_imagename(const std::string &toolname)
+{
+       if(toolname == "WPick")
+               return "tool_woodpick.png";
+       else if(toolname == "STPick")
+               return "tool_stonepick.png";
+       else if(toolname == "SteelPick")
+               return "tool_steelpick.png";
+       else if(toolname == "MesePick")
+               return "tool_mesepick.png";
+       else if(toolname == "WShovel")
+               return "tool_woodshovel.png";
+       else if(toolname == "STShovel")
+               return "tool_stoneshovel.png";
+       else if(toolname == "SteelShovel")
+               return "tool_steelshovel.png";
+       else if(toolname == "WAxe")
+               return "tool_woodaxe.png";
+       else if(toolname == "STAxe")
+               return "tool_stoneaxe.png";
+       else if(toolname == "SteelAxe")
+               return "tool_steelaxe.png";
+       else if(toolname == "WSword")
+               return "tool_woodsword.png";
+       else if(toolname == "STSword")
+               return "tool_stonesword.png";
+       else if(toolname == "SteelSword")
+               return "tool_steelsword.png";
+       else
+               return "cloud.png";
+}
+
+ToolDiggingProperties tool_get_digging_properties(const std::string &toolname)
+{
+       // weight, crackiness, crumbleness, cuttability
+       if(toolname == "WPick")
+               return ToolDiggingProperties(2.0, 0,-1,2,0, 50, 0,0,0,0);
+       else if(toolname == "STPick")
+               return ToolDiggingProperties(1.5, 0,-1,2,0, 100, 0,0,0,0);
+       else if(toolname == "SteelPick")
+               return ToolDiggingProperties(1.0, 0,-1,2,0, 300, 0,0,0,0);
+
+       else if(toolname == "MesePick")
+               return ToolDiggingProperties(0, 0,0,0,0, 1337, 0,0,0,0);
+       
+       else if(toolname == "WShovel")
+               return ToolDiggingProperties(2.0, 0.5,2,-1.5,0.3, 50, 0,0,0,0);
+       else if(toolname == "STShovel")
+               return ToolDiggingProperties(1.5, 0.5,2,-1.5,0.1, 100, 0,0,0,0);
+       else if(toolname == "SteelShovel")
+               return ToolDiggingProperties(1.0, 0.5,2,-1.5,0.0, 300, 0,0,0,0);
+
+       // weight, crackiness, crumbleness, cuttability
+       else if(toolname == "WAxe")
+               return ToolDiggingProperties(2.0, 0.5,-0.2,1,-0.5, 50, 0,0,0,0);
+       else if(toolname == "STAxe")
+               return ToolDiggingProperties(1.5, 0.5,-0.2,1,-0.5, 100, 0,0,0,0);
+       else if(toolname == "SteelAxe")
+               return ToolDiggingProperties(1.0, 0.5,-0.2,1,-0.5, 300, 0,0,0,0);
+
+       else if(toolname == "WSword")
+               return ToolDiggingProperties(3.0, 3,0,1,-1, 50, 0,0,0,0);
+       else if(toolname == "STSword")
+               return ToolDiggingProperties(2.5, 3,0,1,-1, 100, 0,0,0,0);
+       else if(toolname == "SteelSword")
+               return ToolDiggingProperties(2.0, 3,0,1,-1, 300, 0,0,0,0);
+
+       // Properties of hand
+       return ToolDiggingProperties(0.5, 1,0,-1,0, 50, 0,0,0,0);
+}
+
+
diff --git a/src/tool.h b/src/tool.h
new file mode 100644 (file)
index 0000000..49d069a
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+Minetest-c55
+Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+
+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
+(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.
+
+You should have received a copy of the GNU 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.
+*/
+
+#ifndef TOOL_HEADER
+#define TOOL_HEADER
+
+#include <string>
+
+struct ToolDiggingProperties
+{
+       // time = basetime + sum(feature here * feature in MaterialProperties)
+       float basetime;
+       float dt_weight;
+       float dt_crackiness;
+       float dt_crumbliness;
+       float dt_cuttability;
+       float basedurability;
+       float dd_weight;
+       float dd_crackiness;
+       float dd_crumbliness;
+       float dd_cuttability;
+
+       ToolDiggingProperties(float a=0.75, float b=0, float c=0, float d=0, float e=0,
+                       float f=50, float g=0, float h=0, float i=0, float j=0):
+               basetime(a),
+               dt_weight(b),
+               dt_crackiness(c),
+               dt_crumbliness(d),
+               dt_cuttability(e),
+               basedurability(f),
+               dd_weight(g),
+               dd_crackiness(h),
+               dd_crumbliness(i),
+               dd_cuttability(j)
+       {}
+};
+
+std::string tool_get_imagename(const std::string &toolname);
+
+ToolDiggingProperties tool_get_digging_properties(const std::string &toolname);
+
+#endif
+