mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Move tool stuff to tool.{h,cpp}
This commit is contained in:
		@@ -94,6 +94,7 @@ configure_file(
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(common_SRCS
 | 
			
		||||
	tool.cpp
 | 
			
		||||
	mapnode_contentfeatures.cpp
 | 
			
		||||
	luaentity_common.cpp
 | 
			
		||||
	scriptapi.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
 | 
			
		||||
@@ -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
 | 
			
		||||
*/
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user