* Add setting slot for no theme & default BG * Whitelist 4 seasons theme + blocking console's theme command if theme disabled * Small update theme.lua * Expose the WIDGET.setOnChange() to use in setting_video.lua * Shorten "Use custom B.G." to "Custom B.G." * Shorten theme code, and edit the UI * Add lock BG * Add VI translation * Fullscreen patch * Modify UI * Small change * Undo a mistake
118 lines
3.5 KiB
Lua
118 lines
3.5 KiB
Lua
local THEME={
|
|
cur=false,-- Current theme
|
|
}
|
|
local themeColor={
|
|
xmas={COLOR.lR,COLOR.Z,COLOR.lG},
|
|
sprfes={COLOR.lR,COLOR.O,COLOR.lY},
|
|
halloween={COLOR.lH,COLOR.O,{COLOR.hsv(.76,.50,.42)},{COLOR.hsv(.33,.80,.42)}},
|
|
}
|
|
|
|
function THEME.calculate(Y,M,D)
|
|
if not Y then
|
|
Y,M,D=os.date('%Y'),os.date('%m'),os.date('%d')
|
|
end
|
|
-- Festival calculate within one statement
|
|
return
|
|
-- Christmas
|
|
M=='12' and math.abs(D-25)<4 and
|
|
'xmas' or
|
|
|
|
-- Halloween
|
|
(M=='10' and D>='28' or M=='11' and D<='04') and
|
|
'halloween' or
|
|
|
|
-- Birthday
|
|
M=='06' and D=='06' and
|
|
'birth' or
|
|
|
|
-- Spring festival
|
|
M<'03' and math.abs((({
|
|
-- Festival days. Jan 26=26, Feb 1=32, etc.
|
|
24,43,32,22,40,29,49,38,26,45,
|
|
34,23,41,31,50,39,28,47,36,25,
|
|
43,32,22,41,29,48,37,26,44,34,
|
|
23,42,31,50,39,28,46,35,24,43,
|
|
32,22,41,30,48,37,26,45,33,23,
|
|
42,32,50,39,28,46,35,24,43,33,
|
|
21,40,
|
|
})[Y-2000] or -26)-((M-1)*31+D))<6 and
|
|
'sprfes' or
|
|
|
|
-- April fool's day
|
|
M=='04' and D=='01' and
|
|
'fool' or
|
|
|
|
-- Z day
|
|
D=='26' and (
|
|
(M=='03' or M=='04' or M=='05' or M=='06') and 'zday1' or
|
|
(M=='07' or M=='08' or M=='09' or M=='10') and 'zday2' or
|
|
(M=='11' or M=='12' or M=='01' or M=='02') and 'zday3'
|
|
) or
|
|
|
|
-- Normal
|
|
(
|
|
(M=='02' or M=='03' or M=='04') and 'season1' or
|
|
(M=='05' or M=='06' or M=='07') and 'season2' or
|
|
(M=='08' or M=='09' or M=='10') and 'season3' or
|
|
(M=='11' or M=='12' or M=='01') and 'season4'
|
|
)
|
|
end
|
|
|
|
function THEME.set(theme)
|
|
local seasonT={'null','nil','vaccum','space'}
|
|
-- Note: by default, the background will be 'space' unless user changed
|
|
-- Because 4 seasonal themes are basically the normal theme, not special like others
|
|
if type(theme)=='string' and string.sub(theme,1,6)=='season' then
|
|
local n=tonumber(string.sub(theme,7))
|
|
if 0<n and n<5 then
|
|
BG. setDefault(SETTING.defaultBG)
|
|
BGM.setDefault(seasonT[n])
|
|
end
|
|
elseif not SETTING.noTheme then
|
|
if theme=='xmas' then
|
|
BG.setDefault('snow')
|
|
BGM.setDefault('xmas')
|
|
MES.new('info',"==Merry Christmas==")
|
|
elseif theme=='birth' then
|
|
BG.setDefault('firework')
|
|
BGM.setDefault('magicblock')
|
|
elseif theme=='sprfes' then
|
|
BG.setDefault('firework')
|
|
BGM.setDefault('spring festival')
|
|
MES.new('info',"★☆新年快乐☆★")
|
|
elseif theme=='halloween' then
|
|
BG.setDefault('glow')
|
|
BGM.setDefault('antispace')
|
|
MES.new('info',">>Happy halloween<<")
|
|
elseif theme=='zday1' then
|
|
BG.setDefault('lanterns')
|
|
BGM.setDefault('overzero')
|
|
elseif theme=='zday2' then
|
|
BG.setDefault('lanterns')
|
|
BGM.setDefault('jazz nihilism')
|
|
elseif theme=='zday3' then
|
|
BG.setDefault('lanterns')
|
|
BGM.setDefault('empty')
|
|
elseif theme=='fool' then
|
|
BG.setDefault('blockrain')
|
|
BGM.setDefault('how feeling')
|
|
else
|
|
return
|
|
end
|
|
else THEME.set(THEME.calculate('0',os.date('%m'),'0')) return end
|
|
|
|
THEME.cur=theme
|
|
BG.set()
|
|
BGM.play()
|
|
return true
|
|
end
|
|
|
|
function THEME.getThemeColor(theme)
|
|
if not theme then
|
|
theme=THEME.cur
|
|
end
|
|
return themeColor[theme]
|
|
end
|
|
|
|
return THEME
|