aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/inventory.cpp10
-rw-r--r--src/inventory.h40
-rw-r--r--src/materials.cpp72
-rw-r--r--src/tool.cpp93
-rw-r--r--src/tool.h59
6 files changed, 171 insertions, 104 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ca5a7756d..cc783855c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -94,6 +94,7 @@ configure_file(
)
set(common_SRCS
+ tool.cpp
mapnode_contentfeatures.cpp
luaentity_common.cpp
scriptapi.cpp
diff --git a/src/inventory.cpp b/src/inventory.cpp
index ec1a81b18..ea5b69636 100644
--- a/src/inventory.cpp
+++ b/src/inventory.cpp
@@ -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
@@ -167,6 +168,15 @@ InventoryItem *MaterialItem::createCookResult() const
}
/*
+ ToolItem
+*/
+
+std::string ToolItem::getImageBasename() const
+{
+ return tool_get_imagename(m_toolname);
+}
+
+/*
CraftItem
*/
diff --git a/src/inventory.h b/src/inventory.h
index c202d5533..b163fde90 100644
--- a/src/inventory.h
+++ b/src/inventory.h
@@ -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()
diff --git a/src/materials.cpp b/src/materials.cpp
index a27691496..d905ca291 100644
--- a/src/materials.cpp
+++ b/src/materials.cpp
@@ -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
index 000000000..4a4f0e467
--- /dev/null
+++ b/src/tool.cpp
@@ -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
index 000000000..49d069aac
--- /dev/null
+++ b/src/tool.h
@@ -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
+