diff --git a/Themes/_fallback/Fonts/ScreenHighScores Name.redir b/Themes/_fallback/Fonts/ScreenHighScores Name.redir new file mode 100644 index 0000000000..9533167834 --- /dev/null +++ b/Themes/_fallback/Fonts/ScreenHighScores Name.redir @@ -0,0 +1 @@ +Common Bold \ No newline at end of file diff --git a/Themes/_fallback/Fonts/ScreenHighScores Score.redir b/Themes/_fallback/Fonts/ScreenHighScores Score.redir new file mode 100644 index 0000000000..5c6053f7f1 --- /dev/null +++ b/Themes/_fallback/Fonts/ScreenHighScores Score.redir @@ -0,0 +1 @@ +Common Normal \ No newline at end of file diff --git a/Themes/_fallback/Fonts/ScreenHighScores Text.redir b/Themes/_fallback/Fonts/ScreenHighScores Text.redir new file mode 100644 index 0000000000..5c6053f7f1 --- /dev/null +++ b/Themes/_fallback/Fonts/ScreenHighScores Text.redir @@ -0,0 +1 @@ +Common Normal \ No newline at end of file diff --git a/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/default.lua b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/default.lua new file mode 100644 index 0000000000..212634d368 --- /dev/null +++ b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/default.lua @@ -0,0 +1,100 @@ +local t = Def.ActorFrame { + InitCommand=cmd(runcommandsonleaves,cmd(ztest,true)); +}; + +t[#t+1] = LoadActor("frame") .. { + InitCommand=cmd(diffusealpha,0.1;); +}; + + +t[#t+1] = Def.TextBanner { + InitCommand=cmd(x,-196;y,0;Load,"TextBannerHighScores"); + SetCommand=function(self, params) + if params.Song then + self:SetFromSong( params.Song ); + self:diffuse( SONGMAN:GetSongColor(params.Song) ); + else + self:SetFromString( params.Course:GetTitle() ); + self:diffuse( SONGMAN:GetCourseColor(params.Course) ); + end + end; +}; + +local NumColumns = THEME:GetMetric(Var "LoadingScreen", "NumColumns"); + +local c; +local Scores = Def.ActorFrame { + InitCommand = function(self) + c = self:GetChildren(); + end; +}; +t[#t+1] = Scores; + +for idx=1,NumColumns do + local x_pos = -60 + 80 * (idx-1); + Scores[#Scores+1] = LoadFont(Var "LoadingScreen","Name") .. { + Name = idx .. "Name"; + InitCommand=cmd(x,x_pos;y,6;shadowlengthx,0;shadowlengthy,2;shadowcolor,color("#000000");maxwidth,68;); + }; + Scores[#Scores+1] = LoadFont(Var "LoadingScreen","Score") .. { + Name = idx .. "Score"; + InitCommand=cmd(x,x_pos;y,-10;shadowlengthx,0;shadowlengthy,2;shadowcolor,color("#000000");maxwidth,68;); + }; + Scores[#Scores+1] = LoadActor("filled") .. { + Name = idx .. "Filled"; + InitCommand=cmd(x,x_pos;); + }; + Scores[#Scores+1] = LoadActor("empty") .. { + Name = idx .. "Empty"; + InitCommand=cmd(x,x_pos;); + }; + +end + +local sNoScoreName = THEME:GetMetric("Common", "NoScoreName"); + +Scores.SetCommand=function(self, params) + local pProfile = PROFILEMAN:GetMachineProfile(); + + for name, child in pairs(c) do + child:visible(false); + end + for idx=1,NumColumns do + c[idx .. "Empty"]:visible(true); + end + + local Current = params.Song or params.Course; + if Current then + for idx, CurrentItem in pairs(params.Entries) do + if CurrentItem then + local hsl = pProfile:GetHighScoreList(Current, CurrentItem); + local hs = hsl and hsl:GetHighScores(); + --[[Warn( tostring(CurrentItem:GetStepsType()) .. ", " .. + tostring(CurrentItem:GetDifficulty()) .. ": " .. + tostring(hsl) .. ", " .. + tostring(#hs) );]] + local name = c[idx .. "Name"]; + local score = c[idx .. "Score"]; + local filled = c[idx .. "Filled"]; + local empty = c[idx .. "Empty"]; + + --assert( c[sNameType], sNameType ); + --assert( c[sScoreType], sScoreType ); + + name:visible( true ); + score:visible( true ); + filled:visible( true ); + empty:visible( false ); + if hs and #hs > 0 then + name:settext( hs[1]:GetName() ); + score:settext( FormatPercentScore( hs[1]:GetPercentDP() ) ); + else + name:settext( sNoScoreName ); + score:settext( FormatPercentScore( 0 ) ); + end + end + end; + end +end; + +return t; diff --git a/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/empty (doubleres).png b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/empty (doubleres).png new file mode 100644 index 0000000000..51816916cb Binary files /dev/null and b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/empty (doubleres).png differ diff --git a/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/filled (doubleres).png b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/filled (doubleres).png new file mode 100644 index 0000000000..6c01938c30 Binary files /dev/null and b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/filled (doubleres).png differ diff --git a/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/frame (doubleres).png b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/frame (doubleres).png new file mode 100644 index 0000000000..218b95708c Binary files /dev/null and b/Themes/_fallback/Graphics/ScreenHighScores ScrollerItem/frame (doubleres).png differ diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index 0610c21036..f1e4e8f607 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -1643,6 +1643,10 @@ No=NO Yes=YES Cancel=CANCEL +[ScreenHighScores] +HeaderText=High Scores +HeaderSubText=Who's the top dog? + [ScreenRanking] [ScreenSMOnlineLogin] @@ -1910,10 +1914,41 @@ dance-solo=solo dance-threepanel=3panel dance-routine=routine lights-cabinet=Lights -# SSC +# Dance_Single=Single Dance_Double=Double +Dance_Couple=Couple +Dance_Solo=Solo +Dance_Routine=Routine Dance_Threepanel=3 Panels +Pump_Single=Single +Pump_Double=Double +Pump_Halfdouble=Half-Double +Pump_Couple=Couple +Pump_Routine=Routine +Kb7_Single=KB7 +Ez2_Single=Single +Ez2_Double=Double +Ez2_Real=Real +Para_Single=Single +Ds3ddx_Single=Single +Bm_Single5=5 Keys +Bm_Double5=10 Keys +Bm_Single7=7 Keys +Bm_Double7=14 Keys +Maniax_Single=Single +Maniax_Double=Double +Techno_Single4=Single 4 +Techno_Single5=Single 5 +Techno_Single8=Single 8 +Techno_Double4=Double 4 +Techno_Double5=Double 5 +Techno_Double8=Double 8 +Pnm_Five=5 Button +Pnm_Nine=9 Button +Guitar_Five=5 Frets +Karaoke=Karaoke +Lights_Cabinet=Lights [TapNoteScore] AvoidMine=Avoid Mine diff --git a/Themes/_fallback/Scripts/02 Branches.lua b/Themes/_fallback/Scripts/02 Branches.lua index ccb2ec8888..12004f068c 100644 --- a/Themes/_fallback/Scripts/02 Branches.lua +++ b/Themes/_fallback/Scripts/02 Branches.lua @@ -42,7 +42,7 @@ Branch = { end, NoiseTrigger = function() local hour = Hour() - return hour > 3 and hour < 6 and "ScreenNoise" or "ScreenInit" + return hour > 3 and hour < 6 and "ScreenNoise" or "ScreenHighScores" end, TitleMenu = function() -- home mode is the most assumed use of sm-ssc. diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index f511122447..e94fb0c093 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -39,6 +39,9 @@ CourseDifficultiesToShow="easy,medium,hard" # be shown in lights mode! So don't hide it here. StepsTypesToHide="" +# Score placeholder for ScreenHighScores +NoScoreName="STEP" + # The number of entries before "Various" is shown on the BPMDisplay, etc. MaxCourseEntriesBeforeShowVarious=10 @@ -1497,6 +1500,11 @@ ArtistOnCommand=visible,false ArtistPrependString="/" AfterSetCommand=%TextBannerAfterSet +[TextBannerHighScores] +Fallback="TextBanner" +AfterSetCommand=%TextBannerHighScoreAfterSet + + [WheelNotifyIcon] ShowTraining=false BlinkPlayersBest=true @@ -4503,6 +4511,34 @@ AllowStyleTypes="TwoPlayersTwoSides" MinSecondsToStep=0 MinSecondsToMusic=0 +[ScreenHighScores] +Fallback="ScreenAttract" +Class="ScreenHighScores" +NextScreen="ScreenInit" +PrevScreen="ScreenDemonstration" +StartScreen=Branch.TitleMenu() + +TimerSeconds=-1 + +HighScoresType="HighScoresType_AllSteps" +MaxItemsToShow=50 +NumColumns=5 +ColumnDifficulty1="Difficulty_Beginner" +ColumnDifficulty2="Difficulty_Easy" +ColumnDifficulty3="Difficulty_Medium" +ColumnDifficulty4="Difficulty_Hard" +ColumnDifficulty5="Difficulty_Challenge" +ColumnStepsType1=GAMEMAN:GetFirstStepsTypeForGame(GAMESTATE:GetCurrentGame()) +ColumnStepsType2=GAMEMAN:GetFirstStepsTypeForGame(GAMESTATE:GetCurrentGame()) +ColumnStepsType3=GAMEMAN:GetFirstStepsTypeForGame(GAMESTATE:GetCurrentGame()) +ColumnStepsType4=GAMEMAN:GetFirstStepsTypeForGame(GAMESTATE:GetCurrentGame()) +ColumnStepsType5=GAMEMAN:GetFirstStepsTypeForGame(GAMESTATE:GetCurrentGame()) +ScrollerItemsToDraw=7 +ScrollerSecondsPerItem=0.4 +ManualScrolling=false +ScrollerOnCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+36;SetMask,608,40 +ScrollerItemTransformFunction=function(self,offset,itemIndex,numItems) self:y(46.1*offset) end + [ScreenNoise] Fallback="ScreenAttract" Class="ScreenAttract" diff --git a/Themes/default/BGAnimations/ScreenHighScores decorations/_difficulty frame.png b/Themes/default/BGAnimations/ScreenHighScores decorations/_difficulty frame.png new file mode 100644 index 0000000000..0e04d83a89 Binary files /dev/null and b/Themes/default/BGAnimations/ScreenHighScores decorations/_difficulty frame.png differ diff --git a/Themes/default/BGAnimations/ScreenHighScores decorations/default.lua b/Themes/default/BGAnimations/ScreenHighScores decorations/default.lua new file mode 100644 index 0000000000..f728d63987 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenHighScores decorations/default.lua @@ -0,0 +1,40 @@ +local t = LoadFallbackB(); + +local StepsType = ToEnumShortString( GAMEMAN:GetFirstStepsTypeForGame(GAMESTATE:GetCurrentGame()) ); +local stString = THEME:GetString("StepsType",StepsType); + +local NumColumns = THEME:GetMetric(Var "LoadingScreen", "NumColumns"); + +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y-160); + Def.Quad { + InitCommand=cmd(zoomto,SCREEN_WIDTH, 56); + OnCommand=cmd(diffuse,color("#333333");diffusealpha,0.75;fadebottom,0.35;fadetop,0.35); + }; +}; + +for i=1,NumColumns do + local st = THEME:GetMetric(Var "LoadingScreen","ColumnStepsType" .. i); + local dc = THEME:GetMetric(Var "LoadingScreen","ColumnDifficulty" .. i); + local s = GetCustomDifficulty( st, dc ); + + t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,SCREEN_CENTER_X-60 + 80 * (i-1);y,SCREEN_CENTER_Y-160); + LoadActor("_difficulty frame") .. { + OnCommand=cmd(diffuse,CustomDifficultyToColor(s);zoomtowidth,80); + }; + LoadFont("Common Normal") .. { + InitCommand=cmd(uppercase,true;settext,CustomDifficultyToLocalizedString(s)); + OnCommand=cmd(zoom,0.75;diffuse,CustomDifficultyToColor(s);shadowlength,1); + }; + }; +end + +t[#t+1] = LoadFont("Common Bold") .. { + InitCommand=cmd(settext,stString;x,SCREEN_CENTER_X-220;y,SCREEN_CENTER_Y-160); + OnCommand=cmd(zoom,0.75;skewx,-0.125;shadowlength,1); +}; + +t.OnCommand=cmd(draworder,105); + +return t; \ No newline at end of file diff --git a/Themes/default/Graphics/ScreenDemonstration StageDisplay.redir b/Themes/default/Graphics/ScreenDemonstration StageDisplay.redir new file mode 100644 index 0000000000..04b2ead777 --- /dev/null +++ b/Themes/default/Graphics/ScreenDemonstration StageDisplay.redir @@ -0,0 +1 @@ +_blank \ No newline at end of file diff --git a/Themes/default/Graphics/ScreenGameplay StageDisplay.lua b/Themes/default/Graphics/ScreenGameplay StageDisplay.lua index 6d3fa31919..01c11f9fab 100644 --- a/Themes/default/Graphics/ScreenGameplay StageDisplay.lua +++ b/Themes/default/Graphics/ScreenGameplay StageDisplay.lua @@ -19,11 +19,17 @@ t[#t+1] = Def.ActorFrame { LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",64,16); LoadFont("Common Normal") .. { InitCommand=cmd(y,-1;shadowlength,1;playcommand,"Set"); + CurrentSongChangedMessageCommand=cmd(playcommand,"Set"); + CurrentCourseChangedMessageCommand=cmd(playcommand,"Set"); + CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set"); + CurrentStepsP2ChangedMessageCommand=cmd(playcommand,"Set"); + CurrentTraiP1ChangedMessageCommand=cmd(playcommand,"Set"); + CurrentTraiP2ChangedMessageCommand=cmd(playcommand,"Set"); SetCommand=function(self) - if GAMESTATE:GetCurrentCourse() then - self:settext( GAMESTATE:GetCurrentStageIndex()+1 .. " / " .. GAMESTATE:GetCurrentCourse():GetEstimatedNumStages() ); - elseif GAMESTATE:IsEventMode() then + if GAMESTATE:IsEventMode() then self:settextf("Stage %s", curStageIndex+1); + elseif GAMESTATE:GetPlayMode() == 'PlayMode_Endless' or 'PlayMode_Oni' or 'Nonstop' then + self:settextf("%i / %i", curStageIndex , GAMESTATE:GetCurrentCourse():GetEstimatedNumStages()); else if THEME:GetMetric(curScreen,"StageDisplayUseShortString") then self:settextf("%s", ToEnumShortString(curStage)); diff --git a/Themes/default/Graphics/ScreenHighScores ScrollerItem/default.lua b/Themes/default/Graphics/ScreenHighScores ScrollerItem/default.lua new file mode 100644 index 0000000000..63555e8650 --- /dev/null +++ b/Themes/default/Graphics/ScreenHighScores ScrollerItem/default.lua @@ -0,0 +1,104 @@ +local t = Def.ActorFrame { + FOV=90; + InitCommand=cmd(runcommandsonleaves,cmd(ztest,true)); +}; + +t[#t+1] = LoadActor("frame") .. { + InitCommand=cmd(diffusealpha,0.25); +}; + + +t[#t+1] = Def.TextBanner { + InitCommand=cmd(x,-292;Load,"TextBannerHighScores"); + SetCommand=function(self, params) + if params.Song then + self:SetFromSong( params.Song ); + self:diffuse( SONGMAN:GetSongColor(params.Song) ); + else + self:SetFromString( params.Course:GetTitle() ); + self:diffuse( SONGMAN:GetCourseColor(params.Course) ); + end + end; +}; + +local NumColumns = THEME:GetMetric(Var "LoadingScreen", "NumColumns"); + +local c; +local Scores = Def.ActorFrame { + InitCommand = function(self) + c = self:GetChildren(); + end; +}; +t[#t+1] = Scores; + +for idx=1,NumColumns do + local x_pos = -60 + 80 * (idx-1); + Scores[#Scores+1] = LoadFont(Var "LoadingScreen","Name") .. { + Name = idx .. "Name"; + InitCommand=cmd(x,x_pos;y,8;shadowlength,1;maxwidth,68); + OnCommand=cmd(zoom,0.75); + }; + Scores[#Scores+1] = LoadFont(Var "LoadingScreen","Score") .. { + Name = idx .. "Score"; + InitCommand=cmd(x,x_pos;y,-9;shadowlength,1;maxwidth,68); + OnCommand=cmd(zoom,0.75); + }; + Scores[#Scores+1] = LoadActor("filled") .. { + Name = idx .. "Filled"; + InitCommand=cmd(x,x_pos;); + }; + Scores[#Scores+1] = LoadActor("empty") .. { + Name = idx .. "Empty"; + InitCommand=cmd(x,x_pos;); + OnCommand=cmd(zoom,0.75); + }; + +end + +local sNoScoreName = THEME:GetMetric("Common", "NoScoreName"); + +Scores.SetCommand=function(self, params) + local pProfile = PROFILEMAN:GetMachineProfile(); + + for name, child in pairs(c) do + child:visible(false); + end + for idx=1,NumColumns do + c[idx .. "Empty"]:visible(true); + end + + local Current = params.Song or params.Course; + if Current then + for idx, CurrentItem in pairs(params.Entries) do + if CurrentItem then + local hsl = pProfile:GetHighScoreList(Current, CurrentItem); + local hs = hsl and hsl:GetHighScores(); + --[[Warn( tostring(CurrentItem:GetStepsType()) .. ", " .. + tostring(CurrentItem:GetDifficulty()) .. ": " .. + tostring(hsl) .. ", " .. + tostring(#hs) );]] + local name = c[idx .. "Name"]; + local score = c[idx .. "Score"]; + local filled = c[idx .. "Filled"]; + local empty = c[idx .. "Empty"]; + + --assert( c[sNameType], sNameType ); + --assert( c[sScoreType], sScoreType ); + + name:visible( true ); + score:visible( true ); + filled:visible( true ); + empty:visible( false ); + if hs and #hs > 0 then + name:settext( hs[1]:GetName() ); + score:settext( FormatPercentScore( hs[1]:GetPercentDP() ) ); + else + name:settext( sNoScoreName ); + score:settext( FormatPercentScore( 0 ) ); + end + end + end; + end +end; + +return t; diff --git a/Themes/default/Graphics/ScreenHighScores ScrollerItem/empty (doubleres).png b/Themes/default/Graphics/ScreenHighScores ScrollerItem/empty (doubleres).png new file mode 100644 index 0000000000..51816916cb Binary files /dev/null and b/Themes/default/Graphics/ScreenHighScores ScrollerItem/empty (doubleres).png differ diff --git a/Themes/default/Graphics/ScreenHighScores ScrollerItem/filled (doubleres).png b/Themes/default/Graphics/ScreenHighScores ScrollerItem/filled (doubleres).png new file mode 100644 index 0000000000..6c01938c30 Binary files /dev/null and b/Themes/default/Graphics/ScreenHighScores ScrollerItem/filled (doubleres).png differ diff --git a/Themes/default/Graphics/ScreenHighScores ScrollerItem/frame (doubleres).png b/Themes/default/Graphics/ScreenHighScores ScrollerItem/frame (doubleres).png new file mode 100644 index 0000000000..218b95708c Binary files /dev/null and b/Themes/default/Graphics/ScreenHighScores ScrollerItem/frame (doubleres).png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua b/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua index 1df9511108..978a89ca2a 100644 --- a/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua +++ b/Themes/default/Graphics/ScreenSelectMusic CourseContentsList.lua @@ -1,9 +1,6 @@ return Def.CourseContentsList { MaxSongs = 4; - NumItemsToDraw = 8; -- xxx: Doesn't scroll anymore. ---[[ InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+91); - OnCommand=cmd(zoomy,0;bounceend,0.3;zoom,1); - OffCommand=cmd(zoomy,1;bouncebegin,0.3;zoomy,0); --]] + NumItemsToDraw = 8; ShowCommand=cmd(bouncebegin,0.3;zoomy,1); HideCommand=cmd(linear,0.3;zoomy,0); SetCommand=function(self) @@ -11,9 +8,12 @@ return Def.CourseContentsList { self:PositionItems(); self:SetTransformFromHeight(44); self:SetCurrentAndDestinationItem(0); --- self:SetDestinationItem( self:GetNumItems()-2 ); + -- + MESSAGEMAN:Broadcast("SystemMessage",{ Text ="Test" }); + -- + self:SetDestinationItem(4); self:SetLoop(false); - self:SetMask(270,0); + self:SetMask(270,44*4); end; CurrentTrailP1ChangedMessageCommand=cmd(playcommand,"Set"); CurrentTrailP2ChangedMessageCommand=cmd(playcommand,"Set"); @@ -22,14 +22,11 @@ return Def.CourseContentsList { InitCommand=cmd(setsize,270,44); LoadActor(THEME:GetPathG("CourseEntryDisplay","bar")) .. { --- InitCommand=cmd(diffusetopedge,Color("Invisible")); SetSongCommand=function(self, params) if params.Difficulty then --- self:diffuse( SONGMAN:GetSongColor(params.Song) ); self:diffuse( CustomDifficultyToColor(params.Difficulty) ); else self:diffuse( color("#FFFFFF") ); --- self:diffuse( CustomDifficultyToColor(params.Difficulty) ); end (cmd(finishtweening;diffusealpha,0;sleep,0.125*params.Number;linear,0.125;diffusealpha,1;linear,0.05;glow,color("1,1,1,0.5");decelerate,0.1;glow,color("1,1,1,0")))(self); @@ -68,14 +65,6 @@ return Def.CourseContentsList { end; }; ---[[ LoadFont("CourseEntryDisplay","number") .. { - InitCommand=cmd(x,114+8;y,-12;shadowlength,1); - SetSongCommand=function(self, params) - self:settext(string.format("#%i", params.Number)); - - (cmd(finishtweening;zoom,0.5;zoomy,0.5*1.5;diffusealpha,0;sleep,0.125*params.Number;linear,0.125;diffusealpha,1;linear,0.05;zoomy,0.5*1;zoomx,0.5*1.1;glow,color("1,1,1,0.5");decelerate,0.1;zoom,0.5;glow,color("1,1,1,0")))(self); - end; - }; --]] LoadFont("CourseEntryDisplay","difficulty") .. { Text="0"; InitCommand=cmd(x,114;y,0;zoom,0.75;shadowlength,1); @@ -86,19 +75,5 @@ return Def.CourseContentsList { (cmd(finishtweening;zoomy,0;sleep,0.125*params.Number;linear,0.125;zoomy,1.1;linear,0.05;zoomx,1.1;decelerate,0.1;zoom,1))(self); end; }; ---[[ LoadFont("Common","normal") .. { - OnCommand=cmd(x,0;y,-8;zoom,0.7;shadowlength,0); - DifficultyChangedCommand=function(self, params) - if params.PlayerNumber ~= GAMESTATE:GetMasterPlayerNumber() then return end - self:settext( params.Meter ); - self:diffuse( CourseDifficultyColors[params.Difficulty] ); - end; - }; --]] - ---[[ LoadFont("Common","normal") .. { - OnCommand=cmd(x,SCREEN_CENTER_X-192;y,SCREEN_CENTER_Y-230;horizalign,right;shadowlength,0); - SetSongCommand=function(self, params) self:settext(params.Modifiers); end; - }; --]] - }; }; \ No newline at end of file diff --git a/Themes/default/Scripts/02 TextBanner.lua b/Themes/default/Scripts/02 TextBanner.lua index 7082e08e73..06a47b8035 100644 --- a/Themes/default/Scripts/02 TextBanner.lua +++ b/Themes/default/Scripts/02 TextBanner.lua @@ -2,6 +2,10 @@ local mainMaxWidth = 228; -- zoom w/subtitle is 0.75 (multiply by 1.25) local subMaxWidth = 420; -- zoom is 0.6 (multiply zoom,1 value by 1.4) local artistMaxWidth = 300/0.8; +local mainMaxWidthHighScore = 192; -- zoom w/subtitle is 0.75 (multiply by 1.25) +local subMaxWidthHighScore = 280; -- zoom is 0.6 (multiply zoom,1 value by 1.4) +local artistMaxWidthHighScore = 280/0.8; + --[[ -- The old (cmd(blah))(Actor) syntax is hard to read. -- This is longer, but much easier to read. - Colby @@ -38,3 +42,36 @@ function TextBannerAfterSet(self,param) Artist:y(10) end end + +function TextBannerHighScoreAfterSet(self,param) + local Title = self:GetChild("Title") + local Subtitle = self:GetChild("Subtitle") + local Artist = self:GetChild("Artist") + + if Subtitle:GetText() == "" then + Title:maxwidth(mainMaxWidthHighScore) + Title:y(-8) + Title:zoom(1) + + -- hide so that the game skips drawing. + Subtitle:visible(false) + + Artist:zoom(0.66) + Artist:maxwidth(artistMaxWidthHighScore) + Artist:y(8) + else + Title:maxwidth(mainMaxWidthHighScore*1.25) + Title:y(-11) + Title:zoom(0.75) + + -- subtitle below title + Subtitle:visible(true) + Subtitle:zoom(0.6) + Subtitle:y(0) + Subtitle:maxwidth(subMaxWidthHighScore) + + Artist:zoom(0.6) + Artist:maxwidth(artistMaxWidthHighScore) + Artist:y(10) + end +end diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index c54e13ae65..8d2576e212 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -542,6 +542,9 @@ SubtitleOnCommand=horizalign,left;shadowlength,1; ArtistOnCommand=horizalign,left;shadowlength,1;skewx,-0.2 ArtistPrependString="" +[TextBannerHighScore] +Fallback="TextBanner" + [WheelNotifyIcon] [Screen] @@ -1384,6 +1387,22 @@ Line18="list,Characters" # # +[ScreenHighScores] +Fallback="ScreenWithMenuElements" + +ResetGameState=false +AttractVolume=true + +FOV=90 + +ScrollerItemsToDraw=9 +ScrollerOnCommand=x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;SetMask,624,40;draworder,-5 +ScrollerItemTransformFunction=function(self,offset,itemIndex,numItems) \ + self:y(46 * offset); \ +end; + +HelpOnCommand=visible,false + [ScreenRanking] #