Skip to content
Snippets Groups Projects
Commit 0a3991ae authored by Alex Ksandra's avatar Alex Ksandra
Browse files

Loads of easy changes #1

parent 9235fa53
No related branches found
No related tags found
No related merge requests found
......@@ -122,6 +122,7 @@ end
function _M:drawFontLine(font, text, width) -- always draw with white, outputting texture can have it changed
local cached = table.getTable(fcache, font, font:getStyle())
if cached[text] then return cached[text] end
width = width or font:size(text)
local tex = font:draw(text, width, 255, 255, 255, true)[1]
local r = {t = tex._tex, w=tex.w, h=tex.h, tw=tex._tex_w, th=tex._tex_h}
cached[text] = r
......
......@@ -52,9 +52,7 @@ function _M:generate()
if self.force_w then w = self.force_w end
self.w, self.h = w - frame_ox1 + frame_ox2, h - frame_oy1 + frame_oy2
local s = core.display.newSurface(w, h)
s:drawColorStringBlended(self.font, self.text, 0, 0, 255, 255, 255, true)
self.tex = {s:glTexture()}
self.tex = self:drawFontLine(self.font, self.text, w)
self.font:setStyle("normal")
-- Add UI controls
......@@ -94,8 +92,8 @@ function _M:display(x, y, nb_keyframes, ox, oy)
else
self:drawFrame(self.frame_sel, x, y)
end
if self.text_shadow then self.tex[1]:toScreenFull(x-frame_ox1+1, y-frame_oy1+1, self.rw, self.rh, self.tex[2], self.tex[3], 0, 0, 0, self.text_shadow) end
self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3])
if self.text_shadow then self:textureToScreen(self.tex, x-frame_ox1+1, y-frame_oy1+1, 0, 0, 0, self.text_shadow) end
self:textureToScreen(self.tex, x-frame_ox1, y-frame_oy1)
else
if self.glow then
local v = self.glow + (1 - self.glow) * (1 + math.cos(core.game.getTime() / 300)) / 2
......@@ -109,7 +107,7 @@ function _M:display(x, y, nb_keyframes, ox, oy)
self.focus_decay = self.focus_decay - nb_keyframes
if self.focus_decay <= 0 then self.focus_decay = nil end
end
if self.text_shadow then self.tex[1]:toScreenFull(x-frame_ox1+1, y-frame_oy1+1, self.rw, self.rh, self.tex[2], self.tex[3], 0, 0, 0, self.alpha_unfocus * self.text_shadow) end
self.tex[1]:toScreenFull(x-frame_ox1, y-frame_oy1, self.rw, self.rh, self.tex[2], self.tex[3], 1, 1, 1, self.alpha_unfocus)
if self.text_shadow then self:textureToScreen(self.tex, x-frame_ox1+1, y-frame_oy1+1, 0, 0, 0, self.alpha_unfocus * self.text_shadow) end
self:textureToScreen(self.tex, x-frame_ox1, y-frame_oy1, 1, 1, 1, self.alpha_unfocus)
end
end
......@@ -43,12 +43,10 @@ function _M:generate()
self.tick = self:getUITexture("ui/checkbox-ok.png")
-- Draw UI
self.title_w, self.title_h = self.font:size(self.title)
self.w, self.h = self.title_w + self.check.w, math.max(self.font_h, self.check.h)
self.tex = self:drawFontLine(self.font, self.title)
self.w, self.h = self.tex.w + self.check.w, math.max(self.font_h, self.check.h)
local s = core.display.newSurface(self.title_w, self.title_h)
s:drawColorStringBlended(self.font, self.title, 0, 0, 255, 255, 255, true)
self.tex = {s:glTexture()}
-- Add UI controls
self.mouse:registerZone(0, 0, self.w, self.h, function(button, x, y, xrel, yrel, bx, by, event)
......@@ -70,8 +68,8 @@ end
function _M:display(x, y, nb_keyframes)
if self.check_first then
if self.text_shadow then self.tex[1]:toScreenFull(x+1 + self.check.w, y+1 + (self.h - self.title_h) / 2, self.title_w, self.title_h, self.tex[2], self.tex[3], 0, 0, 0, self.text_shadow) end
self.tex[1]:toScreenFull(x + self.check.w, y + (self.h - self.title_h) / 2, self.title_w, self.title_h, self.tex[2], self.tex[3])
if self.text_shadow then self:textureToScreen(self.tex, x+1 + self.check.w, y+1 + (self.h - self.tex.h) / 2, 0, 0, 0, self.text_shadow) end
self:textureToScreen(self.tex, x + self.check.w, y + (self.h - self.tex.h) / 2)
if self.focused then
self.check.t:toScreenFull(x, y, self.check.w, self.check.h, self.check.tw, self.check.th)
else
......@@ -81,15 +79,15 @@ function _M:display(x, y, nb_keyframes)
self.tick.t:toScreenFull(x, y, self.tick.w, self.tick.h, self.tick.tw, self.tick.th)
end
else
if self.text_shadow then self.tex[1]:toScreenFull(x+1, y+1 + (self.h - self.title_h) / 2, self.title_w, self.title_h, self.tex[2], self.tex[3], 0, 0, 0, self.text_shadow) end
self.tex[1]:toScreenFull(x, y + (self.h - self.title_h) / 2, self.title_w, self.title_h, self.tex[2], self.tex[3])
if self.text_shadow then self.tex[1]:toScreenFull(x+1, y+1 + (self.h - self.tex.h) / 2, self.tex.w, self.tex.h, self.tex[2], self.tex[3], 0, 0, 0, self.text_shadow) end
self.tex[1]:toScreenFull(x, y + (self.h - self.tex.h) / 2, self.tex.w, self.tex.h, self.tex[2], self.tex[3])
if self.focused then
self.check.t:toScreenFull(x + self.title_w, y, self.check.w, self.check.h, self.check.tw, self.check.th)
self.check.t:toScreenFull(x + self.tex.w, y, self.check.w, self.check.h, self.check.tw, self.check.th)
else
self.check.t:toScreenFull(x + self.title_w, y, self.check.w, self.check.h, self.check.tw, self.check.th)
self.check.t:toScreenFull(x + self.tex.w, y, self.check.w, self.check.h, self.check.tw, self.check.th)
end
if self.checked then
self.tick.t:toScreenFull(x + self.title_w, y, self.tick.w, self.tick.h, self.tick.tw, self.tick.th)
self.tick.t:toScreenFull(x + self.tex.w, y, self.tick.w, self.tick.h, self.tick.tw, self.tick.th)
end
end
end
......@@ -356,14 +356,8 @@ function _M:updateTitle(title)
local title = title
if type(title)=="function" then title = title() end
self.font_bold:setStyle("bold")
local tw, th = self.font_bold:size(title)
local s = core.display.newSurface(tw, th)
s:erase(0, 0, 0, 0)
s:drawColorStringBlended(self.font_bold, title, 0, 0, self.color.r, self.color.g, self.color.b, true)
self.title_tex = self:drawFontLine(self.font_bold, title)
self.font_bold:setStyle("normal")
self.title_tex = {s:glTexture()}
self.title_tex.w = tw
self.title_tex.h = th
end
function _M:loadUI(t)
......@@ -743,12 +737,12 @@ function _M:toScreen(x, y, nb_keyframes)
if shader then
shader:use(true)
shader:uniOutlineSize(self.shadow_power, self.shadow_power)
shader:uniTextSize(self.title_tex[2], self.title_tex[3])
shader:uniTextSize(self.title_tex.tw, self.title_tex.th)
else
self.title_tex[1]:toScreenFull(x + (self.w - self.title_tex.w) / 2 + 3 + self.frame.title_x, y + 3 + self.frame.title_y, self.title_tex.w, self.title_tex.h, self.title_tex[2], self.title_tex[3], 0, 0, 0, 0.5)
self:textureToScreen(self.title_tex, x + (self.w - self.title_tex.w) / 2 + 3 + self.frame.title_x, y + 3 + self.frame.title_y, 0, 0, 0, 0.5)
end
end
self.title_tex[1]:toScreenFull(x + (self.w - self.title_tex.w) / 2 + self.frame.title_x, y + self.frame.title_y, self.title_tex.w, self.title_tex.h, self.title_tex[2], self.title_tex[3])
self:textureToScreen(self.title_tex, x + (self.w - self.title_tex.w) / 2 + self.frame.title_x, y + self.frame.title_y)
if self.title_shadow and shader then shader:use(false) end
end
......
......@@ -71,15 +71,10 @@ function _M:generate()
self.text_y = (h - fh) / 2
self.cursor_y = (h - self.texcursor.h) / 2
self.max_display = math.floor(fw / self.font_mono_w)
self.text_surf = core.display.newSurface(fw, fh)
self.text_tex, self.text_tex_w, self.text_tex_h = self.text_surf:glTexture()
self:updateText()
if title_w > 0 then
local s = core.display.newSurface(title_w, h)
s:erase(0, 0, 0, 0)
s:drawColorStringBlended(self.font, self.title, 0, (h - fh) / 2, 255, 255, 255, true)
self.tex, self.tex_w, self.tex_h = s:glTexture()
self.tex = self:drawFontLine(self.font, self.title, title_w)
end
-- Add UI controls
......@@ -162,28 +157,26 @@ end
function _M:updateText()
if not self.tmp[1] then self.tmp = {} end
self.text = table.concat(self.tmp)
local text = ""
for i = self.scroll, self.scroll + self.max_display - 1 do
if not self.tmp[i] then break end
if not self.hide then text = text .. self.tmp[i]
else text = text .. "*" end
end
local text
local b, e = self.scroll, math.min(self.scroll + self.max_display - 1, #self.tmp)
if not self.hide then text = table.concat(self.tmp, nil, b, e)
else text = string.rep("*", e - b + 1) end
self.text_tex = self:drawFontLine(self.font_mono, text, self.fw)
self.text_surf:erase(0, 0, 0, 0)
self.text_surf:drawStringBlended(self.font_mono, text, 0, 0, 255, 255, 255, true)
self.text_surf:updateTexture(self.text_tex)
if self.on_change and self.old_text ~= self.text then self.on_change(self.text) end
self.old_text = self.text
end
function _M:display(x, y, nb_keyframes)
local text_x, text_y = self.text_x, self.text_y
if self.tex then
if self.text_shadow then self.tex:toScreenFull(x+1, y+1, self.title_w, self.h, self.tex_w, self.tex_h, 0, 0, 0, self.text_shadow) end
self.tex:toScreenFull(x, y, self.title_w, self.h, self.tex_w, self.tex_h)
if self.text_shadow then self:textureToScreen(self.tex, x+1, y+text_y+1, 0, 0, 0, self.text_shadow) end
self:textureToScreen(self.tex, x, y+text_y)
end
if self.focused then
self:drawFrame(self.frame_sel, x + self.title_w, y)
self.texcursor.t:toScreenFull(x + self.text_x + (self.cursor-self.scroll) * self.font_mono_w - (self.texcursor.w / 2), y + self.cursor_y, self.texcursor.w, self.texcursor.h, self.texcursor.tw, self.texcursor.th)
self:textureToScreen(self.texcursor, x + self.text_x + (self.cursor-self.scroll) * self.font_mono_w - (self.texcursor.w / 2), y + self.cursor_y)
else
self:drawFrame(self.frame, x + self.title_w, y)
if self.focus_decay then
......@@ -192,6 +185,6 @@ function _M:display(x, y, nb_keyframes)
if self.focus_decay <= 0 then self.focus_decay = nil end
end
end
if self.text_shadow then self.text_tex:toScreenFull(x+1 + self.text_x, y+1 + self.text_y, self.fw, self.fh, self.text_tex_w, self.text_tex_h, 0, 0, 0, self.text_shadow) end
self.text_tex:toScreenFull(x + self.text_x, y + self.text_y, self.fw, self.fh, self.text_tex_w, self.text_tex_h)
if self.text_shadow then self:textureToScreen(self.text_tex, x+1 + self.text_x, y+1 + self.text_y, 0, 0, 0, self.text_shadow) end
self:textureToScreen(self.text_tex, x+1 + self.text_x, y+1 + self.text_y)
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment