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
--------------------------------------------------------------------------------
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]
+1
View File
@@ -1374,6 +1374,7 @@
<Function name='IsAPlayerEdit'/>
<Function name='IsAnEdit'/>
<Function name='IsAutogen'/>
<Function name='UsesSplitTiming'/>
</Class>
<Class base='ActorFrame' name='StepsDisplay'>
<Function name='Load'/>
+3
View File
@@ -3454,6 +3454,9 @@
<Function name='IsAutogen' return='bool' arguments=''>
Returns <code>true</code> if the steps were automatically generated.
</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 name='StepsDisplay'>
<Function name='Load' return='void' arguments='string sMetricsGroup'>
+5 -4
View File
@@ -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"
@@ -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);
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
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 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;
@@ -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;
return t;
+8 -8
View File
@@ -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
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 );
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"));
+2 -1
View File
@@ -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();
+3 -3
View File
@@ -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 @@
* </li></ul>
*/
#ifndef PRODUCT_VER_BARE
#define PRODUCT_VER_BARE v1.2.5
#define PRODUCT_VER_BARE v5.0 Preview 1
#endif
/**
+3 -3
View File
@@ -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"
-4
View File
@@ -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
{
+9
View File
@@ -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 );
}
};
+2 -2
View File
@@ -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 ); }
/**