add style for colorbox in outfit window

This commit is contained in:
Eduardo Bart 2011-11-16 15:03:11 -02:00
parent c999a49dc7
commit ba62863ff7
11 changed files with 116 additions and 56 deletions

View File

@ -17,7 +17,7 @@ Checkout our website at {http://otclient.info}[http://otclient.info/] for tutori
== Need help?
If you have any questions or are looking for more information, please feel free to ask on our official
forum at http://otclient.info/
forum at http://otclient.info
== Bugs

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

View File

@ -31,3 +31,18 @@ CheckBox < UICheckBox
$disabled:
background-color: #ffffff88
color: #aaaaaa88
ColorBox < UICheckBox
size: 16 16
box-size: 16 16
background-color: #ffffffff
$checked:
image:
source: /core_styles/images/colorbox.png
coords: 16 0 16 16
$!checked:
image:
source: /core_styles/images/colorbox.png
coords: 0 0 16 16

View File

@ -78,8 +78,8 @@ function Outfit.create(creature, outfitList)
color:setStyle('Color')
color:setBackgroundColor(outfitColor)
color:setMarginTop(j * 3 + j * 12)
color:setMarginLeft(i * 3 + i * 12)
color:setMarginTop(j * 3 + j * 14)
color:setMarginLeft(i * 3 + i * 14)
end
end

View File

@ -1,24 +1,16 @@
ColorCheckBox < UICheckBox
size: 12 12
box-size: 12 12
background-color: #ffffffff
image:
source: /core_styles/images/empty_rect.png
ColorFirst < UIWidget
id: color
margin.left: 20
anchors.top: creature.top
anchors.left: creature.right
Color < ColorCheckBox
Color < ColorBox
anchors.top: color.top
anchors.left: color.right
Window
title: Select Outfit
size: 420 280
size: 450 280
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter

View File

@ -163,13 +163,14 @@ bool luavalue_cast(int index, Rect& rect)
rect.setWidth(g_lua.popInteger());
g_lua.getField("height", index);
rect.setHeight(g_lua.popInteger());
return true;
} else if(g_lua.isString()) {
return Fw::cast(g_lua.toString(index), rect);
} else if(g_lua.isNil()) {
rect = Rect();
return true;
}
return true;
return false;
}
// point
@ -196,7 +197,7 @@ bool luavalue_cast(int index, Point& point)
point = Point();
return true;
}
return true;
return false;
}
// size
@ -223,7 +224,7 @@ bool luavalue_cast(int index, Size& size)
size = Size();
return true;
}
return true;
return false;
}
// otml nodes
@ -270,10 +271,10 @@ bool luavalue_cast(int index, OTMLNodePtr& node)
node->writeAt(cnodeName, g_lua.toString());
g_lua.pop();
}
} else
return false;
return true;
}
return false;
}
// object ptr
bool luavalue_cast(int index, LuaObjectPtr& obj) {

View File

@ -48,7 +48,7 @@ void UICheckBox::render()
void UICheckBox::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
{
if(isPressed() && getRect().contains(mousePos))
setState(Fw::CheckedState, !isChecked());
setChecked(!isChecked());
}
void UICheckBox::onStyleApply(const OTMLNodePtr& styleNode)
@ -68,3 +68,14 @@ void UICheckBox::onStyleApply(const OTMLNodePtr& styleNode)
}
}
}
bool UICheckBox::isChecked()
{
return hasState(Fw::CheckedState);
}
void UICheckBox::setChecked(bool checked)
{
if(setState(Fw::CheckedState, checked))
callLuaField("onCheckChange", checked);
}

View File

@ -30,8 +30,8 @@ class UICheckBox : public UIWidget
public:
void render();
bool isChecked() { return hasState(Fw::CheckedState); }
void setChecked(bool checked) { setState(Fw::CheckedState, checked); }
bool isChecked();
void setChecked(bool checked);
void setText(const std::string& text) { m_text = text; }
std::string getText() { return m_text; }

View File

@ -615,10 +615,10 @@ void UIWidget::updateLayout()
m_layout->update();
}
void UIWidget::setState(Fw::WidgetState state, bool on)
bool UIWidget::setState(Fw::WidgetState state, bool on)
{
if(state == Fw::InvalidState)
return;
return false;
int oldStates = m_states;
if(on)
@ -626,8 +626,11 @@ void UIWidget::setState(Fw::WidgetState state, bool on)
else
m_states &= ~state;
if(oldStates != m_states)
if(oldStates != m_states) {
updateStyle();
return true;
}
return false;
}
bool UIWidget::hasState(Fw::WidgetState state)
@ -700,9 +703,7 @@ void UIWidget::updateState(Fw::WidgetState state)
child->updateState(state);
}
if(newStatus != oldStatus) {
setState(state, newStatus);
if(setState(state, newStatus)) {
if(state == Fw::FocusState) {
g_dispatcher.addEvent(std::bind(&UIWidget::onFocusChange, asUIWidget(), newStatus, m_lastFocusReason));
} else if(state == Fw::HoverState)

View File

@ -149,7 +149,7 @@ public:
void updateStates();
virtual void updateState(Fw::WidgetState state);
void setState(Fw::WidgetState state, bool on);
bool setState(Fw::WidgetState state, bool on);
bool hasState(Fw::WidgetState state);
void updateStyle();

View File

@ -39,6 +39,9 @@
#include <otclient/ui/uimap.h>
#include <otclient/core/outfit.h>
void push_luavalue(const Outfit& outfit);
bool luavalue_cast(int index, Outfit& outfit);
void OTClient::registerLuaFunctions()
{
g_lua.bindGlobalFunction("exit", std::bind(&OTClient::exit, &g_client));
@ -90,3 +93,40 @@ void OTClient::registerLuaFunctions()
g_lua.bindClassStaticFunction<Game>("talkPrivate", std::bind(&Game::talkPrivate, &g_game, _1, _2, _3));
#endif
}
void push_luavalue(const Outfit& outfit)
{
g_lua.newTable();
g_lua.pushInteger(outfit.getType());
g_lua.setField("type");
g_lua.pushInteger(outfit.getAddons());
g_lua.setField("addons");
g_lua.pushInteger(outfit.getHead());
g_lua.setField("head");
g_lua.pushInteger(outfit.getBody());
g_lua.setField("body");
g_lua.pushInteger(outfit.getLegs());
g_lua.setField("legs");
g_lua.pushInteger(outfit.getFeet());
g_lua.setField("feet");
}
bool luavalue_cast(int index, Outfit& outfit)
{
if(g_lua.isTable(index)) {
g_lua.getField("type", index);
outfit.setType(g_lua.popInteger());
g_lua.getField("addons", index);
outfit.setAddons(g_lua.popInteger());
g_lua.getField("head", index);
outfit.setHead(g_lua.popInteger());
g_lua.getField("body", index);
outfit.setBody(g_lua.popInteger());
g_lua.getField("legs", index);
outfit.setLegs(g_lua.popInteger());
g_lua.getField("feet", index);
outfit.setFeet(g_lua.popInteger());
return true;
}
return false;
}