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 | ||||||
|  |  | ||||||
|  | @ -40,7 +40,7 @@ function onGameEditText(id, itemId, maxLength, text, writter, time) | ||||||
|   textEdit:setText(text) |   textEdit:setText(text) | ||||||
|   textEdit:setEditable(writeable) |   textEdit:setEditable(writeable) | ||||||
|   textEdit:setCursorVisible(writeable) |   textEdit:setCursorVisible(writeable) | ||||||
|    | 
 | ||||||
|   local desc = '' |   local desc = '' | ||||||
|   if #writter > 0 then |   if #writter > 0 then | ||||||
|     desc = tr('You read the following, written by \n%s\n', writter) |     desc = tr('You read the following, written by \n%s\n', writter) | ||||||
|  | @ -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
	
	 Eduardo Bart
						Eduardo Bart