Files
Techmino/parts/theme.lua
2024-08-01 21:47:25 +08:00

122 lines
3.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
-- April fool's day
M=='07' and (D=='14' or D=='15') and
'edm' 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,keepBGM)
if type(theme)=='string' and theme:sub(1,6)=='season' then
BG.setDefault(SETTING.defaultBG)
BGM.setDefault(({season1='null',season2='nil',season3='vacuum',season4='space'})[theme])
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')
elseif theme=='edm' then
BG.setDefault('lightning2')
BGM.setDefault('malate')
MES.new('music'," 红 色 电 音\n 极 地 大 冲 击\n 只要你敢触电——\n 7月14日、15日 天地人间完全放电\n不用麻醉一样情不自禁HI起来飞起来")
else
return
end
else
return THEME.set(THEME.calculate('0',os.date('%m'),'0'))
end
THEME.cur=theme
BG.set()
if not keepBGM then BGM.play() end
return true
end
function THEME.getThemeColor(theme)
if not theme then
theme=THEME.cur
end
return themeColor[theme]
end
return THEME