diff --git a/NoteSkins/dance/lambda/Down Hold Body Active (doubleres).png b/NoteSkins/dance/lambda/Down Hold Body Active (doubleres).png new file mode 100644 index 0000000000..c704bf5998 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Hold Body Active (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Hold Body Inactive (doubleres).png b/NoteSkins/dance/lambda/Down Hold Body Inactive (doubleres).png new file mode 100644 index 0000000000..7a538c5222 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Hold Body Inactive (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Hold BottomCap Active (doubleres).png b/NoteSkins/dance/lambda/Down Hold BottomCap Active (doubleres).png new file mode 100644 index 0000000000..fefd02774b Binary files /dev/null and b/NoteSkins/dance/lambda/Down Hold BottomCap Active (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Hold BottomCap Inactive (doubleres).png b/NoteSkins/dance/lambda/Down Hold BottomCap Inactive (doubleres).png new file mode 100644 index 0000000000..af1b73d119 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Hold BottomCap Inactive (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Hold TopCap Active (doubleres).png b/NoteSkins/dance/lambda/Down Hold TopCap Active (doubleres).png new file mode 100644 index 0000000000..de7a000ebf Binary files /dev/null and b/NoteSkins/dance/lambda/Down Hold TopCap Active (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Hold TopCap Inactive (doubleres).png b/NoteSkins/dance/lambda/Down Hold TopCap Inactive (doubleres).png new file mode 100644 index 0000000000..4f3ce94520 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Hold TopCap Inactive (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Receptor.lua b/NoteSkins/dance/lambda/Down Receptor.lua new file mode 100644 index 0000000000..eda1a4c957 --- /dev/null +++ b/NoteSkins/dance/lambda/Down Receptor.lua @@ -0,0 +1,19 @@ +local t = Def.ActorFrame { + Def.Sprite { + Texture="_receptor"; + Frame0000=0; + Delay0000=1; + InitCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'InitCommand'); + NoneCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'NoneCommand'); + }; + Def.Sprite { + Texture="_rflash"; + Frame0000=0; + Delay0000=1; + InitCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'InitCommand'); + PressCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'PressCommand'); + LiftCommand=NOTESKIN:GetMetricA('ReceptorOverlay', 'LiftCommand'); + NoneCommand=NOTESKIN:GetMetricA('ReceptorArrow', 'NoneCommand'); + }; +}; +return t; diff --git a/NoteSkins/dance/lambda/Down Roll Body Active (doubleres).png b/NoteSkins/dance/lambda/Down Roll Body Active (doubleres).png new file mode 100644 index 0000000000..5aca26e9f9 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Roll Body Active (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Roll Body Inactive (doubleres).png b/NoteSkins/dance/lambda/Down Roll Body Inactive (doubleres).png new file mode 100644 index 0000000000..0d31dcb733 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Roll Body Inactive (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Roll BottomCap Active (doubleres).png b/NoteSkins/dance/lambda/Down Roll BottomCap Active (doubleres).png new file mode 100644 index 0000000000..f158e2e95d Binary files /dev/null and b/NoteSkins/dance/lambda/Down Roll BottomCap Active (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Roll BottomCap Inactive (doubleres).png b/NoteSkins/dance/lambda/Down Roll BottomCap Inactive (doubleres).png new file mode 100644 index 0000000000..a89f54407e Binary files /dev/null and b/NoteSkins/dance/lambda/Down Roll BottomCap Inactive (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Roll TopCap Active (doubleres).png b/NoteSkins/dance/lambda/Down Roll TopCap Active (doubleres).png new file mode 100644 index 0000000000..2569a46118 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Roll TopCap Active (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Roll TopCap Inactive (doubleres).png b/NoteSkins/dance/lambda/Down Roll TopCap Inactive (doubleres).png new file mode 100644 index 0000000000..ff948eeda8 Binary files /dev/null and b/NoteSkins/dance/lambda/Down Roll TopCap Inactive (doubleres).png differ diff --git a/NoteSkins/dance/lambda/Down Tap Explosion Bright.redir b/NoteSkins/dance/lambda/Down Tap Explosion Bright.redir new file mode 100644 index 0000000000..4235e12eba --- /dev/null +++ b/NoteSkins/dance/lambda/Down Tap Explosion Bright.redir @@ -0,0 +1 @@ +_glow \ No newline at end of file diff --git a/NoteSkins/dance/lambda/Down Tap Explosion Dim.redir b/NoteSkins/dance/lambda/Down Tap Explosion Dim.redir new file mode 100644 index 0000000000..9bef57edb4 --- /dev/null +++ b/NoteSkins/dance/lambda/Down Tap Explosion Dim.redir @@ -0,0 +1 @@ +Down Tap Explosion Bright \ No newline at end of file diff --git a/NoteSkins/dance/lambda/Down Tap Lift.lua b/NoteSkins/dance/lambda/Down Tap Lift.lua new file mode 100644 index 0000000000..3337a1e3ae --- /dev/null +++ b/NoteSkins/dance/lambda/Down Tap Lift.lua @@ -0,0 +1,7 @@ +local t = Def.ActorFrame { + Def.Sprite { + Texture=NOTESKIN:GetPath( '_down', 'tap lift' ); + InitCommand=cmd(animate,false;pulse;effectclock,"beat";effectmagnitude,0.9,1,1;effectcolor1,color("1,1,1,1");effectcolor2,color("1,1,1,0.8");); + }; +}; +return t; diff --git a/NoteSkins/dance/lambda/Down Tap Mine.lua b/NoteSkins/dance/lambda/Down Tap Mine.lua new file mode 100644 index 0000000000..a489c415c4 --- /dev/null +++ b/NoteSkins/dance/lambda/Down Tap Mine.lua @@ -0,0 +1,9 @@ +local t = Def.ActorFrame { + Def.Sprite { + Texture=NOTESKIN:GetPath( '_down', 'tap mine' ); + Frame0000=0; + Delay0000=1; + InitCommand=cmd(spin;effectclock,'beat';effectmagnitude,0,0,-33); + }; +}; +return t; diff --git a/NoteSkins/dance/lambda/Down Tap Note.lua b/NoteSkins/dance/lambda/Down Tap Note.lua new file mode 100644 index 0000000000..2b82ea00ab --- /dev/null +++ b/NoteSkins/dance/lambda/Down Tap Note.lua @@ -0,0 +1,32 @@ +local t = Def.ActorFrame { + Def.Sprite { + Texture="_arrow"; + Frame0000=0; + Delay0000=1; + }; + Def.Sprite { + Texture="_circle"; + Frame0000=0; + Delay0000=1; + InitCommand=cmd(y,15;effectclock,"beat";diffuseramp;effectcolor1,color("1,1,1,0.1");effectcolor2,color("1,1,1,0.45");effectoffset,0;zoom,0.5); + }; + Def.Sprite { + Texture="_circle"; + Frame0000=0; + Delay0000=1; + InitCommand=cmd(y,5;effectclock,"beat";diffuseramp;effectcolor1,color("1,1,1,0.1");effectcolor2,color("1,1,1,0.45");effectoffset,0.25;zoom,0.5); + }; + Def.Sprite { + Texture="_circle"; + Frame0000=0; + Delay0000=1; + InitCommand=cmd(y,-5;effectclock,"beat";diffuseramp;effectcolor1,color("1,1,1,0.1");effectcolor2,color("1,1,1,0.45");effectoffset,0.5;zoom,0.5); + }; + Def.Sprite { + Texture="_circle"; + Frame0000=0; + Delay0000=1; + InitCommand=cmd(y,-15;effectclock,"beat";diffuseramp;effectcolor1,color("1,1,1,0.1");effectcolor2,color("1,1,1,0.45");effectoffset,0.75;zoom,0.5); + }; +}; +return t; diff --git a/NoteSkins/dance/lambda/NoteSkin.lua b/NoteSkins/dance/lambda/NoteSkin.lua new file mode 100644 index 0000000000..58ee28ef25 --- /dev/null +++ b/NoteSkins/dance/lambda/NoteSkin.lua @@ -0,0 +1,79 @@ +local ret = ... or {}; + +ret.RedirTable = +{ + Up = "Down", + Down = "Down", + Left = "Down", + Right = "Down", + UpLeft = "Down", + UpRight = "Down", +}; + +local OldRedir = ret.Redir; + +ret.Redir = function(sButton, sElement) + sButton, sElement = OldRedir(sButton, sElement); + + --Point the head files back to the tap note + if string.find(sElement, "Head") or sElement == "Tap Fake" then + sElement = "Tap Note"; + end + + sButton = ret.RedirTable[sButton]; + + return sButton, sElement; +end + +local OldFunc = ret.Load; +function ret.Load() + local t = OldFunc(); + + -- The main "Explosion" part just loads other actors; don't rotate + -- it. The "Hold Explosion" part should not be rotated. + if Var "Element" == "Explosion" or + Var "Element" == "Roll Explosion" then + t.BaseRotationZ = nil; + end + return t; +end + +ret.PartsToRotate = +{ + ["Receptor"] = true, + ["Tap Note"] = true, + ["Tap Lift"] = true, + ["Tap Fake"] = true, + ["Ready Receptor"] = true, + ["Tap Explosion Bright"] = true, + ["Tap Explosion Dim"] = true, + ["Hold Head Active"] = true, + ["Hold Head Inactive"] = true, + ["Roll Head Active"] = true, + ["Roll Head Inactive"] = true +}; +ret.Rotate = +{ + Up = 180, + Down = 0, + Left = 90, + Right = -90, + UpLeft = 135, + UpRight = 225, +}; + +ret.Blank = +{ + ["Hold Explosion"] = true, + ["Roll Explosion"] = true, + ["Hold Topcap Active"] = true, + ["Hold Topcap Inactive"] = true, + ["Roll Topcap Active"] = true, + ["Roll Topcap Inactive"] = true, + ["Hold Tail Active"] = true, + ["Hold Tail Inactive"] = true, + ["Roll Tail Active"] = true, + ["Roll Tail Inactive"] = true, +}; + +return ret; diff --git a/NoteSkins/dance/lambda/_Down Tap Lift (doubleres).png b/NoteSkins/dance/lambda/_Down Tap Lift (doubleres).png new file mode 100644 index 0000000000..d90a41fc9e Binary files /dev/null and b/NoteSkins/dance/lambda/_Down Tap Lift (doubleres).png differ diff --git a/NoteSkins/dance/lambda/_Down Tap Mine (doubleres).png b/NoteSkins/dance/lambda/_Down Tap Mine (doubleres).png new file mode 100644 index 0000000000..5f8a04e1bb Binary files /dev/null and b/NoteSkins/dance/lambda/_Down Tap Mine (doubleres).png differ diff --git a/NoteSkins/dance/lambda/_arrow 1x8 (doubleres).png b/NoteSkins/dance/lambda/_arrow 1x8 (doubleres).png new file mode 100644 index 0000000000..1257595f8b Binary files /dev/null and b/NoteSkins/dance/lambda/_arrow 1x8 (doubleres).png differ diff --git a/NoteSkins/dance/lambda/_circle (doubleres).png b/NoteSkins/dance/lambda/_circle (doubleres).png new file mode 100644 index 0000000000..476797a673 Binary files /dev/null and b/NoteSkins/dance/lambda/_circle (doubleres).png differ diff --git a/NoteSkins/dance/lambda/_glow (doubleres).png b/NoteSkins/dance/lambda/_glow (doubleres).png new file mode 100644 index 0000000000..7b294489d6 Binary files /dev/null and b/NoteSkins/dance/lambda/_glow (doubleres).png differ diff --git a/NoteSkins/dance/lambda/_receptor (doubleres).png b/NoteSkins/dance/lambda/_receptor (doubleres).png new file mode 100644 index 0000000000..f644001caa Binary files /dev/null and b/NoteSkins/dance/lambda/_receptor (doubleres).png differ diff --git a/NoteSkins/dance/lambda/_rflash (doubleres).png b/NoteSkins/dance/lambda/_rflash (doubleres).png new file mode 100644 index 0000000000..36dd9f527e Binary files /dev/null and b/NoteSkins/dance/lambda/_rflash (doubleres).png differ diff --git a/NoteSkins/dance/lambda/metrics.ini b/NoteSkins/dance/lambda/metrics.ini new file mode 100644 index 0000000000..597ebcceea --- /dev/null +++ b/NoteSkins/dance/lambda/metrics.ini @@ -0,0 +1,77 @@ +[Global] +FallbackNoteSkin=common + +[NoteDisplay] +TapNoteAnimationIsVivid=0 +DrawHoldHeadForTapsOnSameRow=1 +TapNoteAnimationLength=1 // none of these matter because Lua is handling the animation, not sprites. +TapAdditionAnimationLength=1 +TapMineAnimationLength=1 +TapLiftAnimationLength=1 +TapFakeAnimationLength=1 +HoldHeadAnimationLength=1 +HoldTopCapAnimationLength=1 +HoldBottomCapAnimationLength=1 +HoldBodyAnimationLength=1 +HoldTailAnimationLength=1 + +StartDrawingHoldBodyOffsetFromHead=0 +StopDrawingHoldBodyOffsetFromTail=0 + +HoldLetGoGrayPercent=.25 + +HoldHeadIsAboveWavyParts=1 +HoldTailIsAboveWavyParts=1 + +ReverseDrawOrder=1101 +FlipHeadAndTailWhenReverse=1 +FlipHoldBodyWhenReverse=1 + +TapNoteAdditionTextureCoordOffsetX=0 +TapNoteAdditionTextureCoordOffsetY=0 +TapNoteNoteColorTextureCoordSpacingX=0 +TapNoteNoteColorTextureCoordSpacingY=.125 +TapFakeNoteColorTextureCoordSpacingX=0 +TapFakeNoteColorTextureCoordSpacingY=.125 +HoldHeadNoteColorTextureCoordSpacingX=0 +HoldHeadNoteColorTextureCoordSpacingY=.125 + +[GhostArrowDim] +InitCommand= +NoneCommand= +HitMineCommand=finishtweening;blend,'BlendMode_Add';diffuse,color("1,1,1,1");zoom,1;rotationz,0;decelerate,.3;rotationz,90;linear,.3;rotationz,180;diffusealpha,0 +MissCommand= +W5Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W5");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W4Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W4");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W3Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W3");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W2Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W2");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W1Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W1");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +LetGoCommand=stoptweening;decelerate,.2;diffusealpha,0; +HeldCommand=finishtweening;diffuse,color("1,1,1,1");zoom,1;linear,.2;zoom,.9;linear,.1;diffusealpha,0 + +[GhostArrowBright] +InitCommand= +NoneCommand= +HitMineCommand=finishtweening;blend,'BlendMode_Add';diffuse,color("1,1,1,1");zoom,1;rotationz,0;decelerate,.3;rotationz,90;linear,.3;rotationz,180;diffusealpha,0 +MissCommand= +W5Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W5");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W4Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W4");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W3Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W3");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W2Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W2");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +W1Command=finishtweening;diffuse,JudgmentLineToColor("JudgmentLine_W1");diffusealpha,1;sleep,.1;decelerate,.2;diffusealpha,0;zoom,1.1; +LetGoCommand=stoptweening;decelerate,.2;diffusealpha,0; +HeldCommand=finishtweening;diffuse,color("1,1,1,1");zoom,1;linear,.2;zoom,.9;linear,.1;diffusealpha,0 + +[HoldGhostArrow] +HoldingOnCommand=diffusealpha,1;glowshift;effectcolor1,color("1,1,1,0");effectcolor2,color("1,1,1,.7");effectperiod,.1 +HoldingOffCommand=diffusealpha,0 +InitCommand=finishtweening;playcommand,"HoldingOff" + +[ReceptorArrow] +InitCommand=effectclock,"beat";diffuseramp;effectcolor1,color(".8,.8,.8,1");effectcolor2,color("1,1,1,1");effecttiming,.2,0,.8,0;effectoffset,.05 +NoneCommand=finishtweening;zoom,.85;diffusealpha,.9;linear,.11;diffusealpha,1;zoom,1 + +[ReceptorOverlay] +InitCommand=diffusealpha,0 +PressCommand=finishtweening;zoom,1;blend,"BlendMode_Add";diffusealpha,.8;decelerate,0.2;diffusealpha,0.4 +LiftCommand=stoptweening;decelerate,.2;diffusealpha,0;zoom,1.2 diff --git a/Themes/default/BGAnimations/ScreenEvaluation underlay/default.lua b/Themes/default/BGAnimations/ScreenEvaluation underlay/default.lua index 4867bdc5a2..4926bd0126 100644 --- a/Themes/default/BGAnimations/ScreenEvaluation underlay/default.lua +++ b/Themes/default/BGAnimations/ScreenEvaluation underlay/default.lua @@ -135,7 +135,7 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do local spacing = 38*i eval_parts[#eval_parts+1] = Def.BitmapText { Font = "_overpass 36px", - InitCommand=cmd(x,_screen.cx + step_count_offs;y,(_screen.cy/1.4)+(spacing);diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;diffusealpha,1.0;shadowlength,1), + InitCommand=cmd(x,_screen.cx + step_count_offs;y,(_screen.cy/1.4)+(spacing);diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;diffusealpha,1.0;shadowlength,1;maxwidth,120;), OnCommand=function(self) self:settext(GetJLineValue(v, p)) if string.find(p, "P1") then @@ -164,7 +164,7 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do OffCommand=cmd(decelerate,0.3;diffusealpha,0) }, Def.Quad { - InitCommand=cmd(y,120;zoomto,190,120;diffuse,color("#fce1a1");), + InitCommand=cmd(vertalign,top;y,60;zoomto,190,136;diffuse,color("#fce1a1");), OnCommand=function(self) self:diffusealpha(0):decelerate(0.4):diffusealpha(0.4) end, @@ -201,7 +201,7 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do -- Primary score. eval_parts[#eval_parts+1] = Def.BitmapText { Font = "_overpass 36px", - InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65);diffuse,ColorMidTone(PlayerColor(p));zoom,1;shadowlength,1;maxwidth,180), + InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-59);diffuse,ColorMidTone(PlayerColor(p));zoom,1;shadowlength,1;maxwidth,180), OnCommand=function(self) self:settext(GetPlScore(p, "primary")):diffusealpha(0):sleep(0.5):decelerate(0.3):diffusealpha(1) end; @@ -212,7 +212,7 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do -- Secondary score. eval_parts[#eval_parts+1] = Def.BitmapText { Font = "_overpass 36px", - InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+30;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1), + InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-59)+35;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1), OnCommand=function(self) self:settext(GetPlScore(p, "secondary")):diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1) end; @@ -223,19 +223,32 @@ for ip, p in ipairs(GAMESTATE:GetHumanPlayers()) do eval_parts[#eval_parts+1] = Def.BitmapText { Font = "Common Condensed", - InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-65)+56;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1), + InitCommand=cmd(horizalign,center;x,_screen.cx + (grade_parts_offs);y,(_screen.cy-50)+56;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1;maxwidth,180), OnCommand=function(self) local record = STATSMAN:GetCurStageStats():GetPlayerStageStats(p):GetPersonalHighScoreIndex() local hasPersonalRecord = record ~= -1 self:visible(hasPersonalRecord); local text = string.format(THEME:GetString("ScreenEvaluation", "PersonalRecord"), record+1) self:settext(text) - self:diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(1) + self:diffusealpha(0):sleep(0.6):decelerate(0.3):diffusealpha(0.9) end; OffCommand=function(self) self:sleep(0.1):decelerate(0.3):diffusealpha(0) end; } + + -- Options + eval_parts[#eval_parts+1] = Def.BitmapText { + Font = "Common Condensed", + InitCommand=cmd(horizalign,center;vertalign,top;x,_screen.cx + (grade_parts_offs);y,(_screen.cy+37);wrapwidthpixels,240;diffuse,ColorDarkTone(PlayerColor(p));zoom,0.75;shadowlength,1), + OnCommand=function(self) + self:settext(GAMESTATE:GetPlayerState(p):GetPlayerOptionsString(0)) + self:diffusealpha(0):sleep(0.8):decelerate(0.9):diffusealpha(1) + end; + OffCommand=function(self) + self:sleep(0.1):decelerate(0.3):diffusealpha(0) + end; + }; end t[#t+1] = eval_parts @@ -247,7 +260,7 @@ if GAMESTATE:IsHumanPlayer(PLAYER_1) == true then -- Difficulty banner local grade_parts_offs = -320 t[#t+1] = Def.ActorFrame { - InitCommand=cmd(horizalign,center;x,_screen.cx + grade_parts_offs;y,_screen.cy-98;visible,not GAMESTATE:IsCourseMode();); + InitCommand=cmd(horizalign,center;x,_screen.cx + grade_parts_offs;y,_screen.cy-94;visible,not GAMESTATE:IsCourseMode();); OnCommand=cmd(zoomx,0.3;diffusealpha,0;sleep,0.5;decelerate,0.4;zoomx,1;diffusealpha,1;); OffCommand=cmd(decelerate,0.4;diffusealpha,0;); LoadFont("Common Fallback") .. { @@ -285,7 +298,7 @@ if GAMESTATE:IsHumanPlayer(PLAYER_2) == true then if GAMESTATE:IsCourseMode() == false then local grade_parts_offs = 320 t[#t+1] = Def.ActorFrame { - InitCommand=cmd(horizalign,center;x,_screen.cx + grade_parts_offs;y,_screen.cy-98;visible,not GAMESTATE:IsCourseMode();); + InitCommand=cmd(horizalign,center;x,_screen.cx + grade_parts_offs;y,_screen.cy-94;visible,not GAMESTATE:IsCourseMode();); OnCommand=cmd(zoomx,0.3;diffusealpha,0;sleep,0.5;decelerate,0.4;zoomx,1;diffusealpha,1;); OffCommand=cmd(decelerate,0.4;diffusealpha,0;); LoadFont("Common Fallback") .. { diff --git a/Themes/default/Fonts/_iosevka extralight oblique 42px [numbers-stroke] 4x4 (doubleres).png b/Themes/default/Fonts/_iosevka extralight oblique 42px [numbers-stroke] 4x4 (doubleres).png deleted file mode 100644 index 2cfcd9370c..0000000000 Binary files a/Themes/default/Fonts/_iosevka extralight oblique 42px [numbers-stroke] 4x4 (doubleres).png and /dev/null differ diff --git a/Themes/default/Fonts/_iosevka extralight oblique 42px [numbers] 4x4 (doubleres).png b/Themes/default/Fonts/_iosevka extralight oblique 42px [numbers] 4x4 (doubleres).png deleted file mode 100644 index 4d23728822..0000000000 Binary files a/Themes/default/Fonts/_iosevka extralight oblique 42px [numbers] 4x4 (doubleres).png and /dev/null differ diff --git a/Themes/default/Fonts/_iosevka extralight oblique 42px.ini b/Themes/default/Fonts/_iosevka extralight oblique 42px.ini deleted file mode 100644 index 6a38412c42..0000000000 --- a/Themes/default/Fonts/_iosevka extralight oblique 42px.ini +++ /dev/null @@ -1,30 +0,0 @@ -[common] -Baseline=44 -Top=13 -LineSpacing=52 -DrawExtraPixelsLeft=0 -DrawExtraPixelsRight=0 -AdvanceExtraPixels=0 - -[numbers] -Line 0=0123 -Line 1=4567 -Line 2=89%. -Line 3= :x, - -0=21 -1=21 -2=21 -3=21 -4=21 -5=21 -6=21 -7=21 -8=21 -9=21 -10=21 -11=21 -12=21 -13=21 -14=21 -15=21 diff --git a/Themes/default/Graphics/MusicWheelItem Song NormalPart.png b/Themes/default/Graphics/MusicWheelItem Song NormalPart.png index 52f068a075..b5f4222443 100644 Binary files a/Themes/default/Graphics/MusicWheelItem Song NormalPart.png and b/Themes/default/Graphics/MusicWheelItem Song NormalPart.png differ diff --git a/Themes/default/Graphics/MusicWheelItem grades/default.lua b/Themes/default/Graphics/MusicWheelItem grades/default.lua new file mode 100644 index 0000000000..12cab535a9 --- /dev/null +++ b/Themes/default/Graphics/MusicWheelItem grades/default.lua @@ -0,0 +1,31 @@ +-- This actor is duplicated. Upvalues will not be duplicated. +local grades = { + Grade_Tier01 = 0, + Grade_Tier02 = 1, + Grade_Tier03 = 2, + Grade_Tier04 = 3, + Grade_Tier05 = 4, + Grade_Tier06 = 5, + Grade_Tier07 = 6, + Grade_Failed = 7, + Grade_None = nil +}; + +return LoadActor("grades")..{ + InitCommand=cmd(pause); + SetGradeCommand=function(self, params) + if GAMESTATE:IsCourseMode() then + self:visible(false); + return; + end; + local state = grades[params.Grade] or grades.Grade_None; + if state == nil then + self:visible(false) + else + self:visible(true) + state = state*2 + if params.PlayerNumber == PLAYER_2 then state = state+1 end + self:setstate(state) + end + end; +}; \ No newline at end of file diff --git a/Themes/default/Graphics/MusicWheelItem grades/grades 2x8.png b/Themes/default/Graphics/MusicWheelItem grades/grades 2x8.png new file mode 100644 index 0000000000..fe861513df Binary files /dev/null and b/Themes/default/Graphics/MusicWheelItem grades/grades 2x8.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyList.lua b/Themes/default/Graphics/ScreenSelectMusic DifficultyList.lua index c3ed3bddc9..eede32ed6d 100644 --- a/Themes/default/Graphics/ScreenSelectMusic DifficultyList.lua +++ b/Themes/default/Graphics/ScreenSelectMusic DifficultyList.lua @@ -36,6 +36,11 @@ return Def.ActorFrame { LoadActor(THEME:GetPathG("_StepsDisplayListRow","Cursor")) .. { InitCommand=cmd(diffuse,ColorLightTone(PlayerColor(PLAYER_1));x,8;zoom,0.75); }; + LoadFont("_roboto condensed Bold 48px") .. { + Text="P1"; + InitCommand=cmd(horizalign,center;x,8;diffuse,ColorDarkTone(PlayerColor(PLAYER_1));); + OnCommand=cmd(zoom,0.5); + }; }; CursorP2 = Def.ActorFrame { InitCommand=cmd(x,170;player,PLAYER_2); @@ -54,6 +59,11 @@ return Def.ActorFrame { LoadActor(THEME:GetPathG("_StepsDisplayListRow","Cursor")) .. { InitCommand=cmd(diffuse,ColorLightTone(PlayerColor(PLAYER_2));x,-8;zoom,0.75;zoomx,-0.75;); }; + LoadFont("_roboto condensed Bold 48px") .. { + Text="P2"; + InitCommand=cmd(horizalign,center;x,-8;diffuse,ColorDarkTone(PlayerColor(PLAYER_2));); + OnCommand=cmd(zoom,0.5); + }; }; CursorP1Frame = Def.Actor{ ChangeCommand=cmd(stoptweening;decelerate,0.05); diff --git a/Themes/default/Graphics/ScreenSelectMusic pane background.png b/Themes/default/Graphics/ScreenSelectMusic pane background.png index 97adda40ad..17fa96b726 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic pane background.png and b/Themes/default/Graphics/ScreenSelectMusic pane background.png differ diff --git a/Themes/default/Graphics/ScreenTitleMenu logo/_arrow (dither).png b/Themes/default/Graphics/ScreenTitleMenu logo/_arrow (dither).png index 4a22f30dc4..c51187cb7b 100644 Binary files a/Themes/default/Graphics/ScreenTitleMenu logo/_arrow (dither).png and b/Themes/default/Graphics/ScreenTitleMenu logo/_arrow (dither).png differ diff --git a/Themes/default/Graphics/ScreenTitleMenu logo/_text (dither).png b/Themes/default/Graphics/ScreenTitleMenu logo/_text (dither).png index 4a22f30dc4..c51187cb7b 100644 Binary files a/Themes/default/Graphics/ScreenTitleMenu logo/_text (dither).png and b/Themes/default/Graphics/ScreenTitleMenu logo/_text (dither).png differ diff --git a/Themes/default/Graphics/WheelNotifyIcon icons 4x2.png b/Themes/default/Graphics/WheelNotifyIcon icons 4x2.png index d743c7abb6..d7c937c525 100644 Binary files a/Themes/default/Graphics/WheelNotifyIcon icons 4x2.png and b/Themes/default/Graphics/WheelNotifyIcon icons 4x2.png differ diff --git a/Themes/default/Scripts/02 Colors.lua b/Themes/default/Scripts/02 Colors.lua index b969c0fe71..2bdef845a6 100644 --- a/Themes/default/Scripts/02 Colors.lua +++ b/Themes/default/Scripts/02 Colors.lua @@ -26,7 +26,7 @@ end; ScreenColors = { Style = color("#81468B"), - PlayMode = color("#478e6f"), + PlayMode = color("#b2350c"), Music = color("#1268aa"), Online = color("#1CA6A0"), Course = color("#6D1646"), diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index f780c063f2..f4b6c2f697 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -817,7 +817,7 @@ ShowRandom=true [MusicWheelItem] Fallback=WheelItemBase -IconX=-190 +IconX=-186 IconY=0 IconOnCommand= # @@ -838,10 +838,10 @@ RandomX=-200 RandomY=0 RandomOnCommand=zoom,1.25;uppercase,true;rainbowscroll,true;shadowlength,1;horizalign,left; -GradeP1X=140 -GradeP1Y=0 -GradeP2X=216 -GradeP2Y=0 +GradeP1X=-196 +GradeP1Y=-14 +GradeP2X=-196 +GradeP2Y=14 CourseX=-210 CourseOnCommand=zoom,1.0;horizalign,left;shadowlength,1;maxwidth,SCREEN_WIDTH*0.31;strokecolor,color("#42292E") @@ -865,13 +865,13 @@ AfterSetCommand=%function(self) \ local Subtitle=self:GetChild("Subtitle"); \ local Artist=self:GetChild("Artist"); \ if Subtitle:GetText() == "" then \ - (cmd(zoom,1.1;maxwidth,SCREEN_WIDTH*0.31;y,-13;x,-200;strokecolor,color("#42292E");))(Title); \ + (cmd(zoom,1.1;maxwidth,SCREEN_WIDTH*0.24;y,-13;x,-150;strokecolor,color("#42292E");))(Title); \ (cmd(visible,false))(Subtitle); \ - (cmd(zoom,0.75;maxwidth,SCREEN_WIDTH*0.45;y,13;x,-200;strokecolor,color("#42292E");))(Artist); \ + (cmd(zoom,0.75;maxwidth,SCREEN_WIDTH*0.36;y,13;x,-150;strokecolor,color("#42292E");))(Artist); \ else \ - (cmd(zoom,0.9;maxwidth,SCREEN_WIDTH*0.31;y,-14;x,-200;strokecolor,color("#42292E");))(Title); \ - (cmd(visible,true;zoom,0.5;y,4;maxwidth,SCREEN_WIDTH*0.46;x,-200;strokecolor,color("#42292E");))(Subtitle); \ - (cmd(zoom,0.6;maxwidth,SCREEN_WIDTH*0.45;y,18;x,-200;strokecolor,color("#42292E");))(Artist); \ + (cmd(zoom,0.9;maxwidth,SCREEN_WIDTH*0.24;y,-14;x,-150;strokecolor,color("#42292E");))(Title); \ + (cmd(visible,true;zoom,0.5;y,4;maxwidth,SCREEN_WIDTH*0.40;x,-150;strokecolor,color("#42292E");))(Subtitle); \ + (cmd(zoom,0.6;maxwidth,SCREEN_WIDTH*0.36;y,18;x,-150;strokecolor,color("#42292E");))(Artist); \ end \ end; diff --git a/src/Course.cpp b/src/Course.cpp index af1798fbfd..f902717195 100644 --- a/src/Course.cpp +++ b/src/Course.cpp @@ -1256,7 +1256,19 @@ public: static int HasMods( T* p, lua_State *L ) { lua_pushboolean(L, p->HasMods() ); return 1; } static int HasTimedMods( T* p, lua_State *L ) { lua_pushboolean( L, p->HasTimedMods() ); return 1; } DEFINE_METHOD( GetCourseType, GetCourseType() ) - static int GetCourseEntry( T* p, lua_State *L ) { CourseEntry &ce = p->m_vEntries[IArg(1)]; ce.PushSelf(L); return 1; } + static int GetCourseEntry(T* p, lua_State* L) + { + size_t id= static_cast(IArg(1)); + if(id >= p->m_vEntries.size()) + { + lua_pushnil(L); + } + else + { + p->m_vEntries[id].PushSelf(L); + } + return 1; + } static int GetCourseEntries( T* p, lua_State *L ) { vector v; @@ -1267,6 +1279,11 @@ public: LuaHelpers::CreateTableFromArray( v, L ); return 1; } + static int GetNumCourseEntries(T* p, lua_State* L) + { + lua_pushnumber(L, p->m_vEntries.size()); + return 1; + } static int GetAllTrails( T* p, lua_State *L ) { vector v; @@ -1318,6 +1335,7 @@ public: ADD_METHOD( GetCourseType ); ADD_METHOD( GetCourseEntry ); ADD_METHOD( GetCourseEntries ); + ADD_METHOD(GetNumCourseEntries); ADD_METHOD( GetAllTrails ); ADD_METHOD( GetBannerPath ); ADD_METHOD( GetBackgroundPath ); diff --git a/src/MusicWheelItem.cpp b/src/MusicWheelItem.cpp index cbf51b83e4..355e98ca98 100644 --- a/src/MusicWheelItem.cpp +++ b/src/MusicWheelItem.cpp @@ -305,6 +305,7 @@ void MusicWheelItem::LoadFromWheelItemData( const WheelItemBaseData *pData, int void MusicWheelItem::RefreshGrades() { + if(!IsLoaded()) { return; } const MusicWheelItemData *pWID = dynamic_cast( m_pData ); if( pWID == NULL ) @@ -375,6 +376,7 @@ void MusicWheelItem::RefreshGrades() void MusicWheelItem::HandleMessage( const Message &msg ) { + if(!IsLoaded()) { return; } if( msg == Message_CurrentStepsP1Changed || msg == Message_CurrentStepsP2Changed || msg == Message_CurrentTrailP1Changed ||