1
0
Fork 0

add style for colorbox in outfit window

master
Eduardo Bart 13 anos atrás
commit ba62863ff7

@ -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

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 250 B

@ -30,4 +30,19 @@ CheckBox < UICheckBox
$disabled:
background-color: #ffffff88
color: #aaaaaa88
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

@ -9,10 +9,10 @@ local currentOutfit = 1
local function update()
local creatureWidget = window:getChildById('creature')
creatureWidget:setOutfitType(outfits[currentOutfit][1])
local nameWidget = window:getChildById('name')
nameWidget:setText(outfits[currentOutfit][2])
local availableAddons = outfits[currentOutfit][3]
local addon1 = window:getChildById('addon1')
local addon2 = window:getChildById('addon2')
@ -20,7 +20,7 @@ local function update()
addon1:setChecked(false)
addon2:setChecked(false)
addon3:setChecked(false)
-- Maybe rework this someday
if availableAddons == 1 then
addon1:setChecked(true)
@ -42,7 +42,7 @@ local function update()
addon2:setChecked(true)
addon3:setChecked(true)
end
end
-- public functions
@ -61,28 +61,28 @@ function Outfit.create(creature, outfitList)
Outfit.destroy()
window = loadUI("/outfit/outfit.otui", UI.root)
window:lock()
local creatureWidget = window:getChildById('creature')
creatureWidget:setCreature(creature)
local firstColor = UIWidget.create()
window:addChild(firstColor)
firstColor:setStyle('ColorFirst')
for i=0,18 do
for j=0,6 do
local color = UICheckBox.create()
window:addChild(color)
local outfitColor = getOufitColor(j*19 + i)
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
outfits = outfitList
currentOutfit = 1
update()
@ -96,14 +96,14 @@ function Outfit.destroy()
end
function Outfit.nextType()
currentOutfit = currentOutfit + 1
if currentOutfit > #outfits then
currentOutfit = 1
end
update()
end
function Outfit.previousType()
@ -111,9 +111,9 @@ function Outfit.previousType()
if currentOutfit <= 0 then
currentOutfit = #outfits
end
update()
end
-- hooked events

@ -1,31 +1,23 @@
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
onEnter: Outfit.accept()
onEscape: Outfit.destroy()
Label
id: name
text: Outfit Name
@ -34,7 +26,7 @@ Window
anchors.left: parent.left
margin.top: 34
margin.left: 20
Creature
id: creature
anchors.top: name.bottom
@ -48,7 +40,7 @@ Window
margin.top: 3
anchors.top: creature.bottom
anchors.right: creature.right
Button
@onClick: Outfit.previousType()
text: <<
@ -56,7 +48,7 @@ Window
margin.top: 3
anchors.top: creature.bottom
anchors.left: creature.left
CheckBox
id: addon1
text: Addon 1
@ -65,7 +57,7 @@ Window
width: 100
anchors.top: prev.bottom
anchors.left: prev.left
CheckBox
id: addon2
text: Addon 2
@ -74,7 +66,7 @@ Window
width: 100
anchors.top: prev.bottom
anchors.left: prev.left
CheckBox
id: addon3
text: Addon 3
@ -83,7 +75,7 @@ Window
width: 100
anchors.top: prev.bottom
anchors.left: prev.left
HorizontalSeparator
anchors.left: parent.left
anchors.right: parent.right

@ -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,9 +271,9 @@ bool luavalue_cast(int index, OTMLNodePtr& node)
node->writeAt(cnodeName, g_lua.toString());
g_lua.pop();
}
} else
return false;
return true;
return true;
}
return false;
}
// object ptr

@ -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);
}

@ -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; }

@ -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)

@ -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();

@ -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;
}

Carregando…
Cancelar
Salvar