-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathitem.cpp
More file actions
102 lines (84 loc) · 2.31 KB
/
item.cpp
File metadata and controls
102 lines (84 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <locale>
#include "item.hpp"
/* circ dep so include here */
#include "action.hpp"
#include "scene.hpp"
Item::Item(itemType_t type)
:type(type)
{}
Item::~Item()
{
if (inventorySubmenuData){
delete(inventorySubmenuData);
}
}
std::string Item::getName()
{
std::string name = "";
std::locale loc;
for(auto elem : type)
name+= std::tolower(elem,loc);
return name;
}
void Item::setInventorySubmenuData(InventorySubmenuData* _inventorySubmenuData)
{
if (inventorySubmenuData){
delete(inventorySubmenuData);
}
inventorySubmenuData = _inventorySubmenuData;
}
InventorySubmenuData* Item::getInventorySubmenuData()
{
return inventorySubmenuData;
}
Jonko::Jonko()
: Item("JONKO")
{
/* default, can be overwritten */
inventorySubmenuData = new ConfirmInventorySubmenuData(getName());
description = "These are magical herbs";
//description = "this is a long description for debug purposes.. this is a long description for debug purposes.. this is a long description for debug purposes.. ";
}
Action* Jonko::use(UseItemParams params)
{
//std::cout << "DEBUG: jonko used on " << params.user->name << std::endl;
params.user->status = "SKAFFA";
//return new Action("QUIT");
return NULL;
}
InventorySubmenuData::InventorySubmenuData(inventorySubmenuType_t type, std::string itemName)
:type(type), itemName(itemName)
{};
ConfirmInventorySubmenuData::ConfirmInventorySubmenuData(std::string itemName)
: InventorySubmenuData("CONFIRM", itemName)
{}
std::string ConfirmInventorySubmenuData::getText()
{
return "Use " + itemName + "?";
}
std::vector<std::pair<int, std::string>> ConfirmInventorySubmenuData::getAnswers()
{
return {
{0, "Use"},
{CANCEL_INVENTORY_SUBMENU, "Cancel"},
};
}
MapInventorySubmenuData::MapInventorySubmenuData(std::string itemName, std::unordered_map<sceneId_t, Scene*>* scenes)
: InventorySubmenuData("MAP", itemName), scenes(scenes)
{}
std::string MapInventorySubmenuData::getText()
{
return "Use " + itemName + " where?";
}
std::vector<std::pair<int, std::string>> MapInventorySubmenuData::getAnswers()
{
std::vector<std::pair<int, std::string>> answers;
for (auto scene : *scenes){
if (scene.second->isDiscoveredLocation()){
answers.push_back({scene.first, scene.second->getName()});
}
}
answers.push_back({CANCEL_INVENTORY_SUBMENU, "Cancel"});
return answers;
}