-
Notifications
You must be signed in to change notification settings - Fork 5
/
CareMenus.cpp
91 lines (79 loc) · 2.83 KB
/
CareMenus.cpp
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
#include "CareMenus.h"
#include "SDL_include.h"
using namespace widgets;
CareMenus::CareMenus(const int &x, const int &y, const int &width, const int &height, SDL_Texture *newtexture, SDL_Renderer *renderer, const bool& mini)
{
selected_id = 0;
rect.x = x;
rect.y = y;
rect.w = width;
rect.h = height;
texture = newtexture;
SDL_Color color;
color.a = 255;
color.b = 0;
color.g = 0;
color.r = 0;
visible = false;
std::string xmlpath = "assets//xml//care_menu_config.xml";
std::string xmltype = "care";
hxmlFile = new rapidxml::file<>(xmlpath.c_str()); // Default template is char
hdoc.parse<0>(hxmlFile->data());
hpRoot = hdoc.first_node();
if (!mini){
pNode = hpRoot->last_node("config")->first_node(xmltype.c_str());
}
else{
pNode = hpRoot->first_node("config")->first_node(xmltype.c_str());
}
sNode = pNode->first_node("button_displacement");
for (int i = 0; i < 3; ++i){
for (int j = 0; j < 3; ++j){
slots.push_back(MeguButton(rect.x + atoi(sNode->first_node("pos")->first_node("x")->value()) + i*atoi(sNode->first_node("offset")->first_node("x")->value()),
rect.y + atoi(sNode->first_node("pos")->first_node("y")->value()) + j*atoi(sNode->first_node("offset")->first_node("y")->value()),
atoi(sNode->first_node("pos")->first_node("w")->value()),
atoi(sNode->first_node("pos")->first_node("h")->value()), NULL, false));
}
}
controls.push_back(MeguButton(rect.x + atoi(pNode->first_node("back_button")->first_node("pos")->first_node("x")->value())
, rect.y + atoi(pNode->first_node("back_button")->first_node("pos")->first_node("y")->value())
, atoi(pNode->first_node("back_button")->first_node("pos")->first_node("w")->value())
, atoi(pNode->first_node("back_button")->first_node("pos")->first_node("h")->value()), NULL, false));
for (widgets::button_container::iterator it = slots.begin(); it != slots.end(); ++it){
it->setEnable(false);
it->setVisible(false);
}
for (std::vector<TtfWrapper>::iterator it = slots_name.begin(); it != slots_name.end(); ++it)
it->setVisible(false);
controls[0].setEnable(false);
controls[0].setVisible(false);
}
void CareMenus::RenderButtons(SDL_Renderer *renderer)
{
}
CareMenus::~CareMenus()
{
}
SDL_Texture* CareMenus::loadTexture(std::string path, SDL_Renderer *renderer)
{
//The final texture
SDL_Texture* newTexture = NULL;
//Load image at specified path
SDL_Surface* loadedSurface = IMG_Load(path.c_str());
if (loadedSurface == NULL)
{
printf("Unable to load image %s! SDL_image Error: %s\n", path.c_str(), IMG_GetError());
}
else
{
//Create texture from surface pixels
newTexture = SDL_CreateTextureFromSurface(renderer, loadedSurface);
if (newTexture == NULL)
{
printf("Unable to create texture from %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
}
//Get rid of old loaded surface
SDL_FreeSurface(loadedSurface);
}
return newTexture;
}