diff --git a/druid/base/locale.lua b/druid/base/locale.lua index 3dc914b..b53a8cf 100644 --- a/druid/base/locale.lua +++ b/druid/base/locale.lua @@ -12,9 +12,9 @@ M.interest = { } -function M.init(self, node, lang_id) +function M.init(self, node, lang_id, no_adjust) self.druid = helper.get_druid(self) - self.text = self.druid:new_text(node) + self.text = self.druid:new_text(node, lang_id, no_adjust) self:translate(lang_id) return self diff --git a/druid/base/text.lua b/druid/base/text.lua index 17feddd..2df969c 100644 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -2,23 +2,27 @@ -- Good working with localization system -- @module base.text +local const = require("druid.const") local helper = require("druid.helper") local M = {} -M.interest = {} -function M.init(self, node, value, no_text_adjust) +function M.init(self, node, value, no_adjust) self.node = helper.node(node) - self.start_scale = gui.get_scale(self.node) self.start_pivot = gui.get_pivot(self.node) + self.start_pos = gui.get_position(self.node) + self.pos = gui.get_position(self.node) + + self.start_scale = gui.get_scale(self.node) + self.scale = gui.get_scale(self.node) + self.text_area = gui.get_size(self.node) self.text_area.x = self.text_area.x * self.start_scale.x self.text_area.y = self.text_area.y * self.start_scale.y - self.is_no_text_adjust = no_text_adjust - self.scale = self.start_scale + self.is_no_adjust = no_adjust self.last_color = gui.get_color(self.node) self:set_to(value or 0) @@ -54,7 +58,7 @@ function M.set_to(self, set_to) self.last_value = set_to gui.set_text(self.node, set_to) - if not self.is_no_text_adjust then + if not self.is_no_adjust then update_text_area_size(self) end end @@ -90,8 +94,26 @@ function M.set_scale(self, scale) end +--- Set text pivot. Text will re-anchor inside +-- his text area +-- @function text:set_pivot +-- @tparam table self Component instance +-- @tparam gui.pivot pivot Gui pivot constant function M.set_pivot(self, pivot) + local prev_pivot = gui.get_pivot(self.node) + local prev_offset = const.PIVOTS[prev_pivot] + gui.set_pivot(self.node, pivot) + local cur_offset = const.PIVOTS[pivot] + + local pos_offset = vmath.vector3( + self.text_area.x * (cur_offset.x - prev_offset.x), + self.text_area.y * (cur_offset.y - prev_offset.y), + 0 + ) + + self.pos = self.pos + pos_offset + gui.set_position(self.node, self.pos) end diff --git a/druid/const.lua b/druid/const.lua index e199b59..4ac6a3d 100644 --- a/druid/const.lua +++ b/druid/const.lua @@ -32,7 +32,7 @@ M.PIVOTS = { [gui.PIVOT_S] = vmath.vector3(0, -0.5, 0), [gui.PIVOT_SW] = vmath.vector3(-0.5, -0.5, 0), [gui.PIVOT_W] = vmath.vector3(-0.5, 0, 0), - [gui.PIVOT_NW] = vmath.vector3(-0.5, -0.5, 0), + [gui.PIVOT_NW] = vmath.vector3(-0.5, 0.5, 0), } M.SIDE = { diff --git a/example/kenney/gui/main/main.gui b/example/kenney/gui/main/main.gui index e92b20c..c6f22c3 100644 --- a/example/kenney/gui/main/main.gui +++ b/example/kenney/gui/main/main.gui @@ -840,7 +840,7 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "SImple" + text: "Simple" font: "game" id: "text_simple" xanchor: XANCHOR_NONE diff --git a/example/kenney/gui/main/main.gui_script b/example/kenney/gui/main/main.gui_script index c0b923b..55a4996 100644 --- a/example/kenney/gui/main/main.gui_script +++ b/example/kenney/gui/main/main.gui_script @@ -12,12 +12,13 @@ end local function init_top_panel(self) self.druid:new_button("button_left/button", on_control_button, "left") self.druid:new_button("button_right/button", on_control_button, "right") - self.header = self.druid:new_text("text_header", "main_page", true) + self.header = self.druid:new_locale("text_header", "main_page") end function init(self) druid.set_default_style(empty_style) + druid.set_default_style(bounce_style) self.druid = druid.new(self) init_top_panel(self) diff --git a/example/kenney/page/main.lua b/example/kenney/page/main.lua index 225f1cb..db04392 100644 --- a/example/kenney/page/main.lua +++ b/example/kenney/page/main.lua @@ -26,17 +26,17 @@ end local function setup_texts(self) - self.druid:new_text("text_button", "ui_section_button", true) - self.druid:new_text("text_text", "ui_section_text", true) - self.druid:new_text("text_timer", "ui_section_timer", true) - self.druid:new_text("text_progress", "ui_section_progress", true) - self.druid:new_text("text_slider", "ui_section_slider", true) - self.druid:new_text("text_radio", "ui_section_radio", true) - self.druid:new_text("text_checkbox", "ui_section_checkbox", true) + self.druid:new_locale("text_button", "ui_section_button") + self.druid:new_locale("text_text", "ui_section_text") + self.druid:new_locale("text_timer", "ui_section_timer") + self.druid:new_locale("text_progress", "ui_section_progress") + self.druid:new_locale("text_slider", "ui_section_slider") + self.druid:new_locale("text_radio", "ui_section_radio") + self.druid:new_locale("text_checkbox", "ui_section_checkbox") + self.druid:new_locale("text_translated", "ui_text_example") + self.druid:new_locale("text_button_lang", "ui_text_change_lang") self.druid:new_text("text_simple", "Simple") - self.druid:new_text("text_translated", "ui_text_example", true) - self.druid:new_text("text_button_lang", "ui_text_change_lang", true, 150 * 0.7) end