diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index b213ba6b6b..ae5db43ca5 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -8,6 +8,10 @@ ________________________________________________________________________________ StepMania 5.0 $NEXT | 20110xyy -------------------------------------------------------------------------------- +2011/05/23 +---------- +* [Steps] Added the UsesSplitTiming Lua binding. [Wolfman2000] + 2011/05/20 ---------- * [CryptManager] Added SHA1File Lua binding. [AJ] @@ -51,6 +55,12 @@ StepMania 5.0 $NEXT | 20110xyy * [ScreenEvaluation] Stop the Bonus bars from overflowing in course modes. [AJ] * [Banner] Added ScrollMode and ScrollSortOrder metrics. [AJ] +2011/05/13 +---------- +* Added Split Timing to .SSC files. All older .SSC files and other file + formats are converted to split timing on cache load. We are no longer bound + by Song Timing for everything. [theDtTvB, Wolfman2000, TeruFSX] + 2011/05/11 ---------- * [GameSoundManager] Added PlayAnnouncer Lua binding. [AJ] diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml index 942df4b4d5..f697390be9 100644 --- a/Docs/Luadoc/Lua.xml +++ b/Docs/Luadoc/Lua.xml @@ -1374,6 +1374,7 @@ + diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml index 977a524485..135d345578 100644 --- a/Docs/Luadoc/LuaDocumentation.xml +++ b/Docs/Luadoc/LuaDocumentation.xml @@ -3454,6 +3454,9 @@ Returns true if the steps were automatically generated. + + Returns true if the Steps use different TimingData from the Song. + diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 95a34e99e4..dcd6d3423d 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -2609,7 +2609,7 @@ ItemsLongRowSharedX=SCREEN_CENTER_X+150 ItemOnCommand= ColorSelected=color("0.5,1,0.5,1") ColorNotSelected=color("1,1,1,1") -ColorDisabled=color("0.5,0.5,0.5,1") +ColorDisabled=color("0.65,0,0,1") TweenSeconds=0 [ScreenMiniMenuContext] @@ -3711,10 +3711,11 @@ RowInitCommand=halign,0.5;valign,0.5;zoom,0.8;x,75;y,45;shadowlength,1 OptionRowNormalMetricsGroup="OptionRowMiniMenuEditHelp" [OptionRowMiniMenuEditHelp] +# Help menu ( Keys & Stuff ) Fallback="OptionRowMiniMenu" TitleX=SCREEN_CENTER_X-312 -TitleOnCommand=halign,0;strokecolor,color("#222222CC");shadowlength,1;zoom,0.9 +TitleOnCommand=halign,0;strokecolor,color("#222222FF");shadowlength,1;zoom,0.75 RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \ local indexOffset = itemIndex-(numItems-1)/2; \ @@ -3726,8 +3727,8 @@ ItemsEndX=SCREEN_CENTER_X+260 ItemsLongRowP1X=SCREEN_CENTER_X+260 ItemsLongRowP2X=SCREEN_CENTER_X+260 -ItemOnCommand=x,SCREEN_CENTER_X+176;halign,0;strokecolor,color("#222222CC");shadowlength,1;zoom,0.9 -ColorDisabled=color("1,1,1,1") +ItemOnCommand=x,SCREEN_CENTER_X+176;halign,0;strokecolor,color("#222222CC");shadowlength,1;zoom,0.75 +ColorDisabled=Color("Orange") [ScreenMiniMenuMainMenu] Fallback="ScreenMiniMenu" diff --git a/Themes/default-dev-midi/Graphics/Player judgment/default.lua b/Themes/default-dev-midi/Graphics/Player judgment/default.lua new file mode 100644 index 0000000000..74dba2343c --- /dev/null +++ b/Themes/default-dev-midi/Graphics/Player judgment/default.lua @@ -0,0 +1,250 @@ +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 + +-- New +local function PosCount( t ) + local Count = 0; + for i=1,#t do + if t[i] > 0 then Count = Count + 1 end + end + return Count +end + +local function NegCount( t ) + local Count = 0; + for i=1,#t do + if t[i] < 0 then Count = Count + 1 end + end + return Count +end + + +local function StdDev( t ) + local avg = MakeAverage( t ); + local sum = 0; + for i=1,#t do + sum = sum + math.pow(t[i] - avg, 2); + end + return math.sqrt(sum / (#t - 1)) +end + +-- +local tTotalJudgments = {}; +-- Global? +--[[ tPlayerData = {}; +for pn in ivalues(GAMESTATE:GetHumanPlayers()) + tPlayerData[pn].SignedJudgments = {}; + tPlayerData[pn].AverageDifference = 0; + tPlayerData[pn].AbsoluteDifference = 0; + tPlayerData[pn].StandardDeviation = 0; + tPlayerData[pn].StandardDeviation = 0; + tPlayerData[pn].Early = 0; + tPlayerData[pn].Late = 0; +end ]] +-- +local JudgeCmds = { + TapNoteScore_W1 = THEME:GetMetric( "Judgment", "JudgmentW1Command" ); + TapNoteScore_W2 = THEME:GetMetric( "Judgment", "JudgmentW2Command" ); + TapNoteScore_W3 = THEME:GetMetric( "Judgment", "JudgmentW3Command" ); + TapNoteScore_W4 = THEME:GetMetric( "Judgment", "JudgmentW4Command" ); + TapNoteScore_W5 = THEME:GetMetric( "Judgment", "JudgmentW5Command" ); + TapNoteScore_Miss = THEME:GetMetric( "Judgment", "JudgmentMissCommand" ); +}; + +local ProtimingCmds = { + TapNoteScore_W1 = THEME:GetMetric( "Protiming", "ProtimingW1Command" ); + TapNoteScore_W2 = THEME:GetMetric( "Protiming", "ProtimingW2Command" ); + TapNoteScore_W3 = THEME:GetMetric( "Protiming", "ProtimingW3Command" ); + TapNoteScore_W4 = THEME:GetMetric( "Protiming", "ProtimingW4Command" ); + TapNoteScore_W5 = THEME:GetMetric( "Protiming", "ProtimingW5Command" ); + TapNoteScore_Miss = THEME:GetMetric( "Protiming", "ProtimingMissCommand" ); +}; + +local AverageCmds = { + Pulse = THEME:GetMetric( "Protiming", "AveragePulseCommand" ); +}; + +local TNSFrames = { + TapNoteScore_W1 = 0; + TapNoteScore_W2 = 1; + TapNoteScore_W3 = 2; + TapNoteScore_W4 = 3; + TapNoteScore_W5 = 4; + TapNoteScore_Miss = 5; +}; +local t = Def.ActorFrame {}; +t[#t+1] = Def.ActorFrame { + LoadActor(THEME:GetPathG("Judgment","Normal")) .. { + Name="Judgment"; + InitCommand=cmd(pause;visible,false); + OnCommand=THEME:GetMetric("Judgment","JudgmentOnCommand"); + ResetCommand=cmd(finishtweening;stopeffect;visible,false); + }; + LoadFont("Combo Numbers") .. { + Name="ProtimingDisplay"; + Text=""; + InitCommand=cmd(visible,false); + 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); + }; + Def.Quad { + Name="ProtimingGraphBG"; + InitCommand=cmd(visible,false;y,32;zoomto,192,16); + ResetCommand=cmd(finishtweening;diffusealpha,0.8;visible,false); + OnCommand=cmd(diffuse,Color("Black");diffusetopedge,color("0.1,0.1,0.1,1");diffusealpha,0.8;shadowlength,2;); + }; + Def.Quad { + Name="ProtimingGraphWindowW3"; + InitCommand=cmd(visible,false;y,32;zoomto,192-4,16-4); + ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); + OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W3"];); + }; + Def.Quad { + Name="ProtimingGraphWindowW2"; + InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW2"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,192-4),16-4); + ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); + OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W2"];); + }; + Def.Quad { + Name="ProtimingGraphWindowW1"; + InitCommand=cmd(visible,false;y,32;zoomto,scale(PREFSMAN:GetPreference("TimingWindowSecondsW1"),0,PREFSMAN:GetPreference("TimingWindowSecondsW3"),0,192-4),16-4); + ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); + OnCommand=cmd(diffuse,GameColor.Judgment["JudgmentLine_W1"];); + }; + Def.Quad { + Name="ProtimingGraphUnderlay"; + InitCommand=cmd(visible,false;y,32;zoomto,192-4,16-4); + ResetCommand=cmd(finishtweening;diffusealpha,0.25;visible,false); + OnCommand=cmd(diffuse,Color("Black");diffusealpha,0.25); + }; + Def.Quad { + Name="ProtimingGraphFill"; + InitCommand=cmd(visible,false;y,32;zoomto,0,16-4;horizalign,left;); + ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); + OnCommand=cmd(diffuse,Color("Red");); + }; + Def.Quad { + Name="ProtimingGraphAverage"; + InitCommand=cmd(visible,false;y,32;zoomto,2,7;); + ResetCommand=cmd(finishtweening;diffusealpha,0.85;visible,false); + OnCommand=cmd(diffuse,Color("Orange");diffusealpha,0.85); + }; + Def.Quad { + Name="ProtimingGraphCenter"; + InitCommand=cmd(visible,false;y,32;zoomto,2,16-4;); + ResetCommand=cmd(finishtweening;diffusealpha,1;visible,false); + OnCommand=cmd(diffuse,Color("White");diffusealpha,1); + }; + InitCommand = function(self) + c = self:GetChildren(); + end; + + JudgmentMessageCommand=function(self, param) + if param.Player ~= player then return end; + if param.HoldNoteScore then return end; + + local iNumStates = c.Judgment:GetNumStates(); + local iFrame = TNSFrames[param.TapNoteScore]; + + if not iFrame then return end + if iNumStates == 12 then + iFrame = iFrame * 2; + if not param.Early then + iFrame = iFrame + 1; + end + end + + + local fTapNoteOffset = param.TapNoteOffset; + if param.HoldNoteScore then + fTapNoteOffset = 1; + else + fTapNoteOffset = param.TapNoteOffset; + end + + if param.TapNoteScore == 'TapNoteScore_Miss' then + fTapNoteOffset = 1; + bUseNegative = true; + else +-- fTapNoteOffset = fTapNoteOffset; + bUseNegative = false; + end; + + if fTapNoteOffset ~= 1 then + -- we're safe, you can push the values + tTotalJudgments[#tTotalJudgments+1] = bUseNegative and fTapNoteOffset or math.abs( fTapNoteOffset ); + -- New +-- tPlayerData[player].SignedJudgments[#(tPlayerData[player].SignedJudgments)+1] = fTapNoteOffset; +-- table.getn(tPlayerData[player].SignedJudgments = bUseNegative and fTapNoteOffset or fTapNoteOffset; + end + + self:playcommand("Reset"); + + c.Judgment:visible( not bShowProtiming ); + c.Judgment:setstate( iFrame ); + JudgeCmds[param.TapNoteScore](c.Judgment); + + c.ProtimingDisplay:visible( bShowProtiming ); + c.ProtimingDisplay:settextf("%i",math.abs(fTapNoteOffset * 1000)); + ProtimingCmds[param.TapNoteScore](c.ProtimingDisplay); + + c.ProtimingAverage:visible( bShowProtiming ); + c.ProtimingAverage:settextf("%.2f%%",clamp(100 - MakeAverage( tTotalJudgments ) * 1000 ,0,100)); + AverageCmds['Pulse'](c.ProtimingAverage); + + c.ProtimingGraphBG:visible( bShowProtiming ); + c.ProtimingGraphUnderlay:visible( bShowProtiming ); + c.ProtimingGraphWindowW3:visible( bShowProtiming ); + c.ProtimingGraphWindowW2:visible( bShowProtiming ); + c.ProtimingGraphWindowW1:visible( bShowProtiming ); + c.ProtimingGraphFill:visible( bShowProtiming ); + c.ProtimingGraphFill:finishtweening(); + c.ProtimingGraphFill:decelerate(1/60); +-- c.ProtimingGraphFill:zoomtowidth( clamp(fTapNoteOffset * 188,-188/2,188/2) ); + c.ProtimingGraphFill:zoomtowidth( clamp( + scale( + fTapNoteOffset, + 0,PREFSMAN:GetPreference("TimingWindowSecondsW3"), + 0,188/2), + -188/2,188/2) + ); + c.ProtimingGraphAverage:visible( bShowProtiming ); + c.ProtimingGraphAverage:zoomtowidth( clamp( + scale( + MakeAverage( tTotalJudgments ), + 0,PREFSMAN:GetPreference("TimingWindowSecondsW3"), + 0,188), + 0,188) + ); +-- c.ProtimingGraphAverage:zoomtowidth( clamp(MakeAverage( tTotalJudgments ) * 1880,0,188) ); + c.ProtimingGraphCenter:visible( bShowProtiming ); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphBG); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphUnderlay); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW3); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW2); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphWindowW1); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphFill); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphAverage); + (cmd(sleep,2;linear,0.5;diffusealpha,0))(c.ProtimingGraphCenter); + end; + +}; + + +return t; diff --git a/Themes/default-dev-midi/Sounds/_Music menu (loop).ogg b/Themes/default-dev-midi/Sounds/_Music menu (loop).ogg new file mode 100644 index 0000000000..f9ea69f945 Binary files /dev/null and b/Themes/default-dev-midi/Sounds/_Music menu (loop).ogg differ diff --git a/Themes/default-dev-midi/Sounds/_Music menu (loop).sm b/Themes/default-dev-midi/Sounds/_Music menu (loop).sm new file mode 100644 index 0000000000..847227b480 --- /dev/null +++ b/Themes/default-dev-midi/Sounds/_Music menu (loop).sm @@ -0,0 +1,5 @@ +#TITLE:Love Is Eternity A; +#OFFSET:0.000; +#BPMS:0.000=140.000; +#STOPS:; + diff --git a/Themes/default-dev-midi/Sounds/_Music title (loop).ogg b/Themes/default-dev-midi/Sounds/_Music title (loop).ogg new file mode 100644 index 0000000000..014c6ac18b Binary files /dev/null and b/Themes/default-dev-midi/Sounds/_Music title (loop).ogg differ diff --git a/Themes/default-dev-midi/Sounds/_Music title (loop).sm b/Themes/default-dev-midi/Sounds/_Music title (loop).sm new file mode 100644 index 0000000000..847227b480 --- /dev/null +++ b/Themes/default-dev-midi/Sounds/_Music title (loop).sm @@ -0,0 +1,5 @@ +#TITLE:Love Is Eternity A; +#OFFSET:0.000; +#BPMS:0.000=140.000; +#STOPS:; + diff --git a/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua b/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua index 13c78bc09b..f60350e627 100644 --- a/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua +++ b/Themes/default/BGAnimations/ScreenEvaluation overlay/default.lua @@ -61,4 +61,8 @@ t[#t+1] = Def.ActorFrame { InitCommand=cmd(x,WideScale(math.floor(SCREEN_CENTER_X*0.3)-8,math.floor(SCREEN_CENTER_X*0.5)-8);y,SCREEN_CENTER_Y); CreateStats( PLAYER_1 ); }; +t[#t+1] = Def.ActorFrame { + InitCommand=cmd(x,WideScale(math.floor(SCREEN_CENTER_X*1.7)+8,math.floor(SCREEN_CENTER_X*1.5)+8);y,SCREEN_CENTER_Y); + CreateStats( PLAYER_2 ); +}; return t \ No newline at end of file diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_background.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_background.png index 1f70d00267..be0a86f582 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_background.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_background.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Beginner.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Beginner.png index 1a527877c6..50e7009426 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Beginner.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Beginner.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Challenge.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Challenge.png index 10de18d296..5a29185cac 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Challenge.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Challenge.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Easy.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Easy.png index d029aa927a..682bc53ce1 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Easy.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Easy.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Edit.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Edit.png index 87125989ea..19a3f16e81 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Edit.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Edit.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Hard.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Hard.png index b72deec656..c54c8154c7 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Hard.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Hard.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Medium.png b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Medium.png index 1f399e3fe6..1aab84c8aa 100644 Binary files a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Medium.png and b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/_barpeice Medium.png differ diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua index afc47353f7..b26cdbe22e 100644 --- a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua +++ b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua @@ -1,4 +1,25 @@ local t = Def.ActorFrame {}; +local function GetEdits( in_Song, in_StepsType ) + if in_Song then + local sSong = in_Song; + local sCurrentStyle = GAMESTATE:GetCurrentStyle(); + local sStepsType = in_StepsType; + local iNumEdits = 0; + if sSong:HasEdits( sStepsType ) then + local tAllSteps = sSong:GetAllSteps(); + for i,Step in pairs(tAllSteps) do + if Step:IsAnEdit() and s:GetStepsType() == sStepsType then + iNumEdits = iNumEdits + 1; + end + end + return iNumEdits; + else + return iNumEdits; + end + else + return 0; + end +end; t[#t+1] = Def.ActorFrame { LoadActor("_Background"); }; @@ -6,12 +27,12 @@ t[#t+1] = Def.ActorFrame { for idx,diff in pairs(Difficulty) do local sDifficulty = ToEnumShortString( diff ); local tLocation = { - Beginner = 16, - Easy = 16*2, - Medium = 16*3, - Hard = 16*4, - Challenge = 16*5, - Edit = 16*7, + Beginner = 32*-1.25, + Easy = 32*-0.25, + Medium = 32*0.75, + Hard = 32*1.75, + Challenge = 32*2.75, + Edit = 32*4.75, }; t[#t+1] = Def.ActorFrame { SetCommand=function(self) @@ -27,14 +48,12 @@ for idx,diff in pairs(Difficulty) do local steps = song:GetOneSteps( st, diff ); if steps then meter = steps:GetMeter(); - if meter >= 50 then - meter = "!"; - end; + -- if diff == 'Difficulty_Edit' then - meter = meter .. " Edit"; - end; - end; - end; + meter = GetEdits( song, st ) .. ' Edit'; + end + end + end c.Meter:settext( meter ); self:playcommand( bHasStepsTypeAndDifficulty and "Show" or "Hide" ); end; diff --git a/Themes/default/Graphics/ScreenTitleMenu logo/default.lua b/Themes/default/Graphics/ScreenTitleMenu logo/default.lua index 39bedbfad4..116fd80709 100644 --- a/Themes/default/Graphics/ScreenTitleMenu logo/default.lua +++ b/Themes/default/Graphics/ScreenTitleMenu logo/default.lua @@ -5,14 +5,14 @@ local t = Def.ActorFrame{ -- [BGAnimation] LoadActor("_ball"); -- [Layer1] Type=0 File=_ball.png LoadActor("_ball")..{ -- [Layer2] Type=0 File=_ball.png }; - LoadActor("_text")..{ -- [Layer3] Type=0 File=_text.png + --[[LoadActor("_text")..{ -- [Layer3] Type=0 File=_text.png InitCommand=cmd(y,48;hide_if,GAMESTATE:GetMultiplayer()); -- Command=y,48 }; LoadActor("_multi")..{ -- [Layer4] Type=0 File=_multi.png InitCommand=cmd(y,60;hide_if,not GAMESTATE:GetMultiplayer()); -- Command=y,48 -- the hide_if command would be similar to Condition=, which also exists. -- Condition=GAMESTATE:GetMultiplayer(); is the equivalent code. - }; + };]] LoadFont("Common normal")..{ Text="sm-ssc Multiplayer"; InitCommand=cmd(y,5;shadowlength,0;strokecolor,color("0,0,0,0.375");diffusebottomedge,color("#D6DBDD");); @@ -20,4 +20,4 @@ local t = Def.ActorFrame{ -- [BGAnimation] }; }; -return t; \ No newline at end of file +return t; diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 71636f5de9..c9211322dd 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -878,26 +878,26 @@ SortOrderSongChosenCommand=linear,0.25;diffusealpha,0; SortOrderOffCommand=bouncebegin,0.15;zoomy,0; # ShowStageDisplay=true -StageDisplayX=SCREEN_CENTER_X-160-64 -StageDisplayY=SCREEN_TOP+160-96+4 -StageDisplayOnCommand=draworder,105;fov,90;zoom,0.75;zoomy,0;sleep,0.35;smooth,0.35;zoomy,0.75 +StageDisplayX=SCREEN_LEFT+192+32 +StageDisplayY=SCREEN_TOP+24+3 +StageDisplayOnCommand=skewx,-0.125;draworder,105;fov,90;zoom,0.675;zoomy,0;sleep,0.35;smooth,0.35;zoomy,0.675 StageDisplayOffCommand=linear,0.25;zoomy,0; # ShowDifficultyDisplay=not GetGamePrefB("AutoSetStyle") and not GAMESTATE:IsCourseMode() # ShowDifficultyDisplay=not GetUserPrefB("UserPrefAutoSetStyle") and not GAMESTATE:IsCourseMode() -DifficultyDisplayX=SCREEN_CENTER_X-160+64 -DifficultyDisplayY=SCREEN_TOP+160-96+4 +DifficultyDisplayX=SCREEN_CENTER_X-160 +DifficultyDisplayY=SCREEN_TOP+160-96+2 DifficultyDisplayOnCommand=draworder,105;fov,90;zoom,1;zoomy,0;sleep,0.35;smooth,0.35;zoomy,1 DifficultyDisplayOffCommand=linear,0.25;zoomy,0; # BannerX=SCREEN_CENTER_X-160 -BannerY=SCREEN_TOP+160-36 +BannerY=SCREEN_TOP+160-36+4 BannerOnCommand=draworder,-1;scaletoclipped,256,80;visible,true;ztest,1;addy,-SCREEN_CENTER_Y;decelerate,0.35;addy,SCREEN_CENTER_Y BannerOffCommand=bouncebegin,0.15;zoomx,0; # ShowBannerFrame=true BannerFrameX=SCREEN_CENTER_X-160 -BannerFrameY=SCREEN_TOP+160-36 +BannerFrameY=SCREEN_TOP+160-36+4 BannerFrameOnCommand=draworder,105;addy,-SCREEN_CENTER_Y;decelerate,0.35;addy,SCREEN_CENTER_Y BannerFrameOffCommand=bouncebegin,0.15;zoomx,0; # @@ -1200,7 +1200,7 @@ ItemsLongRowSharedX=SCREEN_CENTER_X+200 ItemOnCommand=zoom,0.6375 ColorSelected=color("1,1,1,1") -ColorNotSelected=color("0.9,0.9,0.9,1") +ColorNotSelected=color("0.5,0.5,0.5,1") [ScreenMiniMenuContext] PageOnCommand=visible,false diff --git a/Themes/default/~res/ScreenSelectMusic DifficultyDisplayLarge.psd b/Themes/default/~res/ScreenSelectMusic DifficultyDisplayLarge.psd new file mode 100644 index 0000000000..2f819c3fcc Binary files /dev/null and b/Themes/default/~res/ScreenSelectMusic DifficultyDisplayLarge.psd differ diff --git a/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_16 (stretch).png b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_16 (stretch).png new file mode 100644 index 0000000000..eda8b07a4b Binary files /dev/null and b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_16 (stretch).png differ diff --git a/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_32 (stretch).png b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_32 (stretch).png new file mode 100644 index 0000000000..ee4d071b3d Binary files /dev/null and b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_32 (stretch).png differ diff --git a/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_8 (stretch).png b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_8 (stretch).png new file mode 100644 index 0000000000..e078062a7d Binary files /dev/null and b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/_8 (stretch).png differ diff --git a/Themes/rsr/BGAnimations/ScreenWithMenuElements background/default.lua b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/default.lua index da92848d5c..0b7fe7fbb5 100644 --- a/Themes/rsr/BGAnimations/ScreenWithMenuElements background/default.lua +++ b/Themes/rsr/BGAnimations/ScreenWithMenuElements background/default.lua @@ -35,14 +35,14 @@ t[#t+1] = Def.ActorFrame { self:visible( bShow == 1 ); end; -- Grid - LoadActor("_32") .. { +--[[ LoadActor("_32") .. { InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;customtexturerect,0,0,SCREEN_WIDTH/32,SCREEN_HEIGHT/32); OnCommand=cmd(diffuse,color("0,0,0,0.5")); }; LoadActor("_16") .. { InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;customtexturerect,0,0,SCREEN_WIDTH/16,SCREEN_HEIGHT/16); OnCommand=cmd(diffuse,color("1,1,1,0.125")); - }; + }; --]] --[[ LoadActor("_8") .. { InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;customtexturerect,0,0,SCREEN_WIDTH/8,SCREEN_HEIGHT/8); OnCommand=cmd(diffuse,color("#00BFE833")); diff --git a/src/GameplayAssist.h b/src/GameplayAssist.h index f63417b092..2bfe60c27f 100644 --- a/src/GameplayAssist.h +++ b/src/GameplayAssist.h @@ -13,7 +13,8 @@ public: void Init(); /** * @brief Play the sounds in question for the particular chart. - * @param nd the note data used for playing the ticks. */ + * @param nd the note data used for playing the ticks. + * @param ps the player's state (and number) for Split Timing. */ void PlayTicks( const NoteData &nd, const PlayerState *ps ); /** @brief Stop playing the sounds. */ void StopPlaying(); diff --git a/src/ProductInfo.h b/src/ProductInfo.h index 8916d00401..19268747d1 100644 --- a/src/ProductInfo.h +++ b/src/ProductInfo.h @@ -8,7 +8,7 @@ * * As an example, use "StepMania" here, not "StepMania4". */ -#define PRODUCT_FAMILY_BARE sm-ssc +#define PRODUCT_FAMILY_BARE StepMania /** * @brief A unique name for each application that you might want installed side-by-side with other applications. @@ -16,7 +16,7 @@ * As an example, use "StepMania4" here, not "StepMania". * It would cause a conflict with older versions such as StepMania 3.X. */ -#define PRODUCT_ID_BARE sm-ssc +#define PRODUCT_ID_BARE StepMania 5 /** * @brief Version info displayed to the user. @@ -35,7 +35,7 @@ * */ #ifndef PRODUCT_VER_BARE -#define PRODUCT_VER_BARE v1.2.5 +#define PRODUCT_VER_BARE v5.0 Preview 1 #endif /** diff --git a/src/ProductInfo.inc b/src/ProductInfo.inc index 29ee485bd9..5e5bfde118 100644 --- a/src/ProductInfo.inc +++ b/src/ProductInfo.inc @@ -1,11 +1,11 @@ ; Included by the NSIS installer script ; Don't forget to also change ProductInfo.h! -!define PRODUCT_FAMILY "sm-ssc" +!define PRODUCT_FAMILY "StepMania" ; see ProductInfo.h for use descriptions -!define PRODUCT_ID "sm-ssc" -!define PRODUCT_VER "v1.2.5" +!define PRODUCT_ID "StepMania" +!define PRODUCT_VER "v5.0 Preview 1" !define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}" !define PRODUCT_BITMAP "ssc" diff --git a/src/Song.h b/src/Song.h index 70b4c20cb5..825e7e2dc4 100644 --- a/src/Song.h +++ b/src/Song.h @@ -341,10 +341,6 @@ public: Steps *CreateSteps(); void InitSteps(Steps *pSteps); - /** - * @brief Retrieve the beat based on the specified time. - * @param fElapsedTime the amount of time since the Song started. - * @return the appropriate beat. */ /* [splittiming] float SongGetBeatFromElapsedTime( float fElapsedTime ) const { diff --git a/src/Steps.cpp b/src/Steps.cpp index 830b19bac6..e2b658f213 100644 --- a/src/Steps.cpp +++ b/src/Steps.cpp @@ -19,6 +19,7 @@ #include "RageLog.h" #include "NoteData.h" #include "GameManager.h" +#include "SongManager.h" #include "NoteDataUtil.h" #include "NotesLoaderSSC.h" #include "NotesLoaderSM.h" @@ -468,6 +469,13 @@ public: return 1; } + static int UsesSplitTiming( T* p, lua_State *L ) + { + Song *song = SONGMAN->GetSongFromSteps(p); + lua_pushboolean(L, p->m_Timing != song->m_SongTiming); + return 1; + } + LunaSteps() { @@ -486,6 +494,7 @@ public: ADD_METHOD( IsAnEdit ); ADD_METHOD( IsAutogen ); ADD_METHOD( IsAPlayerEdit ); + ADD_METHOD( UsesSplitTiming ); } }; diff --git a/src/TimingData.h b/src/TimingData.h index a5eb9818cd..21add1ba39 100644 --- a/src/TimingData.h +++ b/src/TimingData.h @@ -1350,13 +1350,13 @@ public: /** * @brief Set the row to have the new Combo. * @param iNoteRow the row to have the new Combo. - * @param iTicks the Combo. + * @param iCombo the Combo. */ void SetComboAtRow( int iNoteRow, int iCombo ); /** * @brief Set the beat to have the new Combo. * @param fBeat the beat to have the new Combo. - * @param iTicks the Combo. + * @param iCombo the Combo. */ void SetComboAtBeat( float fBeat, int iCombo ) { SetComboAtRow( BeatToNoteRow( fBeat ), iCombo ); } /**