summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBlockMen <nmuelll@web.de>2013-07-18 21:20:37 +0200
committerRealBadAngel <mk@realbadangel.pl>2013-07-24 01:02:43 +0200
commita59f85c1a037ddda775c02f42a66de1ed23d75a6 (patch)
tree04c4413465723761a5d112d6bd9882e0eafac91f /src
parent8e2467c393e8dcb3f0d48b9e3258bf0526e6256f (diff)
downloadminetest-a59f85c1a037ddda775c02f42a66de1ed23d75a6.tar.gz
minetest-a59f85c1a037ddda775c02f42a66de1ed23d75a6.tar.bz2
minetest-a59f85c1a037ddda775c02f42a66de1ed23d75a6.zip
Add support of pressed_texture of image_button
Fix params number Add pressed texture name Fix string def Fix syntax error
Diffstat (limited to 'src')
-rw-r--r--src/guiFormSpecMenu.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp
index e950c088b..a173c0d25 100644
--- a/src/guiFormSpecMenu.cpp
+++ b/src/guiFormSpecMenu.cpp
@@ -1116,7 +1116,7 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data,std::string element) {
void GUIFormSpecMenu::parseImageButton(parserData* data,std::string element,std::string type) {
std::vector<std::string> parts = split(element,';');
- if ((parts.size() == 5) || (parts.size() == 7)) {
+ if ((parts.size() == 5) || (parts.size() == 7) || (parts.size() == 8)) {
std::vector<std::string> v_pos = split(parts[0],',');
std::vector<std::string> v_geom = split(parts[1],',');
std::string image_name = parts[2];
@@ -1136,13 +1136,19 @@ void GUIFormSpecMenu::parseImageButton(parserData* data,std::string element,std:
bool noclip = false;
bool drawborder = true;
- if ((parts.size() == 7)) {
+ if ((parts.size() >= 7)) {
if (parts[5] == "true")
noclip = true;
if (parts[6] == "false")
drawborder = false;
}
+
+ std::string pressed_image_name = "";
+
+ if ((parts.size() == 8)) {
+ pressed_image_name = parts[7];
+ }
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y);
@@ -1169,21 +1175,31 @@ void GUIFormSpecMenu::parseImageButton(parserData* data,std::string element,std:
spec.is_exit = true;
video::ITexture *texture = 0;
+ video::ITexture *pressed_texture = 0;
//if there's no gamedef specified try to get direct
//TODO check for possible texture leak
- if (m_gamedef != 0)
+ if (m_gamedef != 0) {
texture = m_gamedef->tsrc()->getTexture(image_name);
- else {
+ if ((parts.size() == 8)) {
+ pressed_texture = m_gamedef->tsrc()->getTexture(pressed_image_name);
+ }
+ } else {
if (fs::PathExists(image_name)) {
texture = Environment->getVideoDriver()->getTexture(image_name.c_str());
m_Textures.push_back(texture);
}
+ if (fs::PathExists(pressed_image_name)) {
+ pressed_texture = Environment->getVideoDriver()->getTexture(pressed_image_name.c_str());
+ m_Textures.push_back(pressed_texture);
+ }
}
+ if (parts.size() < 8)
+ pressed_texture = texture;
gui::IGUIButton *e = Environment->addButton(rect, this, spec.fid, spec.flabel.c_str());
e->setUseAlphaChannel(true);
e->setImage(texture);
- e->setPressedImage(texture);
+ e->setPressedImage(pressed_texture);
e->setScaleImage(true);
e->setNotClipped(noclip);
e->setDrawBorder(drawborder);