From 699d0e9a5efa555f4b4c7652a0ca571acf0afdb2 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 25 Dec 2010 01:54:39 +0200 Subject: minecraft-like crafting --- src/materials.h | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/materials.h (limited to 'src/materials.h') diff --git a/src/materials.h b/src/materials.h new file mode 100644 index 000000000..ae2deac88 --- /dev/null +++ b/src/materials.h @@ -0,0 +1,98 @@ +/* +Minetest-c55 +Copyright (C) 2010 celeron55, Perttu Ahola + +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 MATERIALS_HEADER +#define MATERIALS_HEADER + +/* + Material properties +*/ + +#include "common_irrlicht.h" +#include "inventory.h" +#include + +struct DiggingProperties +{ + DiggingProperties(): + diggable(false), + time(0.0), + wear(0) + { + } + DiggingProperties(bool a_diggable, float a_time, u16 a_wear): + diggable(a_diggable), + time(a_time), + wear(a_wear) + { + } + bool diggable; + // Digging time in seconds + float time; + // Caused wear + u16 wear; +}; + +class MaterialProperties +{ +public: + MaterialProperties() + { + dstream<<__FUNCTION_NAME<::Node *n; + n = m_digging_properties.find(toolname); + if(n == NULL) + { + // Not diggable by this tool, try to get defaults + n = m_digging_properties.find(""); + if(n == NULL) + { + // Not diggable at all + return DiggingProperties(); + } + } + // Return found properties + return n->getValue(); + } + +private: + // toolname="": default properties (digging by hand) + // Key is toolname + core::map m_digging_properties; +}; + +void initializeMaterialProperties(); + +// Material correspond to the CONTENT_* constants +MaterialProperties * getMaterialProperties(u8 material); +// For getting the default properties, set tool="" +DiggingProperties getDiggingProperties(u8 material, const std::string &tool); + +#endif + -- cgit v1.2.3