improvement to drawTextBox to account for newlines.

used drawTextBox in editor palette
This commit is contained in:
lustlion 2022-03-11 15:27:15 +01:00
parent 266bf10d13
commit f62ec3ea32
2 changed files with 42 additions and 16 deletions

View File

@ -262,9 +262,14 @@ function drawSelectingPaletteTile()
end end
function doEditorPalette() function doEditorPalette()
local width = LevelData.tileset:getPixelWidth()/tile_properties.width local width = LevelData.tileset:getPixelWidth()/tile_properties.width
local height = LevelData.tileset:getPixelHeight()/tile_properties.height local height = LevelData.tileset:getPixelHeight()/tile_properties.height
local mouse_x = love.mouse.getX()
local mouse_y = love.mouse.getY()
local hovering = nil
local hov_x = nil
local hov_y = nil
local output = ""
love.graphics.setColor(0,0,0,1) love.graphics.setColor(0,0,0,1)
love.graphics.rectangle( love.graphics.rectangle(
@ -274,9 +279,8 @@ function doEditorPalette()
1 + LevelData.tileset:getPixelWidth() * ((tile_properties.width+1) / tile_properties.width), 1 + LevelData.tileset:getPixelWidth() * ((tile_properties.width+1) / tile_properties.width),
1 + LevelData.tileset:getPixelHeight()* ((tile_properties.height+1) / tile_properties.height) 1 + LevelData.tileset:getPixelHeight()* ((tile_properties.height+1) / tile_properties.height)
) )
love.graphics.setColor(1,1,1,1) love.graphics.setColor(1,1,1,1)
local position_x = 1 local position_x = 1
local position_y = 1 local position_y = 1
for i = 1, #TileIndex-width-1 do for i = 1, #TileIndex-width-1 do
@ -293,18 +297,17 @@ function doEditorPalette()
1, 1,
1 1
) )
if Keybind:checkDown(Keybind.generic.lclick) then
local mouse_x = love.mouse.getX()
local mouse_y = love.mouse.getY()
if mouse_x > (tile_x) * game.scale if mouse_x > (tile_x) * game.scale
and mouse_x < (tile_x + tile_properties.width) * game.scale and mouse_x < (tile_x + tile_properties.width) * game.scale
and mouse_y > (tile_y) * game.scale and mouse_y > (tile_y) * game.scale
and mouse_y < (tile_y + tile_properties.height) * game.scale and mouse_y < (tile_y + tile_properties.height) * game.scale
then then
selecting_tile = position_x + ((position_y-1) * width) hovering = position_x + ((position_y-1) * width)
hov_x = tile_x
love.graphics.print(selecting_tile .. " | " .. tile_x .. ", " .. tile_y, 0, 20) hov_y = tile_y
if Keybind:checkDown(Keybind.generic.lclick) then
selecting_tile = hovering
end end
end end
@ -340,6 +343,22 @@ function doEditorPalette()
1 + LevelData.tileset:getPixelWidth() * ((tile_properties.width+1) / tile_properties.width), 1 + LevelData.tileset:getPixelWidth() * ((tile_properties.width+1) / tile_properties.width),
1 + LevelData.tileset:getPixelHeight()* ((tile_properties.height+1) / tile_properties.height) 1 + LevelData.tileset:getPixelHeight()* ((tile_properties.height+1) / tile_properties.height)
) )
local tile = "none"
if selecting_tile ~= nil then
tile = "#"..selecting_tile
end
output = output .. "Selected: " .. tile
if hovering ~= nil then
output = output .. " \nHovering: #".. hovering .. "\nImage coords: " .. hov_x .. ", " .. hov_y
end
drawTextBox(
output,
(palette_scroll_x + 1+width) * (tile_properties.width+1),
(palette_scroll_y + 1) * (tile_properties.height+1)
)
end end

View File

@ -6,23 +6,30 @@ function addElement(self)
end end
function drawTextBox(text,x,y,color,background_color) function drawTextBox(text,x,y,color,background_color)
local color = color or {1,1,1,1}
local background_color = background_color or {0,0,0,1}
local c1, c2, c3, a = love.graphics.getColor() local c1, c2, c3, a = love.graphics.getColor()
local width = locale_font:getWidth(text) local width = locale_font:getWidth(text)
local height = locale_font:getHeight(text) local height = locale_font:getHeight(text)
local margin = 5 local margin = 5
local lines = 1
for i in text:gmatch("\n") do
lines = lines + 1
end
love.graphics.setColor(unpack(color)) love.graphics.setColor(unpack(color))
love.graphics.rectangle("fill", love.graphics.rectangle("fill",
x-1, x-1,
y-1, y-1,
width+margin*2+2, width+margin*2+2,
height+margin*2+2 height*lines+margin*2+2
) )
love.graphics.setColor(unpack(background_color)) love.graphics.setColor(unpack(background_color))
love.graphics.rectangle("fill", love.graphics.rectangle("fill",
x, x,
y, y,
width+margin*2, width+margin*2,
height+margin*2 height*lines+margin*2
) )
love.graphics.setColor(unpack(color)) love.graphics.setColor(unpack(color))
love.graphics.print(text, x+margin, y+margin) love.graphics.print(text, x+margin, y+margin)