forked from oerkki/voxelands
new fromspec-based craft guide pt3
This commit is contained in:
parent
e06056ef82
commit
d8a44e1cee
|
@ -552,7 +552,6 @@ InventoryItem *getResult(InventoryItem **items)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: return recipe from result
|
|
||||||
content_t *getRecipe(InventoryItem *item)
|
content_t *getRecipe(InventoryItem *item)
|
||||||
{
|
{
|
||||||
content_t r = item->getContent();
|
content_t r = item->getContent();
|
||||||
|
@ -580,6 +579,22 @@ content_t *getRecipe(InventoryItem *item)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getResultCount(InventoryItem *item)
|
||||||
|
{
|
||||||
|
content_t r = item->getContent();
|
||||||
|
for (std::vector<CraftDef>::iterator i=shaped_recipes.begin(); i!=shaped_recipes.end(); i++) {
|
||||||
|
CraftDef d = *i;
|
||||||
|
if (d.result == r)
|
||||||
|
return d.result_count;
|
||||||
|
}
|
||||||
|
for (std::vector<CraftDefShapeless>::iterator i=shapeless_recipes.begin(); i!=shapeless_recipes.end(); i++) {
|
||||||
|
CraftDefShapeless d = *i;
|
||||||
|
if (d.result == r)
|
||||||
|
return d.result_count;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: creative inventory needs redoing
|
// TODO: creative inventory needs redoing
|
||||||
void giveCreative(Player *player)
|
void giveCreative(Player *player)
|
||||||
{
|
{
|
||||||
|
|
|
@ -231,6 +231,7 @@ namespace crafting {
|
||||||
|
|
||||||
InventoryItem *getResult(InventoryItem **items);
|
InventoryItem *getResult(InventoryItem **items);
|
||||||
content_t *getRecipe(InventoryItem *item);
|
content_t *getRecipe(InventoryItem *item);
|
||||||
|
int getResultCount(InventoryItem *item);
|
||||||
|
|
||||||
void giveCreative(Player *player);
|
void giveCreative(Player *player);
|
||||||
void giveInitial(Player *player);
|
void giveInitial(Player *player);
|
||||||
|
|
|
@ -1079,27 +1079,42 @@ bool CraftGuideNodeMetadata::receiveFields(std::string formname, std::map<std::s
|
||||||
}
|
}
|
||||||
std::string CraftGuideNodeMetadata::getDrawSpecString()
|
std::string CraftGuideNodeMetadata::getDrawSpecString()
|
||||||
{
|
{
|
||||||
|
InventoryList *l = m_inventory->getList("result");
|
||||||
|
InventoryItem *q = l->getItem(0);
|
||||||
InventoryItem *t;
|
InventoryItem *t;
|
||||||
content_t *r;
|
content_t *r;
|
||||||
if (m_count == 0) {
|
int tr = 0;
|
||||||
for (int i=0; g_contents[i] != CONTENT_IGNORE; i++) {
|
m_count = 0;
|
||||||
if ((g_contents[i]&CONTENT_CRAFTITEM_MASK) == CONTENT_CRAFTITEM_MASK) {
|
for (int i=0; g_contents[i] != CONTENT_IGNORE; i++) {
|
||||||
t = new CraftItem(g_contents[i],1);
|
if ((g_contents[i]&CONTENT_CRAFTITEM_MASK) == CONTENT_CRAFTITEM_MASK) {
|
||||||
}else if ((g_contents[i]&CONTENT_TOOLITEM_MASK) == CONTENT_TOOLITEM_MASK) {
|
t = new CraftItem(g_contents[i],1);
|
||||||
t = new ToolItem(g_contents[i],1);
|
}else if ((g_contents[i]&CONTENT_TOOLITEM_MASK) == CONTENT_TOOLITEM_MASK) {
|
||||||
}else{
|
t = new ToolItem(g_contents[i],1);
|
||||||
t = new MaterialItem(g_contents[i],1);
|
}else{
|
||||||
}
|
t = new MaterialItem(g_contents[i],1);
|
||||||
r = crafting::getRecipe(t);
|
|
||||||
delete t;
|
|
||||||
if (!r)
|
|
||||||
continue;
|
|
||||||
m_count++;
|
|
||||||
}
|
}
|
||||||
|
r = crafting::getRecipe(t);
|
||||||
|
if (!r) {
|
||||||
|
delete t;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (q && q->getContent() == g_contents[i])
|
||||||
|
tr = crafting::getResultCount(t);
|
||||||
|
delete t;
|
||||||
|
m_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string spec("size[8,9]");
|
std::string spec("size[8,9]");
|
||||||
spec += "label[0.5,0.75;Add item here to see recipe]";
|
spec += "label[0.5,0.75;Add item here to see recipe]";
|
||||||
spec += "list[current_name;result;2,1;1,1;]";
|
spec += "list[current_name;result;2,1;1,1;]";
|
||||||
|
// this overflows into the craft grid... but could be cool
|
||||||
|
//if (q && tr) {
|
||||||
|
//spec += "label[0.5,2.5;Gives ";
|
||||||
|
//spec += itos(tr);
|
||||||
|
//spec += " ";
|
||||||
|
//spec += q->getGuiName();
|
||||||
|
//spec += "]";
|
||||||
|
//}
|
||||||
spec += "list[current_name;recipe;4,0;3,3;]";
|
spec += "list[current_name;recipe;4,0;3,3;]";
|
||||||
spec += "button[0.25,3.5;2.5,0.75;prev;<< Previous Page]";
|
spec += "button[0.25,3.5;2.5,0.75;prev;<< Previous Page]";
|
||||||
spec += "label[3.5,3.5;Page ";
|
spec += "label[3.5,3.5;Page ";
|
||||||
|
|
Loading…
Reference in New Issue