skin模块升级
This commit is contained in:
2
main.lua
2
main.lua
@@ -253,7 +253,7 @@ IMG.init{
|
|||||||
'media/image/lanterns/6.png',
|
'media/image/lanterns/6.png',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
SKIN.init{
|
SKIN.load{
|
||||||
{name="crystal_scf",path='media/image/skin/crystal_scf.png'},
|
{name="crystal_scf",path='media/image/skin/crystal_scf.png'},
|
||||||
{name="matte_mrz",path='media/image/skin/matte_mrz.png'},
|
{name="matte_mrz",path='media/image/skin/matte_mrz.png'},
|
||||||
{name="shiny_cho",path='media/image/skin/shiny_cho.png'},
|
{name="shiny_cho",path='media/image/skin/shiny_cho.png'},
|
||||||
|
|||||||
@@ -1,58 +1,59 @@
|
|||||||
local SKIN={}
|
local gc=love.graphics
|
||||||
function SKIN.init(list)
|
local function C(x,y)
|
||||||
local Skins={}
|
local canvas=gc.newCanvas(x,y)
|
||||||
|
gc.setCanvas(canvas)
|
||||||
|
return canvas
|
||||||
|
end
|
||||||
|
|
||||||
local simpList={}
|
local Skins={}
|
||||||
for _,v in next,list do
|
local skinList={}
|
||||||
table.insert(simpList,v.name)
|
|
||||||
Skins[v.name]=v.path
|
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 simpList end
|
end
|
||||||
|
|
||||||
local gc=love.graphics
|
function SKIN.getList()return skinList end
|
||||||
local function C(x,y)
|
|
||||||
local canvas=gc.newCanvas(x,y)
|
local skinMeta={__index=function(self,name)
|
||||||
gc.setCanvas(canvas)
|
gc.push()
|
||||||
return canvas
|
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
|
end
|
||||||
|
|
||||||
SKIN.lib,SKIN.libMini={},{}
|
SKIN.lib[name],SKIN.libMini[name]={},{}
|
||||||
local skinMeta={__index=function(self,name)
|
gc.setColor(1,1,1)
|
||||||
gc.push()
|
for y=0,2 do
|
||||||
gc.origin()
|
for x=1,8 do
|
||||||
local f1,f2=gc.getDefaultFilter()
|
SKIN.lib[name][8*y+x]=C(30,30)
|
||||||
gc.setDefaultFilter('nearest','nearest')
|
if I then
|
||||||
local I
|
gc.draw(I,30-30*x,-30*y)
|
||||||
local N=Skins[name]
|
end
|
||||||
if love.filesystem.getInfo(N)then
|
|
||||||
I=gc.newImage(N)
|
|
||||||
else
|
|
||||||
MES.new('warn',"[no skin] "..Skins[name])
|
|
||||||
end
|
|
||||||
gc.setDefaultFilter(f1,f2)
|
|
||||||
|
|
||||||
SKIN.lib[name],SKIN.libMini[name]={},{}
|
SKIN.libMini[name][8*y+x]=C(6,6)
|
||||||
gc.setColor(1,1,1)
|
if I then
|
||||||
for y=0,2 do
|
gc.draw(I,6-6*x,-6*y,nil,.2)
|
||||||
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
|
||||||
end
|
end
|
||||||
gc.setCanvas()
|
end
|
||||||
gc.pop()
|
gc.setCanvas()
|
||||||
return self[name]
|
gc.pop()
|
||||||
end}
|
return self[name]
|
||||||
setmetatable(SKIN.lib,skinMeta)
|
end}
|
||||||
setmetatable(SKIN.libMini,skinMeta)
|
setmetatable(SKIN.lib,skinMeta)
|
||||||
|
setmetatable(SKIN.libMini,skinMeta)
|
||||||
|
|
||||||
function SKIN.loadAll()SKIN.loadAll=nil for _,v in next,list do local _=SKIN.lib[v.name]end end
|
|
||||||
end
|
|
||||||
return SKIN
|
return SKIN
|
||||||
|
|||||||
Reference in New Issue
Block a user