From d9aee675377006570b210272f930f2775c119055 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 3 Jul 2010 20:55:25 -0500 Subject: [PATCH] various theme changes from midi --- .../BGAnimations/ScreenSystemLayer aux.lua | 49 ++++++ .../ScreenSystemLayer overlay/default.lua | 1 + .../Fonts/ScreenSystemLayer Credits.redir | 1 + Themes/_fallback/Scripts/02 Branches.lua | 16 +- Themes/_fallback/Scripts/02 Sprite.lua | 14 ++ .../Sounds/ScreenDemonstration music.redir | 1 + .../_fallback/Sounds/ScreenInit music.redir | 1 + .../_fallback/Sounds/ScreenTitle music.redir | 1 + .../Sounds/ScreenTitleJoin music.redir | 1 + Themes/_fallback/metrics.ini | 82 +++++++-- .../ScreenEvaluation background/default.lua | 3 +- .../BGAnimations/ScreenGameplay in.redir | 1 - .../ScreenGameplay in/default.lua | 7 + .../default.lua | 9 +- .../BGAnimations/ScreenTitleMenu out.lua | 6 - .../default/Graphics/Player combo/default.lua | 4 +- .../Graphics/ScreenSelectMusic BPMLabel.lua | 4 +- .../ScreenWithMenuElements header/default.lua | 2 +- .../default/Graphics/StepsDisplay frame.png | Bin 3759 -> 3831 bytes .../Graphics/StepsDisplayGameplay frame.png | Bin 0 -> 3759 bytes Themes/default/metrics.ini | 166 ++++++++++++++---- .../default/~res/StepsDisplayMusic frame.psd | Bin 94509 -> 124145 bytes 22 files changed, 291 insertions(+), 78 deletions(-) create mode 100644 Themes/_fallback/BGAnimations/ScreenSystemLayer aux.lua create mode 100644 Themes/_fallback/Fonts/ScreenSystemLayer Credits.redir create mode 100644 Themes/_fallback/Sounds/ScreenDemonstration music.redir create mode 100644 Themes/_fallback/Sounds/ScreenInit music.redir create mode 100644 Themes/_fallback/Sounds/ScreenTitle music.redir create mode 100644 Themes/_fallback/Sounds/ScreenTitleJoin music.redir delete mode 100644 Themes/default/BGAnimations/ScreenGameplay in.redir create mode 100644 Themes/default/BGAnimations/ScreenGameplay in/default.lua delete mode 100644 Themes/default/BGAnimations/ScreenTitleMenu out.lua create mode 100644 Themes/default/Graphics/StepsDisplayGameplay frame.png diff --git a/Themes/_fallback/BGAnimations/ScreenSystemLayer aux.lua b/Themes/_fallback/BGAnimations/ScreenSystemLayer aux.lua new file mode 100644 index 0000000000..858f45d252 --- /dev/null +++ b/Themes/_fallback/BGAnimations/ScreenSystemLayer aux.lua @@ -0,0 +1,49 @@ +local function CreditsText( pn ) + function update(self) + local str = ScreenSystemLayerHelpers.GetCreditsMessage(pn); + self:settext(str); + end + + function UpdateVisible(self) + local screen = SCREENMAN:GetTopScreen(); + local bShow = true; + if screen then + local sClass = screen:GetName(); + bShow = THEME:GetMetric( sClass, "ShowCreditDisplay" ); + end + + self:visible( bShow ); + end + + local text = LoadFont(Var "LoadingScreen","credits") .. { + InitCommand=function(self) + self:name("Credits" .. PlayerNumberToString(pn)) + ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen"); + end; + UpdateTextCommand=function(self) + local str = ScreenSystemLayerHelpers.GetCreditsMessage(pn); + self:settext(str); + end; + UpdateVisibleCommand=function(self) + local screen = SCREENMAN:GetTopScreen(); + local bShow = true; + if screen then + local sClass = screen:GetName(); + bShow = THEME:GetMetric( sClass, "ShowCreditDisplay" ); + end + + self:visible( bShow ); + end; +--[[ RefreshCreditTextMessageCommand=update; + CoinInsertedMessageCommand=update; + PlayerJoinedMessageCommand=update; + ScreenChangedMessageCommand=UpdateVisible; --]] + }; + return text; +end + +local t = Def.ActorFrame { + CreditsText( PLAYER_1 ); + CreditsText( PLAYER_2 ); +}; +return t; \ No newline at end of file diff --git a/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua b/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua index ce4d73c202..9195d3f157 100644 --- a/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua +++ b/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua @@ -22,4 +22,5 @@ local t = Def.ActorFrame { HideSystemMessageMessageCommand = cmd(finishtweening); }; }; +t[#t+1] = LoadActor(THEME:GetPathB("ScreenSystemLayer","aux")); return t; diff --git a/Themes/_fallback/Fonts/ScreenSystemLayer Credits.redir b/Themes/_fallback/Fonts/ScreenSystemLayer Credits.redir new file mode 100644 index 0000000000..5c6053f7f1 --- /dev/null +++ b/Themes/_fallback/Fonts/ScreenSystemLayer Credits.redir @@ -0,0 +1 @@ +Common Normal \ No newline at end of file diff --git a/Themes/_fallback/Scripts/02 Branches.lua b/Themes/_fallback/Scripts/02 Branches.lua index 43bc74b663..55ee6e2d09 100644 --- a/Themes/_fallback/Scripts/02 Branches.lua +++ b/Themes/_fallback/Scripts/02 Branches.lua @@ -27,6 +27,20 @@ function SelectMusicOrCourse() end Branch = { + Init = function() + if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then + return "ScreenInit" + else + return "ScreenInit" + end + end, + AfterInit = function() + if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then + return Branch.TitleMenu() + else + return "ScreenTitle" + end + end, TitleMenu = function() -- home mode is the most assumed use of sm-ssc. if GAMESTATE:GetCoinMode() == "CoinMode_Home" then @@ -37,7 +51,7 @@ Branch = { -- if no credits are inserted, don't show the Join screen. SM4 has -- this as the initial screen, but that means we'd be stuck in a -- loop with ScreenInit. No good. - return "ScreenDemonstration" + return "ScreenTitleJoin" else return "ScreenTitleJoin" end diff --git a/Themes/_fallback/Scripts/02 Sprite.lua b/Themes/_fallback/Scripts/02 Sprite.lua index 30baef8a32..e532d1c4a5 100644 --- a/Themes/_fallback/Scripts/02 Sprite.lua +++ b/Themes/_fallback/Scripts/02 Sprite.lua @@ -27,6 +27,20 @@ function LoadSongBackground() } end +function Sprite:LoadFromCurrentSongBackground() + local song = GAMESTATE:GetCurrentSong(); + if not song then + local trail = GAMESTATE:GetCurrentTrail(GAMESTATE:GetMasterPlayerNumber()); + local e = trail:GetEntries() + if #e > 0 then + song = e[1]:GetSong(); + end + end + + if not song then return end + + self:LoadFromSongBackground(song); +end function Sprite:position( f ) self:GetTexture():position( f ) diff --git a/Themes/_fallback/Sounds/ScreenDemonstration music.redir b/Themes/_fallback/Sounds/ScreenDemonstration music.redir new file mode 100644 index 0000000000..1f8565ca21 --- /dev/null +++ b/Themes/_fallback/Sounds/ScreenDemonstration music.redir @@ -0,0 +1 @@ +_silent \ No newline at end of file diff --git a/Themes/_fallback/Sounds/ScreenInit music.redir b/Themes/_fallback/Sounds/ScreenInit music.redir new file mode 100644 index 0000000000..1f8565ca21 --- /dev/null +++ b/Themes/_fallback/Sounds/ScreenInit music.redir @@ -0,0 +1 @@ +_silent \ No newline at end of file diff --git a/Themes/_fallback/Sounds/ScreenTitle music.redir b/Themes/_fallback/Sounds/ScreenTitle music.redir new file mode 100644 index 0000000000..1f8565ca21 --- /dev/null +++ b/Themes/_fallback/Sounds/ScreenTitle music.redir @@ -0,0 +1 @@ +_silent \ No newline at end of file diff --git a/Themes/_fallback/Sounds/ScreenTitleJoin music.redir b/Themes/_fallback/Sounds/ScreenTitleJoin music.redir new file mode 100644 index 0000000000..c29cb1da10 --- /dev/null +++ b/Themes/_fallback/Sounds/ScreenTitleJoin music.redir @@ -0,0 +1 @@ +_Music title \ No newline at end of file diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 791ed5512f..53f33cb4e6 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -40,7 +40,7 @@ StepsTypesToHide="lights-cabinet" MaxCourseEntriesBeforeShowVarious=10 # Legacy metric: The first screen that shows up when you take forever to press # start. -FirstAttractScreen="ScreenInit" +FirstAttractScreen="ScreenDemonstration" # First screen that pops up when you start the game. ScreenInit in particular # shows the theme information before going to the title screen. InitialScreen="ScreenInit" @@ -164,15 +164,14 @@ Cycle=true # Text when there is no BPM NoBpmText="000" # How fast it cycles, smaller is faster -RandomCycleSpeed=0.2 +RandomCycleSpeed=0.1 # Seperator between both bpms ( 100-200 ). Separator="-" # ??? when it cycles. ShowQMarksInRandomCycle=true -RandomText="..." +RandomText="!!!" # xxx: localize me -aj VariousText="Various" -RandomText="???" [CodeDetector] # Codes on the MusicWheel that change stuff! PrevSteps1="Up,Up" @@ -236,10 +235,10 @@ NumberMaxZoom=1 NumberMaxZoomAt=100 # LabelMinZoom=0.75*0.75 -LabelMaxZoom=0.75*1 +LabelMaxZoom=0.75*0.75 # Things the combo does when you bang on it, and what the text does PulseCommand=%function(self,param) self:stoptweening(); self:zoom(1.125*param.Zoom); self:linear(0.05); self:zoom(param.Zoom); end -PulseLabelCommand=%function(self,param) self:stoptweening(); self:zoom(1.075*param.LabelZoom); self:linear(0.05); self:zoom(param.LabelZoom); end +PulseLabelCommand=%function(self,param) self:stoptweening(); self:zoom(param.LabelZoom); self:linear(0.05); self:zoom(param.LabelZoom); end NumberOnCommand=y,240-216-1.5;shadowlength,1;halign,1;valign,1;skewx,-0.125; LabelOnCommand=x,6;y,22.5;shadowlength,1;zoom,0.75;diffusebottomedge,color("0.75,0.75,0.75,1");halign,0;valign,1 @@ -1173,7 +1172,27 @@ LineOffColor=color("0.5,0.5,0.5,1.0") Class="ScreenSystemLayer" Fallback="Screen" # +ShowCreditDisplay=true CreditsJoinOnly=false +# +CreditsP1X=SCREEN_LEFT+4 +CreditsP1Y=SCREEN_BOTTOM-4 +CreditsP1RefreshCreditTextMessageCommand=playcommand,"UpdateText"; +CreditsP1CoinInsertedMessageCommand=playcommand,"UpdateText"; +CreditsP1CoinInsertedMessageCommand=playcommand,"UpdateText"; +CreditsP1PlayerJoinedMessageCommand=playcommand,"UpdateText"; +CreditsP1ScreenChangedMessageCommand=playcommand,"UpdateVisible";queuecommand,"On" +CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1; +CreditsP1OffCommand= +# +CreditsP2X=SCREEN_RIGHT-4 +CreditsP2Y=SCREEN_BOTTOM-4 +CreditsP2RefreshCreditTextMessageCommand=playcommand,"UpdateText"; +CreditsP2CoinInsertedMessageCommand=playcommand,"UpdateText"; +CreditsP2PlayerJoinedMessageCommand=playcommand,"UpdateText"; +CreditsP2ScreenChangedMessageCommand=playcommand,"UpdateVisible";queuecommand,"On" +CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1; +CreditsP2OffCommand= [ScreenConsoleOverlay] Class="ScreenSystemLayer" Fallback="ScreenSystemLayer" @@ -1215,6 +1234,7 @@ StopMusicOnBack=false WaitForChildrenBeforeTweeningOut=false CancelTransitionsOut=false # +ShowCreditDisplay=true AllowDisabledPlayerInput=false MemoryCardIcons=false # @@ -1381,12 +1401,14 @@ Class="ScreenAttract" Fallback="ScreenAttract" # PrevScreen="ScreenInit" -NextScreen=Branch.TitleMenu() +NextScreen=Branch.AfterInit() StartScreen=Branch.TitleMenu() # ForceTimer=true TimerSeconds=5 # +PlayMusic=false +# TimerMetricsGroup="MenuTimerNoSound" TimerOnCommand=visible,false @@ -1397,6 +1419,8 @@ Fallback="ScreenSelectMaster" PrevScreen="ScreenInit" NextScreen="ScreenInit" # +StopMusicOnBack=true +# CoinModeChangeScreen=Branch.TitleMenu() # ScreenOnCommand=lockinput,0 @@ -1405,7 +1429,7 @@ TimerSeconds=-1 # SharedSelection=true AllowDisabledPlayerInput=true -OverrideSleepAfterTweenOffSeconds=true +OverrideSleepAfterTweenOffSeconds=false DoSwitchAnyways=false # SleepAfterTweenOffSeconds=0 @@ -1457,7 +1481,7 @@ ScrollerOnCommand= ScrollerOffCommand= IdleCommentSeconds=-1 IdleTimeoutSeconds=-1 -IdleTimeoutScreen=THEME:GetMetric("Common","FirstAttractScreen") +IdleTimeoutScreen=Branch.AfterInit() DoublePressToSelect=false UseTwoLists=false OptionOrderUp="" @@ -1483,11 +1507,6 @@ LogoX=SCREEN_CENTER_X LogoY=SCREEN_CENTER_Y-80 LogoOnCommand=bob;effectperiod,4;effectmagnitude,0,8,0;zoom,0;bounceend,0.35;zoom,1 LogoOffCommand= - -[ScreenTitleJoin] -Fallback="ScreenTitleMenu" -ChoiceNames="1" - [ScreenQuickSetupOverview] Class="ScreenSelectMaster" Fallback="ScreenSelectMaster" @@ -1513,7 +1532,7 @@ ShowIcon=true Class="ScreenSelectMaster" Fallback="ScreenQuickSetupOverview" # -NextScreen=Branch.QuickSetupB +NextScreen=Branch.QuickSetupBl PrevScreen=Branch.QuickSetupStart # DefaultChoice="Set" @@ -1787,6 +1806,7 @@ Fallback="ScreenSelectMusic" # DefaultSort="Nonstop" ScreenModsCommand=setupcoursestagemods +# MusicWheelType="CourseWheel" Codes="CourseCodeDetector" [CourseCodeDetector] @@ -2260,8 +2280,10 @@ CursorOnCommand=visible,false [ScreenOptionsService] Class="ScreenOptionsMaster" Fallback="ScreenOptionsSimpleService" -NextScreen=Branch.TitleMenu() -PrevScreen=Branch.TitleMenu() +# +NextScreen=Branch.Init() +PrevScreen=Branch.Init() + LineNames="SD,1,2,Sync,13,3,10,11,4,12,6,5,Theme,8,9" Line1="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings" Line2="gamecommand;screen,ScreenTestInput;name,Test Input" @@ -2661,6 +2683,8 @@ Fallback="ScreenWithMenuElementsBlank" StartScreen="" LightsMode="LightsMode_Attract" # +PlayMusic=false +# ResetGameState=true BackGoesToStartScreen=true # @@ -3250,7 +3274,7 @@ NextScreen="ScreenEditMenu" PrevScreen="ScreenEditMenu" ShowHelp=false AllowOperatorMenuButton=false -ShowCoinsAndCredits=false +ShowCreditDisplay=false ShowStyleIcon=false TimerSeconds=-1 EditModifiers="" @@ -3678,7 +3702,27 @@ UserDY=24 UserOnCommand= UserOffCommand= -# some arcade mode things +# Arcade +[ScreenTitle] +Fallback="ScreenAttract" +# +PrevScreen=Branch.Init() +NextScreen="ScreenDemonstration" +NextScreen="ScreenDemonstration" +StartScreen=Branch.TitleMenu() +# +ForceTimer=true +TimerSeconds=5 +# +TimerMetricsGroup="MenuTimerNoSound" +TimerOnCommand=visible,false +[ScreenTitleJoin] +Fallback="ScreenTitleMenu" +ChoiceNames="1" +# +IdleCommentSeconds=-1 +IdleTimeoutSeconds=-1 +IdleTimeoutScreen=Branch.AfterInit() [ScreenDemonstration] Fallback="ScreenGameplay" Class="ScreenDemonstration" diff --git a/Themes/default/BGAnimations/ScreenEvaluation background/default.lua b/Themes/default/BGAnimations/ScreenEvaluation background/default.lua index 66623c2ad5..ec4cf72db5 100644 --- a/Themes/default/BGAnimations/ScreenEvaluation background/default.lua +++ b/Themes/default/BGAnimations/ScreenEvaluation background/default.lua @@ -13,10 +13,11 @@ t[#t+1] = Def.ActorFrame { end end; }; ---[[ Def.Quad { + Def.Quad { InitCommand=cmd(scaletoclipped,SCREEN_WIDTH+1,SCREEN_HEIGHT); OnCommand=cmd(diffuse,color("#FFCB05");diffusebottomedge,color("#F0BA00");diffusealpha,0.45); }; +--[[ LoadActor(THEME:GetPathB("ScreenWithMenuElements","background/_grid")).. { InitCommand=cmd(customtexturerect,0,0,(SCREEN_WIDTH+1)/4,SCREEN_HEIGHT/4;SetTextureFiltering,true); OnCommand=cmd(zoomto,SCREEN_WIDTH+1,SCREEN_HEIGHT;diffuse,Color("Black");diffuseshift;effecttiming,(1/8)*4,0,(7/8)*4,0;effectclock,'beatnooffset'; diff --git a/Themes/default/BGAnimations/ScreenGameplay in.redir b/Themes/default/BGAnimations/ScreenGameplay in.redir deleted file mode 100644 index 04b2ead777..0000000000 --- a/Themes/default/BGAnimations/ScreenGameplay in.redir +++ /dev/null @@ -1 +0,0 @@ -_blank \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenGameplay in/default.lua b/Themes/default/BGAnimations/ScreenGameplay in/default.lua new file mode 100644 index 0000000000..93059d15bf --- /dev/null +++ b/Themes/default/BGAnimations/ScreenGameplay in/default.lua @@ -0,0 +1,7 @@ +local t = Def.ActorFrame {}; +t[#t+1] = Def.Sprite { + InitCommand=cmd(Center); + BeginCommand=cmd(LoadFromCurrentSongBackground); + OnCommand=cmd(diffusealpha,1;scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT;linear,1;diffusealpha,0;); +}; +return t; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenStageInformation underlay/default.lua b/Themes/default/BGAnimations/ScreenStageInformation underlay/default.lua index 7f46ffdd77..bcca1e9c0c 100644 --- a/Themes/default/BGAnimations/ScreenStageInformation underlay/default.lua +++ b/Themes/default/BGAnimations/ScreenStageInformation underlay/default.lua @@ -10,13 +10,8 @@ t[#t+1] = Def.Quad { }; t[#t+1] = Def.Sprite { InitCommand=cmd(Center); - BeginCommand=function(self) - if GAMESTATE:GetCurrentSong() then - self:LoadFromSongBackground(GAMESTATE:GetCurrentSong()); - --self:LoadBackground( GAMESTATE:GetCurrentSong():GetBackgroundPath() ); - end; - end; - OnCommand=cmd(diffusealpha,0;scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT;sleep,0.5;linear,0.50;diffusealpha,PREFSMAN:GetPreference("BGBrightness")); + BeginCommand=cmd(LoadFromCurrentSongBackground); + OnCommand=cmd(diffusealpha,0;scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT;sleep,0.5;linear,0.50;diffusealpha,1;sleep,3); }; t[#t+1] = Def.ActorFrame { diff --git a/Themes/default/BGAnimations/ScreenTitleMenu out.lua b/Themes/default/BGAnimations/ScreenTitleMenu out.lua deleted file mode 100644 index 60dd6762d9..0000000000 --- a/Themes/default/BGAnimations/ScreenTitleMenu out.lua +++ /dev/null @@ -1,6 +0,0 @@ -return Def.ActorFrame { - Def.Quad { - InitCommand=cmd(Center;zoomto,SCREEN_WIDTH+1,SCREEN_HEIGHT); - OnCommand=cmd(diffuse,color("0,0,0,0");sleep,0.15;linear,0.35;diffusealpha,1); - }; -}; \ No newline at end of file diff --git a/Themes/default/Graphics/Player combo/default.lua b/Themes/default/Graphics/Player combo/default.lua index 26d65cabbd..4c2de7b126 100644 --- a/Themes/default/Graphics/Player combo/default.lua +++ b/Themes/default/Graphics/Player combo/default.lua @@ -50,7 +50,7 @@ local t = Def.ActorFrame { else return end; --]] - TwentyFiveMilestoneCommand=function(self,parent) +--[[ TwentyFiveMilestoneCommand=function(self,parent) (cmd(skewy,-0.125;decelerate,0.325;skewy,0))(self); end; ToastyAchievedMessageCommand=function(self,params) @@ -62,7 +62,7 @@ local t = Def.ActorFrame { if params.PlayerNumber == player then (cmd(stopeffect))(c.ComboFrame); end; - end; + end; --]] ComboCommand=function(self, param) local iCombo = param.Misses or param.Combo; if not iCombo or iCombo < ShowComboAt then diff --git a/Themes/default/Graphics/ScreenSelectMusic BPMLabel.lua b/Themes/default/Graphics/ScreenSelectMusic BPMLabel.lua index 567c3c001f..78733f252f 100644 --- a/Themes/default/Graphics/ScreenSelectMusic BPMLabel.lua +++ b/Themes/default/Graphics/ScreenSelectMusic BPMLabel.lua @@ -8,9 +8,9 @@ return Def.ActorFrame { self:stoptweening(); -- self:linear(0.25); if song then - self:diffusebottomedge( song:GetTimingData():HasStops() and color("#55CCEE") or color("#FFFFFF") ); + self:diffusebottomedge( song:GetTimingData():HasStops() and Color("Orange") or Color("White") ); else - self:diffusebottomedge( color("#FFFFFF") ); + self:diffusebottomedge( Color("White") ); end; end; CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); diff --git a/Themes/default/Graphics/ScreenWithMenuElements header/default.lua b/Themes/default/Graphics/ScreenWithMenuElements header/default.lua index 7182bd65a8..85fabc6526 100644 --- a/Themes/default/Graphics/ScreenWithMenuElements header/default.lua +++ b/Themes/default/Graphics/ScreenWithMenuElements header/default.lua @@ -11,7 +11,7 @@ t[#t+1] = LoadFont("Common Normal") .. { Name="HeaderText"; Text=Screen.String("HeaderText"); InitCommand=cmd(x,-SCREEN_CENTER_X+24;y,24;zoom,1;horizalign,left;shadowlength,0;maxwidth,200); - OnCommand=cmd(strokecolor,Color("Outline");diffusebottomedge,color("0.875,0.875,0.875")); + OnCommand=cmd(skewx,-0.125;strokecolor,Color("Outline");diffusebottomedge,color("0.875,0.875,0.875")); UpdateScreenHeaderMessageCommand=function(self,param) self:settext(param.Header); end; diff --git a/Themes/default/Graphics/StepsDisplay frame.png b/Themes/default/Graphics/StepsDisplay frame.png index ed4790bd70d7c35acee238d612f5455d9223b445..dab2f1eb2b6ef3aa857260eaa5d4013155dbff13 100644 GIT binary patch delta 1131 zcmV-x1eE))9rqm}iBL{Q4GJ0x0000DNk~Le0002w0000a2nGNE0GYp*Ik6$03V#G5 zNkluKWX3T!?FN zS;*3rh%j|w76oV1MY|9Rb`i>eP=7^bu$pR`_i}F+$+IC^?IO*bJkMv9Kmy-$&->nU z?|I3)#yN+gC^GPL2oyyQe*D516Mw%<0o}j{Ko5{s<0?u^us{fufOFsqr~}K1@H+F=ol(W%P9kIfS-V4pmM81)+^%>@N#Ty?Agl7%Gblg!_WHr`_+_+(jv~z z&dP;C;rE%DneTUYc7}jgz<}B>F@IS{EtB1Irm3%h3o^KFDxv)*xcMK z=5o1WsZ_GoT4$}*tGfen_1SiBZ|^VF_wMmLkNy4qN}*7=y12Lq=jP^Kqg@0jat+nW_kq+%3SnB{TFE6XA@7-gJ!Sg(>udlt;)zy>r z_4QAw^=*3Y+C%yPK@g-44-dmAikvaVq*5upvOAP&wdw$T-#4mH4p9`jVzC%yG8wPg zhmD3b^+Ccp=N{W2CDf1zHzbeIknwUojz9KZvmtM0Ezk3e=jpA-q<>V%bUJNRpWOIq zUZysGD3wZSbxcsgrRGz*J`skDqR2kh87qN%6)U*{N!Qn|_#dp0zVGYRoS+$4YCfgw zlTsm_R>;K6z@qnP()G0~{{K=T)sV@mkb2vrQ!8W`hFT#LLKudkE0A=3?TY`w3YpDj z^`1w9W?-rLl&(+A9)B_j0ySiU_9#;GDP5n4J*2hP1wo)o)&vm$R#a*}rR!@~{0|yZ zm#oQ3xYT?~*C)b|Q54beqgSP~mqY+!^C?|lyW+pskj^>R)zzhjOaSr!4W;H&y1sVB zf3G2{)hgQ5Ne1!138dyzy1sVBf3G0{ZR#Xw60TqHM)k>!|9@UXT5Hj!PGXt{fas=< zXnpO9|DipkHg%G-M*-wEO{D8CX+F$PZpl%QLR>^M(;HnvIJC)j*gD{`uc_*%agz!i6K4JCyUyrmw(H>o}ZupCY?^Fudc2leI{$?5}(&1wE{`k_kUH!?(S|so6Xwg<>lAZ zjube*8Iy)5m#2V_fS04AqaV)B&Q1&r3_J~jK#vkolonAgm&+$7C&x=mOF!)H?jBG- zO29dH>nH)JJ+yTQ_#Aj%f3GM?YpDRg0Y3vrK;_1VO+bc(+Mzq|@y~H|K6)ITqO<}_ xt$`CCNB1X9$I%%*CO}aH?J;!-6h#hy4*+lxEl97R$g%(c002ovPDHLkV1n|zGH3t* delta 1058 zcmV+-1l{}h9j_fBiBL{Q4GJ0x0000DNk~Le0001_0000a2nGNE00#w;nXw_B3V#FI zNkl7M_fxFsGao3f9fVdLZ z;<6CBvKtYh-RPp=1L>kI3I)56@`TcAUQ`|yQw^EPy+IV1N)P16RNePy>i7wV(Jw z7I+AJ0K5$ZvW9~H0TtjW@ICMhsJ@_(b!8j|9#2e6JX&90|9EtC^wGe;fRIwqFQ&&QnVFdnH#avw-`m@JzO%FQynj?GRb?5w z6WiO{?*h!t&Hdy`OhZFM+1c6I2h-Ej59a6Rzu4W~{SMf**8Y(s%3Awt zvSjCh?AX}Yn=30TKVMv2M1Nrz8ej=aV9ZbTyxC_mDvl2q9C{L%N#Jwt7fo zj17W7N_GkmKg)JCpMPzi~arm!>*iE6Lf@-&M9PHU!Qk+dV0p))QWO5LS6w+3x&dy z<>lp1GMP-~=H@1nGuhpXcwUoB3aPcGx3|~N<#J|iZS4tnBUP^MV{RA}-~n#{kH^Qy zUtd~Uni(7%e0LZGfs9fSbPSbBrE-3L{%m!1_1mMPqf_dmRIIfxj8cKSL)*i^`@l&3 zvp~>kRDoZBAAllIz2{+qkZ?D2>J|PT$LAyC_ynDSsT-Jh9N(WL#_=f`lOk}+eajLE cT*6-i0EAJ?&ua%NN&o-=07*qoM6N<$g4Q4L4*&oF diff --git a/Themes/default/Graphics/StepsDisplayGameplay frame.png b/Themes/default/Graphics/StepsDisplayGameplay frame.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4790bd70d7c35acee238d612f5455d9223b445 GIT binary patch literal 3759 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 100 then \ + self:zoom(0.8); \ + else \ + self:zoom(1); \ + end; \ + end; \ +end; +# +ShowDescription=true DescriptionX=-20 DescriptionY=GetUserPrefB("UserPrefAutoSetStyle") and -5 or 0 DescriptionOnCommand=shadowlength,1;uppercase,true;zoom,0.75;maxwidth,128+8 @@ -485,25 +562,6 @@ StepsTypeX=-20 StepsTypeY=7 StepsTypeOnCommand=zoom,0.45 -[StepsDisplayEdit] -Fallback="StepsDisplay" - -[StepsDisplayGameplay] -Fallback="StepsDisplay" -MeterSetCommand=%function(self,param) \ - if param.CustomDifficulty then \ - self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)); \ - self:shadowcolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); \ - end; \ - if param.Meter then \ - if param.Meter >= 100 then \ - self:zoom(0.8); \ - else \ - self:zoom(1); \ - end; \ - end; \ -end; - [StepsDisplayEvaluation] Fallback="StepsDisplay" @@ -586,10 +644,21 @@ PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ self:zoomtowidth(fItemWidth); \ self:diffuseramp(); \ - self:effecttiming(3,0.01875*itemIndex,0,1-(0.01875*itemIndex)); \ + self:effectperiod(4); \ + self:effectoffset((itemIndex-1)/numItems * -1); \ + self:effectcolor2(color("1,1,1,1")); \ + self:effectcolor1(color("0.5,0.5,0.5,1")); \ self:effectclock('beatnooffset'); \ end; -TextureCoordScaleX=1*16 +# PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ + # local fItemWidth = ( 256 / numItems ) \ + # self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ + # self:zoomtowidth(fItemWidth); \ + # self:diffuseramp(); \ + # self:effecttiming(1,0.01875*itemIndex,1,1-(0.01875*itemIndex)); \ + # self:effectclock('beatnooffset'); \ +# end; +TextureCoordScaleX=2*16 NumPills=16 AlwaysBounceNormalBar=false @@ -600,6 +669,12 @@ ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2 ArtistPrependString="" AfterSetCommand=%TextBannerAfterSet +[ScreenSystemLayer] +CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;strokecolor,Color("Black");diffusebottomedge,PlayerColor(PLAYER_1); +CreditsP1OffCommand= +# +CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;strokecolor,Color("Black");diffusebottomedge,PlayerColor(PLAYER_2); +CreditsP2OffCommand= [ScreenWithMenuElements] WaitForChildrenBeforeTweening=true @@ -622,13 +697,13 @@ FooterOffCommand= ShowHelp=true HelpX=SCREEN_CENTER_X HelpY=IsArcade() and SCREEN_BOTTOM-16 or SCREEN_BOTTOM-16 -HelpOnCommand=SetSecsBetweenSwitches,4;shadowlength,0;strokecolor,Color("Outline");draworder,105;zoomy,0;linear,0.175;zoom,1*0.75;maxwidth,(SCREEN_WIDTH-64)/0.75;diffuseshift;effectcolor1,color("0.5,0.5,0.5,1"); +HelpOnCommand=SetSecsBetweenSwitches,4;shadowlength,1;strokecolor,Color("Black");draworder,105;zoomy,0;linear,0.175;zoom,1*0.675;maxwidth,(640*0.75)/0.5;diffuseshift;effectcolor1,color("0.5,0.5,0.5,1"); HelpOffCommand=linear,0.175;zoomy,0 AlternateHelpDisplayX=SCREEN_CENTER_X -AlternateHelpDisplayY=SCREEN_BOTTOM-16 +AlternateHelpDisplayY=IsArcade() and SCREEN_BOTTOM-16 or SCREEN_BOTTOM-16 # AlternateHelpDisplayOnCommand=draworder,105; -AlternateHelpDisplayOnCommand=SetSecsBetweenSwitches,4;shadowlength,0;strokecolor,Color("Outline");draworder,105;zoomy,0;linear,0.175;zoom,1*0.75;maxwidth,(SCREEN_WIDTH-64)/0.75;diffuseshift;effectcolor1,color("0.5,0.5,0.5,1");;diffusealpha,0 +AlternateHelpDisplayOnCommand=SetSecsBetweenSwitches,4;shadowlength,1;strokecolor,Color("Black");draworder,105;zoomy,0;linear,0.175;zoom,1*0.675;maxwidth,(640*0.75)/0.5;diffuseshift;effectcolor1,color("0.5,0.5,0.5,1");;diffusealpha,0 AlternateHelpDisplayOffCommand=linear,0.175;zoomy,0 TimerX=SCREEN_RIGHT-36-4 @@ -945,7 +1020,7 @@ IconChoiceRaveOffCommand=linear,0.1175;zoomx,0 [ScreenSelectMusic] UsePlayerSelectMenu=false # OptionsMenuAvailable=(getenv(sMode) ~= Oni) -SelectMenuAvailable=false +SelectMenuAvailable=true # ModeMenuAvailable=(getenv(sMode) == Normal) # HelpDisplay has things added here to make sure it disappears for another # actor, which we defined in this screens decorations. @@ -978,14 +1053,14 @@ SongTimeOnCommand=zoom,0.75;strokecolor,Color("Outline");shadowlength,1 SongTimeOffCommand=bouncebegin,0.15;zoom,0;diffusealpha,0; SongTimeResetCommand=diffuse,Color("White"); SongTimeAutogenCommand=diffuse,Color("Green"); -SongTimeLongCommand=diffusebottomedge,Color("Blue"); -SongTimeMarathonCommand=diffuse,Color("Yellow");diffusebottomedge,Color("Orange"); +SongTimeLongCommand=diffuse,Color("Yellow");diffusebottomedge,Color("Orange"); +SongTimeMarathonCommand=diffuse,Color("Orange");diffusebottomedge,Color("Red"); # ShowSortOrder=true SortOrderX=SCREEN_CENTER_X+128+32 SortOrderY=SCREEN_TOP+24+4 SortOrderOnCommand=draworder,105;strokecolor,Color("Outline");zoom,0.75 -SortOrderSortCommand=finishtweening;zoom,0.75*1.25;diffusebottomedge,Color("Blue");decelerate,0.5;zoom,0.75;diffuse,Color("White"); +SortOrderSortCommand=finishtweening;zoom,0.75*1.25;diffuse,Color("Yellow");diffusebottomedge,Color("Orange");decelerate,0.5;zoom,0.75;diffuse,Color("White"); SortOrderSongChosenCommand=linear,0.25;diffusealpha,0; SortOrderOffCommand=bouncebegin,0.15;zoomy,0; # @@ -1621,21 +1696,35 @@ Summary=true # ShowStageDisplay=false # -SmallBanner1X=SCREEN_CENTER_X -SmallBanner1Y=SCREEN_TOP+60 +SmallBanner1X=SCREEN_CENTER_X-72 +SmallBanner1Y=SCREEN_TOP+100-24 SmallBanner1OnCommand=zoom,0.5 SmallBanner1OffCommand= -SmallBanner2X=SCREEN_CENTER_X -SmallBanner2Y=SCREEN_TOP+120 +SmallBanner2X=SCREEN_CENTER_X-48 +SmallBanner2Y=SCREEN_TOP+100-16 SmallBanner2OnCommand=zoom,0.5 SmallBanner2OffCommand= -SmallBanner3X=SCREEN_CENTER_X -SmallBanner3Y=SCREEN_TOP+180 +SmallBanner3X=SCREEN_CENTER_X-24 +SmallBanner3Y=SCREEN_TOP+100-8 SmallBanner3OnCommand=zoom,0.5 SmallBanner3OffCommand= +SmallBanner4X=SCREEN_CENTER_X+24 +SmallBanner4Y=SCREEN_TOP+100+8 +SmallBanner4OnCommand=zoom,0.5 +SmallBanner4OffCommand= + +SmallBanner5X=SCREEN_CENTER_X+48 +SmallBanner5Y=SCREEN_TOP+100+16 +SmallBanner5OnCommand=zoom,0.5 +SmallBanner5OfCommand= + +SmallBanner6X=SCREEN_CENTER_X+72 +SmallBanner6Y=SCREEN_TOP+100+24 +SmallBanner6OnCommand=zoom,0.5 +SmallBanner6OffCommand= # arcade stuff [ScreenTitleJoin] HelpText=Screen.String("HelpTextTitleJoin") @@ -1663,7 +1752,8 @@ ScoreP2OnCommand=visible,false StepsDisplayP1OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 StepsDisplayP2OnCommand=zoomy,0;linear,0.3;zoomy,1;sleep,3;smooth,0.5;y,SCREEN_BOTTOM-20;zoomy,0 ShowBPMDisplay=false - +# +PlayMusic=false # sm-ssc helper screens [ScreenHowToInstallSongs] Class="ScreenSelectMaster" diff --git a/Themes/default/~res/StepsDisplayMusic frame.psd b/Themes/default/~res/StepsDisplayMusic frame.psd index 23857dec842585ff7a726758eb04af78e4dd82fd..a7283a6e9c69db3d220d6b2d3dc8cf3c5c39e56c 100644 GIT binary patch literal 124145 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 T|MopN;^@)dABcm${N(=trOX#5