-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcrafter.cpp
More file actions
61 lines (49 loc) · 1.82 KB
/
crafter.cpp
File metadata and controls
61 lines (49 loc) · 1.82 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
#include <iostream>
#include "crafter.h"
Crafter readCrafter(Json::Value root)
{
Crafter crafter = Crafter();
// Read the cross class actions:
if(root.isMember("crossClassActions"))
{
Json::Value crossClassActionValue = root["crossClassActions"];
for(int i = 0; i < crossClassActionValue.size(); ++i)
{
Action::Identifier actionIdentifier = stringToActionIdentifier(crossClassActionValue[i].asString());
crafter.actions.push_back(actionIdentifier);
}
}
crafter.craftingClass = stringToCraftingClass(root["class"].asString());
crafter.level = root["level"].asInt();
crafter.craftsmanship = root["craftsmanship"].asInt();
crafter.control = root["control"].asInt();
crafter.cp = root["cp"].asInt();
return crafter;
}
std::map<CraftingClass, Crafter> readCrafters(Json::Value root, const std::vector<Action>& actions)
{
std::map<CraftingClass, Crafter> crafterMap;
for(int i = 0; i < root.size(); ++i)
{
Crafter crafter = readCrafter(root[i]);
for(int n=0; n<actions.size(); ++n)
{
Action action = actions[n];
if( (action.craftingClass == crafter.craftingClass || action.craftingClass == All) && action.level<=crafter.level)
{
crafter.actions.push_back(actions[n].identifier);
}
}
crafterMap[crafter.craftingClass] = crafter;
}
return crafterMap;
}
void Crafter::print()
{
std::cout << "Crafter: " << craftingClassToString(craftingClass) << " level: " << level << " craftmanship: " << craftsmanship << " control: " << control << " cp: " << cp << " [";
for(Action::Identifier actionIdentifier : actions)
{
std::cout << actionIdentifierToString(actionIdentifier) << ", ";
}
std::cout << "]" << std::endl;
}