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 ); }
/**