Buttons for client options
This commit is contained in:
parent
cf77df05ca
commit
7ece0ed8c7
|
@ -284,3 +284,7 @@ end
|
||||||
function addTab(name, panel, icon)
|
function addTab(name, panel, icon)
|
||||||
optionsTabBar:addTab(name, panel, icon)
|
optionsTabBar:addTab(name, panel, icon)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function addButton(name, func, icon)
|
||||||
|
optionsTabBar:addButton(name, func, icon)
|
||||||
|
end
|
||||||
|
|
|
@ -60,6 +60,18 @@ function UITabBar:addTab(text, panel, icon)
|
||||||
return tab
|
return tab
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function UITabBar:addButton(text, func, icon)
|
||||||
|
local button = g_ui.createWidget(self:getStyleName() .. 'Button', self.buttonsPanel)
|
||||||
|
button:setText(text)
|
||||||
|
|
||||||
|
local style = {}
|
||||||
|
style['icon-source'] = icon
|
||||||
|
button:mergeStyle(style)
|
||||||
|
|
||||||
|
button.onClick = func
|
||||||
|
return button
|
||||||
|
end
|
||||||
|
|
||||||
function UITabBar:removeTab(tab)
|
function UITabBar:removeTab(tab)
|
||||||
local index = table.find(self.tabs, tab)
|
local index = table.find(self.tabs, tab)
|
||||||
if index == nil then return end
|
if index == nil then return end
|
||||||
|
|
|
@ -71,6 +71,10 @@ function onGameEditText(id, itemId, maxLength, text, writter, time)
|
||||||
textWindow:setText(tr('Edit Text'))
|
textWindow:setText(tr('Edit Text'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if description:getHeight() < 64 then
|
||||||
|
description:setHeight(64)
|
||||||
|
end
|
||||||
|
|
||||||
local function destroy()
|
local function destroy()
|
||||||
textWindow:destroy()
|
textWindow:destroy()
|
||||||
table.removevalue(windows, textWindow)
|
table.removevalue(windows, textWindow)
|
||||||
|
@ -109,20 +113,22 @@ function onGameEditList(id, doorId, text)
|
||||||
description:setText(tr('Enter one name per line.'))
|
description:setText(tr('Enter one name per line.'))
|
||||||
textWindow:setText(tr('Edit List'))
|
textWindow:setText(tr('Edit List'))
|
||||||
|
|
||||||
|
if description:getHeight() < 64 then
|
||||||
|
description:setHeight(64)
|
||||||
|
end
|
||||||
|
|
||||||
local function destroy()
|
local function destroy()
|
||||||
textWindow:destroy()
|
textWindow:destroy()
|
||||||
table.removevalue(windows, textWindow)
|
table.removevalue(windows, textWindow)
|
||||||
end
|
end
|
||||||
|
|
||||||
doneFunc = function()
|
local doneFunc = function()
|
||||||
g_game.editList(id, doorId, textEdit:getText())
|
g_game.editList(id, doorId, textEdit:getText())
|
||||||
destroy()
|
destroy()
|
||||||
end
|
end
|
||||||
|
|
||||||
okButton.onClick = doneFunc
|
okButton.onClick = doneFunc
|
||||||
cancelButton.onClick = destroy
|
cancelButton.onClick = destroy
|
||||||
|
|
||||||
textWindow.onEnter = doneFunc
|
|
||||||
textWindow.onEscape = destroy
|
textWindow.onEscape = destroy
|
||||||
|
|
||||||
table.insert(windows, textWindow)
|
table.insert(windows, textWindow)
|
||||||
|
|
|
@ -166,7 +166,7 @@ public:
|
||||||
return Otc::InvalidDirection;
|
return Otc::InvalidDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isMapPosition() const { return (x < 65535 && y < 65535 && z <= Otc::MAX_Z); }
|
bool isMapPosition() const { return (x >=0 && y >= 0 && z >= 0 && x < 65535 && y < 65535 && z <= Otc::MAX_Z); }
|
||||||
bool isValid() const { return !(x == 65535 && y == 65535 && z == 255); }
|
bool isValid() const { return !(x == 65535 && y == 65535 && z == 255); }
|
||||||
float distance(const Position& pos) const { return sqrt(pow((pos.x - x), 2) + pow((pos.y - y), 2)); }
|
float distance(const Position& pos) const { return sqrt(pow((pos.x - x), 2) + pow((pos.y - y), 2)); }
|
||||||
int manhattanDistance(const Position& pos) const { return std::abs(pos.x - x) + std::abs(pos.y - y); }
|
int manhattanDistance(const Position& pos) const { return std::abs(pos.x - x) + std::abs(pos.y - y); }
|
||||||
|
@ -226,9 +226,9 @@ public:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16 x;
|
int x;
|
||||||
uint16 y;
|
int y;
|
||||||
uint8 z;
|
short z;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PositionHasher : std::unary_function<Position, std::size_t> {
|
struct PositionHasher : std::unary_function<Position, std::size_t> {
|
||||||
|
|
|
@ -136,9 +136,11 @@ option(LUAJIT "Use lua jit" OFF)
|
||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
option(CRASH_HANDLER "Generate crash reports" ON)
|
option(CRASH_HANDLER "Generate crash reports" ON)
|
||||||
option(USE_STATIC_LIBS "Don't use shared libraries (dlls)" ON)
|
option(USE_STATIC_LIBS "Don't use shared libraries (dlls)" ON)
|
||||||
|
option(USE_LIBCPP "Use the new libc++ library instead of stdc++" OFF)
|
||||||
else()
|
else()
|
||||||
set(CRASH_HANDLER OFF)
|
set(CRASH_HANDLER OFF)
|
||||||
set(USE_STATIC_LIBS OFF)
|
set(USE_STATIC_LIBS OFF)
|
||||||
|
set(USE_LIBCPP ON)
|
||||||
endif()
|
endif()
|
||||||
set(BUILD_COMMIT "devel" CACHE "Git commit string (intended for releases)" STRING)
|
set(BUILD_COMMIT "devel" CACHE "Git commit string (intended for releases)" STRING)
|
||||||
set(BUILD_REVISION "0" CACHE "Git revision string (intended for releases)" STRING)
|
set(BUILD_REVISION "0" CACHE "Git revision string (intended for releases)" STRING)
|
||||||
|
@ -242,6 +244,10 @@ else()
|
||||||
message(STATUS "Crash handler: OFF")
|
message(STATUS "Crash handler: OFF")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(USE_LIBCPP)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -Wno-deprecated-declarations")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthreads")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthreads")
|
||||||
set(framework_DEFINITIONS ${framework_DEFINITIONS} -D_WIN32_WINNT=0x0501)
|
set(framework_DEFINITIONS ${framework_DEFINITIONS} -D_WIN32_WINNT=0x0501)
|
||||||
|
@ -249,7 +255,6 @@ if(WIN32)
|
||||||
set(SYSTEM_LIBRARIES "")
|
set(SYSTEM_LIBRARIES "")
|
||||||
else()
|
else()
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -Wno-deprecated-declarations")
|
|
||||||
set(framework_DEFINITIONS ${framework_DEFINITIONS} -D_REENTRANT) # enable thread safe code
|
set(framework_DEFINITIONS ${framework_DEFINITIONS} -D_REENTRANT) # enable thread safe code
|
||||||
set(SYSTEM_LIBRARIES "")
|
set(SYSTEM_LIBRARIES "")
|
||||||
else()
|
else()
|
||||||
|
|
|
@ -479,6 +479,7 @@ void Application::registerLuaFunctions()
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("setIconSize", &UIWidget::setIconSize);
|
g_lua.bindClassMemberFunction<UIWidget>("setIconSize", &UIWidget::setIconSize);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("setIconRect", &UIWidget::setIconRect);
|
g_lua.bindClassMemberFunction<UIWidget>("setIconRect", &UIWidget::setIconRect);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("setIconClip", &UIWidget::setIconClip);
|
g_lua.bindClassMemberFunction<UIWidget>("setIconClip", &UIWidget::setIconClip);
|
||||||
|
g_lua.bindClassMemberFunction<UIWidget>("setIconAlign", &UIWidget::setIconAlign);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("setBorderWidth", &UIWidget::setBorderWidth);
|
g_lua.bindClassMemberFunction<UIWidget>("setBorderWidth", &UIWidget::setBorderWidth);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("setBorderWidthTop", &UIWidget::setBorderWidthTop);
|
g_lua.bindClassMemberFunction<UIWidget>("setBorderWidthTop", &UIWidget::setBorderWidthTop);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("setBorderWidthRight", &UIWidget::setBorderWidthRight);
|
g_lua.bindClassMemberFunction<UIWidget>("setBorderWidthRight", &UIWidget::setBorderWidthRight);
|
||||||
|
@ -530,6 +531,7 @@ void Application::registerLuaFunctions()
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("getIconSize", &UIWidget::getIconSize);
|
g_lua.bindClassMemberFunction<UIWidget>("getIconSize", &UIWidget::getIconSize);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("getIconRect", &UIWidget::getIconRect);
|
g_lua.bindClassMemberFunction<UIWidget>("getIconRect", &UIWidget::getIconRect);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("getIconClip", &UIWidget::getIconClip);
|
g_lua.bindClassMemberFunction<UIWidget>("getIconClip", &UIWidget::getIconClip);
|
||||||
|
g_lua.bindClassMemberFunction<UIWidget>("getIconAlign", &UIWidget::getIconAlign);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("getBorderTopColor", &UIWidget::getBorderTopColor);
|
g_lua.bindClassMemberFunction<UIWidget>("getBorderTopColor", &UIWidget::getBorderTopColor);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("getBorderRightColor", &UIWidget::getBorderRightColor);
|
g_lua.bindClassMemberFunction<UIWidget>("getBorderRightColor", &UIWidget::getBorderRightColor);
|
||||||
g_lua.bindClassMemberFunction<UIWidget>("getBorderBottomColor", &UIWidget::getBorderBottomColor);
|
g_lua.bindClassMemberFunction<UIWidget>("getBorderBottomColor", &UIWidget::getBorderBottomColor);
|
||||||
|
|
|
@ -374,6 +374,7 @@ public:
|
||||||
Size getIconSize() { return m_iconRect.size(); }
|
Size getIconSize() { return m_iconRect.size(); }
|
||||||
Rect getIconRect() { return m_iconRect; }
|
Rect getIconRect() { return m_iconRect; }
|
||||||
Rect getIconClip() { return m_iconClipRect; }
|
Rect getIconClip() { return m_iconClipRect; }
|
||||||
|
Fw::AlignmentFlag getIconAlign() { return m_iconAlign; }
|
||||||
Color getBorderTopColor() { return m_borderColor.top; }
|
Color getBorderTopColor() { return m_borderColor.top; }
|
||||||
Color getBorderRightColor() { return m_borderColor.right; }
|
Color getBorderRightColor() { return m_borderColor.right; }
|
||||||
Color getBorderBottomColor() { return m_borderColor.bottom; }
|
Color getBorderBottomColor() { return m_borderColor.bottom; }
|
||||||
|
|
|
@ -401,7 +401,10 @@ void UIWidget::drawIcon(const Rect& screenCoords)
|
||||||
|
|
||||||
void UIWidget::setIcon(const std::string& iconFile)
|
void UIWidget::setIcon(const std::string& iconFile)
|
||||||
{
|
{
|
||||||
m_icon = g_textures.getTexture(iconFile);
|
if(iconFile.empty())
|
||||||
|
m_icon = nullptr;
|
||||||
|
else
|
||||||
|
m_icon = g_textures.getTexture(iconFile);
|
||||||
if(m_icon && !m_iconClipRect.isValid())
|
if(m_icon && !m_iconClipRect.isValid())
|
||||||
m_iconClipRect = Rect(0, 0, m_icon->getSize());
|
m_iconClipRect = Rect(0, 0, m_icon->getSize());
|
||||||
}
|
}
|
|
@ -176,7 +176,10 @@ void UIWidget::drawImage(const Rect& screenCoords)
|
||||||
|
|
||||||
void UIWidget::setImageSource(const std::string& source)
|
void UIWidget::setImageSource(const std::string& source)
|
||||||
{
|
{
|
||||||
m_imageTexture = g_textures.getTexture(source);
|
if(source.empty())
|
||||||
|
m_imageTexture = nullptr;
|
||||||
|
else
|
||||||
|
m_imageTexture = g_textures.getTexture(source);
|
||||||
m_imageMustRecache = true;
|
m_imageMustRecache = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
|
|
||||||
// NOTE: AABBGGRR order
|
// NOTE: AABBGGRR order
|
||||||
const Color Color::alpha = 0x00000000;
|
const Color Color::alpha = 0x00000000U;
|
||||||
const Color Color::white = 0xffffffff;
|
const Color Color::white = 0xffffffff;
|
||||||
const Color Color::black = 0xff000000;
|
const Color Color::black = 0xff000000;
|
||||||
const Color Color::red = 0xff0000ff;
|
const Color Color::red = 0xff0000ff;
|
||||||
|
@ -42,3 +42,9 @@ const Color Color::gray = 0xffa0a0a0;
|
||||||
const Color Color::darkGray = 0xff808080;
|
const Color Color::darkGray = 0xff808080;
|
||||||
const Color Color::lightGray = 0xffc0c0c0;
|
const Color Color::lightGray = 0xffc0c0c0;
|
||||||
const Color Color::orange = 0xffff8c00;
|
const Color Color::orange = 0xffff8c00;
|
||||||
|
|
||||||
|
Color::Color(const std::string& coltext)
|
||||||
|
{
|
||||||
|
std::stringstream ss(coltext);
|
||||||
|
ss >> *this;
|
||||||
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ public:
|
||||||
Color(uint8 r, uint8 g, uint8 b, uint8 a = 0xFF) : m_r(r/255.0f), m_g(g/255.0f), m_b(b/255.0f), m_a(a/255.0f) { }
|
Color(uint8 r, uint8 g, uint8 b, uint8 a = 0xFF) : m_r(r/255.0f), m_g(g/255.0f), m_b(b/255.0f), m_a(a/255.0f) { }
|
||||||
Color(int r, int g, int b, int a = 0xFF) : m_r(r/255.0f), m_g(g/255.0f), m_b(b/255.0f), m_a(a/255.0f) { }
|
Color(int r, int g, int b, int a = 0xFF) : m_r(r/255.0f), m_g(g/255.0f), m_b(b/255.0f), m_a(a/255.0f) { }
|
||||||
Color(float r, float g, float b, float a = 1.0f) : m_r(r), m_g(g), m_b(b), m_a(a) { }
|
Color(float r, float g, float b, float a = 1.0f) : m_r(r), m_g(g), m_b(b), m_a(a) { }
|
||||||
|
Color(const std::string& coltext);
|
||||||
|
|
||||||
uint8 a() const { return m_a*255.0f; }
|
uint8 a() const { return m_a*255.0f; }
|
||||||
uint8 b() const { return m_b*255.0f; }
|
uint8 b() const { return m_b*255.0f; }
|
||||||
|
@ -76,6 +77,14 @@ public:
|
||||||
bool operator==(const Color& other) const { return other.rgba() == rgba(); }
|
bool operator==(const Color& other) const { return other.rgba() == rgba(); }
|
||||||
bool operator!=(const Color& other) const { return other.rgba() != rgba(); }
|
bool operator!=(const Color& other) const { return other.rgba() != rgba(); }
|
||||||
|
|
||||||
|
static uint8 to8bit(const Color& color) {
|
||||||
|
uint8 c = 0;
|
||||||
|
c += (color.r() / 51) * 36;
|
||||||
|
c += (color.g() / 51) * 6;
|
||||||
|
c += (color.b() / 51);
|
||||||
|
return c;
|
||||||
|
};
|
||||||
|
|
||||||
static Color from8bit(int color) {
|
static Color from8bit(int color) {
|
||||||
if(color >= 216 || color <= 0)
|
if(color >= 216 || color <= 0)
|
||||||
return Color(0, 0, 0);
|
return Color(0, 0, 0);
|
||||||
|
|
Loading…
Reference in New Issue