diff --git a/Themes/_fallback/Sounds/ScreenHowToPlay music (loop).ogg b/Themes/_fallback/Sounds/ScreenHowToPlay music (loop).ogg new file mode 100644 index 0000000000..81ca92cdca Binary files /dev/null and b/Themes/_fallback/Sounds/ScreenHowToPlay music (loop).ogg differ diff --git a/Themes/_fallback/Sounds/ScreenHowToPlay music.redir b/Themes/_fallback/Sounds/ScreenHowToPlay music.redir deleted file mode 100644 index 1f8565ca21..0000000000 --- a/Themes/_fallback/Sounds/ScreenHowToPlay music.redir +++ /dev/null @@ -1 +0,0 @@ -_silent \ No newline at end of file diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index d66b196f2d..3e690f9dd0 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1681,7 +1681,7 @@ PrevScreen=Branch.TitleMenu() TimerSeconds=40 # DefaultChoice="Easy" -ChoiceNames="Easy,Normal,Hard,Rave,Extended,Oni,Endless" +ChoiceNames="Normal,Rave,Extended,Oni,Endless" # PerChoiceScrollElement=false PerChoiceIconElement=false @@ -1691,7 +1691,7 @@ WrapScroller=true ShowIcon=false # ChoiceEasy="applydefaultoptions;name,Easy;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal" -ChoiceNormal="applydefaultoptions;name,Normal;playmode,regular;difficulty,medium;screen,ScreenSelectMusic;setenv,sMode,Normal" +ChoiceNormal="applydefaultoptions;name,Normal;playmode,regular;difficulty,easy;screen,ScreenSelectMusic;setenv,sMode,Normal" ChoiceHard="applydefaultoptions;name,Hard;playmode,regular;difficulty,hard;screen,ScreenSelectMusic;setenv,sMode,Normal" ChoiceRave="applydefaultoptions;name,Rave;playmode,rave;screen,ScreenSelectMusic;setenv,sMode,Rave" ChoiceExtended="applydefaultoptions;name,Extended;playmode,nonstop;screen,ScreenSelectCourse;setenv,sMode,Extended" @@ -3802,6 +3802,8 @@ StartScreen=Branch.TitleMenu() ResetGameState=false SecondsToShow=25 # +PlayMusic=true +# UseLifeMeterBar=true LifeMeterBarX=SCREEN_CENTER_X+160 LifeMeterBarY=SCREEN_TOP+40 @@ -3829,6 +3831,8 @@ NumMisses=6 [ScreenTitleJoin] Fallback="ScreenTitleMenu" ChoiceNames="1" + +# ScrollerOnCommand=visible,false # IdleCommentSeconds=-1 IdleTimeoutSeconds=-1 diff --git a/Themes/default/BGAnimations/ScreenWithMenuElements background/_particles/1 ParticlesFloatUp.png b/Themes/default/BGAnimations/ScreenWithMenuElements background/_particles/1 ParticlesFloatUp.png new file mode 100644 index 0000000000..dfbdda9d56 Binary files /dev/null and b/Themes/default/BGAnimations/ScreenWithMenuElements background/_particles/1 ParticlesFloatUp.png differ diff --git a/Themes/default/BGAnimations/ScreenWithMenuElements background/default.lua b/Themes/default/BGAnimations/ScreenWithMenuElements background/default.lua index f5c433aba5..b7eff20bac 100644 --- a/Themes/default/BGAnimations/ScreenWithMenuElements background/default.lua +++ b/Themes/default/BGAnimations/ScreenWithMenuElements background/default.lua @@ -7,10 +7,13 @@ t[#t+1] = Def.ActorFrame { InitCommand=cmd(scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT); OnCommand=cmd(diffuse,color("#FFCB05");diffusebottomedge,color("#F0BA00")); }; - LoadActor("_pattern") .. { +--[[ LoadActor("_particles") .. { + InitCommand=cmd(x,-SCREEN_CENTER_X;y,-SCREEN_CENTER_Y); + }; --]] +--[[ LoadActor("_pattern") .. { InitCommand=cmd(rotationy,-12.25;rotationz,-30;rotationx,-20;zoomto,SCREEN_WIDTH*2,SCREEN_HEIGHT*2;customtexturerect,0,0,SCREEN_WIDTH*4/256,SCREEN_HEIGHT*4/256); OnCommand=cmd(texcoordvelocity,0.125,0.5;diffuse,color("#ffd400");diffusealpha,0.075); - }; + }; --]] Def.Quad { InitCommand=cmd(vertalign,top;scaletoclipped,SCREEN_WIDTH+1,80;y,-SCREEN_CENTER_Y+20;fadebottom,0.75); OnCommand=cmd(diffuse,color("#FFCB05")); diff --git a/Themes/default/Graphics/Player judgment/default.lua b/Themes/default/Graphics/Player judgment/default.lua index 40c6887cf4..1e8876ef64 100644 --- a/Themes/default/Graphics/Player judgment/default.lua +++ b/Themes/default/Graphics/Player judgment/default.lua @@ -1,6 +1,17 @@ local c; local player = Var "Player"; local bShowProtiming = GetUserPrefB("UserPrefProtiming" .. ToEnumShortString(player) ); + +local function MakeAverage( t ) + local sum = 0; + for i=1,#t do + sum = sum + t[i]; + end + return sum / #t +end + +local tTotalJudgments = {}; + local JudgeCmds = { TapNoteScore_W1 = THEME:GetMetric( "Judgment", "JudgmentW1Command" ); TapNoteScore_W2 = THEME:GetMetric( "Judgment", "JudgmentW2Command" ); @@ -19,6 +30,10 @@ local ProtimingCmds = { TapNoteScore_Miss = THEME:GetMetric( "Protiming", "ProtimingMissCommand" ); }; +local AverageCmds = { + Pulse = THEME:GetMetric( "Protiming", "AveragePulseCommand" ); +}; + local TNSFrames = { TapNoteScore_W1 = 0; TapNoteScore_W2 = 1; @@ -42,12 +57,18 @@ t[#t+1] = Def.ActorFrame { OnCommand=THEME:GetMetric("Protiming","ProtimingOnCommand"); ResetCommand=cmd(finishtweening;stopeffect;visible,false); }; + LoadFont("Common Normal") .. { + Name="ProtimingAverage"; + Text=""; + InitCommand=cmd(visible,false); + OnCommand=THEME:GetMetric("Protiming","AverageOnCommand"); + ResetCommand=cmd(finishtweening;stopeffect;visible,false); + }; InitCommand = function(self) c = self:GetChildren(); end; JudgmentMessageCommand=function(self, param) - local t if param.Player ~= player then return end; if param.HoldNoteScore then return end; @@ -62,6 +83,9 @@ t[#t+1] = Def.ActorFrame { end end + -- we're safe, you can push the values + tTotalJudgments[#tTotalJudgments+1] = math.abs( param.TapNoteOffset ); + local iTapNoteOffset = param.TapNoteOffset; if param.HoldNoteScore then iTapNoteOffset = 1; @@ -79,6 +103,9 @@ t[#t+1] = Def.ActorFrame { c.ProtimingDisplay:settextf("%i%%",100 - math.floor(math.abs(param.TapNoteOffset * 1000)) ); ProtimingCmds[param.TapNoteScore](c.ProtimingDisplay); + c.ProtimingAverage:visible( bShowProtiming ); + c.ProtimingAverage:settextf("%i%%",100 - MakeAverage( tTotalJudgments ) * 1000 ); + AverageCmds['Pulse'](c.ProtimingAverage); end; }; diff --git a/Themes/default/Languages/en.ini b/Themes/default/Languages/en.ini index d34c52c2b3..87c05f83a7 100644 --- a/Themes/default/Languages/en.ini +++ b/Themes/default/Languages/en.ini @@ -12,6 +12,8 @@ LifeDifficulty=Life Difficulty: %s TimingDifficulty=Timing Difficulty: %s [ScreenTitleJoin] HelpText=Press &START; to Play +HelpTextJoin=Press &START; to Play +HelpTextWait=Insert Credits... EventMode=Event Mode JointPremiumMain=Joint Premium JointPremiumSecondary=Two players can play with one credit! diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index e9bc441d8f..ca4e295b0e 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -303,15 +303,17 @@ LeftOnCommand=horizalign,right;diffuse,PlayerColor(PLAYER_2) MiddleOnCommand=;diffuse,PlayerColor(PLAYER_2) RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2) [Protiming] -ProtimingOnCommand=shadowlength,1;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; - +ProtimingOnCommand=shadowlength,1;horizalign,right;x,30;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; +AverageOnCommand=shadowlength,1;horizalign,left;x,32;y,8;zoom,0.75;diffuse,ColorLightTone( Color("Green") );strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner"; +# ProtimingW1Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W1"];sleep,2;linear,0.5;diffuse,Color("Invisible"); ProtimingW2Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W2"];sleep,2;linear,0.5;diffuse,Color("Invisible"); ProtimingW3Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W3"];sleep,2;linear,0.5;diffuse,Color("Invisible"); ProtimingW4Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W4"];sleep,2;linear,0.5;diffuse,Color("Invisible"); ProtimingW5Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W5"];sleep,2;linear,0.5;diffuse,Color("Invisible"); ProtimingMissCommand=finishtweening;diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_Miss"];linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_Miss"];sleep,2;linear,0.5;diffuse,Color("Invisible"); - +# +AveragePulseCommand=finishtweening;zoom,0.75*1.25;decelerate,0.1;zoom,0.75 [Player] ReceptorArrowsYStandard=GetTapPosition('Standard') ReceptorArrowsYReverse=GetTapPosition('Reverse') @@ -1001,7 +1003,7 @@ ShowIcon=true UseIconMetrics=true # IconGainFocusCommand=stoptweening;glowshift;decelerate,0.125;zoom,1; -IconLoseFocusCommand=stoptweening;stopeffect;decelerate,0.125;zoom,0.325; +IconLoseFocusCommand=stoptweening;stopeffect;decelerate,0.125;zoom,0.6; # IconMinZoom=0.5 # IconBaseZoom=0.6 # @@ -1010,7 +1012,7 @@ IconChoiceEasyY=SCREEN_BOTTOM-88-64 IconChoiceEasyOnCommand=zoom,0;bounceend,0.35;zoom,0.8 IconChoiceEasyOffCommand=linear,0.1175;zoomx,0 # -IconChoiceNormalX=SCREEN_CENTER_X-(80*(5/6)) +IconChoiceNormalX=SCREEN_CENTER_X-80 IconChoiceNormalY=SCREEN_BOTTOM-88-64 IconChoiceNormalOnCommand=zoom,0;bounceend,0.35;zoom,0.8 IconChoiceNormalOffCommand=linear,0.1175;zoomx,0 @@ -1020,7 +1022,7 @@ IconChoiceHardY=SCREEN_BOTTOM-88-64 IconChoiceHardOnCommand=zoom,0;bounceend,0.35;zoom,0.8 IconChoiceHardOffCommand=linear,0.1175;zoomx,0 # -IconChoiceRaveX=SCREEN_CENTER_X+(240*(5/6)) +IconChoiceRaveX=SCREEN_CENTER_X+80 IconChoiceRaveY=SCREEN_BOTTOM-88-64 IconChoiceRaveOnCommand=zoom,0;bounceend,0.35;zoom,0.8 IconChoiceRaveOffCommand=linear,0.1175;zoomx,0 @@ -1793,8 +1795,19 @@ LogoOffCommand=stopeffect;bouncebegin,0.35;zoom,0 [ScreenTitleJoin] HelpText=Screen.String("HelpTextTitleJoin") HelpY=SCREEN_CENTER_Y+100 -HelpOnCommand=zoom,1;strokecolor,color("0.125,0.125,0.125,0.5");queuecommand,"Anim" - +HelpOnCommand=zoom,1;strokecolor,color("0.125,0.125,0.125,0.5");queuecommand,"Refresh" +HelpCoinIsertedMessageCommand=playcommand,"Refresh" +HelpCoinModeChangedMessageCommand=playcommand,"Refresh" +HelpRefreshCommand=%function(self) \ + local bCanPlay = GAMESTATE:EnoughCreditsToJoin(); \ + local bReady = GAMESTATE:GetNumSidesJoined() > 0; \ + if bCanPlay or bReady then \ + self:SetTipsColonSeperated(THEME:GetString( Var "LoadingScreen","HelpTextPlay")); \ + else \ + self:SetTipsColonSeperated(THEME:GetString( Var "LoadingScreen","HelpTextWait")); \ + end \ +end; +# LogoX=SCREEN_CENTER_X LogoY=SCREEN_CENTER_Y-28 LogoOnCommand=bob;effectperiod,4;effectmagnitude,0,5.25,0;zoom,0;bounceend,0.35;zoom,0.75