皮肤文件分段加载,解谜贴图独立加载

This commit is contained in:
MrZ626
2020-10-25 13:01:19 +08:00
parent e3ef33cb61
commit f4c13fcacb
2 changed files with 69 additions and 55 deletions

View File

@@ -169,8 +169,10 @@ do--load
#SFX.list, #SFX.list,
IMG.getCount(), IMG.getCount(),
17,--Fontsize 20~100 17,--Fontsize 20~100
SKIN.getCount(),
#Modes, #Modes,
1, 1,
1,
}, },
skip=false,--If skipped skip=false,--If skipped
} }
@@ -211,6 +213,8 @@ do--load
elseif S.phase==5 then elseif S.phase==5 then
getFont(15+5*S.cur) getFont(15+5*S.cur)
elseif S.phase==6 then elseif S.phase==6 then
SKIN.loadOne(S.cur)
elseif S.phase==7 then
local m=Modes[S.cur]--Mode template local m=Modes[S.cur]--Mode template
local M=require("modes/"..m.name)--Mode file local M=require("modes/"..m.name)--Mode file
Modes[m.name],Modes[S.cur]=M Modes[m.name],Modes[S.cur]=M
@@ -227,12 +231,40 @@ do--load
end end
-- M.icon=gc.newImage("image/modeIcon/"..m.icon..".png") -- M.icon=gc.newImage("image/modeIcon/"..m.icon..".png")
-- M.icon=gc.newImage("image/modeIcon/custom.png") -- M.icon=gc.newImage("image/modeIcon/custom.png")
elseif S.phase==7 then elseif S.phase==8 then
--------------------------Loading other little things here local function C(x,y)
SKIN.load() local _=gc.newCanvas(x,y)
gc.setCanvas(_)
return _
end
puzzleMark={}
gc.setLineWidth(3)
for i=1,11 do
puzzleMark[i]=C(30,30)
_=SKIN.libColor[i]
gc.setColor(_[1],_[2],_[3],.6)
gc.rectangle("line",5,5,20,20)
gc.rectangle("line",10,10,10,10)
end
for i=12,17 do
puzzleMark[i]=C(30,30)
gc.setColor(SKIN.libColor[i])
gc.rectangle("line",7,7,16,16)
end
local _=C(30,30)
gc.setColor(1,1,1)
gc.line(5,5,25,25)
gc.line(5,25,25,5)
puzzleMark[-1]=C(30,30)
gc.setColor(1,1,1,.9)
gc.draw(_)
_:release()
gc.setCanvas()
elseif S.phase==9 then
SKIN.change(SETTING.skinSet)
STAT.run=STAT.run+1 STAT.run=STAT.run+1
LOADED=true LOADED=true
--------------------------
SFX.play("welcome_sfx") SFX.play("welcome_sfx")
VOC.play("welcome_voc") VOC.play("welcome_voc")
httpRequest(TICK.httpREQ_launch,"api/game") httpRequest(TICK.httpREQ_launch,"api/game")

View File

@@ -28,6 +28,7 @@ local list={
"white_bone(mrz)", "white_bone(mrz)",
"WTF", "WTF",
} }
local count=#list
local SKIN={} local SKIN={}
SKIN.lib={} SKIN.lib={}
SKIN.libMini={} SKIN.libMini={}
@@ -50,74 +51,55 @@ SKIN.libColor={
color.dRed, color.dRed,
color.dGreen, color.dGreen,
} }
function SKIN.load() function SKIN.getCount()
local _ return count
end
function SKIN.loadOne(_)
gc.push() gc.push()
gc.origin() gc.origin()
gc.setDefaultFilter("nearest","nearest") gc.setDefaultFilter("nearest","nearest")
gc.setColor(1,1,1) gc.setColor(1,1,1)
for i=1,#list do SKIN.lib[_],SKIN.libMini[_]={},{}--30/6
SKIN.lib[i],SKIN.libMini[i]={},{}--30/6 local N="/image/skin/"..list[_]..".png"
local N="/image/skin/"..list[i]..".png"
local I local I
if love.filesystem.getInfo(N)then if love.filesystem.getInfo(N)then
I=gc.newImage(N) I=gc.newImage(N)
else else
I=gc.newImage("/image/skin/"..list[1]..".png") I=gc.newImage("/image/skin/"..list[1]..".png")
LOG.print("No skin file: "..list[i],"warn") LOG.print("No skin file: "..list[_],"warn")
end end
for j=1,11 do for j=1,11 do
SKIN.lib[i][j]=C(30,30) SKIN.lib[_][j]=C(30,30)
gc.draw(I,30-30*j,0) gc.draw(I,30-30*j,0)
SKIN.libMini[i][j]=C(6,6) SKIN.libMini[_][j]=C(6,6)
gc.draw(I,6-6*j,0,nil,.2) gc.draw(I,6-6*j,0,nil,.2)
end end
for j=1,6 do for j=1,6 do
SKIN.lib[i][11+j]=C(30,30) SKIN.lib[_][11+j]=C(30,30)
gc.draw(I,30-30*j,-30) gc.draw(I,30-30*j,-30)
SKIN.libMini[i][11+j]=C(6,6) SKIN.libMini[_][11+j]=C(6,6)
gc.draw(I,6-6*j,-6,nil,.2) gc.draw(I,6-6*j,-6,nil,.2)
end end
I:release() I:release()
end
SKIN.change(SETTING.skinSet)
puzzleMark={}
gc.setLineWidth(3)
for i=1,11 do
puzzleMark[i]=C(30,30)
_=SKIN.libColor[i]
gc.setColor(_[1],_[2],_[3],.6)
gc.rectangle("line",5,5,20,20)
gc.rectangle("line",10,10,10,10)
end
for i=12,17 do
puzzleMark[i]=C(30,30)
gc.setColor(SKIN.libColor[i])
gc.rectangle("line",7,7,16,16)
end
_=C(30,30)
gc.setColor(1,1,1)
gc.line(5,5,25,25)
gc.line(5,25,25,5)
puzzleMark[-1]=C(30,30)
gc.setColor(1,1,1,.9)
gc.draw(_)
_:release()
gc.setCanvas() gc.setCanvas()
gc.pop() gc.pop()
end end
local L=#list function SKIN.loadAll()
for i=1,count do
SFX.loadOne(i)
end
end
function SKIN.prevSet()--Prev skin_set function SKIN.prevSet()--Prev skin_set
local _=(SETTING.skinSet-2)%L+1 local _=(SETTING.skinSet-2)%count+1
SETTING.skinSet=_ SETTING.skinSet=_
SKIN.change(_) SKIN.change(_)
_=list[_] _=list[_]
TEXT.show(_,1100,100,int(300/#_)+5,"fly") TEXT.show(_,1100,100,int(300/#_)+5,"fly")
end end
function SKIN.nextSet()--Next skin_set function SKIN.nextSet()--Next skin_set
local _=SETTING.skinSet%L+1 local _=SETTING.skinSet%count+1
SETTING.skinSet=_ SETTING.skinSet=_
SKIN.change(_) SKIN.change(_)
_=list[_] _=list[_]