Move cook result properly to ContentFeatures
This commit is contained in:
parent
f107967fdc
commit
37a5f8a30b
|
@ -22,29 +22,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "content_mapnode.h"
|
||||
//#include "serverobject.h"
|
||||
#include "content_sao.h"
|
||||
|
||||
bool item_material_is_cookable(content_t content, IGameDef *gamedef)
|
||||
{
|
||||
if(content == CONTENT_TREE)
|
||||
return true;
|
||||
else if(content == CONTENT_COBBLE)
|
||||
return true;
|
||||
else if(content == CONTENT_SAND)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
InventoryItem* item_material_create_cook_result(content_t content,
|
||||
IGameDef *gamedef)
|
||||
{
|
||||
if(content == CONTENT_TREE)
|
||||
return new CraftItem(gamedef, "lump_of_coal", 1);
|
||||
else if(content == CONTENT_COBBLE)
|
||||
return new MaterialItem(gamedef, CONTENT_STONE, 1);
|
||||
else if(content == CONTENT_SAND)
|
||||
return new MaterialItem(gamedef, CONTENT_GLASS, 1);
|
||||
return NULL;
|
||||
}
|
||||
//#include "gamedef.h"
|
||||
//#include "nodedef.h"
|
||||
|
||||
std::string item_craft_get_image_name(const std::string &subname,
|
||||
IGameDef *gamedef)
|
||||
|
|
|
@ -29,10 +29,6 @@ class ServerActiveObject;
|
|||
class ServerEnvironment;
|
||||
class IGameDef;
|
||||
|
||||
bool item_material_is_cookable(content_t content, IGameDef *gamedef);
|
||||
InventoryItem* item_material_create_cook_result(content_t content,
|
||||
IGameDef *gamedef);
|
||||
|
||||
std::string item_craft_get_image_name(const std::string &subname,
|
||||
IGameDef *gamedef);
|
||||
ServerActiveObject* item_craft_create_object(const std::string &subname,
|
||||
|
|
|
@ -206,6 +206,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
|
|||
f->param_type = CPT_MINERAL;
|
||||
f->is_ground_content = true;
|
||||
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
|
||||
f->cookresult_item = std::string("MaterialItem2 ")+itos(CONTENT_GLASS)+" 1";
|
||||
setDirtLikeMaterialProperties(f->material, 1.0);
|
||||
|
||||
i = CONTENT_GRAVEL;
|
||||
|
@ -252,6 +253,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
|
|||
f->param_type = CPT_MINERAL;
|
||||
f->is_ground_content = true;
|
||||
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
|
||||
f->cookresult_item = "CraftItem lump_of_coal 1";
|
||||
setWoodLikeMaterialProperties(f->material, 1.0);
|
||||
|
||||
i = CONTENT_JUNGLETREE;
|
||||
|
@ -596,6 +598,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr)
|
|||
f->param_type = CPT_NONE;
|
||||
f->is_ground_content = true;
|
||||
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
|
||||
f->cookresult_item = std::string("MaterialItem2 ")+itos(CONTENT_STONE)+" 1";
|
||||
setStoneLikeMaterialProperties(f->material, 0.9);
|
||||
|
||||
i = CONTENT_MOSSYCOBBLE;
|
||||
|
|
|
@ -158,12 +158,17 @@ video::ITexture * MaterialItem::getImage(ITextureSource *tsrc) const
|
|||
|
||||
bool MaterialItem::isCookable() const
|
||||
{
|
||||
return item_material_is_cookable(m_content, m_gamedef);
|
||||
INodeDefManager *ndef = m_gamedef->ndef();
|
||||
const ContentFeatures &f = ndef->get(m_content);
|
||||
return (f.cookresult_item != "");
|
||||
}
|
||||
|
||||
InventoryItem *MaterialItem::createCookResult() const
|
||||
{
|
||||
return item_material_create_cook_result(m_content, m_gamedef);
|
||||
INodeDefManager *ndef = m_gamedef->ndef();
|
||||
const ContentFeatures &f = ndef->get(m_content);
|
||||
std::istringstream is(f.cookresult_item, std::ios::binary);
|
||||
return InventoryItem::deSerialize(is, m_gamedef);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -140,6 +140,8 @@ void ContentFeatures::reset()
|
|||
air_equivalent = false;
|
||||
often_contains_mineral = false;
|
||||
dug_item = "";
|
||||
extra_dug_item = "";
|
||||
extra_dug_item_rarity = 2;
|
||||
initial_metadata = NULL;
|
||||
liquid_type = LIQUID_NONE;
|
||||
liquid_alternative_flowing = CONTENT_IGNORE;
|
||||
|
@ -149,6 +151,7 @@ void ContentFeatures::reset()
|
|||
damage_per_second = 0;
|
||||
selection_box = NodeBox();
|
||||
material = MaterialProperties();
|
||||
cookresult_item = "";
|
||||
}
|
||||
|
||||
void ContentFeatures::serialize(std::ostream &os)
|
||||
|
@ -198,6 +201,7 @@ void ContentFeatures::serialize(std::ostream &os)
|
|||
writeU32(os, damage_per_second);
|
||||
selection_box.serialize(os);
|
||||
material.serialize(os);
|
||||
os<<serializeString(cookresult_item);
|
||||
}
|
||||
|
||||
void ContentFeatures::deSerialize(std::istream &is, IGameDef *gamedef)
|
||||
|
@ -250,6 +254,7 @@ void ContentFeatures::deSerialize(std::istream &is, IGameDef *gamedef)
|
|||
damage_per_second = readU32(is);
|
||||
selection_box.deSerialize(is);
|
||||
material.deSerialize(is);
|
||||
cookresult_item = deSerializeString(is);
|
||||
}
|
||||
|
||||
void ContentFeatures::setTexture(u16 i, std::string name)
|
||||
|
|
|
@ -209,6 +209,7 @@ struct ContentFeatures
|
|||
std::string dug_item;
|
||||
// Extra dug item and its rarity
|
||||
std::string extra_dug_item;
|
||||
// Usual get interval for extra dug item
|
||||
s32 extra_dug_item_rarity;
|
||||
// Initial metadata is cloned from this
|
||||
NodeMetadata *initial_metadata;
|
||||
|
@ -227,6 +228,7 @@ struct ContentFeatures
|
|||
u32 damage_per_second;
|
||||
NodeBox selection_box;
|
||||
MaterialProperties material;
|
||||
std::string cookresult_item;
|
||||
|
||||
/*
|
||||
Methods
|
||||
|
|
Loading…
Reference in New Issue