what? I don't really know what I'm doing here.

This commit is contained in:
Thai Pangsakulyanont
2011-05-24 10:47:16 +07:00
31 changed files with 347 additions and 43 deletions
+10
View File
@@ -8,6 +8,10 @@ ________________________________________________________________________________
StepMania 5.0 $NEXT | 20110xyy StepMania 5.0 $NEXT | 20110xyy
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
2011/05/23
----------
* [Steps] Added the UsesSplitTiming Lua binding. [Wolfman2000]
2011/05/20 2011/05/20
---------- ----------
* [CryptManager] Added SHA1File Lua binding. [AJ] * [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] * [ScreenEvaluation] Stop the Bonus bars from overflowing in course modes. [AJ]
* [Banner] Added ScrollMode and ScrollSortOrder metrics. [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 2011/05/11
---------- ----------
* [GameSoundManager] Added PlayAnnouncer Lua binding. [AJ] * [GameSoundManager] Added PlayAnnouncer Lua binding. [AJ]
+1
View File
@@ -1374,6 +1374,7 @@
<Function name='IsAPlayerEdit'/> <Function name='IsAPlayerEdit'/>
<Function name='IsAnEdit'/> <Function name='IsAnEdit'/>
<Function name='IsAutogen'/> <Function name='IsAutogen'/>
<Function name='UsesSplitTiming'/>
</Class> </Class>
<Class base='ActorFrame' name='StepsDisplay'> <Class base='ActorFrame' name='StepsDisplay'>
<Function name='Load'/> <Function name='Load'/>
+3
View File
@@ -3454,6 +3454,9 @@
<Function name='IsAutogen' return='bool' arguments=''> <Function name='IsAutogen' return='bool' arguments=''>
Returns <code>true</code> if the steps were automatically generated. Returns <code>true</code> if the steps were automatically generated.
</Function> </Function>
<Function name='UsesSplitTiming' return='bool' sm-ssc='true' arguments=''>
Returns <code>true</code> if the Steps use different <code>TimingData</code> from the Song.
</Function>
</Class> </Class>
<Class name='StepsDisplay'> <Class name='StepsDisplay'>
<Function name='Load' return='void' arguments='string sMetricsGroup'> <Function name='Load' return='void' arguments='string sMetricsGroup'>
+5 -4
View File
@@ -2609,7 +2609,7 @@ ItemsLongRowSharedX=SCREEN_CENTER_X+150
ItemOnCommand= ItemOnCommand=
ColorSelected=color("0.5,1,0.5,1") ColorSelected=color("0.5,1,0.5,1")
ColorNotSelected=color("1,1,1,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 TweenSeconds=0
[ScreenMiniMenuContext] [ScreenMiniMenuContext]
@@ -3711,10 +3711,11 @@ RowInitCommand=halign,0.5;valign,0.5;zoom,0.8;x,75;y,45;shadowlength,1
OptionRowNormalMetricsGroup="OptionRowMiniMenuEditHelp" OptionRowNormalMetricsGroup="OptionRowMiniMenuEditHelp"
[OptionRowMiniMenuEditHelp] [OptionRowMiniMenuEditHelp]
# Help menu ( Keys & Stuff )
Fallback="OptionRowMiniMenu" Fallback="OptionRowMiniMenu"
TitleX=SCREEN_CENTER_X-312 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) \ RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \
local indexOffset = itemIndex-(numItems-1)/2; \ local indexOffset = itemIndex-(numItems-1)/2; \
@@ -3726,8 +3727,8 @@ ItemsEndX=SCREEN_CENTER_X+260
ItemsLongRowP1X=SCREEN_CENTER_X+260 ItemsLongRowP1X=SCREEN_CENTER_X+260
ItemsLongRowP2X=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 ItemOnCommand=x,SCREEN_CENTER_X+176;halign,0;strokecolor,color("#222222CC");shadowlength,1;zoom,0.75
ColorDisabled=color("1,1,1,1") ColorDisabled=Color("Orange")
[ScreenMiniMenuMainMenu] [ScreenMiniMenuMainMenu]
Fallback="ScreenMiniMenu" Fallback="ScreenMiniMenu"
@@ -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;
@@ -0,0 +1,5 @@
#TITLE:Love Is Eternity A;
#OFFSET:0.000;
#BPMS:0.000=140.000;
#STOPS:;
@@ -0,0 +1,5 @@
#TITLE:Love Is Eternity A;
#OFFSET:0.000;
#BPMS:0.000=140.000;
#STOPS:;
@@ -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); 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 ); 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 return t
Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 B

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 B

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -1,4 +1,25 @@
local t = Def.ActorFrame {}; 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 { t[#t+1] = Def.ActorFrame {
LoadActor("_Background"); LoadActor("_Background");
}; };
@@ -6,12 +27,12 @@ t[#t+1] = Def.ActorFrame {
for idx,diff in pairs(Difficulty) do for idx,diff in pairs(Difficulty) do
local sDifficulty = ToEnumShortString( diff ); local sDifficulty = ToEnumShortString( diff );
local tLocation = { local tLocation = {
Beginner = 16, Beginner = 32*-1.25,
Easy = 16*2, Easy = 32*-0.25,
Medium = 16*3, Medium = 32*0.75,
Hard = 16*4, Hard = 32*1.75,
Challenge = 16*5, Challenge = 32*2.75,
Edit = 16*7, Edit = 32*4.75,
}; };
t[#t+1] = Def.ActorFrame { t[#t+1] = Def.ActorFrame {
SetCommand=function(self) SetCommand=function(self)
@@ -27,14 +48,12 @@ for idx,diff in pairs(Difficulty) do
local steps = song:GetOneSteps( st, diff ); local steps = song:GetOneSteps( st, diff );
if steps then if steps then
meter = steps:GetMeter(); meter = steps:GetMeter();
if meter >= 50 then --
meter = "!";
end;
if diff == 'Difficulty_Edit' then if diff == 'Difficulty_Edit' then
meter = meter .. " Edit"; meter = GetEdits( song, st ) .. ' Edit';
end; end
end; end
end; end
c.Meter:settext( meter ); c.Meter:settext( meter );
self:playcommand( bHasStepsTypeAndDifficulty and "Show" or "Hide" ); self:playcommand( bHasStepsTypeAndDifficulty and "Show" or "Hide" );
end; end;
@@ -5,14 +5,14 @@ local t = Def.ActorFrame{ -- [BGAnimation]
LoadActor("_ball"); -- [Layer1] Type=0 File=_ball.png LoadActor("_ball"); -- [Layer1] Type=0 File=_ball.png
LoadActor("_ball")..{ -- [Layer2] 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 InitCommand=cmd(y,48;hide_if,GAMESTATE:GetMultiplayer()); -- Command=y,48
}; };
LoadActor("_multi")..{ -- [Layer4] Type=0 File=_multi.png LoadActor("_multi")..{ -- [Layer4] Type=0 File=_multi.png
InitCommand=cmd(y,60;hide_if,not GAMESTATE:GetMultiplayer()); -- Command=y,48 InitCommand=cmd(y,60;hide_if,not GAMESTATE:GetMultiplayer()); -- Command=y,48
-- the hide_if command would be similar to Condition=, which also exists. -- the hide_if command would be similar to Condition=, which also exists.
-- Condition=GAMESTATE:GetMultiplayer(); is the equivalent code. -- Condition=GAMESTATE:GetMultiplayer(); is the equivalent code.
}; };]]
LoadFont("Common normal")..{ LoadFont("Common normal")..{
Text="sm-ssc Multiplayer"; Text="sm-ssc Multiplayer";
InitCommand=cmd(y,5;shadowlength,0;strokecolor,color("0,0,0,0.375");diffusebottomedge,color("#D6DBDD");); InitCommand=cmd(y,5;shadowlength,0;strokecolor,color("0,0,0,0.375");diffusebottomedge,color("#D6DBDD"););
+8 -8
View File
@@ -878,26 +878,26 @@ SortOrderSongChosenCommand=linear,0.25;diffusealpha,0;
SortOrderOffCommand=bouncebegin,0.15;zoomy,0; SortOrderOffCommand=bouncebegin,0.15;zoomy,0;
# #
ShowStageDisplay=true ShowStageDisplay=true
StageDisplayX=SCREEN_CENTER_X-160-64 StageDisplayX=SCREEN_LEFT+192+32
StageDisplayY=SCREEN_TOP+160-96+4 StageDisplayY=SCREEN_TOP+24+3
StageDisplayOnCommand=draworder,105;fov,90;zoom,0.75;zoomy,0;sleep,0.35;smooth,0.35;zoomy,0.75 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; StageDisplayOffCommand=linear,0.25;zoomy,0;
# #
ShowDifficultyDisplay=not GetGamePrefB("AutoSetStyle") and not GAMESTATE:IsCourseMode() ShowDifficultyDisplay=not GetGamePrefB("AutoSetStyle") and not GAMESTATE:IsCourseMode()
# ShowDifficultyDisplay=not GetUserPrefB("UserPrefAutoSetStyle") and not GAMESTATE:IsCourseMode() # ShowDifficultyDisplay=not GetUserPrefB("UserPrefAutoSetStyle") and not GAMESTATE:IsCourseMode()
DifficultyDisplayX=SCREEN_CENTER_X-160+64 DifficultyDisplayX=SCREEN_CENTER_X-160
DifficultyDisplayY=SCREEN_TOP+160-96+4 DifficultyDisplayY=SCREEN_TOP+160-96+2
DifficultyDisplayOnCommand=draworder,105;fov,90;zoom,1;zoomy,0;sleep,0.35;smooth,0.35;zoomy,1 DifficultyDisplayOnCommand=draworder,105;fov,90;zoom,1;zoomy,0;sleep,0.35;smooth,0.35;zoomy,1
DifficultyDisplayOffCommand=linear,0.25;zoomy,0; DifficultyDisplayOffCommand=linear,0.25;zoomy,0;
# #
BannerX=SCREEN_CENTER_X-160 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 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; BannerOffCommand=bouncebegin,0.15;zoomx,0;
# #
ShowBannerFrame=true ShowBannerFrame=true
BannerFrameX=SCREEN_CENTER_X-160 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 BannerFrameOnCommand=draworder,105;addy,-SCREEN_CENTER_Y;decelerate,0.35;addy,SCREEN_CENTER_Y
BannerFrameOffCommand=bouncebegin,0.15;zoomx,0; BannerFrameOffCommand=bouncebegin,0.15;zoomx,0;
# #
@@ -1200,7 +1200,7 @@ ItemsLongRowSharedX=SCREEN_CENTER_X+200
ItemOnCommand=zoom,0.6375 ItemOnCommand=zoom,0.6375
ColorSelected=color("1,1,1,1") 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] [ScreenMiniMenuContext]
PageOnCommand=visible,false PageOnCommand=visible,false
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -35,14 +35,14 @@ t[#t+1] = Def.ActorFrame {
self:visible( bShow == 1 ); self:visible( bShow == 1 );
end; end;
-- Grid -- 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); 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")); OnCommand=cmd(diffuse,color("0,0,0,0.5"));
}; };
LoadActor("_16") .. { 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); 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")); OnCommand=cmd(diffuse,color("1,1,1,0.125"));
}; }; --]]
--[[ LoadActor("_8") .. { --[[ 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); 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")); OnCommand=cmd(diffuse,color("#00BFE833"));
+2 -1
View File
@@ -13,7 +13,8 @@ public:
void Init(); void Init();
/** /**
* @brief Play the sounds in question for the particular chart. * @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 ); void PlayTicks( const NoteData &nd, const PlayerState *ps );
/** @brief Stop playing the sounds. */ /** @brief Stop playing the sounds. */
void StopPlaying(); void StopPlaying();
+3 -3
View File
@@ -8,7 +8,7 @@
* *
* As an example, use "StepMania" here, not "StepMania4". * 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. * @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". * As an example, use "StepMania4" here, not "StepMania".
* It would cause a conflict with older versions such as StepMania 3.X. * 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. * @brief Version info displayed to the user.
@@ -35,7 +35,7 @@
* </li></ul> * </li></ul>
*/ */
#ifndef PRODUCT_VER_BARE #ifndef PRODUCT_VER_BARE
#define PRODUCT_VER_BARE v1.2.5 #define PRODUCT_VER_BARE v5.0 Preview 1
#endif #endif
/** /**
+3 -3
View File
@@ -1,11 +1,11 @@
; Included by the NSIS installer script ; Included by the NSIS installer script
; Don't forget to also change ProductInfo.h! ; Don't forget to also change ProductInfo.h!
!define PRODUCT_FAMILY "sm-ssc" !define PRODUCT_FAMILY "StepMania"
; see ProductInfo.h for use descriptions ; see ProductInfo.h for use descriptions
!define PRODUCT_ID "sm-ssc" !define PRODUCT_ID "StepMania"
!define PRODUCT_VER "v1.2.5" !define PRODUCT_VER "v5.0 Preview 1"
!define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}" !define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}"
!define PRODUCT_BITMAP "ssc" !define PRODUCT_BITMAP "ssc"
-4
View File
@@ -341,10 +341,6 @@ public:
Steps *CreateSteps(); Steps *CreateSteps();
void InitSteps(Steps *pSteps); 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] /* [splittiming]
float SongGetBeatFromElapsedTime( float fElapsedTime ) const float SongGetBeatFromElapsedTime( float fElapsedTime ) const
{ {
+9
View File
@@ -19,6 +19,7 @@
#include "RageLog.h" #include "RageLog.h"
#include "NoteData.h" #include "NoteData.h"
#include "GameManager.h" #include "GameManager.h"
#include "SongManager.h"
#include "NoteDataUtil.h" #include "NoteDataUtil.h"
#include "NotesLoaderSSC.h" #include "NotesLoaderSSC.h"
#include "NotesLoaderSM.h" #include "NotesLoaderSM.h"
@@ -468,6 +469,13 @@ public:
return 1; 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() LunaSteps()
{ {
@@ -486,6 +494,7 @@ public:
ADD_METHOD( IsAnEdit ); ADD_METHOD( IsAnEdit );
ADD_METHOD( IsAutogen ); ADD_METHOD( IsAutogen );
ADD_METHOD( IsAPlayerEdit ); ADD_METHOD( IsAPlayerEdit );
ADD_METHOD( UsesSplitTiming );
} }
}; };
+2 -2
View File
@@ -1350,13 +1350,13 @@ public:
/** /**
* @brief Set the row to have the new Combo. * @brief Set the row to have the new Combo.
* @param iNoteRow 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 ); void SetComboAtRow( int iNoteRow, int iCombo );
/** /**
* @brief Set the beat to have the new Combo. * @brief Set the beat to have the new Combo.
* @param fBeat 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 ); } void SetComboAtBeat( float fBeat, int iCombo ) { SetComboAtRow( BeatToNoteRow( fBeat ), iCombo ); }
/** /**