From 9b176447c3ed8b464b2154824b5dba7ea7a30b26 Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Sun, 31 Aug 2014 22:23:11 -0700 Subject: [PATCH 01/24] Fix up HowToPlay graphics --- Themes/_fallback/Languages/en.ini | 3 ++ .../ScreenEvaluation decorations/default.lua | 4 +-- .../_howtoplay feet.lua | 6 ++++ .../_howtoplay jump.lua | 18 ++++++++++ .../_howtoplay miss.lua | 18 ++++++++++ .../_howtoplay tap.lua | 18 ++++++++++ .../ScreenHowToPlay overlay/default.lua | 34 ++++++++++++++----- .../ScreenWithMenuElements Footer.lua | 7 +++- Themes/default/Languages/en.ini | 10 ++++-- Themes/default/metrics.ini | 7 ++-- 10 files changed, 108 insertions(+), 17 deletions(-) create mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua create mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua create mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua create mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua diff --git a/Themes/_fallback/Languages/en.ini b/Themes/_fallback/Languages/en.ini index f1e4e8f607..03befaa609 100644 --- a/Themes/_fallback/Languages/en.ini +++ b/Themes/_fallback/Languages/en.ini @@ -1647,6 +1647,9 @@ Cancel=CANCEL HeaderText=High Scores HeaderSubText=Who's the top dog? +[ScreenContinue] +HelpText=&START; Advance Timer + [ScreenRanking] [ScreenSMOnlineLogin] diff --git a/Themes/default/BGAnimations/ScreenEvaluation decorations/default.lua b/Themes/default/BGAnimations/ScreenEvaluation decorations/default.lua index 0a5b77322a..7e27b3437d 100644 --- a/Themes/default/BGAnimations/ScreenEvaluation decorations/default.lua +++ b/Themes/default/BGAnimations/ScreenEvaluation decorations/default.lua @@ -70,13 +70,13 @@ local t = LoadFallbackB(); t[#t+1] = StandardDecorationFromFileOptional("StageDisplay","StageDisplay"); -if ShowStandardDecoration("GraphDisplay") then +if ShowStandardDecoration("GraphDisplay") and not GAMESTATE:GetPlayMode() == "PlayMode_Rave" then for pn in ivalues(GAMESTATE:GetHumanPlayers()) do t[#t+1] = StandardDecorationFromTable( "GraphDisplay" .. ToEnumShortString(pn), GraphDisplay(pn) ); end end -if ShowStandardDecoration("ComboGraph") then +if ShowStandardDecoration("ComboGraph") and not GAMESTATE:GetPlayMode() == "PlayMode_Rave" then for pn in ivalues(GAMESTATE:GetHumanPlayers()) do t[#t+1] = StandardDecorationFromTable( "ComboGraph" .. ToEnumShortString(pn), ComboGraph(pn) ); end diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua new file mode 100644 index 0000000000..72401b2ba2 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua @@ -0,0 +1,6 @@ +return LoadFont("Common Normal") .. { + Text="Your feet will be used to play!"; + BeginCommand=function(self) + self:AddAttribute(5, {Length= 4, Diffuse=Color.Red}) + end; +}; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua new file mode 100644 index 0000000000..554a0b1e22 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua @@ -0,0 +1,18 @@ +return Def.ActorFrame { + LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",392+8,80); + Def.Quad { + Name="Underline"; + InitCommand=cmd(y,-10); + OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); + }; + LoadFont("Common Bold") .. { + Text="Information"; + InitCommand=cmd(y,-24); + OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) + }; + LoadFont("Common Normal") .. { + Text="Step on both panels if two different\narrows appear at the same time!."; + InitCommand=cmd(y,18;wrapwidthpixels,480;vertspacing,-12;shadowlength,1); + OnCommand=cmd(zoom,0.875); + }; +}; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua new file mode 100644 index 0000000000..d13cf36766 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua @@ -0,0 +1,18 @@ +return Def.ActorFrame { + LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",392+8,80); + Def.Quad { + Name="Underline"; + InitCommand=cmd(y,-10); + OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); + }; + LoadFont("Common Bold") .. { + Text="Information"; + InitCommand=cmd(y,-24); + OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) + }; + LoadFont("Common Normal") .. { + Text="If you misstep repeatedly, your dance\nguage will decrease until the game is\nis over!"; + InitCommand=cmd(y,18;wrapwidthpixels,480;vertspacing,-12;shadowlength,1); + OnCommand=cmd(zoom,0.75); + }; +}; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua new file mode 100644 index 0000000000..ad31a5d3a3 --- /dev/null +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua @@ -0,0 +1,18 @@ +return Def.ActorFrame { + LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",392+8,80); + Def.Quad { + Name="Underline"; + InitCommand=cmd(y,-10); + OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); + }; + LoadFont("Common Bold") .. { + Text="Information"; + InitCommand=cmd(y,-24); + OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) + }; + LoadFont("Common Normal") .. { + Text="When the arrows rise to this point,\nstep on the matching panels."; + InitCommand=cmd(y,18;wrapwidthpixels,480;vertspacing,-12;shadowlength,1); + OnCommand=cmd(zoom,0.875); + }; +}; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua index eecab8257d..7d360c871b 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua @@ -45,31 +45,47 @@ return Def.ActorFrame { }; -- messages - LoadFont("Common Normal") .. { + LoadFont("Common Bold") .. { Text=ScreenString("How To Play StepMania"), InitCommand=cmd(zbuffer,1;z,20;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;shadowlength,1;strokecolor,Color("Outline")); - OnCommand=cmd(diffusealpha,0;zoom,4;sleep,0.0;linear,0.3;diffusealpha,1;zoom,1;sleep,1.8;linear,0.3;zoom,0.75;x,170;y,60); + BeginCommand=function(self) + self:AddAttribute(12, {Length=9, Diffuse=Color.Blue}); + end; + OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25);diffusealpha,0;zoom,4;sleep,0.0;linear,0.3;diffusealpha,1;zoom,1;sleep,1.8;linear,0.3;zoom,0.75;x,170;y,60); }; - LoadActor("feet") .. { + LoadActor("_howtoplay feet") .. { + InitCommand=cmd(shadowlength,1;strokecolor,Color.Outline); OnCommand=cmd(z,20;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;addx,-SCREEN_WIDTH;sleep,2.4;decelerate,0.3;addx,SCREEN_WIDTH;sleep,2;linear,0.3;zoomy,0); }; - LoadActor("_message tap")..{ + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); OnCommand=cmd(sleep,6;queuecommand,"Show"); }; - LoadActor("_message tap")..{ + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); OnCommand=cmd(sleep,9.7;queuecommand,"Show"); }; - LoadActor("_message tap")..{ + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); OnCommand=cmd(sleep,12.7;queuecommand,"Show"); }; - LoadActor("_message tap")..{ + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); OnCommand=cmd(sleep,15.7;queuecommand,"Show"); }; - LoadActor("_message jump")..{ + LoadActor("_howtoplay jump")..{ + InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); OnCommand=cmd(sleep,18.7;queuecommand,"Show"); }; - LoadActor("_message miss")..{ + LoadActor("_howtoplay miss")..{ + InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); OnCommand=cmd(sleep,22.7;queuecommand,"Show"); }; }; diff --git a/Themes/default/Graphics/ScreenWithMenuElements Footer.lua b/Themes/default/Graphics/ScreenWithMenuElements Footer.lua index 465444da46..ac6939946e 100644 --- a/Themes/default/Graphics/ScreenWithMenuElements Footer.lua +++ b/Themes/default/Graphics/ScreenWithMenuElements Footer.lua @@ -1,7 +1,12 @@ local t = Def.ActorFrame {}; t[#t+1] = Def.Quad { - InitCommand=cmd(vertalign,bottom;zoomto,SCREEN_WIDTH+1,34;diffuse,color("#161616")); + InitCommand=cmd(vertalign,bottom;zoomto,SCREEN_WIDTH,34;diffuse,color("#161616")); +}; + +t[#t+1] = LoadActor(THEME:GetPathG("ScreenWithMenuElements","header/Header")) .. { + InitCommand=cmd(y,-48;vertalign,bottom;zoomtowidth,SCREEN_WIDTH); + OnCommand=cmd(zoomy,-1;diffuse,color("#ffd400")); }; return t; diff --git a/Themes/default/Languages/en.ini b/Themes/default/Languages/en.ini index c351ca1047..27badebb29 100644 --- a/Themes/default/Languages/en.ini +++ b/Themes/default/Languages/en.ini @@ -1,4 +1,4 @@ -[Screen] +`[Screen] HelpText=&BACK; Exit &START; Select &SELECT; Options &MENULEFT;&MENURIGHT;&MENUUP;&MENUDOWN; Move [ScreenWithMenuElements] @@ -26,6 +26,9 @@ JointPremiumSecondary=Two players can play with one credit! DoublesPremiumMain=Doubles Premium DoublesPremiumSecondary=Play doubles for one credit! +[ScreenCaution] +HelpText=&START; Continue + [ScreenDemonstration] Demonstration=Demonstration %s - %s [from %s]=%s - %s\n[from %s] @@ -91,6 +94,9 @@ PersonalRecord=Personal Record #%i! ITG DP:=ITG DP: MIGS DP:=MIGS DP: +[ScreenContinue] +HelpText=&START; Advance Timer + [OptionTitles] AutoSetStyle=Auto Set Style NotePosition=Note Positions @@ -232,4 +238,4 @@ Play again soon!=Play again soon! How To Play StepMania=How To Play StepMania [Protiming] -MS=MS \ No newline at end of file +MS=MS diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 19f103c685..7561541c36 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -523,7 +523,7 @@ Fallback="StepsDisplay" # end; PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ local offset = itemIndex / numItems \ - local rate = 4 \ + local rate = 2 \ local fItemWidth = ( 256 / numItems ) \ self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ self:zoomtowidth(fItemWidth); \ @@ -589,8 +589,8 @@ HeaderOffCommand= ShowFooter=true FooterX=SCREEN_CENTER_X -FooterY=SCREEN_BOTTOM+2 -FooterOnCommand=draworder,1;vertalign,bottom;zoomtowidth,SCREEN_WIDTH+1; +FooterY=SCREEN_BOTTOM+4 +FooterOnCommand=draworder,1; FooterOffCommand= ShowHelp=true @@ -916,6 +916,7 @@ SongTimeX=SCREEN_CENTER_X-160 SongTimeY=SCREEN_TOP+160+(36/2)+8 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"); From 65af11af5136c167dac1930313bd78c06f21642a Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Sun, 31 Aug 2014 22:32:11 -0700 Subject: [PATCH 02/24] Fix up HowToPlay graphics (2) --- .../_howtoplay jump.lua | 6 +- .../_howtoplay miss.lua | 6 +- .../_howtoplay tap.lua | 6 +- .../ScreenHowToPlay overlay/_message jump.lua | 6 -- .../ScreenHowToPlay overlay/_message miss.lua | 6 -- .../ScreenHowToPlay overlay/_message tap.lua | 6 -- .../ScreenHowToPlay overlay/default.lua | 69 ++++++++++--------- Themes/default/metrics.ini | 3 +- 8 files changed, 47 insertions(+), 61 deletions(-) delete mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_message jump.lua delete mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_message miss.lua delete mode 100644 Themes/default/BGAnimations/ScreenHowToPlay overlay/_message tap.lua diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua index 554a0b1e22..046bccb804 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua @@ -1,13 +1,13 @@ return Def.ActorFrame { - LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",392+8,80); + LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",380,80); Def.Quad { Name="Underline"; - InitCommand=cmd(y,-10); + InitCommand=cmd(y,-12); OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); }; LoadFont("Common Bold") .. { Text="Information"; - InitCommand=cmd(y,-24); + InitCommand=cmd(y,-26); OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) }; LoadFont("Common Normal") .. { diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua index d13cf36766..b1aeb93ecf 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua @@ -1,13 +1,13 @@ return Def.ActorFrame { - LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",392+8,80); + LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",380,80); Def.Quad { Name="Underline"; - InitCommand=cmd(y,-10); + InitCommand=cmd(y,-12); OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); }; LoadFont("Common Bold") .. { Text="Information"; - InitCommand=cmd(y,-24); + InitCommand=cmd(y,-26); OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) }; LoadFont("Common Normal") .. { diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua index ad31a5d3a3..d5f026270f 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua @@ -1,13 +1,13 @@ return Def.ActorFrame { - LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",392+8,80); + LoadActor(THEME:GetPathB("_frame","3x3"),"rounded black",380,80); Def.Quad { Name="Underline"; - InitCommand=cmd(y,-10); + InitCommand=cmd(y,-12); OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); }; LoadFont("Common Bold") .. { Text="Information"; - InitCommand=cmd(y,-24); + InitCommand=cmd(y,-26); OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) }; LoadFont("Common Normal") .. { diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message jump.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message jump.lua deleted file mode 100644 index ca12423f28..0000000000 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message jump.lua +++ /dev/null @@ -1,6 +0,0 @@ -return Def.ActorFrame{ - LoadActor("jumpmessage") .. { - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,1.7;linear,0;diffusealpha,0); - }; -}; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message miss.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message miss.lua deleted file mode 100644 index b573579a14..0000000000 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message miss.lua +++ /dev/null @@ -1,6 +0,0 @@ -return Def.ActorFrame{ - LoadActor("missmessage") .. { - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,22.7;linear,0;diffusealpha,0); - }; -}; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message tap.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message tap.lua deleted file mode 100644 index 1b53a61643..0000000000 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_message tap.lua +++ /dev/null @@ -1,6 +0,0 @@ -return Def.ActorFrame{ - LoadActor("tapmessage") .. { - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - }; -}; \ No newline at end of file diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua index 7d360c871b..025e7cf485 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/default.lua @@ -49,43 +49,46 @@ return Def.ActorFrame { Text=ScreenString("How To Play StepMania"), InitCommand=cmd(zbuffer,1;z,20;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;shadowlength,1;strokecolor,Color("Outline")); BeginCommand=function(self) - self:AddAttribute(12, {Length=9, Diffuse=Color.Blue}); + self:AddAttribute(12, {Length=9, Diffuse=Color.White}); end; OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25);diffusealpha,0;zoom,4;sleep,0.0;linear,0.3;diffusealpha,1;zoom,1;sleep,1.8;linear,0.3;zoom,0.75;x,170;y,60); }; LoadActor("_howtoplay feet") .. { - InitCommand=cmd(shadowlength,1;strokecolor,Color.Outline); - OnCommand=cmd(z,20;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;addx,-SCREEN_WIDTH;sleep,2.4;decelerate,0.3;addx,SCREEN_WIDTH;sleep,2;linear,0.3;zoomy,0); + InitCommand=cmd(shadowlength,1;strokecolor,Color.Outline); + OnCommand=cmd(z,20;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;addx,-SCREEN_WIDTH;sleep,2.4;decelerate,0.3;addx,SCREEN_WIDTH;sleep,2;linear,0.3;zoomy,0); }; - - LoadActor("_howtoplay tap")..{ - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - OnCommand=cmd(sleep,6;queuecommand,"Show"); - }; - LoadActor("_howtoplay tap")..{ - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - OnCommand=cmd(sleep,9.7;queuecommand,"Show"); - }; - LoadActor("_howtoplay tap")..{ - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - OnCommand=cmd(sleep,12.7;queuecommand,"Show"); - }; - LoadActor("_howtoplay tap")..{ - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - OnCommand=cmd(sleep,15.7;queuecommand,"Show"); - }; - LoadActor("_howtoplay jump")..{ - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - OnCommand=cmd(sleep,18.7;queuecommand,"Show"); - }; - LoadActor("_howtoplay miss")..{ - InitCommand=cmd(x,SCREEN_CENTER_X+160;y,SCREEN_CENTER_Y+40;diffusealpha,0;); - ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); - OnCommand=cmd(sleep,22.7;queuecommand,"Show"); + Def.ActorFrame { + InitCommand=cmd(x,SCREEN_CENTER_X+120;y,SCREEN_CENTER_Y+40); + + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(diffusealpha,0); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); + OnCommand=cmd(sleep,6;queuecommand,"Show"); + }; + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(diffusealpha,0); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); + OnCommand=cmd(sleep,9.7;queuecommand,"Show"); + }; + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(diffusealpha,0); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); + OnCommand=cmd(sleep,12.7;queuecommand,"Show"); + }; + LoadActor("_howtoplay tap")..{ + InitCommand=cmd(diffusealpha,0); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); + OnCommand=cmd(sleep,15.7;queuecommand,"Show"); + }; + LoadActor("_howtoplay jump")..{ + InitCommand=cmd(diffusealpha,0); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); + OnCommand=cmd(sleep,18.7;queuecommand,"Show"); + }; + LoadActor("_howtoplay miss")..{ + InitCommand=cmd(diffusealpha,0); + ShowCommand=cmd(linear,0;diffusealpha,1;sleep,2;linear,0;diffusealpha,0); + OnCommand=cmd(sleep,22.7;queuecommand,"Show"); + }; }; }; diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 7561541c36..4fb8fff57e 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -532,7 +532,7 @@ PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ self:effectcolor1(color("0.5,0.5,0.5,1")); \ self:effectclock('beat'); \ self:effecttiming(rate*0.75,rate*0.125,rate*0.125,0); \ - self:effectoffset(1.25-offset); \ + self:effectoffset(1-offset); \ end; # PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ # local fItemWidth = ( 256 / numItems ) \ @@ -1871,6 +1871,7 @@ MachineRecordP2X=SCREEN_CENTER_X+220 #MachineRecordP2Y=SCREEN_BOTTOM-156 MachineRecordP2Y=SCREEN_TOP+146 MachineRecordP2OnCommand= + MachineRecordP2OffCommand= # PersonalRecordP1X=SCREEN_CENTER_X-160 From a64669b1bc9c04647268b4ee35b110109c857d47 Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Sun, 31 Aug 2014 23:08:06 -0700 Subject: [PATCH 03/24] Make TwoPartSelection dialog work for all players --- .../ScreenSelectMusic overlay.lua | 61 +++++++++++++++---- Themes/default/metrics.ini | 3 +- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua b/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua index 2ad45d1d7d..55a4b7fb15 100644 --- a/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua +++ b/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua @@ -1,3 +1,10 @@ +local num_players = GAMESTATE:GetHumanPlayers(); +local function PositionItem(i,max) + local x_spacing = 128; + return x_spacing * (i-(max-1)/2); +end + + local t = Def.ActorFrame { FOV=90; -- @@ -5,21 +12,49 @@ local t = Def.ActorFrame { InitCommand=cmd(zoomto,SCREEN_CENTER_X+80,SCREEN_HEIGHT); OnCommand=cmd(diffuse,Color.Black;diffusealpha,0.75;fadeleft,32/SCREEN_CENTER_X;faderight,32/SCREEN_CENTER_X); }; - LoadActor( NOTESKIN:GetPathForNoteSkin("Center","Tap","cmd") ) .. { - InitCommand=cmd(y,20); - }; - LoadFont("Common Bold") .. { - Text="PRESS"; - InitCommand=cmd(y,-20); - OnCommand=cmd(shadowlength,1;pulse;effectmagnitude,1,1.125,1;effectperiod,0.5); - }; - LoadFont("Common Bold") .. { - Text="TO START"; - InitCommand=cmd(y,58); - OnCommand=cmd(shadowlength,1;zoom,0.875); - }; }; +-- +for i=1,#num_players do + t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,-128+PositionItem(i,#num_players)); + UnchosenCommand=cmd(finishtweening;bounceend,0.25;zoom,1); + ChosenCommand=cmd(stoptweening;bouncebegin,0.3;zoom,0); + -- + StepsChosenMessageCommand=function( self, param ) + if param.Player ~= num_players[i] then return end; + self:playcommand("Chosen"); + end; + StepsUnchosenMessageCommand=function( self, param ) + if param.Player ~= num_players[i] then return end; + self:playcommand("Unchosen"); + end; + -- + LoadActor( NOTESKIN:GetPathForNoteSkin("Center","Tap","cmd") ) .. { + InitCommand=cmd(y,20); + }; + Def.Quad { + InitCommand=cmd(y,-35); + OnCommand=cmd(diffuse,PlayerColor(num_players[i]);shadowlength,1;linear,0.25;zoomtowidth,80;fadeleft,0.5;faderight,0.5); + }; + LoadFont("Common Bold") .. { + Text=ToEnumShortString(num_players[i]); + InitCommand=cmd(y,-48); + OnCommand=cmd(shadowlength,1;diffuse,PlayerColor(num_players[i])); + }; + LoadFont("Common Bold") .. { + Text="PRESS"; + InitCommand=cmd(y,-20); + OnCommand=cmd(shadowlength,1;pulse;effectmagnitude,1,1.125,1;effectperiod,0.5); + }; + LoadFont("Common Normal") .. { + Text="TO START"; + InitCommand=cmd(y,58); + OnCommand=cmd(shadowlength,1;zoom,0.75); + }; + }; +end +-- t.InitCommand=cmd(Center;x,SCREEN_CENTER_X*1.5;visible,false;diffusealpha,0); t.StartSelectingStepsMessageCommand=cmd(linear,0.2;visible,true;diffusealpha,1); t.StartSelectingSongMessageCommand=cmd(linear,0.2;visible,true;diffusealpha,0); diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 4fb8fff57e..92cb0fb08c 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -698,6 +698,7 @@ ShowVersionInfo=true VersionInfoX=SCREEN_RIGHT-16 VersionInfoY=SCREEN_TOP+24 VersionInfoOnCommand= + VersionInfoOffCommand= # ShowNetworkStatus=true @@ -984,7 +985,7 @@ ShowDifficultyList=not GAMESTATE:IsCourseMode(); DifficultyListX=SCREEN_CENTER_X-160 DifficultyListY=SCREEN_TOP+216 DifficultyListOnCommand=addx,-SCREEN_CENTER_X;decelerate,0.1;addx,SCREEN_CENTER_X; -DifficultyListStartSelectingStepsMessageCommand=finishtweening;glowshift;effectcolor1,color("1,1,1,0.25");effectcolor2,color("1,1,1,0");effectperiod,2; +DifficultyListStartSelectingStepsMessageCommand=finishtweening;accelerate,0.2;zoom,1.1;decelerate,0.2;zoom,1; DifficultyListOffCommand=bouncebegin,0.05;zoomx,0; # DifficultyListTweenOnCommand=stoptweening;bounceend,0.1;zoomx,1 From b6ff29fdd8c6e09cd0103eefff8f095d4cb533fa Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Sun, 31 Aug 2014 23:26:23 -0700 Subject: [PATCH 04/24] Make TwoPartSelection dialog hide on events --- .../BGAnimations/ScreenSelectMusic overlay.lua | 12 +++++++++--- .../BGAnimations/ScreenSelectMusic underlay.lua | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua b/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua index 55a4b7fb15..f7326baa14 100644 --- a/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua +++ b/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua @@ -53,9 +53,15 @@ for i=1,#num_players do }; }; end +-- Lock input for half a second so that players don't accidentally start a song +t[#t+1] = Def.Actor { + StartSelectingStepsMessageCommand=function() SCREENMAN:GetTopScreen():lockinput(0.5); end; +}; -- -t.InitCommand=cmd(Center;x,SCREEN_CENTER_X*1.5;visible,false;diffusealpha,0); -t.StartSelectingStepsMessageCommand=cmd(linear,0.2;visible,true;diffusealpha,1); -t.StartSelectingSongMessageCommand=cmd(linear,0.2;visible,true;diffusealpha,0); +t.InitCommand=cmd(Center;x,SCREEN_CENTER_X*1.5;diffusealpha,0); +t.StartSelectingStepsMessageCommand=cmd(linear,0.2;diffusealpha,1); +t.SongUnchosenMessageCommand=cmd(linear,0.2;diffusealpha,0); + + return t; diff --git a/Themes/default/BGAnimations/ScreenSelectMusic underlay.lua b/Themes/default/BGAnimations/ScreenSelectMusic underlay.lua index a2ea2dcdac..9cf9211740 100644 --- a/Themes/default/BGAnimations/ScreenSelectMusic underlay.lua +++ b/Themes/default/BGAnimations/ScreenSelectMusic underlay.lua @@ -3,6 +3,7 @@ local t = Def.ActorFrame { InitCommand=cmd(zoomto,SCREEN_WIDTH,SCREEN_HEIGHT); OnCommand=cmd(diffuse,Color.Black;diffusealpha,0); StartSelectingStepsMessageCommand=cmd(stoptweening;linear,0.2;diffusealpha,0.75); + SongUnchosenMessageCommand=cmd(stoptweening;linear,0.2;diffusealpha,0); }; }; From 4fdbb3dff6eb20296afc4012da4ada2713c68ecf Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Sun, 31 Aug 2014 23:50:08 -0700 Subject: [PATCH 05/24] ScoreDisplay has actual shadows now... --- Themes/_fallback/Scripts/02 Colors.lua | 14 +++++++------- Themes/default/metrics.ini | 13 ++++++++----- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Themes/_fallback/Scripts/02 Colors.lua b/Themes/_fallback/Scripts/02 Colors.lua index fd36d2591d..ebe8bfc464 100644 --- a/Themes/_fallback/Scripts/02 Colors.lua +++ b/Themes/_fallback/Scripts/02 Colors.lua @@ -12,7 +12,7 @@ Color = { Yellow = color("#fff200"), Orange = color("#f7941d"), Purple = color("#92278f"), - Outline = color("0,0,0,0.675"), + Outline = color("0,0,0,0.5"), Invisible = color("1,1,1,0"), Stealth = color("0,0,0,0"), -- Android Design Stencil Colors @@ -47,8 +47,8 @@ setmetatable(Color, { __call = function(self, c) return self[c] end }) GameColor = { PlayerColors = { - PLAYER_1 = color("#ef403d"), - PLAYER_2 = color("#0089cf"), + PLAYER_1 = color("#ff4444"), + PLAYER_2 = color("#5d9cec"), }, Difficulty = { --[[ These are for 'Custom' Difficulty Ranks. It can be very useful @@ -126,13 +126,13 @@ function ColorDarkTone(c) end function PlayerColor( pn ) - if pn == PLAYER_1 then return color("#ef403d") end -- pink-red - if pn == PLAYER_2 then return color("#0089cf") end -- sea-blue + if pn == PLAYER_1 then return GameColor.PlayerColors["PLAYER_1"] end -- pink-red + if pn == PLAYER_2 then return GameColor.PlayerColors["PLAYER_2"] end -- sea-blue return color("1,1,1,1") end function PlayerScoreColor( pn ) - if pn == PLAYER_1 then return color("#ef403d") end -- pink-red - if pn == PLAYER_2 then return color("#0089cf") end -- sea-blue + if pn == PLAYER_1 then return GameColor.PlayerColors["PLAYER_1"] end -- pink-red + if pn == PLAYER_2 then return GameColor.PlayerColors["PLAYER_2"] end -- sea-blue return color("1,1,1,1") end diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 92cb0fb08c..fe4c55865d 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -370,12 +370,14 @@ FrameOnCommand=visible,false;spin TimeRemainingY=80 TimeRemainingOnCommand=zoom,1;shadowlength,1; # -DeltaSecondsOnCommand=y,80;spin; +DeltaSecondsOnCommand=y,80; DeltaSecondsGainLifeCommand=zoom,0.5; [ScoreDisplayPercentage Percent] -PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,ColorDarkTone(PlayerColor(PLAYER_1)) -PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,ColorDarkTone(PlayerColor(PLAYER_2)) +PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,Color.Outline +PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,Color.Outline +DancePointsP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,Color.Outline +DancePointsP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,Color.Outline [ScoreDisplayRave] MeterP1OnCommand=draworder,-1;texcoordvelocity,1,0 @@ -523,15 +525,15 @@ Fallback="StepsDisplay" # end; PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ local offset = itemIndex / numItems \ - local rate = 2 \ + local rate = 4 \ local fItemWidth = ( 256 / numItems ) \ self:x( ((itemIndex-(numItems/2))*fItemWidth) + ( numItems / 2 ) ); \ self:zoomtowidth(fItemWidth); \ self:diffuseramp(); \ self:effectcolor2(color("1,1,1,1")); \ self:effectcolor1(color("0.5,0.5,0.5,1")); \ + self:effectperiod(rate); \ self:effectclock('beat'); \ - self:effecttiming(rate*0.75,rate*0.125,rate*0.125,0); \ self:effectoffset(1-offset); \ end; # PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ @@ -699,6 +701,7 @@ VersionInfoX=SCREEN_RIGHT-16 VersionInfoY=SCREEN_TOP+24 VersionInfoOnCommand= + VersionInfoOffCommand= # ShowNetworkStatus=true From 0abdaa513d420a0a8516179d35db05b8bc385fb3 Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Mon, 1 Sep 2014 04:49:26 -0700 Subject: [PATCH 06/24] Continue now goes to SelectStyle. Fixes error --- Themes/_fallback/Scripts/02 Branches.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Themes/_fallback/Scripts/02 Branches.lua b/Themes/_fallback/Scripts/02 Branches.lua index 6430b459cd..81f19ec563 100644 --- a/Themes/_fallback/Scripts/02 Branches.lua +++ b/Themes/_fallback/Scripts/02 Branches.lua @@ -232,7 +232,7 @@ Branch = { end if STATSMAN:GetStagesPlayed() == 0 then - return "ScreenSelectPlayMode" + return "ScreenSelectStyle" end return "ScreenProfileLoad" From d9d735e44ae0c595c29f2da5e0e8104cb7711a2c Mon Sep 17 00:00:00 2001 From: Jonathan Payne Date: Mon, 1 Sep 2014 05:38:33 -0700 Subject: [PATCH 07/24] TwoPartSelection noteskin for pump only, routine skins --- Themes/_fallback/Scripts/02 Colors.lua | 19 ++++++++++++++----- .../ScreenSelectMusic overlay.lua | 13 ++++++++----- Themes/default/metrics.ini | 13 +++++++------ 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/Themes/_fallback/Scripts/02 Colors.lua b/Themes/_fallback/Scripts/02 Colors.lua index ebe8bfc464..3fe7335e3d 100644 --- a/Themes/_fallback/Scripts/02 Colors.lua +++ b/Themes/_fallback/Scripts/02 Colors.lua @@ -47,9 +47,13 @@ setmetatable(Color, { __call = function(self, c) return self[c] end }) GameColor = { PlayerColors = { - PLAYER_1 = color("#ff4444"), + PLAYER_1 = color("#ed5565"), PLAYER_2 = color("#5d9cec"), }, + PlayerDarkColors = { + PLAYER_1 = color("#da4453"), + PLAYER_2 = color("#4a89dc"), + }, Difficulty = { --[[ These are for 'Custom' Difficulty Ranks. It can be very useful in some cases, especially to apply new colors for stuff you @@ -126,13 +130,18 @@ function ColorDarkTone(c) end function PlayerColor( pn ) - if pn == PLAYER_1 then return GameColor.PlayerColors["PLAYER_1"] end -- pink-red - if pn == PLAYER_2 then return GameColor.PlayerColors["PLAYER_2"] end -- sea-blue + if pn == PLAYER_1 then return GameColor.PlayerColors["PLAYER_1"] end + if pn == PLAYER_2 then return GameColor.PlayerColors["PLAYER_2"] end return color("1,1,1,1") end + function PlayerScoreColor( pn ) - if pn == PLAYER_1 then return GameColor.PlayerColors["PLAYER_1"] end -- pink-red - if pn == PLAYER_2 then return GameColor.PlayerColors["PLAYER_2"] end -- sea-blue + return PlayerColor( pn ); +end + +function PlayerDarkColor( pn ) + if pn == PLAYER_1 then return GameColor.PlayerDarkColors["PLAYER_1"] end + if pn == PLAYER_2 then return GameColor.PlayerDarkColors["PLAYER_2"] end return color("1,1,1,1") end diff --git a/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua b/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua index f7326baa14..8e20872d73 100644 --- a/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua +++ b/Themes/default/BGAnimations/ScreenSelectMusic overlay.lua @@ -15,7 +15,7 @@ local t = Def.ActorFrame { }; -- for i=1,#num_players do - t[#t+1] = Def.ActorFrame { + local f = Def.ActorFrame { InitCommand=cmd(x,-128+PositionItem(i,#num_players)); UnchosenCommand=cmd(finishtweening;bounceend,0.25;zoom,1); ChosenCommand=cmd(stoptweening;bouncebegin,0.3;zoom,0); @@ -28,10 +28,6 @@ for i=1,#num_players do if param.Player ~= num_players[i] then return end; self:playcommand("Unchosen"); end; - -- - LoadActor( NOTESKIN:GetPathForNoteSkin("Center","Tap","cmd") ) .. { - InitCommand=cmd(y,20); - }; Def.Quad { InitCommand=cmd(y,-35); OnCommand=cmd(diffuse,PlayerColor(num_players[i]);shadowlength,1;linear,0.25;zoomtowidth,80;fadeleft,0.5;faderight,0.5); @@ -52,6 +48,13 @@ for i=1,#num_players do OnCommand=cmd(shadowlength,1;zoom,0.75); }; }; + if GAMESTATE:GetCurrentGame():GetName() == "pump" then + local ns = num_players[i] == PLAYER_1 and RoutineSkinP1() or RoutineSkinP2() + f[#f+1] = LoadActor( NOTESKIN:GetPathForNoteSkin("Center","Tap",ns) ) .. { + InitCommand=cmd(y,20); + } + end + t[#t+1] = f; end -- Lock input for half a second so that players don't accidentally start a song t[#t+1] = Def.Actor { diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index fe4c55865d..3eb592a0ed 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -374,10 +374,10 @@ DeltaSecondsOnCommand=y,80; DeltaSecondsGainLifeCommand=zoom,0.5; [ScoreDisplayPercentage Percent] -PercentP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,Color.Outline -PercentP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,Color.Outline -DancePointsP1OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_1);strokecolor,Color.Outline -DancePointsP2OnCommand=shadowlength,1;diffuse,PlayerColor(PLAYER_2);strokecolor,Color.Outline +PercentP1OnCommand=shadowlength,1;strokecolor,Color.Outline +PercentP2OnCommand=shadowlength,1;strokecolor,Color.Outline +DancePointsP1OnCommand=shadowlength,1;strokecolor,Color.Outline +DancePointsP2OnCommand=shadowlength,1;strokecolor,Color.Outline [ScoreDisplayRave] MeterP1OnCommand=draworder,-1;texcoordvelocity,1,0 @@ -564,9 +564,10 @@ Fallback="TextBanner" [ScreenSystemLayer] ShowClock=true -CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1; +CreditsP1OnCommand=horizalign,left;vertalign,bottom;zoom,0.675;shadowlength,1;diffuse,PlayerColor(PLAYER_1);diffusetopedge,ColorLightTone(PlayerColor(PLAYER_1)); +# +CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1;diffuse,PlayerColor(PLAYER_2);diffusetopedge,ColorLightTone(PlayerColor(PLAYER_2)); # -CreditsP2OnCommand=horizalign,right;vertalign,bottom;zoom,0.675;shadowlength,1; [ScreenConsoleOverlay] From 76a255eacc070da6d1765d47722aa4c4f08a0a88 Mon Sep 17 00:00:00 2001 From: Colby Klein Date: Mon, 1 Sep 2014 10:28:25 -0700 Subject: [PATCH 08/24] Add people to credits. --- Themes/_fallback/BGAnimations/ScreenCredits overlay.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua index 02a2299b0c..8609c97488 100644 --- a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua +++ b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua @@ -51,10 +51,13 @@ local contrib = { "Chris Eldridge (kurisu)", -- dance-threepanel stepstype support "Christophe Goulet-LeBlanc (Kommisar)", -- songs "corec", -- various fixes + "cybik", -- Android port "galopin", -- piu PlayStation2 usb mat support "gholms", -- automake 1.11 support "juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods "Kaox", -- pump/default noteskin + "Kyzentun", + "Mad Matt", "NitroX72", -- pump/frame noteskin "Petriform", -- default theme music "桜為小鳩/Sakurana-Kobato (@sakuraponila)", -- custom scoring fixes @@ -158,4 +161,4 @@ return Def.ActorFrame{ creditScroller..{ InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64), } -}; \ No newline at end of file +}; From 8b93cae13d31e3f5bf1c623d7df0313ee987bb37 Mon Sep 17 00:00:00 2001 From: freem Date: Mon, 1 Sep 2014 14:05:01 -0500 Subject: [PATCH 09/24] Remove non-working Export Packages for now; might add later if it works again --- Themes/_fallback/metrics.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 2888cf0122..50299c88b9 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3759,11 +3759,11 @@ Fallback="ScreenOptionsSimpleService" NextScreen=Branch.TitleMenu() PrevScreen=Branch.TitleMenu() -LineNames="1,2,3,4" +LineNames="1,2,3" Line1="gamecommand;screen,ScreenEditMenu;name,Edit Songs/Steps" Line2="gamecommand;screen,ScreenPracticeMenu;name,Practice Songs/Steps" Line3="gamecommand;screen,ScreenEditCourseModsMenu;name,Edit Courses/Mods" -Line4="gamecommand;screen,ScreenOptionsExportPackage;name,Export Packages" +#Line4="gamecommand;screen,ScreenOptionsExportPackage;name,Export Packages" # broken: # Line4="gamecommand;screen,ScreenOptionsManageCourses;name,Edit Courses" From 46fac1fe8bd4172d7a85c901d9baf4f43ac71372 Mon Sep 17 00:00:00 2001 From: freem Date: Mon, 1 Sep 2014 14:33:04 -0500 Subject: [PATCH 10/24] Update ScreenHowToPlay elements to use localized strings --- .../ScreenHowToPlay overlay/_howtoplay feet.lua | 2 +- .../ScreenHowToPlay overlay/_howtoplay jump.lua | 4 ++-- .../ScreenHowToPlay overlay/_howtoplay miss.lua | 4 ++-- .../ScreenHowToPlay overlay/_howtoplay tap.lua | 4 ++-- Themes/default/Languages/en.ini | 9 ++++++++- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua index 72401b2ba2..15d333567f 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay feet.lua @@ -1,5 +1,5 @@ return LoadFont("Common Normal") .. { - Text="Your feet will be used to play!"; + Text=ScreenString("Feet"); BeginCommand=function(self) self:AddAttribute(5, {Length= 4, Diffuse=Color.Red}) end; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua index 046bccb804..e533b287f8 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay jump.lua @@ -6,12 +6,12 @@ return Def.ActorFrame { OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); }; LoadFont("Common Bold") .. { - Text="Information"; + Text=ScreenString("Information"); InitCommand=cmd(y,-26); OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) }; LoadFont("Common Normal") .. { - Text="Step on both panels if two different\narrows appear at the same time!."; + Text=ScreenString("Jump"); InitCommand=cmd(y,18;wrapwidthpixels,480;vertspacing,-12;shadowlength,1); OnCommand=cmd(zoom,0.875); }; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua index b1aeb93ecf..f14b431b13 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay miss.lua @@ -6,12 +6,12 @@ return Def.ActorFrame { OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); }; LoadFont("Common Bold") .. { - Text="Information"; + Text=ScreenString("Information"); InitCommand=cmd(y,-26); OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) }; LoadFont("Common Normal") .. { - Text="If you misstep repeatedly, your dance\nguage will decrease until the game is\nis over!"; + Text=ScreenString("Miss"); InitCommand=cmd(y,18;wrapwidthpixels,480;vertspacing,-12;shadowlength,1); OnCommand=cmd(zoom,0.75); }; diff --git a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua index d5f026270f..772f977bfb 100644 --- a/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua +++ b/Themes/default/BGAnimations/ScreenHowToPlay overlay/_howtoplay tap.lua @@ -6,12 +6,12 @@ return Def.ActorFrame { OnCommand=cmd(diffuse,color("#ffd400");shadowlength,1;zoomtowidth,192;fadeleft,0.25;faderight,0.25); }; LoadFont("Common Bold") .. { - Text="Information"; + Text=ScreenString("Information"); InitCommand=cmd(y,-26); OnCommand=cmd(skewx,-0.125;diffuse,color("#ffd400");shadowlength,2;shadowcolor,BoostColor(color("#ffd40077"),0.25)) }; LoadFont("Common Normal") .. { - Text="When the arrows rise to this point,\nstep on the matching panels."; + Text=ScreenString("Tap"); InitCommand=cmd(y,18;wrapwidthpixels,480;vertspacing,-12;shadowlength,1); OnCommand=cmd(zoom,0.875); }; diff --git a/Themes/default/Languages/en.ini b/Themes/default/Languages/en.ini index 27badebb29..ed9b7f2368 100644 --- a/Themes/default/Languages/en.ini +++ b/Themes/default/Languages/en.ini @@ -1,4 +1,4 @@ -`[Screen] +[Screen] HelpText=&BACK; Exit &START; Select &SELECT; Options &MENULEFT;&MENURIGHT;&MENUUP;&MENUDOWN; Move [ScreenWithMenuElements] @@ -236,6 +236,13 @@ Play again soon!=Play again soon! [ScreenHowToPlay] How To Play StepMania=How To Play StepMania +Information=Information + +Feet=Your feet will be used to play! +Tap=When the arrows rise to this point,\nstep on the matching panels. +Jump=Step on both panels if two different\narrows appear at the same time! +Miss=If you misstep repeatedly, your dance\nguage will decrease until the game is\nis over! + [Protiming] MS=MS From aac32f81adcf2bffd85b6d4d7de7bc832e3c9640 Mon Sep 17 00:00:00 2001 From: Kyzentun Date: Mon, 1 Sep 2014 15:41:58 -0600 Subject: [PATCH 11/24] Rewrote ScreenCredits to move StepMania credits to Scripts/04 CreditsHelpers.lua and provide an API for adding sections so that themers don't have toe duplicate stepmania credits to theme the screen. --- .../BGAnimations/ScreenCredits overlay.lua | 167 ++--------- .../Graphics/CreditsLogo kyzentun.png | Bin 0 -> 18775 bytes .../_fallback/Scripts/04 CreditsHelpers.lua | 280 ++++++++++++++++++ 3 files changed, 310 insertions(+), 137 deletions(-) create mode 100755 Themes/_fallback/Graphics/CreditsLogo kyzentun.png create mode 100644 Themes/_fallback/Scripts/04 CreditsHelpers.lua diff --git a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua index 8609c97488..845316d96c 100644 --- a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua +++ b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua @@ -1,156 +1,49 @@ -local function Fooled() - local phrases = { - "hornswaggled", - "bamboozled", - "hoodwinked", - "swindled", - "duped", - "hoaxed", - "fleeced", - "shafted", - "caboodled", - "beguiled", - "finagled", - "two-timed", - "suckered", - "flimflammed" - } - return phrases[math.random(#phrases)] -end +-- To add a section to the credits, use the following: +-- local theme_credits= { +-- name= "Theme Credits", -- the name of your section +-- "Me", -- The people you want to list in your section. +-- "Myself", +-- "My other self", +-- {logo= "pro_dude", name= "Pro self"}, -- Someone who has a logo image. +-- -- This logo image would be "Graphics/CreditsLogo pro_dude.png". +-- } +-- StepManiaCredits.AddSection(theme_credits) +-- +-- If you want to add your section after an existing section, use the following: +-- StepManiaCredits.AddSection(theme_credits, 7) +-- +-- Or position can be the name of a section to insert after: +-- StepManiaCredits.AddSection(theme_credits, "Special Thanks") +-- +-- Or if you want to add your section before a section: +-- StepManiaCredits.AddSection(theme_credits, "Special Thanks", true) -local ssc = { - "AJ Kelly as freem", - "Jonathan Payne (Midiman)", - "Colby Klein (shakesoda)", -} - -local sm_ssc = { - "Jason Felds (wolfman2000)", -- Timing Segments, Split Timing, optimization - "Thai Pangsakulyanont (theDtTvB)", -- BMS, Split Timing, optimization - "Alberto Ramos (Daisuke Master)", - "Jack Walstrom (FSX)", -} - -local stepmania = { - "Chris Danford", - "Glenn Maynard", - "Steve Checkoway", - -- and various other contributors -} - -local oitg = { - "infamouspat", - "Mark Cannon (vyhd)", -} - -local contrib = { - "Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator - "A.C/@waiei", -- custom scoring fixes + Hybrid scoring - "cerbo", -- lua bindings and other fun stuff - "cesarmades", -- pump/cmd* noteskins - "Chris Eldridge (kurisu)", -- dance-threepanel stepstype support - "Christophe Goulet-LeBlanc (Kommisar)", -- songs - "corec", -- various fixes - "cybik", -- Android port - "galopin", -- piu PlayStation2 usb mat support - "gholms", -- automake 1.11 support - "juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods - "Kaox", -- pump/default noteskin - "Kyzentun", - "Mad Matt", - "NitroX72", -- pump/frame noteskin - "Petriform", -- default theme music - "桜為小鳩/Sakurana-Kobato (@sakuraponila)", -- custom scoring fixes - "Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes - "hanubeki (@803832)", -- beginner helper fix, among various other things - "v1toko", -- x-mode from StepNXA - "Alfred Sorenson", -- new lua bindings -} - -local translators = { - "John Reactor (Polish)", - "DHalens (Spanish)", - "@Niler_jp (Japanese)", - "Deamon007 (Dutch)" -} - -local thanks = { - "A Pseudonymous Coder", -- support - "Bill Shillito (DM Ashura)", -- Music (not yet though) - "cpubasic13", -- testing (a lot) - "Dreamwoods", - "Jason Bolt (LightningXCE)", - "Jousway", -- Noteskins - "Luizsan", -- creator of Delta theme - "Matt1360", -- Automake magic + oitg bro - "Renard", - "Ryan McKanna (Plaguefox)", - "Sta Kousin", --help with Japanese bug reports -} - -local shoutout = { - "The Lua team", -- lua project lead or some shit. super nerdy but oh hell. - "Mojang AB", -- minecraft forever -freem - "Wolfire Games", -- piles of inspiration - "NAKET Coder", - "Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits - --Image(), -- we should have some logos probably to look super pro - "#KBO", - "Celestia Radio", -- LOVE AND TOLERANCE - "You showed us... your ultimate dance", -} - -local copyright = { - "StepMania is released under the terms of the MIT license.", - "If you paid for the program you've been " .. Fooled() .. ".", - "All content is the sole property of their respectful owners." -} - -local sections = { - { "the spinal shark collective (project lead)", ssc }, - { "sm-ssc Team", sm_ssc }, - { "StepMania Team", stepmania }, - { "OpenITG Team", oitg }, - { "Translators", translators }, - { "Other Contributors", contrib }, - { "Special Thanks", thanks }, - { "Shoutouts", shoutout }, - { "Copyright", copyright }, -} - --- To add people or sections modify the above. +-- StepManiaCredits is defined in _fallback/Scripts/04 CreditsHelpers.lua. local lineOn = cmd(zoom,0.875;strokecolor,color("#444444");shadowcolor,color("#444444");shadowlength,3) local sectionOn = cmd(diffuse,color("#88DDFF");strokecolor,color("#446688");shadowcolor,color("#446688");shadowlength,3) local item_padding_start = 4; +local line_height= 30 +-- Tell the credits table the line height so it can use it for logo sizing. +StepManiaCredits.SetLineHeight(line_height) local creditScroller = Def.ActorScroller { SecondsPerItem = 0.5; NumItemsToDraw = 40; TransformFunction = function( self, offset, itemIndex, numItems) - self:y(30*offset) + self:y(line_height*offset) end; OnCommand = cmd(scrollwithpadding,item_padding_start,15); } -local function AddLine( text, command ) - local text = Def.ActorFrame{ - LoadFont("Common normal")..{ - Text = text or ""; - OnCommand = command or lineOn; - } - } - table.insert( creditScroller, text ) -end - -- Add sections with padding. -for section in ivalues(sections) do - AddLine( section[1], sectionOn ) - for name in ivalues(section[2]) do - AddLine( name ) +for section in ivalues(StepManiaCredits.Get()) do + StepManiaCredits.AddLineToScroller(creditScroller, section.name, sectionOn) + for name in ivalues(section) do + StepManiaCredits.AddLineToScroller(creditScroller, name) end - AddLine() - AddLine() + StepManiaCredits.AddLineToScroller(creditScroller) + StepManiaCredits.AddLineToScroller(creditScroller) end creditScroller.BeginCommand=function(self) diff --git a/Themes/_fallback/Graphics/CreditsLogo kyzentun.png b/Themes/_fallback/Graphics/CreditsLogo kyzentun.png new file mode 100755 index 0000000000000000000000000000000000000000..d9431bc99df22e1d2d098e6972fb34c9dd414324 GIT binary patch literal 18775 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 Date: Mon, 1 Sep 2014 19:00:00 -0400 Subject: [PATCH 12/24] expose InsertCoin and InsertCredit to Lua This commit exposes InsertCoin() and InsertCredit() to Lua under GAMESTATE. It adds a check to ensure overall credits don't become negative when deducting and only plays sounds if credits are being added. Themers are instructed to deduct credits by passing negative values to InsertCoin. --- Docs/Luadoc/Lua.xml | 2 + Docs/Luadoc/LuaDocumentation.xml | 7 +++ src/GameState.cpp | 38 +++++++++----- src/StepMania.cpp | 88 +++++++++++++++++--------------- 4 files changed, 82 insertions(+), 53 deletions(-) diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml index 3e9d5c4669..cca7e62894 100644 --- a/Docs/Luadoc/Lua.xml +++ b/Docs/Luadoc/Lua.xml @@ -810,6 +810,8 @@ + + diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml index b0ad156762..4dbeb7bbc1 100644 --- a/Docs/Luadoc/LuaDocumentation.xml +++ b/Docs/Luadoc/LuaDocumentation.xml @@ -2478,6 +2478,13 @@ save yourself some time, copy this for undocumented things: editing portion. If in recording or playing mode, this will return false. + + Inserts iCoins number of coins. iCoins can be negative or positive. + + + Inserts one credit. To deduct a credit, pass a negative integer representing the number + of coins per credit to InsertCoin. + Returns true if this is an extra stage. diff --git a/src/GameState.cpp b/src/GameState.cpp index fd2c05eb0d..a316a2e3e0 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -32,6 +32,7 @@ #include "SongManager.h" #include "SongUtil.h" #include "StatsManager.h" +#include "StepMania.h" #include "Steps.h" #include "Style.h" #include "ThemeManager.h" @@ -396,7 +397,7 @@ void GameState::JoinPlayer( PlayerNumber pn ) // dance-threepanel, popn-nine). -aj // XXX?: still shows joined player as "Insert Card". May not be an issue? -aj if( m_pCurStyle->m_StyleType == StyleType_OnePlayerTwoSides || - m_pCurStyle->m_StepsType == StepsType_dance_solo || + m_pCurStyle->m_StepsType == StepsType_dance_solo || m_pCurStyle->m_StepsType == StepsType_dance_threepanel || m_pCurStyle->m_StepsType == StepsType_popn_nine ) pStyle = GAMEMAN->GetFirstCompatibleStyle( m_pCurGame, 1, m_pCurStyle->m_StepsType ); @@ -2221,7 +2222,7 @@ MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ) #include "LuaBinding.h" #include "Game.h" -/** @brief Allow Lua to have access to the GameState. */ +/** @brief Allow Lua to have access to the GameState. */ class LunaGameState: public Luna { public: @@ -2531,7 +2532,7 @@ public: vEP.push_back( pn ); LuaHelpers::CreateTableFromArray( vEP, L ); return 1; - } + } static int GetCurrentStyle( T* p, lua_State *L ) { Style *pStyle = const_cast