60 lines
1.2 KiB
Lua
60 lines
1.2 KiB
Lua
local function C(x,y)
|
|
local canvas=GC.newCanvas(x,y)
|
|
GC.setCanvas(canvas)
|
|
return canvas
|
|
end
|
|
|
|
local Skins={}
|
|
local skinList={}
|
|
|
|
local SKIN={
|
|
lib={},
|
|
libMini={},
|
|
}
|
|
|
|
function SKIN.load(list)
|
|
for i=1,#list do
|
|
table.insert(skinList,list[i].name)
|
|
Skins[list[i].name]=list[i].path
|
|
end
|
|
end
|
|
|
|
function SKIN.getList() return skinList end
|
|
|
|
local skinMeta={__index=function(self,name)
|
|
GC.push()
|
|
GC.origin()
|
|
GC.setDefaultFilter('nearest','nearest')
|
|
local I
|
|
local N=Skins[name]
|
|
if N and love.filesystem.getInfo(N) then
|
|
I=GC.newImage(N)
|
|
else
|
|
MES.new('warn',"[no skin] "..name)
|
|
end
|
|
|
|
SKIN.lib[name],SKIN.libMini[name]={},{}
|
|
GC.setColor(1,1,1)
|
|
for y=0,2 do
|
|
for x=1,8 do
|
|
SKIN.lib[name][8*y+x]=C(30,30)
|
|
if I then
|
|
GC.draw(I,30-30*x,-30*y)
|
|
end
|
|
|
|
SKIN.libMini[name][8*y+x]=C(6,6)
|
|
if I then
|
|
GC.draw(I,6-6*x,-6*y,nil,.2)
|
|
end
|
|
end
|
|
end
|
|
GC.setDefaultFilter('linear','linear')
|
|
GC.setCanvas()
|
|
GC.pop()
|
|
return self[name]
|
|
end}
|
|
setmetatable(SKIN.lib,skinMeta)
|
|
setmetatable(SKIN.libMini,skinMeta)
|
|
|
|
return SKIN
|