" of " .. (list.pagecount +1) .. "]"
retval = retval .. "button[11.6,-0.1;0.5,0.5;btn_modstore_page_up;^]"
- retval = retval .. "box[11.6,0.35;0.28,8.6;BLK]"
+ retval = retval .. "box[11.6,0.35;0.28,8.6;000000]"
local scrollbarpos = 0.35 + (8.1/list.pagecount) * list.page
- retval = retval .. "box[11.6," ..scrollbarpos .. ";0.28,0.5;LIM]"
+ retval = retval .. "box[11.6," ..scrollbarpos .. ";0.28,0.5;32CD32]"
retval = retval .. "button[11.6,9.0;0.5,0.5;btn_modstore_page_down;v]"
if details ~= nil then
local screenshot_ypos = (i-1 - (list.page * modstore.modsperpage))*1.9 +0.2
- retval = retval .. "box[0," .. screenshot_ypos .. ";11.4,1.75;WHT]"
+ retval = retval .. "box[0," .. screenshot_ypos .. ";11.4,1.75;FFFFFF]"
--screenshot
if details.screenshot_url ~= nil and
local retval = engine.get_modstore_details(tostring(modid))
modstore.details_cache[modid] = retval
return retval
-end
\ No newline at end of file
+end
^Scrollabel itemlist showing arbitrary text elements
^ x and y position the itemlist relative to the top left of the menu
^ w and h are the size of the itemlist
-^ listelements can be prepended by #colorkey (see colorkeys),
+^ listelements can be prepended by #RRGGBB in hexadecimal format
^ if you want a listelement to start with # write ##
^ name fieldname sent to server on doubleclick value is current selected element
^ transparent (optional) show transparent
^ draw_border (optional) draw border
-box[<X>,<Y>;<W>,<H>;<colorkey>]
+box[<X>,<Y>;<W>,<H>;<color>]
^ simple colored semitransparent box
^ x and y position the box relative to the top left of the menu
^ w and h are the size of box
-^ colorkey (see colorkeys)
-
-Available colorkeys:
-- YLW yellow
-- GRN green
-- LIM lime
-- ORN orange
-- RED red
-- BLU blue
-- CYN cyan
-- BLK black
-- BRN brown
-- WHT white
-- GRY grey
+^ color in hexadecimal format RRGGBB
+
Inventory location:
}
else {
std::wstring toadd = narrow_to_wide(items[i].c_str() + 4);
- std::string color = items[i].substr(1,3);
+ std::string color = items[i].substr(1,6);
e->addItem(toadd.c_str());
- bool valid_color = true;
+ irr::video::SColor toset;
- irr::video::SColor toset = getColor(color,valid_color);
-
- if (valid_color)
+ if (parseColor(color,toset))
e->setItemOverrideColor(i,toset);
}
}
geom.X = stof(v_geom[0]) * (float)spacing.X;
geom.Y = stof(v_geom[1]) * (float)spacing.Y;
- bool valid_color = false;
-
- irr::video::SColor color = getColor(color_str,valid_color);
+ irr::video::SColor color;
- if (valid_color) {
+ if (parseColor(color_str,color)) {
BoxDrawSpec spec(pos,geom,color);
m_boxes.push_back(spec);
return Parent ? Parent->OnEvent(event) : false;
}
-irr::video::SColor GUIFormSpecMenu::getColor(std::string color,bool& valid_color) {
-
- if (color == "YLW") {
- valid_color = true;
- return irr::video::SColor(255,255,255,0);
- }
-
- if (color == "GRN") {
- valid_color = true;
- return irr::video::SColor(255,34,249,34);
- }
-
- if (color == "LIM") {
- valid_color = true;
- return irr::video::SColor(255,50,205,50);
- }
-
- if (color == "RED") {
- valid_color = true;
- return irr::video::SColor(255,255,0,0);
- }
-
- if (color == "ORN") {
- valid_color = true;
- return irr::video::SColor(255,255,140,0);
- }
+bool GUIFormSpecMenu::parseColor(std::string color, irr::video::SColor& outcolor) {
+ outcolor = irr::video::SColor(0,0,0,0);
- if (color == "BLU") {
- valid_color = true;
- return irr::video::SColor(255,0,0,255);
- }
-
- if (color == "CYN") {
- valid_color = true;
- return irr::video::SColor(255,0,255,255);
- }
-
- if (color == "BLK") {
- valid_color = true;
- return irr::video::SColor(255,0,0,0);
- }
-
- if (color == "BRN") {
- valid_color = true;
- return irr::video::SColor(255,139,69,19);
- }
-
- if (color == "WHT") {
- valid_color = true;
- return irr::video::SColor(255,255,255,255);
- }
-
- if (color == "GRY") {
- valid_color = true;
- return irr::video::SColor(255,205,201,201);
- }
+ if(color.size() != 6) return false;
+ if(!string_allowed(color, "0123456789abcdefABCDEF")) return false;
- valid_color = false;
+ unsigned int r, g, b;
+ std::istringstream iss("");
+ iss.str(color.substr(0, 1));
+ iss >> std::hex >> r;
+ iss.str(color.substr(2, 1));
+ iss >> std::hex >> g;
+ iss.str(color.substr(4, 1));
+ iss >> std::hex >> b;
- return irr::video::SColor(0,0,0,0);
+ outcolor = irr::video::SColor(255,r,g,b);
+ return true;
}