forked from Mirrorlandia_minetest/minetest
Move tool stuff to tool.{h,cpp}
This commit is contained in:
parent
72884bf85f
commit
5fc791ac9a
@ -94,6 +94,7 @@ configure_file(
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(common_SRCS
|
set(common_SRCS
|
||||||
|
tool.cpp
|
||||||
mapnode_contentfeatures.cpp
|
mapnode_contentfeatures.cpp
|
||||||
luaentity_common.cpp
|
luaentity_common.cpp
|
||||||
scriptapi.cpp
|
scriptapi.cpp
|
||||||
|
@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "mapnode_contentfeatures.h"
|
#include "mapnode_contentfeatures.h"
|
||||||
|
#include "tool.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
InventoryItem
|
InventoryItem
|
||||||
@ -166,6 +167,15 @@ InventoryItem *MaterialItem::createCookResult() const
|
|||||||
return item_material_create_cook_result(m_content);
|
return item_material_create_cook_result(m_content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
ToolItem
|
||||||
|
*/
|
||||||
|
|
||||||
|
std::string ToolItem::getImageBasename() const
|
||||||
|
{
|
||||||
|
return tool_get_imagename(m_toolname);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
CraftItem
|
CraftItem
|
||||||
*/
|
*/
|
||||||
|
@ -52,7 +52,7 @@ public:
|
|||||||
virtual InventoryItem* clone() = 0;
|
virtual InventoryItem* clone() = 0;
|
||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
// Return the name of the image for this item
|
// 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)
|
// Shall return an image of the item (or NULL)
|
||||||
virtual video::ITexture * getImage() const { return NULL; }
|
virtual video::ITexture * getImage() const { return NULL; }
|
||||||
// Shall return an image of the item without embellishments (or NULL)
|
// Shall return an image of the item without embellishments (or NULL)
|
||||||
@ -300,44 +300,16 @@ public:
|
|||||||
{
|
{
|
||||||
return new ToolItem(m_toolname, m_wear);
|
return new ToolItem(m_toolname, m_wear);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string getImageBasename() const;
|
||||||
|
|
||||||
#ifndef SERVER
|
#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
|
video::ITexture * getImage() const
|
||||||
{
|
{
|
||||||
if(g_texturesource == NULL)
|
if(g_texturesource == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
std::string basename = getBasename();
|
std::string basename = getImageBasename();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Calculate a progress value with sane amount of
|
Calculate a progress value with sane amount of
|
||||||
@ -358,7 +330,7 @@ public:
|
|||||||
if(g_texturesource == NULL)
|
if(g_texturesource == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return g_texturesource->getTextureRaw(getBasename());
|
return g_texturesource->getTextureRaw(getImageBasename());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
std::string getText()
|
std::string getText()
|
||||||
|
@ -1,75 +1,7 @@
|
|||||||
#include "materials.h"
|
#include "materials.h"
|
||||||
#include "mapnode.h"
|
#include "mapnode.h"
|
||||||
#include "mapnode_contentfeatures.h"
|
#include "mapnode_contentfeatures.h"
|
||||||
|
#include "tool.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);
|
|
||||||
}
|
|
||||||
|
|
||||||
DiggingProperties getDiggingProperties(u16 material, const std::string &tool)
|
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)
|
if(mp.diggability == DIGGABLE_CONSTANT)
|
||||||
return DiggingProperties(true, mp.constant_time, 0);
|
return DiggingProperties(true, mp.constant_time, 0);
|
||||||
|
|
||||||
ToolProperties tp = getToolProperties(tool);
|
ToolDiggingProperties tp = tool_get_digging_properties(tool);
|
||||||
|
|
||||||
float time = tp.basetime;
|
float time = tp.basetime;
|
||||||
time += tp.dt_weight * mp.weight;
|
time += tp.dt_weight * mp.weight;
|
||||||
|
93
src/tool.cpp
Normal file
93
src/tool.cpp
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
59
src/tool.h
Normal file
59
src/tool.h
Normal file
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user