src: add loveutils as a lib
This commit is contained in:
parent
73328433b7
commit
479ffe94ea
5 changed files with 177 additions and 0 deletions
16
sonic-radiance.love/libs/loveutils/filesystem.lua
Normal file
16
sonic-radiance.love/libs/loveutils/filesystem.lua
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
local Filesystem = {}
|
||||||
|
|
||||||
|
function Filesystem.exists(filepath)
|
||||||
|
local info = love.filesystem.getInfo( filepath )
|
||||||
|
local exists = false
|
||||||
|
|
||||||
|
if (info == nil) then
|
||||||
|
exists = false
|
||||||
|
else
|
||||||
|
exists = true
|
||||||
|
end
|
||||||
|
|
||||||
|
return exists
|
||||||
|
end
|
||||||
|
|
||||||
|
return Filesystem
|
64
sonic-radiance.love/libs/loveutils/graphics.lua
Normal file
64
sonic-radiance.love/libs/loveutils/graphics.lua
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
local Graphics = {}
|
||||||
|
|
||||||
|
function Graphics.resetColor()
|
||||||
|
love.graphics.setColor(1,1,1,1)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Graphics.box(x, y, w, h)
|
||||||
|
local x = math.floor(x)
|
||||||
|
local y = math.floor(y)
|
||||||
|
local w = math.floor(w)
|
||||||
|
local h = math.floor(h)
|
||||||
|
local a = a or 1
|
||||||
|
|
||||||
|
local r, g, b, a = love.graphics.getColor( )
|
||||||
|
|
||||||
|
love.graphics.setColor(r, g, b, 0.3 * a)
|
||||||
|
love.graphics.rectangle("fill", x, y, w, h)
|
||||||
|
|
||||||
|
love.graphics.setColor(r, g, b, a)
|
||||||
|
love.graphics.rectangle("line", x, y, w, h)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Graphics.print(text, x, y, align, r, sx, sy, ox, oy, kx, ky)
|
||||||
|
local width
|
||||||
|
local font = love.graphics.getFont()
|
||||||
|
width = font:getWidth(text)
|
||||||
|
|
||||||
|
if align == "center" then
|
||||||
|
width = (width/2)
|
||||||
|
elseif align == "right" then
|
||||||
|
width = width
|
||||||
|
else
|
||||||
|
width = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
love.graphics.print(text, x - (width), y, r, sx, sy, ox, oy, kx, ky)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Graphics.printWithSpacing(text, spacing, align, x, y, r, sx, sy, ox, oy, kx, ky)
|
||||||
|
-- DO NOT USE THIS FUNCTION IN A "UPDATE" FUNCTION !
|
||||||
|
-- it's pretty heavy to use as it use a loop to get every character in a text
|
||||||
|
local font = love.graphics.getFont()
|
||||||
|
local xx = 0
|
||||||
|
local lenght = string.len(text)
|
||||||
|
local basewidth = font:getWidth(text)
|
||||||
|
local width = basewidth + (spacing * lenght)
|
||||||
|
|
||||||
|
if align == "center" then
|
||||||
|
width = (width/2)
|
||||||
|
elseif align == "right" then
|
||||||
|
width = width
|
||||||
|
else
|
||||||
|
width = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
for i=1, lenght do
|
||||||
|
local char = string.sub(text, i, i)
|
||||||
|
pos = math.floor(x + xx - width)
|
||||||
|
love.graphics.print(char, pos, y)
|
||||||
|
xx = xx + font:getWidth(char) + spacing
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return Graphics
|
7
sonic-radiance.love/libs/loveutils/init.lua
Normal file
7
sonic-radiance.love/libs/loveutils/init.lua
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
local cwd = (...):gsub('%.init$', '') .. "."
|
||||||
|
|
||||||
|
return {
|
||||||
|
math = require(cwd .. "math"),
|
||||||
|
graphics = require(cwd .. "graphics")
|
||||||
|
filesystem = require(cwd .. "filesystem")
|
||||||
|
}
|
88
sonic-radiance.love/libs/loveutils/math.lua
Normal file
88
sonic-radiance.love/libs/loveutils/math.lua
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
local Math = {}
|
||||||
|
|
||||||
|
function Math.sign(x)
|
||||||
|
if (x < 0) then
|
||||||
|
return -1
|
||||||
|
elseif (x > 0) then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.round(num)
|
||||||
|
return math.floor(num + 0.5)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.vector(x1, y1, x2, y2)
|
||||||
|
local vecx, vecy
|
||||||
|
|
||||||
|
vecx = x2 - x1
|
||||||
|
vexy = y2 - y1
|
||||||
|
|
||||||
|
return vecx, vecy
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.getMiddlePoint(x1, y1, x2, y2)
|
||||||
|
local newx, newy, vecx, vecy
|
||||||
|
|
||||||
|
vecx = math.max(x1, x2) - math.min(x1, x2)
|
||||||
|
vecy = math.max(y1, y2) - math.min(y1, y2)
|
||||||
|
|
||||||
|
newx = math.min(x1, x2) + (vecx / 2)
|
||||||
|
newy = math.min(y1, y2) + (vecy / 2)
|
||||||
|
|
||||||
|
return newx, newy
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.pointDistance(x1, y1, x2, y2)
|
||||||
|
local vecx, vecy
|
||||||
|
|
||||||
|
vecx = math.max(x1, x2) - math.min(x1, x2)
|
||||||
|
vexy = math.max(y1, y2) - math.min(y1, y2)
|
||||||
|
|
||||||
|
return math.sqrt(vecx^2 + vecy^2)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.pointDirection(x1,y1,x2,y2)
|
||||||
|
local vecx, vecy, angle
|
||||||
|
vecy = y2 - y1
|
||||||
|
vecx = x2 - x1
|
||||||
|
angle = math.atan2(vecy, vecx)
|
||||||
|
|
||||||
|
return angle
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.numberToString(x, length)
|
||||||
|
local length = length or 1
|
||||||
|
local string = ""
|
||||||
|
local x = x
|
||||||
|
if (x >= math.pow(10, length)) then
|
||||||
|
x = unitsNumber*10 - 1
|
||||||
|
string = string .. x
|
||||||
|
else
|
||||||
|
for i=1, (length-1) do
|
||||||
|
if (x < math.pow(10, length-i)) then
|
||||||
|
string = string .. "0"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
string = string .. x
|
||||||
|
end
|
||||||
|
return string
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.floorCoord(x, y)
|
||||||
|
return math.floor(x), math.floor(y)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Math.pixeliseCoord(x, y, factor)
|
||||||
|
x, y = Math.floorCoord(x / factor, y / factor)
|
||||||
|
|
||||||
|
x = x * factor
|
||||||
|
y = y * factor
|
||||||
|
|
||||||
|
return x, y
|
||||||
|
end
|
||||||
|
|
||||||
|
return Math
|
|
@ -13,6 +13,8 @@
|
||||||
-- You should have received a copy of the WTF Public License
|
-- You should have received a copy of the WTF Public License
|
||||||
-- along with this program. If not, see <http://www.wtfpl.net/>
|
-- along with this program. If not, see <http://www.wtfpl.net/>
|
||||||
|
|
||||||
|
utils = require "libs.loveutils"
|
||||||
|
|
||||||
function love.load()
|
function love.load()
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue