升级image模块,不再需要在启动时就加载好图片资源

This commit is contained in:
MrZ626
2021-07-21 02:37:41 +08:00
parent 0023c0a4c6
commit 4b2c55d90e
3 changed files with 42 additions and 54 deletions

View File

@@ -1,37 +1,26 @@
local IMG={ local IMG={}
getCount=function()return 0 end,
loadOne=function()error("Cannot load before init!")end,
loadAll=function()error("Cannot load before init!")end,
}
function IMG.init(list) function IMG.init(list)
IMG.init=nil IMG.init=nil
local count=0
for k,v in next,list do local null=love.graphics.newCanvas(1,1)
count=count+1 setmetatable(IMG,{__index=function(self,name)
IMG[k]=v if type(list[name])=='table'then
end self[name]={}
function IMG.getCount()return count end for i=1,#list do
local function load(skip) self[name][i]=love.graphics.newImage(list[name][i])
local loaded=0
for k,v in next,list do
if type(v)=='string'then
IMG[k]=love.graphics.newImage('media/image/'..v)
else
for i=1,#v do
v[i]=love.graphics.newImage('media/image/'..v[i])
end
IMG[k]=v
end
loaded=loaded+1
if not skip and loaded~=count then
coroutine.yield()
end end
elseif type(list[name])=='string'then
self[name]=love.graphics.newImage(list[name])
else
MES.new('warn',"No BGM: "..name,5)
self[name]=null
end end
IMG.loadOne=nil return self[name]
end})
function IMG.loadAll()
for k in next,list do local _=IMG[k]end
IMG.loadAll=nil IMG.loadAll=nil
end end
IMG.loadOne=coroutine.wrap(load)
function IMG.loadAll()load(true)end
end end
return IMG return IMG

View File

@@ -96,33 +96,33 @@ if SETTING.fullscreen then love.window.setFullscreen(true)end
--Initialize image libs --Initialize image libs
IMG.init{ IMG.init{
lock='mess/lock.png', lock='media/image/mess/lock.png',
dialCircle='mess/dialCircle.png', dialCircle='media/image/mess/dialCircle.png',
dialNeedle='mess/dialNeedle.png', dialNeedle='media/image/mess/dialNeedle.png',
lifeIcon='mess/life.png', lifeIcon='media/image/mess/life.png',
badgeIcon='mess/badge.png', badgeIcon='media/image/mess/badge.png',
ctrlSpeedLimit='mess/ctrlSpeedLimit.png', ctrlSpeedLimit='media/image/mess/ctrlSpeedLimit.png',
speedLimit='mess/speedLimit.png',--Not used, for future C2-mode speedLimit='media/image/mess/speedLimit.png',--Not used, for future C2-mode
pay1='mess/pay1.png', pay1='media/image/mess/pay1.png',
pay2='mess/pay2.png', pay2='media/image/mess/pay2.png',
miyaCH='characters/miya.png', miyaCH='media/image/characters/miya.png',
miyaF1='characters/miya_f1.png', miyaF1='media/image/characters/miya_f1.png',
miyaF2='characters/miya_f2.png', miyaF2='media/image/characters/miya_f2.png',
miyaF3='characters/miya_f3.png', miyaF3='media/image/characters/miya_f3.png',
miyaF4='characters/miya_f4.png', miyaF4='media/image/characters/miya_f4.png',
nakiCH='characters/nakiharu.png', nakiCH='media/image/characters/nakiharu.png',
xiaoyaCH='characters/xiaoya.png', xiaoyaCH='media/image/characters/xiaoya.png',
electric='characters/electric.png', electric='media/image/characters/electric.png',
hbm='characters/hbm.png', hbm='media/image/characters/hbm.png',
lanterns={ lanterns={
'lanterns/1.png', 'media/image/lanterns/1.png',
'lanterns/2.png', 'media/image/lanterns/2.png',
'lanterns/3.png', 'media/image/lanterns/3.png',
'lanterns/4.png', 'media/image/lanterns/4.png',
'lanterns/5.png', 'media/image/lanterns/5.png',
'lanterns/6.png', 'media/image/lanterns/6.png',
}, },
} }
SKIN.init{ SKIN.init{

View File

@@ -21,7 +21,6 @@ local loadingThread=coroutine.wrap(function()
logoColor2={COLOR.rainbow_light(r)} logoColor2={COLOR.rainbow_light(r)}
end end
YIELD('loadSFX')SFX.loadAll() YIELD('loadSFX')SFX.loadAll()
YIELD('loadImage')IMG.loadAll()
YIELD('loadSkin') YIELD('loadSkin')
for i=1,SKIN.getCount()do for i=1,SKIN.getCount()do
SKIN.loadOne() SKIN.loadOne()