diff --git a/Themes/dimension-tripper/BGAnimations/ScreenSelectMusic decorations.lua b/Themes/dimension-tripper/BGAnimations/ScreenSelectMusic decorations.lua new file mode 100644 index 0000000000..5a7b868da0 --- /dev/null +++ b/Themes/dimension-tripper/BGAnimations/ScreenSelectMusic decorations.lua @@ -0,0 +1,3 @@ +return Def.ActorFrame { + +} \ No newline at end of file diff --git a/Themes/dimension-tripper/BGAnimations/ScreenWithMenuElements background.lua b/Themes/dimension-tripper/BGAnimations/ScreenWithMenuElements background.lua new file mode 100644 index 0000000000..0856ea3aa7 --- /dev/null +++ b/Themes/dimension-tripper/BGAnimations/ScreenWithMenuElements background.lua @@ -0,0 +1,5 @@ +return Def.ActorFrame { + Def.Quad { + InitCommand=cmd(FullScreen;diffuse,{1,1,1,0.85}) + } +} \ No newline at end of file diff --git a/Themes/dimension-tripper/Fonts/Common normal.redir b/Themes/dimension-tripper/Fonts/Common normal.redir new file mode 100644 index 0000000000..8f0b95cbfe --- /dev/null +++ b/Themes/dimension-tripper/Fonts/Common normal.redir @@ -0,0 +1 @@ +helveticaneue/_helveticaneuelt std 20px \ No newline at end of file diff --git a/Themes/dimension-tripper/Fonts/Textbanner text.redir b/Themes/dimension-tripper/Fonts/Textbanner text.redir new file mode 100644 index 0000000000..57387edcd7 --- /dev/null +++ b/Themes/dimension-tripper/Fonts/Textbanner text.redir @@ -0,0 +1 @@ +helveticaneue/_helveticaneuelt std 20px diff --git a/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px [alt] 10x10 (doubleres).png b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px [alt] 10x10 (doubleres).png new file mode 100644 index 0000000000..d63c299f63 Binary files /dev/null and b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px [alt] 10x10 (doubleres).png differ diff --git a/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px [main] 15x15 (doubleres).png b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px [main] 15x15 (doubleres).png new file mode 100644 index 0000000000..9779c9b195 Binary files /dev/null and b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px [main] 15x15 (doubleres).png differ diff --git a/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px.ini b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px.ini new file mode 100644 index 0000000000..b7697195b0 --- /dev/null +++ b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 20px.ini @@ -0,0 +1,352 @@ +[common] +Baseline=21 +Top=5 +LineSpacing=23 +DrawExtraPixelsLeft=2 +DrawExtraPixelsRight=0 +AdvanceExtraPixels=0 + +[main] +Line 0= !"#$%&'()*+,-. +Line 1=/0123456789:;<= +Line 2=>?@ABCDEFGHIJKL +Line 3=MNOPQRSTUVWXYZ[ +Line 4=\]^_`abcdefghij +Line 5=klmnopqrstuvwxy +Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š +Line 7=‹ŒŽ‘’“”•–—˜™š›œ +Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ +Line 9=­®¯°±²³´µ¶·¸¹º» +Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ +Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ +Line 12=ÚÛÜÝÞßàáâãäåæçè +Line 13=éêëìíîïðñòóôõö÷ +Line 14=øùúûüýþÿ + +0=6 +1=5 +2=9 +3=11 +4=11 +5=20 +6=13 +7=6 +8=5 +9=5 +10=7 +11=12 +12=6 +13=8 +14=6 +15=7 +16=11 +17=11 +18=11 +19=11 +20=11 +21=11 +22=11 +23=11 +24=11 +25=11 +26=6 +27=6 +28=12 +29=12 +30=12 +31=11 +32=16 +33=13 +34=14 +35=14 +36=14 +37=12 +38=11 +39=15 +40=14 +41=5 +42=10 +43=13 +44=11 +45=17 +46=14 +47=15 +48=13 +49=15 +50=14 +51=13 +52=11 +53=14 +54=12 +55=19 +56=12 +57=13 +58=12 +59=5 +60=7 +61=5 +62=12 +63=10 +64=4 +65=11 +66=12 +67=11 +68=12 +69=11 +70=6 +71=11 +72=11 +73=4 +74=4 +75=10 +76=4 +77=17 +78=11 +79=11 +80=12 +81=12 +82=7 +83=10 +84=6 +85=11 +86=10 +87=15 +88=10 +89=10 +90=10 +91=7 +92=4 +93=7 +94=12 +95=11 +96=6 +97=11 +98=9 +99=20 +100=11 +101=11 +102=4 +103=23 +104=13 +105=5 +106=21 +107=12 +108=6 +109=6 +110=9 +111=9 +112=10 +113=10 +114=20 +115=4 +116=20 +117=10 +118=5 +119=18 +120=10 +121=13 +122=6 +123=5 +124=11 +125=11 +126=11 +127=11 +128=4 +129=11 +130=4 +131=16 +132=8 +133=9 +134=12 +135=8 +136=16 +137=4 +138=8 +139=12 +140=7 +141=7 +142=4 +143=11 +144=12 +145=6 +146=4 +147=7 +148=8 +149=9 +150=17 +151=17 +152=17 +153=11 +154=13 +155=13 +156=13 +157=13 +158=13 +159=13 +160=19 +161=14 +162=12 +163=12 +164=12 +165=12 +166=5 +167=5 +168=5 +169=5 +170=14 +171=14 +172=15 +173=15 +174=15 +175=15 +176=15 +177=12 +178=15 +179=14 +180=14 +181=14 +182=14 +183=13 +184=13 +185=11 +186=11 +187=11 +188=11 +189=11 +190=11 +191=11 +192=17 +193=11 +194=11 +195=11 +196=11 +197=11 +198=4 +199=4 +200=4 +201=4 +202=11 +203=11 +204=11 +205=11 +206=11 +207=11 +208=11 +209=12 +210=11 +211=11 +212=11 +213=11 +214=11 +215=10 +216=12 +217=10 + +[alt] +Line 0= Ą˘Ł¤ĽŚ§¨Š +Line 1=ŞŤŹ­ŽŻ°ą˛ł +Line 2=´ľśˇ¸šşťź˝ +Line 3=žżŔÁÂĂÄĹĆÇ +Line 4=ČÉĘËĚÍÎĎĐŃ +Line 5=ŇÓÔŐÖ×ŘŮÚŰ +Line 6=ÜÝŢßŕáâăäĺ +Line 7=ćçčéęëěíîď +Line 8=đńňóôőö÷řů +Line 9=úűüýţ˙ + +0=6 +1=13 +2=4 +3=11 +4=11 +5=10 +6=13 +7=11 +8=4 +9=13 +10=13 +11=12 +12=12 +13=8 +14=12 +15=12 +16=8 +17=11 +18=4 +19=4 +20=4 +21=6 +22=10 +23=4 +24=4 +25=10 +26=10 +27=8 +28=9 +29=4 +30=10 +31=9 +32=14 +33=13 +34=13 +35=13 +36=13 +37=11 +38=14 +39=14 +40=14 +41=12 +42=13 +43=12 +44=13 +45=5 +46=5 +47=14 +48=14 +49=13 +50=13 +51=15 +52=15 +53=16 +54=15 +55=12 +56=14 +57=13 +58=14 +59=13 +60=14 +61=13 +62=12 +63=11 +64=7 +65=11 +66=11 +67=11 +68=11 +69=4 +70=10 +71=11 +72=10 +73=11 +74=11 +75=11 +76=11 +77=4 +78=4 +79=12 +80=11 +81=10 +82=10 +83=11 +84=11 +85=11 +86=11 +87=12 +88=7 +89=10 +90=11 +91=10 +92=11 +93=10 +94=6 +95=4 diff --git a/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px [alt] 10x10 (doubleres).png b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px [alt] 10x10 (doubleres).png new file mode 100644 index 0000000000..a8fae83a8b Binary files /dev/null and b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px [alt] 10x10 (doubleres).png differ diff --git a/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px [main] 15x15 (doubleres).png b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px [main] 15x15 (doubleres).png new file mode 100644 index 0000000000..a0ca9862d5 Binary files /dev/null and b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px [main] 15x15 (doubleres).png differ diff --git a/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px.ini b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px.ini new file mode 100644 index 0000000000..2ea8276e2b --- /dev/null +++ b/Themes/dimension-tripper/Fonts/helveticaneue/_helveticaneuelt std 28px.ini @@ -0,0 +1,352 @@ +[common] +Baseline=29 +Top=7 +LineSpacing=33 +DrawExtraPixelsLeft=2 +DrawExtraPixelsRight=0 +AdvanceExtraPixels=0 + +[main] +Line 0= !"#$%&'()*+,-. +Line 1=/0123456789:;<= +Line 2=>?@ABCDEFGHIJKL +Line 3=MNOPQRSTUVWXYZ[ +Line 4=\]^_`abcdefghij +Line 5=klmnopqrstuvwxy +Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š +Line 7=‹ŒŽ‘’“”•–—˜™š›œ +Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬ +Line 9=­®¯°±²³´µ¶·¸¹º» +Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ +Line 11=ËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ +Line 12=ÚÛÜÝÞßàáâãäåæçè +Line 13=éêëìíîïðñòóôõö÷ +Line 14=øùúûüýþÿ + +0=8 +1=7 +2=12 +3=16 +4=16 +5=28 +6=18 +7=8 +8=7 +9=7 +10=10 +11=17 +12=8 +13=11 +14=8 +15=9 +16=16 +17=16 +18=16 +19=16 +20=16 +21=16 +22=16 +23=16 +24=16 +25=16 +26=8 +27=8 +28=17 +29=17 +30=17 +31=16 +32=22 +33=18 +34=19 +35=20 +36=20 +37=17 +38=16 +39=21 +40=20 +41=7 +42=15 +43=19 +44=16 +45=24 +46=20 +47=21 +48=18 +49=21 +50=19 +51=18 +52=16 +53=20 +54=17 +55=26 +56=17 +57=18 +58=17 +59=7 +60=9 +61=7 +62=17 +63=14 +64=6 +65=15 +66=17 +67=15 +68=17 +69=15 +70=8 +71=16 +72=16 +73=6 +74=6 +75=15 +76=6 +77=24 +78=16 +79=16 +80=17 +81=17 +82=9 +83=14 +84=9 +85=16 +86=14 +87=21 +88=15 +89=14 +90=13 +91=9 +92=6 +93=9 +94=17 +95=16 +96=8 +97=16 +98=12 +99=28 +100=16 +101=16 +102=6 +103=32 +104=18 +105=7 +106=30 +107=17 +108=8 +109=8 +110=12 +111=12 +112=14 +113=14 +114=28 +115=6 +116=28 +117=14 +118=7 +119=25 +120=13 +121=18 +122=8 +123=7 +124=16 +125=16 +126=16 +127=16 +128=6 +129=16 +130=6 +131=22 +132=11 +133=13 +134=17 +135=11 +136=22 +137=6 +138=11 +139=17 +140=9 +141=9 +142=6 +143=16 +144=17 +145=8 +146=6 +147=9 +148=11 +149=13 +150=23 +151=23 +152=23 +153=16 +154=18 +155=18 +156=18 +157=18 +158=18 +159=18 +160=26 +161=20 +162=17 +163=17 +164=17 +165=17 +166=7 +167=7 +168=7 +169=7 +170=20 +171=20 +172=21 +173=21 +174=21 +175=21 +176=21 +177=17 +178=21 +179=20 +180=20 +181=20 +182=20 +183=18 +184=18 +185=16 +186=15 +187=15 +188=15 +189=15 +190=15 +191=15 +192=24 +193=15 +194=15 +195=15 +196=15 +197=15 +198=6 +199=6 +200=6 +201=6 +202=16 +203=16 +204=16 +205=16 +206=16 +207=16 +208=16 +209=17 +210=16 +211=16 +212=16 +213=16 +214=16 +215=14 +216=17 +217=14 + +[alt] +Line 0= Ą˘Ł¤ĽŚ§¨Š +Line 1=ŞŤŹ­ŽŻ°ą˛ł +Line 2=´ľśˇ¸šşťź˝ +Line 3=žżŔÁÂĂÄĹĆÇ +Line 4=ČÉĘËĚÍÎĎĐŃ +Line 5=ŇÓÔŐÖ×ŘŮÚŰ +Line 6=ÜÝŢßŕáâăäĺ +Line 7=ćçčéęëěíîď +Line 8=đńňóôőö÷řů +Line 9=úűüýţ˙ + +0=8 +1=13 +2=6 +3=16 +4=16 +5=10 +6=13 +7=16 +8=6 +9=18 +10=13 +11=12 +12=12 +13=11 +14=17 +15=12 +16=11 +17=11 +18=6 +19=6 +20=6 +21=6 +22=10 +23=6 +24=6 +25=14 +26=10 +27=8 +28=9 +29=6 +30=13 +31=9 +32=14 +33=18 +34=18 +35=13 +36=18 +37=11 +38=14 +39=20 +40=14 +41=17 +42=13 +43=17 +44=13 +45=7 +46=7 +47=14 +48=14 +49=13 +50=13 +51=21 +52=21 +53=16 +54=21 +55=17 +56=14 +57=13 +58=20 +59=13 +60=20 +61=18 +62=12 +63=16 +64=7 +65=15 +66=15 +67=11 +68=15 +69=4 +70=10 +71=15 +72=10 +73=15 +74=11 +75=15 +76=11 +77=6 +78=6 +79=12 +80=11 +81=10 +82=10 +83=16 +84=16 +85=11 +86=16 +87=17 +88=7 +89=10 +90=16 +91=10 +92=16 +93=14 +94=6 +95=6 diff --git a/Themes/dimension-tripper/Graphics/MusicWheel highlight.lua b/Themes/dimension-tripper/Graphics/MusicWheel highlight.lua new file mode 100644 index 0000000000..c06f7ab47d --- /dev/null +++ b/Themes/dimension-tripper/Graphics/MusicWheel highlight.lua @@ -0,0 +1,23 @@ +local Metric = function(c,k) return tonumber(THEME:GetMetric(c, k)) end +local width = Theme.MusicWheelItemWidth() +local height = Metric("MusicWheel", "ItemHeight") +local offset = Metric("MusicWheel", "ItemOffset") + +return Def.ActorFrame { + Def.Quad { + InitCommand=function(self) + self:x(offset) + self:setsize(width,height) + self:blend('BlendMode_Add') + self:diffuse({1, 0.8, 0.7, 0.1}) + self:effectclock('beat') + end, + CurrentSongChangedMessageCommand=function(self, params) + if not GAMESTATE:GetCurrentSong() then + self:stopeffect() + else + self:thump() + end + end + } +} \ No newline at end of file diff --git a/Themes/dimension-tripper/Graphics/MusicWheelItem Roulette NormalPart.lua b/Themes/dimension-tripper/Graphics/MusicWheelItem Roulette NormalPart.lua new file mode 100644 index 0000000000..dcba359dd0 --- /dev/null +++ b/Themes/dimension-tripper/Graphics/MusicWheelItem Roulette NormalPart.lua @@ -0,0 +1,43 @@ +local t = Def.ActorFrame {} + +local Metric = function(c,k) return tonumber(THEME:GetMetric(c, k)) end +local width = Theme.MusicWheelItemWidth() +local height = Metric("MusicWheel", "ItemHeight") +local offset = Metric("MusicWheel", "ItemOffset") + +-- background mask +t[#t+1] = Def.Quad {} +t[#t].InitCommand = function(self) + self:x(offset) + self:setsize(width, height) + self:diffuse({0, 0, 0, 0.6}) +end + +t[#t+1] = LoadActor(THEME:GetPathG("", "_texture checkerboard")) +t[#t].InitCommand = function(self) + self:rainbow() + self:diffusealpha(0.05) + self:stretchto(-width/2 + offset, -height/2, width/2 + offset, height/2) + self:customtexturerect(0, 0, width/32, height/32) + self:texcoordvelocity(0.5, 0.25) +end + +t[#t+1] = LoadActor(THEME:GetPathG("", "_texture checkerboard")) +t[#t].InitCommand = function(self) + self:rainbow() + self:diffusealpha(0.05) + self:stretchto(-width/2 + offset, -height/2, width/2 + offset, height/2) + self:customtexturerect(0, 0, width/32, height/32) + self:texcoordvelocity(0.5, -0.25) +end + +t[#t+1] = LoadActor(THEME:GetPathG("", "_texture checkerboard")) +t[#t].InitCommand = function(self) + self:rainbow() + self:diffusealpha(0.05) + self:stretchto(-width/2 + offset, -height/2, width/2 + offset, height/2) + self:customtexturerect(0, 0, width/32, height/32) + self:texcoordvelocity(-0, 0.5) +end + +return t diff --git a/Themes/dimension-tripper/Graphics/MusicWheelItem SectionCollapsed NormalPart.lua b/Themes/dimension-tripper/Graphics/MusicWheelItem SectionCollapsed NormalPart.lua new file mode 100644 index 0000000000..be157322f5 --- /dev/null +++ b/Themes/dimension-tripper/Graphics/MusicWheelItem SectionCollapsed NormalPart.lua @@ -0,0 +1,27 @@ +local t = Def.ActorFrame {} + +local Metric = function(c,k) return tonumber(THEME:GetMetric(c, k)) end +local width = Theme.MusicWheelItemWidth() +local height = Metric("MusicWheel", "ItemHeight") +local offset = Metric("MusicWheel", "ItemOffset") + +-- background top +t[#t+1] = Def.Quad {} +t[#t].InitCommand = function(self) + self:x(offset) + self:vertalign(bottom) + self:setsize(width, height/2) + self:diffusetopedge({0.05, 0.05, 0.05, 0.6}) + self:diffusebottomedge({0.0, 0.0, 0.0, 0.6}) +end + +-- background bottom +t[#t+1] = Def.Quad {} +t[#t].InitCommand = function(self) + self:x(offset) + self:vertalign(top) + self:setsize(width, height/2) + self:diffuse({0, 0, 0, 0.6}) +end + +return t diff --git a/Themes/dimension-tripper/Graphics/MusicWheelItem SectionExpanded NormalPart.lua b/Themes/dimension-tripper/Graphics/MusicWheelItem SectionExpanded NormalPart.lua new file mode 100644 index 0000000000..b203cb0e70 --- /dev/null +++ b/Themes/dimension-tripper/Graphics/MusicWheelItem SectionExpanded NormalPart.lua @@ -0,0 +1,27 @@ +local t = Def.ActorFrame {} + +local Metric = function(c,k) return tonumber(THEME:GetMetric(c, k)) end +local width = Theme.MusicWheelItemWidth() +local height = Metric("MusicWheel", "ItemHeight") +local offset = Metric("MusicWheel", "ItemOffset") + +-- background top +t[#t+1] = Def.Quad {} +t[#t].InitCommand = function(self) + self:x(offset) + self:vertalign(bottom) + self:setsize(width, height/2) + self:diffuse({0.1, 0.1, 0.1, 0.6}) +end + +-- background bottom +t[#t+1] = Def.Quad {} +t[#t].InitCommand = function(self) + self:x(offset) + self:vertalign(top) + self:setsize(width, height/2) + self:diffusebottomedge({0.2, 0.2, 0.2, 0.6}) + self:diffusetopedge({0.1, 0.1, 0.1, 0.6}) +end + +return t diff --git a/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua b/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua new file mode 100644 index 0000000000..81e31e6678 --- /dev/null +++ b/Themes/dimension-tripper/Graphics/MusicWheelItem Song NormalPart.lua @@ -0,0 +1,153 @@ +local t = Def.ActorFrame {} + +local Metric = function(c,k) return tonumber(THEME:GetMetric(c, k)) end +local width = Theme.MusicWheelItemWidth() +local height = Metric("MusicWheel", "ItemHeight") +local offset = Metric("MusicWheel", "ItemOffset") + +-- genre gen <3 +local function GenerateRandomColors(song) + if not song then return 0, {} end + + -- randomseed truncates float values, but we need more randomness. + -- move the number over several digits to compensate. + local length = song:MusicLengthSeconds() + + if song:GetDisplayMainTitle() == "DVNO" then + return 2, { { 1, 0.8, 0, 1 }, { 1, 0.6, 0, 1 } } + end + + if song:GetDisplayMainTitle() == "The Witches' Ball" then + return 3, { { 0.2, 0.1, 0.3, 1 }, { 0.7, 0.7, 1.0, 1 }, { 0.2, 0.1, 0.3, 1 } } + end + + -- BMS files without BGM mess with this (zero). Use 120 instead. + if length == 0 then + length = 120 + elseif length == 105 then -- ITG length hack + length = 1001 + end + local seed = 10000*length + math.randomseed(seed) + + -- Vary the amount of words returned, based on the seed. + local rand = math.random() + + -- chances for word amount: + -- 2/10 for one, 7/10 for two, 1/10 for three + if rand < 0.2 then num = 1 + elseif rand > 0.9 then num = 3 + else num = 2 end + + colors = {} + for i=1,num do + colors[i] = {} + math.randomseed(seed) + colors[i][1] = math.random(); + math.randomseed(seed+5) + colors[i][2] = math.random(); + math.randomseed(seed+10) + colors[i][3] = math.random(); + math.randomseed(seed+15) + colors[i][4] = clamp(math.random(), 0.75, 1.0) + seed = seed + 1 + end + return num, colors +end + +local t2 = Def.ActorFrame { + SetMessageCommand = function(self, params) + local song = params.Song + + local num, colors = GenerateRandomColors(song) + + local children = {} + for i=1,self:GetNumChildren() do + children[i] = self:GetChild("MusicWheel_Quad"..i) + end + for k, v in pairs(children) do + v:visible(false) + if k <= num and song then + v:visible(true) + v:x(math.ceil(-width/2 + ((width-1)/num)*(k-1))) + local sub = num % 2 == 0 and 1 or 0 + v:setsize(math.ceil((width-sub)/num), height) + v:diffuse(colors[k]) + end + end + end +} + +for i=1,3 do + t2[#t2+1] = Def.Quad { + Name="MusicWheel_Quad"..i, + InitCommand=function(self) + self:horizalign(left) + self:vertalign(bottom) + self:y(math.ceil(height/2)) + self:diffusealpha(0.0) + end + } +end + +t[#t+1] = t2 + +t[#t+1] = LoadActor(THEME:GetPathG("", "_texture checkerboard")) +t[#t].InitCommand = function(self) + self:stretchto(-width/2 + offset, -height/2*0.8, width/2 + offset, height/2*0.8) + self:customtexturerect(0, 0, width/16, height/16) + self:texcoordvelocity(0, 0.25) +end +t[#t].SetMessageCommand = function(self, params) + local song = params.Song + local num, colors = GenerateRandomColors(song) + + if not colors[num] then return end + colors[num][1] = colors[num][1] + 0.25 + colors[num][2] = colors[num][2] + 0.25 + colors[num][3] = colors[num][3] + 0.25 + + self:SetTextureFiltering(false) + colors[num][4] = 0.125 + self:blend(Blend.Add) + self:diffuse(colors[num]) +end + +-- background +t[#t+1] = Def.Quad {} +t[#t].InitCommand = function(self) + self:setsize(width, height * 0.8) + self:diffuse({0, 0, 0, 0.7}) +end + +t[#t+1] = LoadActor(THEME:GetPathG("", "_shigu")) +t[#t].InitCommand = cmd(visible,false;x,width/2-32;zoom,0.25;animate,false) +t[#t].SetMessageCommand = function(self, params) + local song = params.Song + + if song and song:GetDisplayMainTitle():lower() == "sigsig" then + self:visible(true) + if params.HasFocus then + self:animate(true) + else + self:setstate(0) + self:animate(false) + end + else + self:visible(false) + end +end + +t[#t+1] = LoadActor(THEME:GetPathG("", "_hax")) +t[#t].InitCommand = cmd(visible,false;x,width/2-32;zoom,0.25;animate,false) +t[#t].SetMessageCommand = function(self, params) + local song = params.Song + + if song and song:MusicLengthSeconds() == 105 then + self:visible(true) + else + self:visible(false) + end +end + +return t diff --git a/Themes/dimension-tripper/Graphics/ScreenTitleMenu scroll.lua b/Themes/dimension-tripper/Graphics/ScreenTitleMenu scroll.lua new file mode 100644 index 0000000000..a823dfb88c --- /dev/null +++ b/Themes/dimension-tripper/Graphics/ScreenTitleMenu scroll.lua @@ -0,0 +1,16 @@ +local gc = Var("GameCommand"); + +return Def.ActorFrame { + Def.Quad { + InitCommand=cmd(zoomto,256,26;fadeleft,0.45;faderight,0.45), + OnCommand=cmd(diffuseshift;effectcolor1,color("0,0,0,0.5");effectcolor2,color("0,0,0,0.5")), + GainFocusCommand=cmd(stoptweening;decelerate,0.1;zoomto,256,26;diffusealpha,1), + LoseFocusCommand=cmd(stoptweening;accelerate,0.1;zoomto,SCREEN_WIDTH/2,0;diffusealpha,0) + }, + LoadFont("Common Normal") .. { + Text=THEME:GetString("ScreenTitleMenu",gc:GetText()), + OnCommand=cmd(shadowlength,1), + GainFocusCommand=cmd(stoptweening;linear,0.1;zoom,1;diffuse,color("1,1,1,1")), + LoseFocusCommand=cmd(stoptweening;linear,0.1;zoom,0.75;diffuse,color("0.5,0.5,0.5,1")) + } +} diff --git a/Themes/dimension-tripper/Graphics/_hax.png b/Themes/dimension-tripper/Graphics/_hax.png new file mode 100644 index 0000000000..cf49202ce0 Binary files /dev/null and b/Themes/dimension-tripper/Graphics/_hax.png differ diff --git a/Themes/dimension-tripper/Graphics/_shigu 3x1.png b/Themes/dimension-tripper/Graphics/_shigu 3x1.png new file mode 100644 index 0000000000..96772fa734 Binary files /dev/null and b/Themes/dimension-tripper/Graphics/_shigu 3x1.png differ diff --git a/Themes/dimension-tripper/Graphics/_texture checkerboard.png b/Themes/dimension-tripper/Graphics/_texture checkerboard.png new file mode 100644 index 0000000000..84af4315a7 Binary files /dev/null and b/Themes/dimension-tripper/Graphics/_texture checkerboard.png differ diff --git a/Themes/dimension-tripper/Scripts/theme.lua b/Themes/dimension-tripper/Scripts/theme.lua new file mode 100644 index 0000000000..122f04c0d1 --- /dev/null +++ b/Themes/dimension-tripper/Scripts/theme.lua @@ -0,0 +1,94 @@ +Theme = {} + +Theme.MusicWheelItemWidth = function() + return tonumber(THEME:GetMetric("MusicWheel", "ItemWidth")) +end + +Theme.MusicWheelTitleSet = function(self, params) + local song = params.Song + if not song then return end + local width = Theme.MusicWheelItemWidth()-20 + local title = song:GetDisplayFullTitle() + local artist = song:GetDisplayArtist() + if title == "Let It Flow" and artist == "BANTU" then + self:jitter(true) + else + self:jitter(false) + end + if title:find("Katamari") then + self:rainbowscroll(true) + else + self:rainbowscroll(false) + end + if title == "KING of the SEA" then + self:zoom(1.5) + self:maxwidth(width*(1/1.5)) + end + if (title:lower():find("hardstyle") or title:lower():find("hardcore")) and + params.HasFocus then + self:diffuseramp() + self:effectclock("bgm") + self:effectcolor1(color("#ccaaaa")) + else + self:stopeffect() + end + if artist == "Angerfist" and params.HasFocus then + self:diffuseramp() + self:effectclock("bgm") + self:effectcolor1(color("#ffaaaa")) + else + self:stopeffect() + end +end + +Theme.MusicWheelSubtitleSet=function(self, params) + local song = params.Song + if not song then return end + + -- I've got a few simfiles here with an annoying prefix here. + local subtitle = song:GetDisplaySubTitle() + if subtitle:sub(1, 2) == "- " then + self:settext(subtitle:sub(3)) + end +end + +Theme.MusicWheelArtistSet=function(self, params) + self:diffuse(color("#aaaaaa")) +end + +Theme.MusicWheelAfterSet=function(self, params) + local width = Theme.MusicWheelItemWidth()-20 + local mainMaxWidth = width + local subMaxWidth = width*(1/0.55) + local artistMaxWidth = width*(1/0.66) + local Title = self:GetChild("Title") + local Subtitle = self:GetChild("Subtitle") + local Artist = self:GetChild("Artist") + + if Subtitle:GetText() == "" then + Title:maxwidth(mainMaxWidth) + Title:y(-8) + Title:zoom(1) + + -- hide so that the game skips drawing. + Subtitle:visible(false) + + Artist:zoom(0.66) + Artist:maxwidth(artistMaxWidth) + Artist:y(8) + else + Title:maxwidth(mainMaxWidth*1.25) + Title:y(-11) + Title:zoom(0.75) + + -- subtitle below title + Subtitle:visible(true) + Subtitle:zoom(0.55) + Subtitle:y(0) + Subtitle:maxwidth(subMaxWidth) + + Artist:zoom(0.6) + Artist:maxwidth(artistMaxWidth) + Artist:y(10) + end +end diff --git a/Themes/dimension-tripper/ThemeInfo.ini b/Themes/dimension-tripper/ThemeInfo.ini new file mode 100644 index 0000000000..cc682601ba --- /dev/null +++ b/Themes/dimension-tripper/ThemeInfo.ini @@ -0,0 +1,3 @@ +[ThemeInfo] +DisplayName=Dimension Tripper +Author=shakesoda \ No newline at end of file diff --git a/Themes/dimension-tripper/metrics.ini b/Themes/dimension-tripper/metrics.ini new file mode 100644 index 0000000000..3ffb8e2004 --- /dev/null +++ b/Themes/dimension-tripper/metrics.ini @@ -0,0 +1,173 @@ +[Global] +FallbackTheme=_fallback + +[FadingBanner] +BannerFadeFromCachedCommand=diffusealpha,1;stoptweening;accelerate,0.05;glow,Color.Alpha( Color("White"), 0.45 );decelerate,0.075;diffusealpha,0;glow,Color("Invisible"); +BannerOnCommand= +BannerFadeFromCachedCommand=diffusealpha,1;stoptweening;linear,0.1;glow,Color.Alpha(Color("White"),0.25);decelerate,0.15;glow,Color.Invisible;diffusealpha,0 +BannerFadeOffCommand=diffusealpha,1;stoptweening;linear,0.1;diffusealpha,0 +BannerResetFadeCommand=diffusealpha,1 + +[ScreenWithMenuElements] +ShowHeader=true +HeaderX=SCREEN_CENTER_X +HeaderY=SCREEN_TOP +HeaderOnCommand= +HeaderOffCommand= + +ShowFooter=true +FooterX=SCREEN_CENTER_X +FooterY=SCREEN_BOTTOM +FooterOnCommand= +FooterOffCommand= + +TimerX=SCREEN_RIGHT-32 +TimerY=SCREEN_TOP+40-4.5 +TimerOnCommand= +TimerOffCommand= + +[MenuTimer] +Text1OnCommand=stopeffect;stoptweening;vertalign,bottom;horizalign,right;shadowlengthy,1 +Text1FormatFunction=function(time) \ + return string.format("%0.0f", math.floor(time)) \ +end +Text2OnCommand=stopeffect;stoptweening;vertalign,bottom;horizalign,left;zoom,0.6;shadowlengthy,1 +Text2FormatFunction=function(time) local remainder=time-math.floor(time); local digit=math.floor(remainder*100); return string.format("%02.0f", digit) end +FrameOnCommand= +Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1"); + +[ScreenTitleMenu] +ShowHeader=true +ShowFooter=true + +ScrollerColors="Exit:#ff0000" + +[StepsDisplay] +FrameX=0 +FrameY=0 +FrameOnCommand= +FrameLoadCommand= +FrameSetCommand=%function(self,param) if param.CustomDifficulty then self:diffuse(CustomDifficultyToDarkColor(param.CustomDifficulty)) end end + +NumTicks=10 +MaxTicks=10 +TicksX=0 +TicksY=0 +TicksOnCommand=shadowlength,0; +TicksSetCommand=%function(self,param) end; + +MeterX=(128+32)/2 +MeterY=-1 +MeterOnCommand=textglowmode,"TextGlowMode_Inner";shadowlength,1.5; +MeterSetCommand=%function(self,param) \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + end; \ + if param.Meter then \ + if param.Meter >= 100 then \ + self:basezoom(0.8); \ + self:glowshift(); \ + elseif param.Meter >= 10 then \ + self:basezoom(1); \ + self:glowshift(); \ + else \ + self:basezoom(1); \ + self:stopeffect(); \ + end; \ + end; \ +end; + +ShowDescription=true +DescriptionX=(-32)/2 +DescriptionY=-1 +DescriptionOnCommand=shadowlength,1.5; +DescriptionSetCommand=%function(self,param) \ + if self:GetText() == "" then \ + self:settext("Edit"); \ + end; \ + if param.CustomDifficulty then \ + self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ + end; \ +end; + +ShowAutogen=false +AutogenX=0 +AutogenY=0 +AutogenOnCommand= +AutogenSetCommand= +AutogenTweenOnCommand= +AutogenTweenOffCommand= + +ShowStepsType=false +StepsTypeX=0 +StepsTypeY=0 +StepsTypeOnCommand= + +[ScreenSelectMusic] +BannerX=SCREEN_CENTER_X +BannerY=SCREEN_CENTER_Y-65 +BannerOnCommand=scaletoclipped,256,80 + +MusicWheelX=SCREEN_CENTER_X +MusicWheelY=SCREEN_CENTER_Y-150 +MusicWheelOnCommand=draworder,-1 + +[MusicWheel] +ItemWidth=math.max(math.ceil(SCREEN_WIDTH/3), 220) +ItemHeight=70 +ItemOffset=0 +ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ + local threshold, distance = 1, Theme.MusicWheelItemWidth() \ + function sign(x) return x > 0 and 1 or x < 0 and -1 or 0 end \ + self:y((math.abs(offsetFromCenter)-1) * 70) \ + if offsetFromCenter < threshold and offsetFromCenter > -threshold then \ + self:x(offsetFromCenter * distance) \ + self:y(0) \ + elseif offsetFromCenter <= -threshold then \ + self:x(-distance * threshold) \ + elseif offsetFromCenter >= threshold then \ + self:x(distance * threshold) \ + end \ +end +NumWheelItems=16 + +[MusicWheelItem] +WheelNotifyIconX=-128-16+0.5 +WheelNotifyIconOnCommand=shadowlength,2; +SongNameX=-Theme.MusicWheelItemWidth()/2+10 +CourseX=-120 +CourseOnCommand=maxwidth,208;horizalign,left +SectionExpandedX=-Theme.MusicWheelItemWidth()/2+10 +SectionExpandedY=0 +SectionExpandedOnCommand=maxwidth,194;horizalign,left;shadowcolor,color("0.1,0.1,0.1,0.25") +SectionCollapsedX=-Theme.MusicWheelItemWidth()/2+10 +SectionCollapsedY=0 +SectionCollapsedOnCommand=maxwidth,194;horizalign,left;shadowcolor,color("0.1,0.1,0.1,0.2") +SectionCountX=Theme.MusicWheelItemWidth()/2-20 +SectionCountOnCommand=zoom,0.75;strokecolor,Color("Outline") +RouletteOnCommand=maxwidth,400;shadowlength,1;basezoom,0.75;rainbowscroll,true;pulse;effectmagnitude,1,1.125,1;effectperiod,3 +SortX=-132 +SortY=-2 +SortOnCommand=maxwidth,256;horizalign,left;shadowlength,1;shadowcolor,color("0,0,0,0.325") +ModeX=-132 +ModeY=-2 +ModeOnCommand=maxwidth,256;horizalign,left;strokecolor,Color("Outline") +GradeP1X=106+16 +GradeP1Y=-8 +GradeP2X=110+16 +GradeP2Y=8 + +[TextBanner] +TitleOnCommand=horizalign,left;shadowlengthy,1;shadowcolor,color("0,0,0,0.5") +; lots of misc effects for songs +TitleSetMessageCommand=%Theme.MusicWheelTitleSet +SubtitleOnCommand=horizalign,left;shadowlengthy,1;shadowcolor,color("0,0,0,0.5") +SubtitleSetMessageCommand=%Theme.MusicWheelSubtitleSet +ArtistOnCommand=horizalign,left;shadowlengthy,1;shadowcolor,color("0,0,0,0.5") +ArtistSetMessageCommand=%Theme.MusicWheelArtistSet +ArtistPrependString="/" +AfterSetCommand=%Theme.MusicWheelAfterSet + +[SongManager] +SongGroupColor1=color("#ffffff") -- white +ExtraColor=color("#ffaa88") -- pink