I seem to get an EXC_BAD_ACCESS error about libpng on app starting, so I don't know if the merge succeeded at all :<
This commit is contained in:
Thai Pangsakulyanont
2011-06-04 19:18:55 +07:00
56 changed files with 1963 additions and 1021 deletions
+1
View File
@@ -1,5 +1,6 @@
#COURSE:Challenging Random 5;
#LIVES:4;
#SCRIPTER:AJ;
#SONG:*:Hard;
#SONG:*:Hard;
#SONG:*:Hard;
+25 -1
View File
@@ -5,14 +5,38 @@ from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
________________________________________________________________________________
================================================================================
StepMania 5.0 ????????? | 20110???
StepMania 5.0 Preview 1a | 20110603
--------------------------------------------------------------------------------
Date Forgotten
--------------
* [ScreenEdit] Fix Song Timing behaviors. [Wolfman2000]
* [NotesLoaderSM] Fix an Offset load bug. [Wolfman2000]
2011/06/03
----------
* [LifeMeterBattery] Added LivesLeft param to LifeChanged message. [AJ]
* [Windows] Set up directories for pictures and app data in their proper
location. [Henke]
2011/06/02
----------
* [BPMDisplay] Added SetFromSteps Lua binding. [AJ]
* [ScreenDebugOverlay] Switch the R and T keys to be Volume Down and Up
respectively. I have to admit, it makes more sense to have volume up be
on the right instead of the left. [Wolfman2000]
* [SongManager] Make autogen courses have "Autogen" as the Scripter. [AJ]
2011/06/01
----------
* [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000]
2011/05/31
----------
* [Player] Added the BattleRaveMirror metric. This determines if Battle and
Rave mode will have the two players with mirrored charts or not. By default,
this is set to true, preserving the ITG style behavior. [Wolfman2000]
* [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000]
================================================================================
StepMania 5.0 Preview 1 | 20110529
+6 -48
View File
@@ -130,6 +130,7 @@
<Function name='PrintTable'/>
<Function name='ProductID'/>
<Function name='ProductVersion'/>
<Function name='Profile'/>
<Function name='RadarCategoryToLocalizedString'/>
<Function name='ReadGamePrefFromFile'/>
<Function name='ReadPrefFromFile'/>
@@ -522,6 +523,7 @@
<Function name='SetFromCourse'/>
<Function name='SetFromGameState'/>
<Function name='SetFromSong'/>
<Function name='SetFromSteps'/>
</Class>
<Class base='Sprite' name='Banner'>
<Function name='GetPercentScrolling'/>
@@ -627,6 +629,7 @@
<Class name='CryptManager'>
<Function name='MD5File'/>
<Function name='MD5String'/>
<Function name='SHA1File'/>
<Function name='SHA1String'/>
</Class>
<Class base='Sprite' name='DifficultyIcon'>
@@ -1023,52 +1026,6 @@
<Function name='SetPreference'/>
<Function name='SetPreferenceToDefault'/>
</Class>
<Class name='Profile'>
<Function name='GetCaloriesBurnedToday'/>
<Function name='GetCharacter'/>
<Function name='GetCoursesActual'/>
<Function name='GetCoursesPercentComplete'/>
<Function name='GetCoursesPossible'/>
<Function name='GetDisplayName'/>
<Function name='GetDisplayTotalCaloriesBurned'/>
<Function name='GetGoalCalories'/>
<Function name='GetGoalSeconds'/>
<Function name='GetGoalType'/>
<Function name='GetHighScoreList'/>
<Function name='GetLastUsedHighScoreName'/>
<Function name='GetMostPopularCourse'/>
<Function name='GetMostPopularSong'/>
<Function name='GetNumToasties'/>
<Function name='GetNumTotalSongsPlayed'/>
<Function name='GetSongNumTimesPlayed'/>
<Function name='GetSongsActual'/>
<Function name='GetSongsAndCoursesPercentCompleteAllDifficulties'/>
<Function name='GetSongsPercentComplete'/>
<Function name='GetSongsPossible'/>
<Function name='GetTotalCaloriesBurned'/>
<Function name='GetTotalGameplaySeconds'/>
<Function name='GetTotalHands'/>
<Function name='GetTotalHolds'/>
<Function name='GetTotalJumps'/>
<Function name='GetTotalLifts'/>
<Function name='GetTotalMines'/>
<Function name='GetTotalNumSongsPlayed'/>
<Function name='GetTotalRolls'/>
<Function name='GetTotalSessionSeconds'/>
<Function name='GetTotalSessions'/>
<Function name='GetTotalStepsWithTopGrade'/>
<Function name='GetTotalTapsAndHolds'/>
<Function name='GetTotalTrailsWithTopGrade'/>
<Function name='GetUserData'/>
<Function name='GetWeightPounds'/>
<Function name='HasPassedAnyStepsInSong'/>
<Function name='IsCodeUnlocked'/>
<Function name='SetCharacter'/>
<Function name='SetGoalCalories'/>
<Function name='SetGoalSeconds'/>
<Function name='SetGoalType'/>
<Function name='SetWeightPounds'/>
</Class>
<Class name='ProfileManager'>
<Function name='GetLocalProfile'/>
<Function name='GetLocalProfileFromIndex'/>
@@ -1427,6 +1384,7 @@
<Function name='HasBPMChanges'/>
<Function name='HasFakes'/>
<Function name='HasNegativeBPMs'/>
<Function name='HasScrollChanges'/>
<Function name='HasSpeedChanges'/>
<Function name='HasStops'/>
<Function name='HasWarps'/>
@@ -2102,6 +2060,6 @@
<Constant name='sGame' value='&apos;dance&apos;'/>
<Constant name='top' value='&apos;VertAlign_Top&apos;'/>
</Constants>
<Version>sm-ssc v1.2.5</Version>
<Date>2011-05-19</Date>
<Version>StepMania 5 v5.0 Preview 1a</Version>
<Date>2011-06-04</Date>
</Lua>
-1
View File
@@ -143,7 +143,6 @@
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attribute name="name" type="Identifier" use="required" />
<xs:attribute name="renamed" type="Identifier" use="optional" />
<xs:attribute name="sm-ssc" type="Identifier" use="optional" />
<xs:attribute name="theme" type="Identifier" use="optional" />
<xs:attribute name="return" type="IdentifierOrTable" use="optional" />
<xs:attribute name="arguments" type="ArgumentList" use="optional" />
+1 -14
View File
@@ -78,16 +78,6 @@
margin: 1px 2px 1px 2px;
border: 1px solid #777;
}
.sm-ssc{
text-align: justify;
vertical-align: text-top;
background: #FFDDEE url(./bgline.png) repeat-x scroll 0 0;
padding: 1px;
}
fieldset div.sm-ssc{
margin: 1px 2px 1px 2px;
border: 1px solid #777;
}
._fallbackTheme{
text-align: justify;
vertical-align: text-top;
@@ -243,9 +233,8 @@
<div>
<fieldset>
<legend>Function Colors</legend>
<div class="descriptionCell">Available in SM4 alphas, sm-ssc, and StepMania 5</div>
<div class="descriptionCell">Available in sm-ssc and StepMania 5</div>
<div class="renamed">Renamed or changed from StepMania 4 alphas</div>
<div class="sm-ssc">New bindings (since StepMania 4 alphas)</div>
<div class="_fallbackTheme">Defined in the _fallback theme</div>
<div class="defaultTheme">Defined in the default theme</div>
</fieldset>
@@ -487,7 +476,6 @@
<xsl:choose>
<!-- "renamed" also covers functions with modified behavior -->
<xsl:when test="$elmt/@renamed='true'">renamed</xsl:when>
<xsl:when test="$elmt/@sm-ssc='true'">sm-ssc</xsl:when>
<xsl:when test="$elmt/@theme='_fallback'">_fallbackTheme</xsl:when>
<xsl:when test="$elmt/@theme='default'">defaultTheme</xsl:when>
<xsl:otherwise>descriptionCell</xsl:otherwise>
@@ -524,7 +512,6 @@
<td>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$elmt/@sm-ssc='true'">sm-ssc</xsl:when>
<xsl:otherwise>descriptionCell</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 KiB

After

Width:  |  Height:  |  Size: 105 KiB

+1 -1
View File
@@ -68,7 +68,7 @@ David Santamar
* Various patches (see Changelog_sm-ssc.txt for more details and links)
Kita K./D. Trucks
* sm-ssc default theme music
* default theme music
kurisu
* Dance-threepanel gametype code (3.9; re-adapted for sm-ssc)
+1 -1
View File
@@ -27,7 +27,7 @@ Top=8
Baseline=23
LineSpacing=24
line 0=☆★♥Ω
line 0=☆★♥Ω
map doublezeta=5
map planet=6
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -223,6 +223,23 @@ end;
--[[ ----------------------------------------------------------------------- ]]
--[[ profile stuff ]]
-- Profile(pn)
-- This returns a profile, preferably a player one.
-- If there isn't one, we fall back on the machine profile.
function Profile(pn)
if PROFILEMAN:IsPersistentProfile(pn) then
-- player profile
return PROFILEMAN:GetProfile(pn);
else
-- machine profile
return PROFILEMAN:GetMachineProfile();
end;
end;
--[[ end profile stuff]]
--[[ ----------------------------------------------------------------------- ]]
--[[ helper functions ]]
function tobool(v)
if type(v) == "string" then
+2 -2
View File
@@ -1016,7 +1016,7 @@ TickcountOffsetX=70
ComboOffsetX=50
LabelOffsetX=130
SpeedOffsetX=30
ScrollOffsetX=40
ScrollOffsetX=100
FakeOffsetX=90
[PlayerStageStats]
@@ -2867,7 +2867,7 @@ PlayMusic=false
#
TimerSeconds=30
#
LineNames="1,2,3,4,5,6,R,7,8,9,10,11,12,13,14,15,16,17"
LineNames="1,2,3,4,5,6,R,7,8,9,10,11,12,13,14,16,17"
Line1="lua,SpeedMods()"
# Line1="list,Speed"
Line2="list,Accel"
@@ -5,4 +5,4 @@ return Def.SongBPMDisplay {
SetCommand=function(self) self:SetFromGameState() end;
CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
CurrentCourseChangedMessageCommand=cmd(playcommand,"Set");
};
};
@@ -8,7 +8,7 @@ local function GetEdits( in_Song, in_StepsType )
if sSong:HasEdits( sStepsType ) then
local tAllSteps = sSong:GetAllSteps();
for i,Step in pairs(tAllSteps) do
if Step:IsAnEdit() and s:GetStepsType() == sStepsType then
if Step:IsAnEdit() and Step:GetStepsType() == sStepsType then
iNumEdits = iNumEdits + 1;
end
end
+1 -1
View File
@@ -232,7 +232,7 @@ end
function GetDefaultOptionLines()
local LineSets = {
"1,8,14,2,3,4,5,6,R,7,9,10,11,12,13,15,16,17,18", -- All
"1,8,14,2,3,4,5,6,R,7,9,10,11,12,13,16,17,18", -- All
"1,8,14,2,7,13,16,17,18", -- DDR Essentials ( no turns, fx )
};
local function IsExtra()
+772 -66
View File
@@ -23,6 +23,40 @@
/* Begin PBXBuildFile section */
1215D7A208C6559A00B87D8B /* ScreenGameplayNormal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1215D7A008C6559A00B87D8B /* ScreenGameplayNormal.cpp */; };
2B17AB7713980FF6001AE57D /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6130D13773C8E00CC8BBD /* png.c */; };
2B17AB7813980FF6001AE57D /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6130E13773C8E00CC8BBD /* png.h */; };
2B17AB7913980FF6001AE57D /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6130F13773C8E00CC8BBD /* pngconf.h */; };
2B17AB7A13980FF6001AE57D /* pngdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131013773C8E00CC8BBD /* pngdebug.h */; };
2B17AB7B13980FF6001AE57D /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131113773C8E00CC8BBD /* pngerror.c */; };
2B17AB7C13980FF6001AE57D /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131213773C8E00CC8BBD /* pngget.c */; };
2B17AB7D13980FF6001AE57D /* pnginfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131313773C8E00CC8BBD /* pnginfo.h */; };
2B17AB7E13980FF6001AE57D /* pnglibconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6133D13773D2C00CC8BBD /* pnglibconf.h */; };
2B17AB7F13980FF6001AE57D /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131413773C8E00CC8BBD /* pngmem.c */; };
2B17AB8013980FF6001AE57D /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131513773C8E00CC8BBD /* pngpread.c */; };
2B17AB8113980FF6001AE57D /* pngpriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131613773C8E00CC8BBD /* pngpriv.h */; };
2B17AB8213980FF6001AE57D /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131713773C8E00CC8BBD /* pngread.c */; };
2B17AB8313980FF6001AE57D /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131813773C8E00CC8BBD /* pngrio.c */; };
2B17AB8413980FF6001AE57D /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131913773C8E00CC8BBD /* pngrtran.c */; };
2B17AB8513980FF6001AE57D /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131A13773C8E00CC8BBD /* pngrutil.c */; };
2B17AB8613980FF6001AE57D /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131B13773C8E00CC8BBD /* pngset.c */; };
2B17AB8713980FF6001AE57D /* pngstruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131C13773C8E00CC8BBD /* pngstruct.h */; };
2B17AB8813980FF6001AE57D /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131E13773C8E00CC8BBD /* pngtrans.c */; };
2B17AB8913980FF6001AE57D /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132013773C8E00CC8BBD /* pngwio.c */; };
2B17AB8A13980FF6001AE57D /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132113773C8E00CC8BBD /* pngwrite.c */; };
2B17AB8B13980FF6001AE57D /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132213773C8E00CC8BBD /* pngwtran.c */; };
2B17AB8C13980FF6001AE57D /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132313773C8E00CC8BBD /* pngwutil.c */; };
2B17AB9F13981271001AE57D /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B17AB7213980FDF001AE57D /* libpng.a */; };
2B17ABC51398153F001AE57D /* glew.c in Sources */ = {isa = PBXBuildFile; fileRef = EE879BAA132E06C50078FDDC /* glew.c */; };
2B17ABCF139815E0001AE57D /* libglew.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B17ABC013981521001AE57D /* libglew.a */; };
2B17ABE51398179E001AE57D /* chartables.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7904AFD87300D02EE9 /* chartables.c */; };
2B17ABE61398179E001AE57D /* get.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7A04AFD87300D02EE9 /* get.c */; };
2B17ABE71398179E001AE57D /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8B6C7B04AFD87300D02EE9 /* internal.h */; };
2B17ABE81398179E001AE57D /* maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7C04AFD87300D02EE9 /* maketables.c */; };
2B17ABE91398179E001AE57D /* pcre.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7D04AFD87300D02EE9 /* pcre.c */; };
2B17ABEA1398179E001AE57D /* pcre.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8B6C7E04AFD87300D02EE9 /* pcre.h */; };
2B17ABEB1398179E001AE57D /* study.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7F04AFD87300D02EE9 /* study.c */; };
2B17ABFC139817D5001AE57D /* libpcre.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B17ABE013981756001AE57D /* libpcre.a */; };
2B17ABFD139817D6001AE57D /* libpcre.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B17ABE013981756001AE57D /* libpcre.a */; };
2B30D6821315EA7E00044B68 /* MouseDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B30D6801315EA7E00044B68 /* MouseDevice.cpp */; };
2B30D6831315EA7E00044B68 /* MouseDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B30D6811315EA7E00044B68 /* MouseDevice.h */; };
2B43509513949F37006FA051 /* TimingSegments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B43509313949F37006FA051 /* TimingSegments.h */; };
@@ -37,28 +71,6 @@
2BA7925F1304F20D002BD8E1 /* NotesLoaderSSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA7925B1304F20D002BD8E1 /* NotesLoaderSSC.h */; };
2BA792601304F20D002BD8E1 /* NotesWriterSSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BA7925C1304F20D002BD8E1 /* NotesWriterSSC.cpp */; };
2BA792611304F20D002BD8E1 /* NotesWriterSSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA7925D1304F20D002BD8E1 /* NotesWriterSSC.h */; };
2BC6132413773C8E00CC8BBD /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6130D13773C8E00CC8BBD /* png.c */; };
2BC6132513773C8E00CC8BBD /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6130E13773C8E00CC8BBD /* png.h */; };
2BC6132613773C8E00CC8BBD /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6130F13773C8E00CC8BBD /* pngconf.h */; };
2BC6132713773C8E00CC8BBD /* pngdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131013773C8E00CC8BBD /* pngdebug.h */; };
2BC6132813773C8E00CC8BBD /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131113773C8E00CC8BBD /* pngerror.c */; };
2BC6132913773C8E00CC8BBD /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131213773C8E00CC8BBD /* pngget.c */; };
2BC6132A13773C8E00CC8BBD /* pnginfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131313773C8E00CC8BBD /* pnginfo.h */; };
2BC6132B13773C8E00CC8BBD /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131413773C8E00CC8BBD /* pngmem.c */; };
2BC6132C13773C8E00CC8BBD /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131513773C8E00CC8BBD /* pngpread.c */; };
2BC6132D13773C8E00CC8BBD /* pngpriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131613773C8E00CC8BBD /* pngpriv.h */; };
2BC6132E13773C8E00CC8BBD /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131713773C8E00CC8BBD /* pngread.c */; };
2BC6132F13773C8E00CC8BBD /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131813773C8E00CC8BBD /* pngrio.c */; };
2BC6133013773C8E00CC8BBD /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131913773C8E00CC8BBD /* pngrtran.c */; };
2BC6133113773C8E00CC8BBD /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131A13773C8E00CC8BBD /* pngrutil.c */; };
2BC6133213773C8E00CC8BBD /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131B13773C8E00CC8BBD /* pngset.c */; };
2BC6133313773C8E00CC8BBD /* pngstruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6131C13773C8E00CC8BBD /* pngstruct.h */; };
2BC6133513773C8E00CC8BBD /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6131E13773C8E00CC8BBD /* pngtrans.c */; };
2BC6133713773C8E00CC8BBD /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132013773C8E00CC8BBD /* pngwio.c */; };
2BC6133813773C8E00CC8BBD /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132113773C8E00CC8BBD /* pngwrite.c */; };
2BC6133913773C8E00CC8BBD /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132213773C8E00CC8BBD /* pngwtran.c */; };
2BC6133A13773C8E00CC8BBD /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BC6132313773C8E00CC8BBD /* pngwutil.c */; };
2BC6133E13773D2C00CC8BBD /* pnglibconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC6133D13773D2C00CC8BBD /* pnglibconf.h */; };
2BD06FEE137242680018CB9F /* json_batchallocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BD06FDD137240CF0018CB9F /* json_batchallocator.h */; };
2BD06FEF137242680018CB9F /* json_internalarray.inl in Resources */ = {isa = PBXBuildFile; fileRef = 2BD06FDE137240CF0018CB9F /* json_internalarray.inl */; };
2BD06FF0137242680018CB9F /* json_internalmap.inl in Resources */ = {isa = PBXBuildFile; fileRef = 2BD06FDF137240CF0018CB9F /* json_internalmap.inl */; };
@@ -333,10 +345,6 @@
AA29CDFE0558741A00961A51 /* ScreenSelectMaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA1DC47404A4861700D02EE9 /* ScreenSelectMaster.cpp */; };
AA29CE000558741A00961A51 /* CombinedLifeMeterTug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443EB04B0F9F600D02EE9 /* CombinedLifeMeterTug.cpp */; };
AA29CE010558741A00961A51 /* ScoreKeeperRave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443F304B0FEB700D02EE9 /* ScoreKeeperRave.cpp */; };
AA29CE030558741A00961A51 /* get.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7A04AFD87300D02EE9 /* get.c */; };
AA29CE040558741A00961A51 /* maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7C04AFD87300D02EE9 /* maketables.c */; };
AA29CE050558741A00961A51 /* pcre.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7D04AFD87300D02EE9 /* pcre.c */; };
AA29CE060558741A00961A51 /* study.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7F04AFD87300D02EE9 /* study.c */; };
AA29CE070558741A00961A51 /* RageUtil_FileDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAF580A704B3E2DC00D02EE9 /* RageUtil_FileDB.cpp */; };
AA29CE090558741A00961A51 /* ActorUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA983CA04B9060A00D02EE9 /* ActorUtil.cpp */; };
AA29CE0B0558741A00961A51 /* ArchHooks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA3F283B04BE6DDC00D02EE9 /* ArchHooks.cpp */; };
@@ -554,8 +562,6 @@
AA40D26709A08D650068C0D5 /* ScreenSelectMaster.h in Headers */ = {isa = PBXBuildFile; fileRef = AA1DC47504A4861700D02EE9 /* ScreenSelectMaster.h */; };
AA40D26B09A08D650068C0D5 /* CombinedLifeMeterTug.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE443EC04B0F9F600D02EE9 /* CombinedLifeMeterTug.h */; };
AA40D26C09A08D650068C0D5 /* ScoreKeeperRave.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE443F404B0FEB700D02EE9 /* ScoreKeeperRave.h */; };
AA40D26D09A08D650068C0D5 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8B6C7B04AFD87300D02EE9 /* internal.h */; };
AA40D26E09A08D650068C0D5 /* pcre.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8B6C7E04AFD87300D02EE9 /* pcre.h */; };
AA40D26F09A08D650068C0D5 /* RageUtil_FileDB.h in Headers */ = {isa = PBXBuildFile; fileRef = AAF580A804B3E2DC00D02EE9 /* RageUtil_FileDB.h */; };
AA40D27109A08D650068C0D5 /* LoadingWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = AAEF3D1004B53E2900D02EE9 /* LoadingWindow.h */; };
AA40D27209A08D650068C0D5 /* InputHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB3B36C04C38B4600D02EE9 /* InputHandler.h */; };
@@ -880,10 +886,6 @@
AA40D42009A08D650068C0D5 /* ScreenSelectMaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA1DC47404A4861700D02EE9 /* ScreenSelectMaster.cpp */; };
AA40D42109A08D650068C0D5 /* CombinedLifeMeterTug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443EB04B0F9F600D02EE9 /* CombinedLifeMeterTug.cpp */; };
AA40D42209A08D650068C0D5 /* ScoreKeeperRave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443F304B0FEB700D02EE9 /* ScoreKeeperRave.cpp */; };
AA40D42309A08D650068C0D5 /* get.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7A04AFD87300D02EE9 /* get.c */; };
AA40D42409A08D650068C0D5 /* maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7C04AFD87300D02EE9 /* maketables.c */; };
AA40D42509A08D650068C0D5 /* pcre.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7D04AFD87300D02EE9 /* pcre.c */; };
AA40D42609A08D650068C0D5 /* study.c in Sources */ = {isa = PBXBuildFile; fileRef = AA8B6C7F04AFD87300D02EE9 /* study.c */; };
AA40D42709A08D650068C0D5 /* RageUtil_FileDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAF580A704B3E2DC00D02EE9 /* RageUtil_FileDB.cpp */; };
AA40D42909A08D650068C0D5 /* ActorUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA983CA04B9060A00D02EE9 /* ActorUtil.cpp */; };
AA40D42A09A08D650068C0D5 /* ArchHooks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA3F283B04BE6DDC00D02EE9 /* ArchHooks.cpp */; };
@@ -1661,7 +1663,6 @@
AAFF41A60F5BD4AD00FFDB67 /* ScreenOptionsExportPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = AAFF41A20F5BD4AD00FFDB67 /* ScreenOptionsExportPackage.h */; };
B75CE3B5137963350076A82D /* SongPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = B75CE3B3137963350076A82D /* SongPosition.h */; };
B75CE3B6137963350076A82D /* SongPosition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B75CE3B4137963350076A82D /* SongPosition.cpp */; };
B7B0914B1393481B00C33E6B /* glew.c in Sources */ = {isa = PBXBuildFile; fileRef = EE879BAA132E06C50078FDDC /* glew.c */; };
EE2153A910A75BEE0074B01B /* NotesLoaderPMS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE2153A710A75BEE0074B01B /* NotesLoaderPMS.cpp */; };
EE2153AA10A75BEE0074B01B /* NotesLoaderPMS.h in Headers */ = {isa = PBXBuildFile; fileRef = EE2153A810A75BEE0074B01B /* NotesLoaderPMS.h */; };
EE879B60132DEE720078FDDC /* RageDisplay_Legacy_Helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE879B5C132DEE720078FDDC /* RageDisplay_Legacy_Helpers.cpp */; };
@@ -1682,6 +1683,27 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
2B17AB8D13981009001AE57D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 2B17AB7113980FDF001AE57D;
remoteInfo = png;
};
2B17ABD0139815EB001AE57D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 2B17ABBF13981521001AE57D;
remoteInfo = glew;
};
2B17ABFE139817DF001AE57D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = 2B17ABDF13981756001AE57D;
remoteInfo = pcre;
};
AA30C61907F5E2EF0066F398 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
@@ -1802,6 +1824,9 @@
1215D7A108C6559A00B87D8B /* ScreenGameplayNormal.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; name = ScreenGameplayNormal.h; path = ../src/ScreenGameplayNormal.h; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
2B17AB7213980FDF001AE57D /* libpng.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpng.a; sourceTree = BUILT_PRODUCTS_DIR; };
2B17ABC013981521001AE57D /* libglew.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libglew.a; sourceTree = BUILT_PRODUCTS_DIR; };
2B17ABE013981756001AE57D /* libpcre.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpcre.a; sourceTree = BUILT_PRODUCTS_DIR; };
2B30D6801315EA7E00044B68 /* MouseDevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseDevice.cpp; sourceTree = "<group>"; };
2B30D6811315EA7E00044B68 /* MouseDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MouseDevice.h; sourceTree = "<group>"; };
2B43509313949F37006FA051 /* TimingSegments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TimingSegments.h; path = ../src/TimingSegments.h; sourceTree = SOURCE_ROOT; };
@@ -3053,6 +3078,27 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
2B17AB7013980FDF001AE57D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
2B17ABBE13981521001AE57D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
2B17ABDE13981756001AE57D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
AA29CE3B0558741A00961A51 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -3077,6 +3123,9 @@
AA059E2C0B8F0C67006F8139 /* libz_link.a in Frameworks */,
AAA0704E0CE5082E005A3060 /* libffmpeg_link.a in Frameworks */,
AAA071B40CE7C9C9005A3060 /* libmad.a in Frameworks */,
2B17AB9F13981271001AE57D /* libpng.a in Frameworks */,
2B17ABCF139815E0001AE57D /* libglew.a in Frameworks */,
2B17ABFC139817D5001AE57D /* libpcre.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3103,6 +3152,7 @@
AA7C8D430B674F4E00FD9940 /* libtommath.a in Frameworks */,
AA059E2B0B8F0C67006F8139 /* libz_link.a in Frameworks */,
AAA0704F0CE5082E005A3060 /* libffmpeg_link.a in Frameworks */,
2B17ABFD139817D6001AE57D /* libpcre.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3191,6 +3241,9 @@
AA7C895F0B67444700FD9940 /* libtommath.a */,
AA7C8B8B0B67460600FD9940 /* libtomcrypt.a */,
AAA070A90CE7B0DF005A3060 /* libmad.a */,
2B17AB7213980FDF001AE57D /* libpng.a */,
2B17ABC013981521001AE57D /* libglew.a */,
2B17ABE013981756001AE57D /* libpcre.a */,
);
name = Products;
sourceTree = "<group>";
@@ -5039,6 +5092,36 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
2B17AB6E13980FDF001AE57D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
2B17AB7813980FF6001AE57D /* png.h in Headers */,
2B17AB7913980FF6001AE57D /* pngconf.h in Headers */,
2B17AB7A13980FF6001AE57D /* pngdebug.h in Headers */,
2B17AB7D13980FF6001AE57D /* pnginfo.h in Headers */,
2B17AB7E13980FF6001AE57D /* pnglibconf.h in Headers */,
2B17AB8113980FF6001AE57D /* pngpriv.h in Headers */,
2B17AB8713980FF6001AE57D /* pngstruct.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2B17ABBC13981521001AE57D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
2B17ABDC13981756001AE57D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
2B17ABE71398179E001AE57D /* internal.h in Headers */,
2B17ABEA1398179E001AE57D /* pcre.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
AA29CC270558741A00961A51 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -5061,13 +5144,6 @@
EE879B63132DEE720078FDDC /* RageDisplay_Legacy.h in Headers */,
2B76698B132FF71500586512 /* NotesLoaderSMA.h in Headers */,
2BD06FEE137242680018CB9F /* json_batchallocator.h in Headers */,
2BC6132513773C8E00CC8BBD /* png.h in Headers */,
2BC6132613773C8E00CC8BBD /* pngconf.h in Headers */,
2BC6132713773C8E00CC8BBD /* pngdebug.h in Headers */,
2BC6132A13773C8E00CC8BBD /* pnginfo.h in Headers */,
2BC6132D13773C8E00CC8BBD /* pngpriv.h in Headers */,
2BC6133313773C8E00CC8BBD /* pngstruct.h in Headers */,
2BC6133E13773D2C00CC8BBD /* pnglibconf.h in Headers */,
B75CE3B5137963350076A82D /* SongPosition.h in Headers */,
2B9C2E8E137A138B004C92F3 /* NotesLoaderJson.h in Headers */,
2B9C2E90137A138B004C92F3 /* NotesWriterJson.h in Headers */,
@@ -5227,8 +5303,6 @@
AA40D26709A08D650068C0D5 /* ScreenSelectMaster.h in Headers */,
AA40D26B09A08D650068C0D5 /* CombinedLifeMeterTug.h in Headers */,
AA40D26C09A08D650068C0D5 /* ScoreKeeperRave.h in Headers */,
AA40D26D09A08D650068C0D5 /* internal.h in Headers */,
AA40D26E09A08D650068C0D5 /* pcre.h in Headers */,
AA40D26F09A08D650068C0D5 /* RageUtil_FileDB.h in Headers */,
AA40D27109A08D650068C0D5 /* LoadingWindow.h in Headers */,
AA40D27209A08D650068C0D5 /* InputHandler.h in Headers */,
@@ -5585,6 +5659,57 @@
/* End PBXLegacyTarget section */
/* Begin PBXNativeTarget section */
2B17AB7113980FDF001AE57D /* png */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2B17AB8F13981052001AE57D /* Build configuration list for PBXNativeTarget "png" */;
buildPhases = (
2B17AB6E13980FDF001AE57D /* Headers */,
2B17AB6F13980FDF001AE57D /* Sources */,
2B17AB7013980FDF001AE57D /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = png;
productName = png;
productReference = 2B17AB7213980FDF001AE57D /* libpng.a */;
productType = "com.apple.product-type.library.static";
};
2B17ABBF13981521001AE57D /* glew */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2B17ABCC139815AC001AE57D /* Build configuration list for PBXNativeTarget "glew" */;
buildPhases = (
2B17ABBC13981521001AE57D /* Headers */,
2B17ABBD13981521001AE57D /* Sources */,
2B17ABBE13981521001AE57D /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = glew;
productName = glew;
productReference = 2B17ABC013981521001AE57D /* libglew.a */;
productType = "com.apple.product-type.library.static";
};
2B17ABDF13981756001AE57D /* pcre */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2B17ABF9139817C3001AE57D /* Build configuration list for PBXNativeTarget "pcre" */;
buildPhases = (
2B17ABDC13981756001AE57D /* Headers */,
2B17ABDD13981756001AE57D /* Sources */,
2B17ABDE13981756001AE57D /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = pcre;
productName = pcre;
productReference = 2B17ABE013981756001AE57D /* libpcre.a */;
productType = "com.apple.product-type.library.static";
};
AA29CC240558741A00961A51 /* stepmania */ = {
isa = PBXNativeTarget;
buildConfigurationList = AAC8450F0856A19700A9FEAB /* Build configuration list for PBXNativeTarget "stepmania" */;
@@ -5601,9 +5726,12 @@
);
dependencies = (
AAE781FE0AC7E61900AEFC64 /* PBXTargetDependency */,
2B17ABD1139815EB001AE57D /* PBXTargetDependency */,
AA7C8D180B6748B800FD9940 /* PBXTargetDependency */,
AA7C8D160B6748B800FD9940 /* PBXTargetDependency */,
2B17AB8E13981009001AE57D /* PBXTargetDependency */,
AAA071AA0CE7B879005A3060 /* PBXTargetDependency */,
2B17ABFF139817DF001AE57D /* PBXTargetDependency */,
AA30C61A07F5E2EF0066F398 /* PBXTargetDependency */,
);
name = stepmania;
@@ -5776,6 +5904,9 @@
AA7C895E0B67444700FD9940 /* tommath */,
AA7C8B8A0B67460600FD9940 /* tomcrypt */,
AAA070A80CE7B0DF005A3060 /* mad */,
2B17AB7113980FDF001AE57D /* png */,
2B17ABBF13981521001AE57D /* glew */,
2B17ABDF13981756001AE57D /* pcre */,
);
};
/* End PBXProject section */
@@ -5905,12 +6036,53 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
2B17AB6F13980FDF001AE57D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2B17AB7713980FF6001AE57D /* png.c in Sources */,
2B17AB7B13980FF6001AE57D /* pngerror.c in Sources */,
2B17AB7C13980FF6001AE57D /* pngget.c in Sources */,
2B17AB7F13980FF6001AE57D /* pngmem.c in Sources */,
2B17AB8013980FF6001AE57D /* pngpread.c in Sources */,
2B17AB8213980FF6001AE57D /* pngread.c in Sources */,
2B17AB8313980FF6001AE57D /* pngrio.c in Sources */,
2B17AB8413980FF6001AE57D /* pngrtran.c in Sources */,
2B17AB8513980FF6001AE57D /* pngrutil.c in Sources */,
2B17AB8613980FF6001AE57D /* pngset.c in Sources */,
2B17AB8813980FF6001AE57D /* pngtrans.c in Sources */,
2B17AB8913980FF6001AE57D /* pngwio.c in Sources */,
2B17AB8A13980FF6001AE57D /* pngwrite.c in Sources */,
2B17AB8B13980FF6001AE57D /* pngwtran.c in Sources */,
2B17AB8C13980FF6001AE57D /* pngwutil.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2B17ABBD13981521001AE57D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2B17ABC51398153F001AE57D /* glew.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2B17ABDD13981756001AE57D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2B17ABE51398179E001AE57D /* chartables.c in Sources */,
2B17ABE61398179E001AE57D /* get.c in Sources */,
2B17ABE81398179E001AE57D /* maketables.c in Sources */,
2B17ABE91398179E001AE57D /* pcre.c in Sources */,
2B17ABEB1398179E001AE57D /* study.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
AA29CD410558741A00961A51 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
comments = "We need a better way of organizing compile order here.";
files = (
B7B0914B1393481B00C33E6B /* glew.c in Sources */,
AA29CD520558741A00961A51 /* RageUtil.cpp in Sources */,
AA29CD420558741A00961A51 /* RageBitmapTexture.cpp in Sources */,
AA29CD430558741A00961A51 /* RageDisplay.cpp in Sources */,
@@ -6052,10 +6224,6 @@
AA29CDFE0558741A00961A51 /* ScreenSelectMaster.cpp in Sources */,
AA29CE000558741A00961A51 /* CombinedLifeMeterTug.cpp in Sources */,
AA29CE010558741A00961A51 /* ScoreKeeperRave.cpp in Sources */,
AA29CE030558741A00961A51 /* get.c in Sources */,
AA29CE040558741A00961A51 /* maketables.c in Sources */,
AA29CE050558741A00961A51 /* pcre.c in Sources */,
AA29CE060558741A00961A51 /* study.c in Sources */,
AA29CE070558741A00961A51 /* RageUtil_FileDB.cpp in Sources */,
AA29CE090558741A00961A51 /* ActorUtil.cpp in Sources */,
AA29CE0B0558741A00961A51 /* ArchHooks.cpp in Sources */,
@@ -6320,21 +6488,6 @@
2BD06FF1137242680018CB9F /* json_reader.cpp in Sources */,
2BD06FF2137242680018CB9F /* json_value.cpp in Sources */,
2BD06FF4137242680018CB9F /* json_writer.cpp in Sources */,
2BC6132413773C8E00CC8BBD /* png.c in Sources */,
2BC6132813773C8E00CC8BBD /* pngerror.c in Sources */,
2BC6132913773C8E00CC8BBD /* pngget.c in Sources */,
2BC6132B13773C8E00CC8BBD /* pngmem.c in Sources */,
2BC6132C13773C8E00CC8BBD /* pngpread.c in Sources */,
2BC6132E13773C8E00CC8BBD /* pngread.c in Sources */,
2BC6132F13773C8E00CC8BBD /* pngrio.c in Sources */,
2BC6133013773C8E00CC8BBD /* pngrtran.c in Sources */,
2BC6133113773C8E00CC8BBD /* pngrutil.c in Sources */,
2BC6133213773C8E00CC8BBD /* pngset.c in Sources */,
2BC6133513773C8E00CC8BBD /* pngtrans.c in Sources */,
2BC6133713773C8E00CC8BBD /* pngwio.c in Sources */,
2BC6133813773C8E00CC8BBD /* pngwrite.c in Sources */,
2BC6133913773C8E00CC8BBD /* pngwtran.c in Sources */,
2BC6133A13773C8E00CC8BBD /* pngwutil.c in Sources */,
2B43509613949F37006FA051 /* TimingSegments.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -6478,10 +6631,6 @@
AA40D42009A08D650068C0D5 /* ScreenSelectMaster.cpp in Sources */,
AA40D42109A08D650068C0D5 /* CombinedLifeMeterTug.cpp in Sources */,
AA40D42209A08D650068C0D5 /* ScoreKeeperRave.cpp in Sources */,
AA40D42309A08D650068C0D5 /* get.c in Sources */,
AA40D42409A08D650068C0D5 /* maketables.c in Sources */,
AA40D42509A08D650068C0D5 /* pcre.c in Sources */,
AA40D42609A08D650068C0D5 /* study.c in Sources */,
AA40D42709A08D650068C0D5 /* RageUtil_FileDB.cpp in Sources */,
AA40D42909A08D650068C0D5 /* ActorUtil.cpp in Sources */,
AA40D42A09A08D650068C0D5 /* ArchHooks.cpp in Sources */,
@@ -7087,6 +7236,21 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
2B17AB8E13981009001AE57D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 2B17AB7113980FDF001AE57D /* png */;
targetProxy = 2B17AB8D13981009001AE57D /* PBXContainerItemProxy */;
};
2B17ABD1139815EB001AE57D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 2B17ABBF13981521001AE57D /* glew */;
targetProxy = 2B17ABD0139815EB001AE57D /* PBXContainerItemProxy */;
};
2B17ABFF139817DF001AE57D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 2B17ABDF13981756001AE57D /* pcre */;
targetProxy = 2B17ABFE139817DF001AE57D /* PBXContainerItemProxy */;
};
AA30C61A07F5E2EF0066F398 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = AA30C60F07F5E24A0066F398 /* version */;
@@ -7171,6 +7335,515 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
2B17AB7313980FE0001AE57D /* Native */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/libpng/**";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = png;
USER_HEADER_SEARCH_PATHS = "";
};
name = Native;
};
2B17AB7413980FE0001AE57D /* PerformanceDebug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/libpng/**";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = png;
USER_HEADER_SEARCH_PATHS = "";
};
name = PerformanceDebug;
};
2B17AB7513980FE0001AE57D /* Universal */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/libpng/**";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = png;
USER_HEADER_SEARCH_PATHS = "";
};
name = Universal;
};
2B17AB7613980FE0001AE57D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/libpng/**";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = png;
USER_HEADER_SEARCH_PATHS = "";
};
name = Debug;
};
2B17ABC113981522001AE57D /* Native */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/glew-1.5.8/include";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = glew;
USER_HEADER_SEARCH_PATHS = "";
};
name = Native;
};
2B17ABC213981522001AE57D /* PerformanceDebug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/glew-1.5.8/include";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = glew;
USER_HEADER_SEARCH_PATHS = "";
};
name = PerformanceDebug;
};
2B17ABC313981522001AE57D /* Universal */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/glew-1.5.8/include";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = glew;
USER_HEADER_SEARCH_PATHS = "";
};
name = Universal;
};
2B17ABC413981522001AE57D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = "../extern/glew-1.5.8/include";
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = glew;
USER_HEADER_SEARCH_PATHS = "";
};
name = Debug;
};
2B17ABE113981757001AE57D /* Native */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = "";
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = pcre;
};
name = Native;
};
2B17ABE213981757001AE57D /* PerformanceDebug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = "";
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = pcre;
};
name = PerformanceDebug;
};
2B17ABE313981757001AE57D /* Universal */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = "";
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = pcre;
};
name = Universal;
};
2B17ABE413981757001AE57D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)";
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = "";
GCC_PREFIX_HEADER = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = NO;
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO;
GCC_WARN_MISSING_PARENTHESES = NO;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO;
GCC_WARN_PROTOTYPE_CONVERSION = NO;
GCC_WARN_SHADOW = NO;
GCC_WARN_SIGN_COMPARE = NO;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
GCC_WARN_UNDECLARED_SELECTOR = NO;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_LABEL = NO;
GCC_WARN_UNUSED_VALUE = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
INSTALL_PATH = /usr/local/lib;
OTHER_LDFLAGS = "";
PREBINDING = NO;
PRODUCT_NAME = pcre;
};
name = Debug;
};
AA0AA8FE0963CF7700427F4D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -8436,6 +9109,39 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
2B17AB8F13981052001AE57D /* Build configuration list for PBXNativeTarget "png" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2B17AB7313980FE0001AE57D /* Native */,
2B17AB7413980FE0001AE57D /* PerformanceDebug */,
2B17AB7513980FE0001AE57D /* Universal */,
2B17AB7613980FE0001AE57D /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Native;
};
2B17ABCC139815AC001AE57D /* Build configuration list for PBXNativeTarget "glew" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2B17ABC113981522001AE57D /* Native */,
2B17ABC213981522001AE57D /* PerformanceDebug */,
2B17ABC313981522001AE57D /* Universal */,
2B17ABC413981522001AE57D /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Native;
};
2B17ABF9139817C3001AE57D /* Build configuration list for PBXNativeTarget "pcre" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2B17ABE113981757001AE57D /* Native */,
2B17ABE213981757001AE57D /* PerformanceDebug */,
2B17ABE313981757001AE57D /* Universal */,
2B17ABE413981757001AE57D /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Native;
};
AA40D52709A08D650068C0D5 /* Build configuration list for PBXNativeTarget "stepmania-bare" */ = {
isa = XCConfigurationList;
buildConfigurations = (
+6 -6
View File
@@ -269,11 +269,11 @@ void AdjustSync::AutosyncTempo()
FOREACH( BPMSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_BPMSegments, i )
i->SetBPM( i->GetBPM() * fScaleBPM );
// We assume that the stops were measured as a number of beats.
// Therefore, if we change the bpms, we need to make a similar
// change to the stops.
/* We assume that the stops were measured as a number of beats.
* Therefore, if we change the bpms, we need to make a similar
* change to the stops. */
FOREACH( StopSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_StopSegments, i )
i->m_fStopSeconds *= 1.0f - fSlope;
i->SetPause(i->GetPause() * (1.0f - fSlope));
SCREENMAN->SystemMessage( AUTOSYNC_CORRECTION_APPLIED.GetValue() );
}
@@ -366,8 +366,8 @@ void AdjustSync::GetSyncChangeTextSong( vector<RString> &vsAddTo )
for( unsigned i=0; i< testing.m_StopSegments.size(); i++ )
{
float fOld = Quantize( original.m_StopSegments[i].m_fStopSeconds, 0.001f );
float fNew = Quantize( testing.m_StopSegments[i].m_fStopSeconds, 0.001f );
float fOld = Quantize( original.m_StopSegments[i].GetPause(), 0.001f );
float fNew = Quantize( testing.m_StopSegments[i].GetPause(), 0.001f );
float fDelta = fNew - fOld;
if( fabsf(fDelta) > 0.0001f )
+23
View File
@@ -9,6 +9,7 @@
#include "CommonMetrics.h"
#include "LocalizedString.h"
#include "Song.h"
#include "Steps.h"
#include <limits.h>
@@ -198,6 +199,17 @@ void BPMDisplay::SetBpmFromSong( const Song* pSong )
}
}
void BPMDisplay::SetBpmFromSteps( const Steps* pSteps )
{
ASSERT( pSteps );
DisplayBpms bpms;
float fMinBPM, fMaxBPM;
pSteps->m_Timing.GetActualBPM( fMinBPM, fMaxBPM );
bpms.Add( fMinBPM );
bpms.Add( fMaxBPM );
m_fCycleTime = 1.0f;
}
void BPMDisplay::SetBpmFromCourse( const Course* pCourse )
{
ASSERT( pCourse );
@@ -307,6 +319,16 @@ public:
}
return 0;
}
static int SetFromSteps( T* p, lua_State *L )
{
if( lua_isnil(L,1) ) { p->NoBPM(); }
else
{
const Steps* pSteps = Luna<Steps>::check( L, 1, true );
p->SetBpmFromSteps(pSteps);
}
return 0;
}
static int SetFromCourse( T* p, lua_State *L )
{
if( lua_isnil(L,1) ) { p->NoBPM(); }
@@ -323,6 +345,7 @@ public:
{
ADD_METHOD( SetFromGameState );
ADD_METHOD( SetFromSong );
ADD_METHOD( SetFromSteps );
ADD_METHOD( SetFromCourse );
ADD_METHOD( GetText );
}
+6
View File
@@ -6,6 +6,7 @@
#include "ThemeMetric.h"
#include "LocalizedString.h"
class Song;
class Steps;
class Course;
struct DisplayBpms;
@@ -30,6 +31,11 @@ public:
* @param pSong the song in question.
*/
void SetBpmFromSong( const Song* pSong );
/**
* @brief Use the BPM[s] from a steps.
* @param pSteps the steps in question.
*/
void SetBpmFromSteps( const Steps* pSteps );
/**
* @brief Use the BPM[s] from a course.
* @param pCourse the course in question.
+3 -2
View File
@@ -106,7 +106,7 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score )
if( m_iLivesLeft == 0 )
return;
// xxx: This is hardcoded; we should use metrics for this. -aj
// todo: let the themer decide how this is handled. -aj
switch( score )
{
case TNS_W1:
@@ -142,6 +142,7 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score )
Message msg( "LifeChanged" );
msg.SetParam( "Player", m_pPlayerState->m_PlayerNumber );
msg.SetParam( "LifeMeter", LuaReference::CreateFromPush(*this) );
msg.SetParam( "LivesLeft", GetLivesLeft() );
MESSAGEMAN->Broadcast( msg );
}
@@ -152,7 +153,7 @@ void LifeMeterBattery::ChangeLife( HoldNoteScore score, TapNoteScore tscore )
case HNS_Held:
break;
case HNS_LetGo:
ChangeLife( TNS_Miss ); // LetGo is the same as a miss
ChangeLife( TNS_Miss ); // LetGo is the same as a miss
break;
default:
ASSERT(0);
-1
View File
@@ -43,7 +43,6 @@ private:
float m_fBatteryBlinkTime; // if > 0 battery is blinking
// theme metrics added for sm-ssc
//ThemeMetric<> METRIC_NAME;
ThemeMetric<float> BATTERY_BLINK_TIME;
AutoActor m_sprFrame;
+221 -36
View File
@@ -23,6 +23,7 @@
#include "MessageManager.h"
static Preference<bool> g_bMoveRandomToEnd( "MoveRandomToEnd", false );
static Preference<bool> g_bPrecacheAllSorts( "PreCacheAllWheelSorts", false);
#define NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2))
#define WHEEL_TEXT(s) THEME->GetString( "MusicWheel", ssprintf("%sText",s.c_str()) );
@@ -69,18 +70,18 @@ void MusicWheel::Load( RString sType )
{
ROULETTE_SWITCH_SECONDS .Load(sType,"RouletteSwitchSeconds");
ROULETTE_SLOW_DOWN_SWITCHES .Load(sType,"RouletteSlowDownSwitches");
NUM_SECTION_COLORS .Load(sType,"NumSectionColors");
NUM_SECTION_COLORS .Load(sType,"NumSectionColors");
SONG_REAL_EXTRA_COLOR .Load(sType,"SongRealExtraColor");
SORT_MENU_COLOR .Load(sType,"SortMenuColor");
SHOW_ROULETTE .Load(sType,"ShowRoulette");
SHOW_RANDOM .Load(sType,"ShowRandom");
SHOW_PORTAL .Load(sType,"ShowPortal");
SORT_MENU_COLOR .Load(sType,"SortMenuColor");
SHOW_ROULETTE .Load(sType,"ShowRoulette");
SHOW_RANDOM .Load(sType,"ShowRandom");
SHOW_PORTAL .Load(sType,"ShowPortal");
RANDOM_PICKS_LOCKED_SONGS .Load(sType,"RandomPicksLockedSongs");
MOST_PLAYED_SONGS_TO_SHOW .Load(sType,"MostPlayedSongsToShow");
RECENT_SONGS_TO_SHOW .Load(sType,"RecentSongsToShow");
MODE_MENU_CHOICE_NAMES .Load(sType,"ModeMenuChoiceNames");
SORT_ORDERS .Load(sType,"SortOrders");
SHOW_EASY_FLAG .Load(sType,"UseEasyMarkerFlag");
SORT_ORDERS .Load(sType,"SortOrders");
SHOW_EASY_FLAG .Load(sType,"UseEasyMarkerFlag");
USE_SECTIONS_WITH_PREFERRED_GROUP .Load(sType,"UseSectionsWithPreferredGroup");
HIDE_INACTIVE_SECTIONS .Load(sType,"OnlyShowActiveSection");
REMIND_WHEEL_POSITIONS .Load(sType,"RemindWheelPositions");
@@ -113,25 +114,36 @@ void MusicWheel::Load( RString sType )
* stable_sort) from its output, and title will be the secondary sort, without having
* to re-sort by title each time. */
SONGMAN->SortSongs();
FOREACH_ENUM( SortOrder, so ) {
m_WheelItemDatasStatus[so]=INVALID;
}
}
void MusicWheel::BeginScreen()
{
RageTimer timer;
RString times;
/* Build all of the wheel item data. Do this after selecting the extra stage,
* so it knows to always display it. */
FOREACH_ENUM( SortOrder, so )
{
BuildWheelItemDatas( m_WheelItemDatas[so], so );
times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() );
}
LOG->Trace( "MusicWheel sorting took: %s", times.c_str() );
FOREACH_ENUM( SortOrder, so ) {
if(m_WheelItemDatasStatus[so]!=INVALID) {
m_WheelItemDatasStatus[so]=NEEDREFILTER;
}
/* Set m_LastModeMenuItem to the first item that matches the current mode. (Do this
* after building wheel item data.) */
if(g_bPrecacheAllSorts) {
readyWheelItemsData(so);
times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() );
}
}
if(g_bPrecacheAllSorts) {
LOG->Trace( "MusicWheel sorting took: %s", times.c_str() );
}
// Set m_LastModeMenuItem to the first item that matches the current mode. (Do this
// after building wheel item data.)
{
const vector<MusicWheelItemData *> &from = m_WheelItemDatas[SORT_MODE_MENU];
const vector<MusicWheelItemData *> &from = getWheelItemsData(SORT_MODE_MENU);
for( unsigned i=0; i<from.size(); i++ )
{
ASSERT( &*from[i]->m_pAction );
@@ -227,14 +239,19 @@ void MusicWheel::BeginScreen()
MusicWheel::~MusicWheel()
{
FOREACH_ENUM( SortOrder, so )
FOREACH( MusicWheelItemData*, m_WheelItemDatas[so], i )
FOREACH_ENUM( SortOrder, so ) {
vector<MusicWheelItemData*>::iterator i = m__UnFilteredWheelItemDatas[so].begin();
vector<MusicWheelItemData*>::iterator iEnd = m__UnFilteredWheelItemDatas[so].end();
for( ; i != iEnd; ++i ) {
delete *i;
}
}
}
/* If a song or course is set in GAMESTATE and available, select it. Otherwise,
* choose the first available song or course. Return true if an item was set,
* false if no items are available. */
/* If a song or course is set in GAMESTATE and available, select it. Otherwise, choose the
* first available song or course. Return true if an item was set, false if no items are
* available. */
bool MusicWheel::SelectSongOrCourse()
{
if( GAMESTATE->m_pPreferredSong && SelectSong( GAMESTATE->m_pPreferredSong ) )
@@ -247,7 +264,7 @@ bool MusicWheel::SelectSongOrCourse()
return true;
// Select the first selectable song based on the sort order...
vector<MusicWheelItemData *> &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SortOrder];
vector<MusicWheelItemData *> &wiWheelItems = getWheelItemsData(GAMESTATE->m_SortOrder);
for( unsigned i = 0; i < wiWheelItems.size(); i++ )
{
if( wiWheelItems[i]->m_pSong )
@@ -280,7 +297,7 @@ bool MusicWheel::SelectSong( const Song *p )
return false;
unsigned i;
vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
for( i=0; i<from.size(); i++ )
{
if( from[i]->m_pSong == p )
@@ -308,7 +325,7 @@ bool MusicWheel::SelectCourse( const Course *p )
return false;
unsigned i;
vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
for( i=0; i<from.size(); i++ )
{
if( from[i]->m_pCourse == p )
@@ -335,7 +352,7 @@ bool MusicWheel::SelectModeMenuItem()
{
// Select the last-chosen option.
ASSERT( GAMESTATE->m_SortOrder == SORT_MODE_MENU );
const vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
const vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
unsigned i;
for( i=0; i<from.size(); i++ )
{
@@ -839,20 +856,185 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
WID.m_Flags.iStagesForSong = 1;
}
}
}
vector<MusicWheelItemData *> & MusicWheel::getWheelItemsData(SortOrder so) {
// Update the popularity and init icons.
readyWheelItemsData(so);
return m__WheelItemDatas[so];
}
void MusicWheel::readyWheelItemsData(SortOrder so) {
if(m_WheelItemDatasStatus[so]!=VALID) {
RageTimer timer;
vector<MusicWheelItemData *> &aUnFilteredDatas=m__UnFilteredWheelItemDatas[so];
if(m_WheelItemDatasStatus[so]==INVALID) {
BuildWheelItemDatas( aUnFilteredDatas, so );
}
FilterWheelItemDatas( aUnFilteredDatas, m__WheelItemDatas[so], so );
m_WheelItemDatasStatus[so]=VALID;
LOG->Trace( "MusicWheel sorting took: %f", timer.GetTimeSinceStart() );
}
}
void MusicWheel::FilterWheelItemDatas(vector<MusicWheelItemData *> &aUnFilteredDatas, vector<MusicWheelItemData *> &aFilteredData, SortOrder so )
{
unsigned unfilteredSize=aUnFilteredDatas.size();
/* Only add TYPE_PORTAL if there's at least one song on the list. */
bool bFoundAnySong = false;
for( unsigned i=0; i < unfilteredSize; i++ ) {
if( aUnFilteredDatas[i]->m_Type == TYPE_SONG ) {
bFoundAnySong = true;
break;
}
}
vector<bool> aiRemove;
aiRemove.insert( aiRemove.begin(), unfilteredSize, false );
const int iMaxStagesForSong = GAMESTATE->GetSmallestNumStagesLeftForAnyHumanPlayer();
Song *pExtraStageSong = NULL;
if( GAMESTATE->IsAnExtraStage() )
{
Steps *pSteps;
SONGMAN->GetExtraStageInfo( GAMESTATE->IsExtraStage2(), GAMESTATE->GetCurrentStyle(), pExtraStageSong, pSteps );
}
/* Mark any songs that aren't playable in aiRemove. */
for( unsigned i=0; i< unfilteredSize; i++ )
{
MusicWheelItemData& WID = *aUnFilteredDatas[i];
/* If we have no songs, remove Random and Portal. */
if( WID.m_Type == TYPE_RANDOM || WID.m_Type == TYPE_PORTAL )
{
if( !bFoundAnySong )
aiRemove[i] = true;
continue;
}
/* Filter songs that we don't have enough stages to play. */
if( WID.m_Type == TYPE_SONG )
{
Song* pSong = WID.m_pSong;
/* Never remove the extra stage song. */
if( pExtraStageSong && WID.m_pSong == pExtraStageSong )
continue;
/* Check that we have enough stages to play this song. */
if( GAMESTATE->GetNumStagesMultiplierForSong(WID.m_pSong) > iMaxStagesForSong )
{
aiRemove[i] = true;
continue;
}
int iLocked = UNLOCKMAN->SongIsLocked( pSong );
if( iLocked & LOCKED_DISABLED )
{
aiRemove[i] = true;
continue;
}
/* If we're on an extra stage, and this song is selected, ignore #SELECTABLE. */
if( pSong != GAMESTATE->m_pCurSong || !GAMESTATE->IsAnExtraStage() )
{
/* Hide songs that asked to be hidden via #SELECTABLE. */
if( iLocked & LOCKED_SELECTABLE )
{
aiRemove[i] = true;
continue;
}
if( so != SORT_ROULETTE && iLocked & LOCKED_ROULETTE )
{
aiRemove[i] = true;
continue;
}
}
/* Hide locked songs. If RANDOM_PICKS_LOCKED_SONGS, hide in Roulette and Random,
* too. */
if( (so!=SORT_ROULETTE || !RANDOM_PICKS_LOCKED_SONGS) && iLocked )
{
aiRemove[i] = true;
continue;
}
/* If the song has no steps for the current style, remove it. */
if( !pSong->HasStepsType(GAMESTATE->GetCurrentStyle()->m_StepsType) )
{
aiRemove[i] = true;
continue;
}
}
if( WID.m_Type == TYPE_COURSE )
{
if( !WID.m_pCourse->IsPlayableIn(GAMESTATE->GetCurrentStyle()->m_StepsType) )
aiRemove[i] = true;
}
}
/* Filter out the songs we're removing. */
aFilteredData.reserve( unfilteredSize );
for( unsigned i=0; i< unfilteredSize; i++ )
{
if( aiRemove[i] )
continue;
aFilteredData.push_back( aUnFilteredDatas[i] );
}
// Update the song count in each section header.
unsigned filteredSize=aFilteredData.size();
for( unsigned i=0; i < filteredSize; )
{
MusicWheelItemData& WID = *aFilteredData[i];
++i;
if( WID.m_Type != TYPE_SECTION )
continue;
// Count songs in this section
WID.m_iSectionCount = 0;
for( ; i < filteredSize && aFilteredData[i]->m_sText == WID.m_sText; ++i )
++WID.m_iSectionCount;
}
// If we have any section headers with no songs, then we filtered all of the songs in that group,
// so remove it. This isn't optimized like the above since this is a rare case.
for( unsigned i=0; i < filteredSize; ++i )
{
MusicWheelItemData& WID = *aFilteredData[i];
if( WID.m_Type != TYPE_SECTION )
continue;
if( WID.m_iSectionCount > 0 )
continue;
aFilteredData.erase( aFilteredData.begin()+i, aFilteredData.begin()+i+1 );
--i;
--filteredSize;
}
/* Update the popularity. This is affected by filtering. */
if( so == SORT_POPULARITY )
{
for( unsigned i=0; i< min(3u,arrayWheelItemDatas.size()); i++ )
for( unsigned i=0; i< min(3u,aFilteredData.size()); i++ )
{
MusicWheelItemData& WID = *arrayWheelItemDatas[i];
MusicWheelItemData& WID = *aFilteredData[i];
WID.m_Flags.iPlayersBestNumber = i+1;
}
}
// If we've filtered all items, insert a dummy.
if( arrayWheelItemDatas.empty() )
arrayWheelItemDatas.push_back( new MusicWheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), 0) );
if( aFilteredData.empty() )
aFilteredData.push_back( new MusicWheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), 0) );
}
void MusicWheel::UpdateSwitch()
@@ -980,7 +1162,7 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success
return false;
// Don't change to SORT_MODE_MENU if it doesn't have at least two choices.
if( new_so == SORT_MODE_MENU && m_WheelItemDatas[new_so].size() < 2 )
if( new_so == SORT_MODE_MENU && getWheelItemsData(new_so).size() < 2 )
return false;
switch( m_WheelState )
@@ -1116,7 +1298,7 @@ void MusicWheel::StartRandom()
{
// Shuffle and use the roulette wheel.
RandomGen rnd;
random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd );
random_shuffle( getWheelItemsData(SORT_ROULETTE).begin(), getWheelItemsData(SORT_ROULETTE).end(), rnd );
GAMESTATE->m_SortOrder.Set( SORT_ROULETTE );
}
else
@@ -1154,7 +1336,7 @@ void MusicWheel::SetOpenSection( RString group )
GAMEMAN->GetCompatibleStyles( GAMESTATE->m_pCurGame, GAMESTATE->GetNumPlayersEnabled(), vpPossibleStyles );
m_CurWheelItemData.clear();
vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
m_CurWheelItemData.reserve( from.size() );
for( unsigned i = 0; i < from.size(); ++i )
{
@@ -1316,7 +1498,10 @@ void MusicWheel::PlayerJoined()
// We need to rebuild the wheel item data in this situation. -aj
if( !GAMESTATE->IsCourseMode() && !PREFSMAN->m_bAutogenSteps )
{
BuildWheelItemDatas( m_WheelItemDatas[GAMESTATE->m_SortOrder], GAMESTATE->m_SortOrder );
if(m_WheelItemDatasStatus[GAMESTATE->m_SortOrder]!=INVALID)
m_WheelItemDatasStatus[GAMESTATE->m_SortOrder]=NEEDREFILTER;
RebuildWheelItems();
}
SetOpenSection( m_sExpandedSectionName );
@@ -1366,7 +1551,7 @@ Song *MusicWheel::GetPreferredSelectionForRandomOrPortal()
}
RString sPreferredGroup = m_sExpandedSectionName;
vector<MusicWheelItemData *> &wid = m_WheelItemDatas[GAMESTATE->m_SortOrder];
vector<MusicWheelItemData *> &wid = getWheelItemsData(GAMESTATE->m_SortOrder);
StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
+14 -6
View File
@@ -53,15 +53,14 @@ protected:
MusicWheelItem *MakeItem();
void GetSongList( vector<Song*> &arraySongs, SortOrder so );
void BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelItems, SortOrder so );
bool SelectSongOrCourse();
bool SelectCourse( const Course *p );
bool SelectModeMenuItem();
//bool SelectCustomItem();
virtual void UpdateSwitch();
vector<MusicWheelItemData *> m_WheelItemDatas[NUM_SortOrder]; // aliases into m_UnfilteredWheelItemDatas
vector<MusicWheelItemData *> & getWheelItemsData(SortOrder so);
void readyWheelItemsData(SortOrder so);
RString m_sLastModeMenuItem;
SortOrder m_SortOrder;
@@ -72,15 +71,15 @@ protected:
ThemeMetric<float> ROULETTE_SWITCH_SECONDS;
ThemeMetric<int> ROULETTE_SLOW_DOWN_SWITCHES;
ThemeMetric<int> NUM_SECTION_COLORS;
ThemeMetric<RageColor> SONG_REAL_EXTRA_COLOR;
ThemeMetric<RageColor> SORT_MENU_COLOR;
ThemeMetric<RageColor> SONG_REAL_EXTRA_COLOR;
ThemeMetric<RageColor> SORT_MENU_COLOR;
ThemeMetric<bool> SHOW_ROULETTE;
ThemeMetric<bool> SHOW_RANDOM;
ThemeMetric<bool> SHOW_PORTAL;
ThemeMetric<bool> RANDOM_PICKS_LOCKED_SONGS;
ThemeMetric<int> MOST_PLAYED_SONGS_TO_SHOW;
ThemeMetric<int> RECENT_SONGS_TO_SHOW;
ThemeMetric<RString> MODE_MENU_CHOICE_NAMES;
ThemeMetric<RString> MODE_MENU_CHOICE_NAMES;
ThemeMetricMap<RString> CHOICE;
ThemeMetric1D<RageColor> SECTION_COLORS;
ThemeMetric<LuaReference> SORT_ORDERS;
@@ -96,6 +95,15 @@ protected:
ThemeMetric<RString> CUSTOM_WHEEL_ITEM_NAMES;
ThemeMetricMap<RString> CUSTOM_CHOICES;
ThemeMetricMap<RageColor> CUSTOM_CHOICE_COLORS;
private:
//use getWheelItemsData instead of touching this one
enum {INVALID,NEEDREFILTER,VALID} m_WheelItemDatasStatus[NUM_SortOrder];
vector<MusicWheelItemData *> m__WheelItemDatas[NUM_SortOrder];
vector<MusicWheelItemData *> m__UnFilteredWheelItemDatas[NUM_SortOrder];
void BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelItems, SortOrder so );
void FilterWheelItemDatas(vector<MusicWheelItemData *> &aUnFilteredDatas, vector<MusicWheelItemData *> &aFilteredData, SortOrder so );
};
#endif
+18 -18
View File
@@ -637,7 +637,7 @@ void NoteField::DrawScrollText( const float fBeat, float fPercent )
m_textMeasureNumber.SetHorizAlign( SCROLL_IS_LEFT_SIDE ? align_right : align_left );
m_textMeasureNumber.SetDiffuse( SCROLL_COLOR );
m_textMeasureNumber.SetGlow( RageColor(1,1,1,RageFastCos(RageTimer::GetTimeSinceStartFast()*2)/2+0.5f) );
m_textMeasureNumber.SetText( ssprintf("%.3fx", fPercent) );
m_textMeasureNumber.SetText( ssprintf("%.3f", fPercent) );
m_textMeasureNumber.SetXY( (SCROLL_IS_LEFT_SIDE ? -xBase - xOffset : xBase + xOffset), fYPos );
m_textMeasureNumber.Draw();
}
@@ -896,6 +896,20 @@ void NoteField::DrawPrimitives()
const TimingData &timing = *pTiming;
// Scroll text
if( GAMESTATE->m_bIsUsingStepTiming )
{
FOREACH_CONST( ScrollSegment, timing.m_ScrollSegments, seg )
{
if( seg->GetRow() >= iFirstRowToDraw && seg->GetRow() <= iLastRowToDraw )
{
float fBeat = seg->GetBeat();
if( IS_ON_SCREEN(fBeat) )
DrawScrollText( fBeat, seg->GetRatio() );
}
}
}
// BPM text
FOREACH_CONST( BPMSegment, timing.m_BPMSegments, seg )
{
@@ -910,11 +924,11 @@ void NoteField::DrawPrimitives()
// Freeze text
FOREACH_CONST( StopSegment, timing.m_StopSegments, seg )
{
if( seg->m_iStartRow >= iFirstRowToDraw && seg->m_iStartRow <= iLastRowToDraw )
if( seg->GetRow() >= iFirstRowToDraw && seg->GetRow() <= iLastRowToDraw )
{
float fBeat = NoteRowToBeat(seg->m_iStartRow);
float fBeat = seg->GetBeat();
if( IS_ON_SCREEN(fBeat) )
DrawFreezeText( fBeat, seg->m_fStopSeconds, seg->m_bDelay );
DrawFreezeText( fBeat, seg->GetPause(), seg->GetDelay() );
}
}
@@ -994,20 +1008,6 @@ void NoteField::DrawPrimitives()
}
}
// Scroll text
if( GAMESTATE->m_bIsUsingStepTiming )
{
FOREACH_CONST( ScrollSegment, timing.m_ScrollSegments, seg )
{
if( seg->m_iStartRow >= iFirstRowToDraw && seg->m_iStartRow <= iLastRowToDraw )
{
float fBeat = NoteRowToBeat(seg->m_iStartRow);
if( IS_ON_SCREEN(fBeat) )
DrawScrollText( fBeat, seg->m_fPercent );
}
}
}
// Speed text
if( GAMESTATE->m_bIsUsingStepTiming )
{
+1 -1
View File
@@ -664,7 +664,7 @@ static bool LoadFromBMSFile( const RString &sPath, const NameToData_t &mapNameTo
StopSegment newSeg( BeatToNoteRow(fBeat), fFreezeSecs );
out.m_Timing.AddStopSegment( newSeg );
LOG->Trace( "Inserting new Freeze at beat %f, secs %f", fBeat, newSeg.m_fStopSeconds );
LOG->Trace( "Inserting new Freeze at beat %f, secs %f", fBeat, newSeg.GetPause() );
}
else
{
+2 -2
View File
@@ -23,8 +23,8 @@ void Deserialize(BPMSegment &seg, const Json::Value &root)
static void Deserialize(StopSegment &seg, const Json::Value &root)
{
seg.m_iStartRow = BeatToNoteRow((float)(root["Beat"].asDouble()));
seg.m_fStopSeconds = (float)root["Seconds"].asDouble();
seg.SetBeat((float)(root["Beat"].asDouble()));
seg.SetPause((float)(root["Seconds"].asDouble()));
}
static void Deserialize(TimingData &td, const Json::Value &root)
+1 -1
View File
@@ -722,7 +722,7 @@ static void ReadGlobalTags( const NameToData_t &mapNameToData, Song &out, Measur
StopSegment newSeg( BeatToNoteRow(fBeat), fFreezeSecs );
out.m_SongTiming.AddStopSegment( newSeg );
LOG->Trace( "Inserting new Freeze at beat %f, secs %f", fBeat, newSeg.m_fStopSeconds );
LOG->Trace( "Inserting new Freeze at beat %f, secs %f", fBeat, newSeg.GetPause() );
}
else
{
+38 -70
View File
@@ -84,20 +84,6 @@ void SMLoader::GetApplicableFiles( const RString &sPath, vector<RString> &out )
GetDirListing( sPath + RString("*.sm"), out );
}
bool SMLoader::LoadTimingFromFile( const RString &fn, TimingData &out )
{
MsdFile msd;
if( !msd.ReadFile( fn, true ) ) // unescape
{
LOG->UserLog( "Song file", fn, "couldn't be loaded: %s", msd.GetError().c_str() );
return false;
}
out.m_sFile = fn;
LoadTimingFromSMFile( msd, out );
return true;
}
void SMLoader::ProcessBGChanges( Song &out, const RString &sValueName, const RString &sPath, const RString &sParam )
{
BackgroundLayer iLayer = BACKGROUND_LAYER_1;
@@ -342,10 +328,10 @@ void SMLoader::ProcessDelays( TimingData &out, const RString sParam )
const float fFreezeBeat = StringToFloat( arrayDelayValues[0] );
const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] );
StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds, true );
StopSegment new_seg( fFreezeBeat, fFreezeSeconds, true );
// XXX: Remove Negatives Bug?
new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat);
new_seg.m_fStopSeconds = fFreezeSeconds;
new_seg.SetBeat(fFreezeBeat);
new_seg.SetPause(fFreezeSeconds);
// LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds );
@@ -423,53 +409,6 @@ void SMLoader::ProcessTickcounts( TimingData &out, const RString sParam )
}
}
void SMLoader::LoadTimingFromSMFile( const MsdFile &msd, TimingData &out )
{
out.m_fBeat0OffsetInSeconds = 0;
out.m_BPMSegments.clear();
out.m_StopSegments.clear();
out.m_WarpSegments.clear();
out.m_vTimeSignatureSegments.clear();
for( unsigned i=0; i<msd.GetNumValues(); i++ )
{
const MsdFile::value_t &sParams = msd.GetValue(i);
RString sValueName = sParams[0];
sValueName.MakeUpper();
if( sValueName=="OFFSET" )
{
out.m_fBeat0OffsetInSeconds = StringToFloat( sParams[1] );
}
else if( sValueName=="BPMS" )
{
ProcessBPMs(out, sParams[1]);
}
else if( sValueName=="STOPS" || sValueName=="FREEZES" )
{
ProcessStops(out, sParams[1]);
}
else if( sValueName=="DELAYS" )
{
ProcessDelays(out, sParams[1]);
}
else if( sValueName=="TIMESIGNATURES" )
{
ProcessTimeSignatures(out, sParams[1]);
}
else if( sValueName=="TICKCOUNTS" )
{
ProcessTickcounts(out, sParams[1]);
}
// Ensure all of the warps are handled right.
sort(out.m_WarpSegments.begin(), out.m_WarpSegments.end());
}
}
bool SMLoader::LoadFromBGChangesString( BackgroundChange &change, const RString &sBGChangeExpression )
{
vector<RString> aBGChangeValues;
@@ -568,7 +507,6 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache
}
out.m_SongTiming.m_sFile = sPath;
LoadTimingFromSMFile( msd, out.m_SongTiming );
for( unsigned i=0; i<msd.GetNumValues(); i++ )
{
@@ -620,6 +558,36 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache
else if( sValueName=="MUSIC" )
out.m_sMusicFile = sParams[1];
else if( sValueName=="OFFSET" )
{
out.m_SongTiming.m_fBeat0OffsetInSeconds = StringToFloat( sParams[1] );
}
else if( sValueName=="BPMS" )
{
ProcessBPMs(out.m_SongTiming, sParams[1]);
}
else if( sValueName=="STOPS" || sValueName=="FREEZES" )
{
ProcessStops(out.m_SongTiming, sParams[1]);
}
else if( sValueName=="DELAYS" )
{
ProcessDelays(out.m_SongTiming, sParams[1]);
}
else if( sValueName=="TIMESIGNATURES" )
{
ProcessTimeSignatures(out.m_SongTiming, sParams[1]);
}
else if( sValueName=="TICKCOUNTS" )
{
ProcessTickcounts(out.m_SongTiming, sParams[1]);
}
else if( sValueName=="INSTRUMENTTRACK" )
{
ProcessInstrumentTracks( out, sParams[1] );
@@ -762,15 +730,15 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache
out.AddSteps( pNewNotes );
}
/*
* We used to check for timing data in this section. That has
* since been moved to a dedicated function.
*/
else if( sValueName=="OFFSET" || sValueName=="BPMS" || sValueName=="STOPS" || sValueName=="FREEZES" || sValueName=="DELAYS" || sValueName=="TIMESIGNATURES" || sValueName=="LEADTRACK" || sValueName=="TICKCOUNTS" )
// XXX: Does anyone know what LEADTRACK is for? -Wolfman2000
else if( sValueName=="LEADTRACK" )
;
else
LOG->UserLog( "Song file", sPath, "has an unexpected value named \"%s\".", sValueName.c_str() );
}
// Ensure all warps from negative time changes are in order.
sort(out.m_SongTiming.m_WarpSegments.begin(), out.m_SongTiming.m_WarpSegments.end());
TidyUpData( out, bFromCache );
return true;
}
-2
View File
@@ -26,8 +26,6 @@ namespace SMLoader
bool LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache = false );
void GetApplicableFiles( const RString &sPath, vector<RString> &out );
bool LoadTimingFromFile( const RString &fn, TimingData &out );
void LoadTimingFromSMFile( const MsdFile &msd, TimingData &out );
bool LoadEditFromFile( RString sEditFilePath, ProfileSlot slot, bool bAddStepsToSong );
bool LoadEditFromBuffer( const RString &sBuffer, const RString &sEditFilePath, ProfileSlot slot );
bool LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath, ProfileSlot slot, bool bAddStepsToSong );
+3 -3
View File
@@ -209,10 +209,10 @@ void SMALoader::ProcessDelays( TimingData &out, const int iRowsPerBeat, const RS
const float fFreezeBeat = RowToBeat( arrayDelayValues[0], iRowsPerBeat );
const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] );
StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds, true );
StopSegment new_seg( fFreezeBeat, fFreezeSeconds, true );
// XXX: Remove Negatives Bug?
new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat);
new_seg.m_fStopSeconds = fFreezeSeconds;
new_seg.SetBeat(fFreezeBeat);
new_seg.SetPause(fFreezeSeconds);
// LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds );
+2 -2
View File
@@ -381,8 +381,8 @@ bool NotesWriterDWI::Write( RString sPath, const Song &out )
for( unsigned i=0; i<out.m_SongTiming.m_StopSegments.size(); i++ )
{
const StopSegment &fs = out.m_SongTiming.m_StopSegments[i];
f.Write( ssprintf("%.3f=%.3f", fs.m_iStartRow * 4.0f / ROWS_PER_BEAT,
roundf(fs.m_fStopSeconds*1000)) );
f.Write( ssprintf("%.3f=%.3f", fs.GetRow() * 4.0f / ROWS_PER_BEAT,
roundf(fs.GetPause()*1000)) );
if( i != out.m_SongTiming.m_StopSegments.size()-1 )
f.Write( "," );
}
+2 -2
View File
@@ -17,8 +17,8 @@ void Serialize(const BPMSegment &seg, Json::Value &root)
static void Serialize(const StopSegment &seg, Json::Value &root)
{
root["Beat"] = NoteRowToBeat(seg.m_iStartRow);
root["Seconds"] = seg.m_fStopSeconds;
root["Beat"] = seg.GetBeat();
root["Seconds"] = seg.GetPause();
}
static void Serialize(const TimingData &td, Json::Value &root)
+11 -17
View File
@@ -116,10 +116,7 @@ static void WriteGlobalTags( RageFile &f, Song &out )
int iRow = out.m_SongTiming.m_WarpSegments[i].GetRow();
float fBPS = 60 / out.m_SongTiming.GetBPMAtRow(iRow);
float fSkip = fBPS * out.m_SongTiming.m_WarpSegments[i].GetLength();
StopSegment ss;
ss.m_iStartRow = iRow;
ss.m_fStopSeconds = -fSkip;
ss.m_bDelay = false; // Best to be sure.
StopSegment ss(iRow, -fSkip, false);
out.m_SongTiming.AddStopSegment( ss );
}
}
@@ -128,21 +125,18 @@ static void WriteGlobalTags( RageFile &f, Song &out )
for( unsigned i=0; i<out.m_SongTiming.m_StopSegments.size(); i++ )
{
const StopSegment &fs = out.m_SongTiming.m_StopSegments[i];
int iRow = fs.m_iStartRow;
float fBeat = NoteRowToBeat(!fs.m_bDelay ? iRow : iRow - 1);
float fBeat = fs.GetBeat();
if (fs.GetDelay()) fBeat--;
if(!fs.m_bDelay)
f.PutLine( ssprintf( "%.3f=%.3f", fBeat, fs.GetPause() ) );
if( i != out.m_SongTiming.m_StopSegments.size()-1 )
f.Write( "," );
if( fs.GetPause() < 0 )
{
f.PutLine( ssprintf( "%.3f=%.3f", fBeat, fs.m_fStopSeconds ) );
if( i != out.m_SongTiming.m_StopSegments.size()-1 )
f.Write( "," );
if( fs.m_fStopSeconds < 0 )
{
out.m_SongTiming.m_StopSegments.erase(
out.m_SongTiming.m_StopSegments.begin()+i,
out.m_SongTiming.m_StopSegments.begin()+i+1 );
i--;
}
out.m_SongTiming.m_StopSegments.erase(
out.m_SongTiming.m_StopSegments.begin()+i,
out.m_SongTiming.m_StopSegments.begin()+i+1 );
i--;
}
}
f.PutLine( ";" );
+5 -5
View File
@@ -98,14 +98,14 @@ static void GetTimingTags( vector<RString> &lines, TimingData timing, bool bIsSo
w.Init( "STOPS" );
FOREACH_CONST( StopSegment, timing.m_StopSegments, ss )
if( !ss->m_bDelay )
w.Write( ss->m_iStartRow, ss->m_fStopSeconds );
if( !ss->GetDelay() )
w.Write( ss->GetRow(), ss->GetPause() );
w.Finish();
w.Init( "DELAYS" );
FOREACH_CONST( StopSegment, timing.m_StopSegments, ss )
if( ss->m_bDelay )
w.Write( ss->m_iStartRow, ss->m_fStopSeconds );
if( ss->GetDelay() )
w.Write( ss->GetRow(), ss->GetPause() );
w.Finish();
w.Init( "WARPS" );
@@ -139,7 +139,7 @@ static void GetTimingTags( vector<RString> &lines, TimingData timing, bool bIsSo
w.Init( "SCROLLS" );
FOREACH_CONST( ScrollSegment, timing.m_ScrollSegments, ss )
w.Write( ss->m_iStartRow, ss->m_fPercent );
w.Write( ss->GetRow(), ss->GetRatio() );
w.Finish();
if( !bIsSong )
+3 -3
View File
@@ -265,7 +265,7 @@ void PlayerOptions::FromString( const RString &sMultipleMods )
{
if (!FromOneModString( *s, sThrowAway ))
{
LOG->Trace( "Attempted to load a non-existing mod %s for the Player. Ignoring.", (*s).c_str() );
LOG->Trace( "Attempted to load a non-existing mod \'%s\' for the Player. Ignoring.", (*s).c_str() );
}
}
}
@@ -300,8 +300,8 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut
* they meant "*123". */
if( s->Right(1) == "*" )
{
/* XXX We know what they want, is there any reason not to handle it? */
/* Yes. We should be strict in handling the format. -Chris */
// XXX: We know what they want, is there any reason not to handle it?
// Yes. We should be strict in handling the format. -Chris
sErrorOut = ssprintf("Invalid player options \"%s\"; did you mean '*%d'?", s->c_str(), StringToInt(*s) );
return false;
}
+5 -5
View File
@@ -583,7 +583,7 @@ float PlayerStageStats::GetPercentageOfTaps( TapNoteScore tns ) const
void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutoplay )
{
LOG->Trace( "hand out awards" );
//LOG->Trace( "hand out awards" );
m_PeakComboAward = PeakComboAward_Invalid;
@@ -592,7 +592,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
deque<StageAward> &vPdas = GAMESTATE->m_vLastStageAwards[p];
LOG->Trace( "per difficulty awards" );
//LOG->Trace( "per difficulty awards" );
// per-difficulty awards
// don't give per-difficutly awards if using easy mods
@@ -632,7 +632,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
else
m_StageAward = StageAward_Invalid;
LOG->Trace( "done with per difficulty awards" );
//LOG->Trace( "done with per difficulty awards" );
// DO give peak combo awards if using easy mods
int iComboAtStartOfStage = GetComboAtStartOfStage();
@@ -642,7 +642,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
{
int iLevel = 1000 * (pca+1);
bool bCrossedLevel = iComboAtStartOfStage < iLevel && iPeakCombo >= iLevel;
LOG->Trace( "pca = %d, iLevel = %d, bCrossedLevel = %d", pca, iLevel, bCrossedLevel );
//LOG->Trace( "pca = %d, iLevel = %d, bCrossedLevel = %d", pca, iLevel, bCrossedLevel );
if( bCrossedLevel )
GAMESTATE->m_vLastPeakComboAwards[p].push_back( pca );
}
@@ -652,7 +652,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
else
m_PeakComboAward = PeakComboAward_Invalid;
LOG->Trace( "done with per combo awards" );
//LOG->Trace( "done with per combo awards" );
}
+1 -1
View File
@@ -35,7 +35,7 @@
* </li></ul>
*/
#ifndef PRODUCT_VER_BARE
#define PRODUCT_VER_BARE v5.0 Preview 1
#define PRODUCT_VER_BARE v5.0 Preview 1a
#endif
/**
+1 -1
View File
@@ -5,7 +5,7 @@
; see ProductInfo.h for use descriptions
!define PRODUCT_ID "StepMania"
!define PRODUCT_VER "v5.0 Preview 1"
!define PRODUCT_VER "v5.0 Preview 1a"
!define PRODUCT_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}"
!define PRODUCT_BITMAP "ssc"
+4 -1
View File
@@ -174,6 +174,9 @@ void ScreenDebugOverlay::Init()
g_Mappings.holdForSlow = DeviceInput(DEVICE_KEYBOARD, KEY_ACCENT);
g_Mappings.holdForFast = DeviceInput(DEVICE_KEYBOARD, KEY_TAB);
/* TODO: Find a better way of indicating which option is which here.
* Maybe we should take a page from ScreenEdit's menus and make
* RowDefs()? */
int i=0;
g_Mappings.gameplayButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_F8);
@@ -193,8 +196,8 @@ void ScreenDebugOverlay::Init()
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cq);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cw);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Ce);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cr);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Ct);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cr);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cy);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cu);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Ci);
+37 -66
View File
@@ -1308,7 +1308,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
return;
}
TimingData &sTiming = GAMESTATE->m_pCurSong->m_SongTiming;
float playerBeat = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
float playerBeat = GetAppropriatePosition().m_fSongBeat;
int beatsPerMeasure = sTiming.GetTimeSignatureSegmentAtBeat( playerBeat ).GetNum();
switch( EditB )
@@ -1527,11 +1527,11 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
break;
case EDIT_BUTTON_LAY_SELECT:
{
const int iCurrentRow = BeatToNoteRow(GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat);
const int iCurrentRow = BeatToNoteRow(GetAppropriatePosition().m_fSongBeat);
if( m_NoteFieldEdit.m_iBeginMarker==-1 && m_NoteFieldEdit.m_iEndMarker==-1 )
{
// lay begin marker
m_NoteFieldEdit.m_iBeginMarker = BeatToNoteRow(GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat);
m_NoteFieldEdit.m_iBeginMarker = BeatToNoteRow(GetAppropriatePosition().m_fSongBeat);
}
else if( m_NoteFieldEdit.m_iEndMarker==-1 ) // only begin marker is laid
{
@@ -1698,7 +1698,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
unsigned i;
for( i=0; i<GetAppropriateTiming().m_StopSegments.size(); i++ )
{
if( GetAppropriateTiming().m_StopSegments[i].m_iStartRow == BeatToNoteRow( GetBeat() ) )
if( GetAppropriateTiming().m_StopSegments[i].GetRow() == GetRow() )
break;
}
@@ -1706,66 +1706,20 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
{
// create a new StopSegment
if( fDelta > 0 )
GetAppropriateTiming().AddStopSegment( StopSegment(BeatToNoteRow( GetBeat() ), fDelta) );
GetAppropriateTiming().AddStopSegment( StopSegment( GetRow(), fDelta) );
}
else // StopSegment being modified is m_SongTiming.m_StopSegments[i]
{
GetAppropriateTiming().m_StopSegments[i].m_fStopSeconds += fDelta;
if( GetAppropriateTiming().m_StopSegments[i].m_fStopSeconds <= 0 )
GetAppropriateTiming().m_StopSegments.erase( GetAppropriateTiming().m_StopSegments.begin()+i,
GetAppropriateTiming().m_StopSegments.begin()+i+1);
vector<StopSegment> &s = GetAppropriateTiming().m_StopSegments;
s[i].SetPause(s[i].GetPause() + fDelta);
if( s[i].GetPause() <= 0 )
s.erase( s.begin()+i, s.begin()+i+1);
}
(fDelta>0 ? m_soundValueIncrease : m_soundValueDecrease).Play();
SetDirty( true );
}
break;
/*
case EDIT_BUTTON_DELAY_UP:
case EDIT_BUTTON_DELAY_DOWN:
{
float fDelta;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_STOP_UP: fDelta = +0.020f; break;
case EDIT_BUTTON_STOP_DOWN: fDelta = -0.020f; break;
}
if( EditIsBeingPressed( EDIT_BUTTON_ADJUST_FINE ) )
{
fDelta /= 20; // 1ms
}
else if( input.type == IET_REPEAT )
{
if( INPUTFILTER->GetSecsHeld(input.DeviceI) < 1.0f )
fDelta *= 10;
else
fDelta *= 40;
}
unsigned i;
for( i=0; i<GetAppropriateTiming().m_StopSegments.size(); i++ )
{
if( GetAppropriateTiming().m_StopSegments[i].m_iStartRow == BeatToNoteRow(GAMESTATE->m_Position.m_fSongBeat) )
break;
}
if( i == GetAppropriateTiming().m_StopSegments.size() ) // there is no delay segment at the current beat
{
// create a new delay segment
if( fDelta > 0 )
m_pSong->AddStopSegment( StopSegment(BeatToNoteRow(GAMESTATE->m_Position.m_fSongBeat), fDelta, true) );
}
else // delay segment being modified is m_SongTiming.m_StopSegments[i]
{
GetAppropriateTiming().m_StopSegments[i].m_fStopSeconds += fDelta;
if( GetAppropriateTiming().m_StopSegments[i].m_fStopSeconds <= 0 )
GetAppropriateTiming().m_StopSegments.erase( GetAppropriateTiming().m_StopSegments.begin()+i,
GetAppropriateTiming().m_StopSegments.begin()+i+1);
}
(fDelta>0 ? m_soundValueIncrease : m_soundValueDecrease).Play();
SetDirty( true );
}
break;
*/
case EDIT_BUTTON_OFFSET_UP:
case EDIT_BUTTON_OFFSET_DOWN:
{
@@ -2091,12 +2045,12 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
{
if( g_iDefaultRecordLength.Get() == -1 )
{
m_iStartPlayingAt = BeatToNoteRow(GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat);
m_iStartPlayingAt = BeatToNoteRow(GetAppropriatePosition().m_fSongBeat);
m_iStopPlayingAt = max( m_iStartPlayingAt, m_NoteDataEdit.GetLastRow() + 1 );
}
else
{
m_iStartPlayingAt = BeatToNoteRow( ftruncf(GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat, g_iDefaultRecordLength.Get()) );
m_iStartPlayingAt = BeatToNoteRow( ftruncf(GetAppropriatePosition().m_fSongBeat, g_iDefaultRecordLength.Get()) );
m_iStopPlayingAt = m_iStartPlayingAt + BeatToNoteRow( g_iDefaultRecordLength.Get() );
}
@@ -2113,7 +2067,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
}
break;
case EDIT_BUTTON_RECORD_FROM_CURSOR:
m_iStartPlayingAt = BeatToNoteRow(GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat);
m_iStartPlayingAt = BeatToNoteRow(GetAppropriatePosition().m_fSongBeat);
m_iStopPlayingAt = max( m_iStartPlayingAt, m_NoteDataEdit.GetLastRow() );
TransitionEditState( STATE_RECORDING );
break;
@@ -2324,7 +2278,7 @@ void ScreenEdit::InputPlay( const InputEventPlus &input, EditButton EditB )
{
case EDIT_BUTTON_RETURN_TO_EDIT:
/* When exiting play mode manually, leave the cursor where it is. */
m_fBeatToReturnTo = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
m_fBeatToReturnTo = GetAppropriatePosition().m_fSongBeat;
TransitionEditState( STATE_EDITING );
break;
case EDIT_BUTTON_OFFSET_UP:
@@ -2395,17 +2349,21 @@ void ScreenEdit::TransitionEditState( EditState em )
{
case STATE_EDITING:
// If exiting EDIT mode, save the cursor position.
m_fBeatToReturnTo = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
m_fBeatToReturnTo = GetAppropriatePosition().m_fSongBeat;
break;
case STATE_PLAYING:
AdjustSync::HandleSongEnd();
if (!GAMESTATE->m_bIsUsingStepTiming)
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = backupStepTiming;
if( AdjustSync::IsSyncDataChanged() )
ScreenSaveSync::PromptSaveSync();
break;
case STATE_RECORDING:
SetDirty( true );
if (!GAMESTATE->m_bIsUsingStepTiming)
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = backupStepTiming;
SaveUndo();
// delete old TapNotes in the range
@@ -2456,6 +2414,12 @@ void ScreenEdit::TransitionEditState( EditState em )
GAMESTATE->UpdateSongPosition( fSeconds, GetAppropriateTiming(), RageZeroTimer, true );
GAMESTATE->m_bGameplayLeadIn.Set( false );
if (!GAMESTATE->m_bIsUsingStepTiming)
{
backupStepTiming = GetAppropriateTiming();
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = GAMESTATE->m_pCurSong->m_SongTiming;
}
/* Reset the note skin, in case preferences have changed. */
// XXX
@@ -2555,7 +2519,7 @@ void ScreenEdit::ScrollTo( float fDestinationBeat )
CLAMP( fDestinationBeat, 0, GetMaximumBeatForMoving() );
// Don't play the sound and do the hold note logic below if our position didn't change.
const float fOriginalBeat = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
const float fOriginalBeat = GetAppropriatePosition().m_fSongBeat;
if( fOriginalBeat == fDestinationBeat )
return;
@@ -3192,6 +3156,15 @@ TimingData & ScreenEdit::GetAppropriateTiming() const
return m_pSong->m_SongTiming;
}
SongPosition & ScreenEdit::GetAppropriatePosition() const
{
if (GAMESTATE->m_bIsUsingStepTiming)
{
return GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position;
}
return GAMESTATE->m_Position;
}
inline void ScreenEdit::SetBeat(float fBeat)
{
if( !GAMESTATE->m_bIsUsingStepTiming )
@@ -3546,14 +3519,12 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
case paste_at_current_beat:
case paste_at_begin_marker:
{
// TODO: Song/Step Timing checks?
int iDestFirstRow = -1;
switch( c )
{
DEFAULT_FAIL( c );
case paste_at_current_beat:
iDestFirstRow = BeatToNoteRow( GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat );
iDestFirstRow = BeatToNoteRow( GetAppropriatePosition().m_fSongBeat );
break;
case paste_at_begin_marker:
ASSERT( m_NoteFieldEdit.m_iBeginMarker!=-1 );
@@ -4023,7 +3994,7 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice
ScreenTextEntry::TextEntry(
SM_BackFromScrollChange,
ENTER_SCROLL_VALUE,
ssprintf( "%.5f", GetAppropriateTiming().GetScrollSegmentAtBeat( GetBeat() ).m_fPercent ),
ssprintf( "%.5f", GetAppropriateTiming().GetScrollSegmentAtBeat( GetBeat() ).GetRatio() ),
10
);
break;
@@ -4316,7 +4287,7 @@ float ScreenEdit::GetMaximumBeatForNewNote() const
* mid-measure, and it's odd to have movement capped to these weird
* beats. */
TimingData &songTiming = GAMESTATE->m_pCurSong->m_SongTiming;
float playerBeat = GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat;
float playerBeat = GetAppropriatePosition().m_fSongBeat;
int beatsPerMeasure = songTiming.GetTimeSignatureSegmentAtBeat( playerBeat ).GetNum();
fEndBeat += beatsPerMeasure;
fEndBeat = ftruncf( fEndBeat, (float)beatsPerMeasure );
+11
View File
@@ -251,6 +251,13 @@ protected:
BitmapText m_textInputTips;
/**
* @brief Keep a backup of the present Step TimingData when
* entering a playing or recording state.
*
* This is mainly to allow playing a chart with Song Timing. */
TimingData backupStepTiming;
/** @brief The current TapNote that would be inserted. */
TapNote m_selectedTap;
@@ -580,6 +587,10 @@ private:
* @brief Retrieve the appropriate TimingData based on GAMESTATE.
* @return the proper TimingData. */
TimingData & GetAppropriateTiming() const;
/**
* @brief Retrieve the appropriate SongPosition data based on GAMESTATE.
* @return the proper SongPosition. */
SongPosition & GetAppropriatePosition() const;
void SetBeat(float fBeat);
float GetBeat();
int GetRow();
+1 -1
View File
@@ -41,7 +41,7 @@
* @brief The internal version of the cache for StepMania.
*
* Increment this value to invalidate the current cache. */
const int FILE_CACHE_VERSION = 177;
const int FILE_CACHE_VERSION = 178;
/** @brief How long does a song sample last by default? */
const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f;
-3
View File
@@ -287,9 +287,6 @@ public:
/** @brief The Song's TimingData. */
TimingData m_SongTiming;
/** @brief The initial offset of a song. */
float m_fBeat0OffsetInSeconds;
typedef vector<BackgroundChange> VBackgroundChange;
private:
/**
+4 -2
View File
@@ -776,9 +776,7 @@ void SongManager::InitCoursesFromDisk( LoadingWindow *ld )
void SongManager::InitAutogenCourses()
{
//
// Create group courses for Endless and Nonstop
//
vector<RString> saGroupNames;
this->GetSongGroupNames( saGroupNames );
Course* pCourse;
@@ -789,10 +787,12 @@ void SongManager::InitAutogenCourses()
// Generate random courses from each group.
pCourse = new Course;
CourseUtil::AutogenEndlessFromGroup( sGroupName, Difficulty_Medium, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse );
pCourse = new Course;
CourseUtil::AutogenNonstopFromGroup( sGroupName, Difficulty_Medium, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse );
}
@@ -801,6 +801,7 @@ void SongManager::InitAutogenCourses()
// Generate "All Songs" endless course.
pCourse = new Course;
CourseUtil::AutogenEndlessFromGroup( "", Difficulty_Medium, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse );
/* Generate Oni courses from artists. Only create courses if we have at least
@@ -836,6 +837,7 @@ void SongManager::InitAutogenCourses()
{
pCourse = new Course;
CourseUtil::AutogenOniFromArtist( sCurArtist, sCurArtistTranslit, aSongs, Difficulty_Hard, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse );
}
+35 -11
View File
@@ -76,7 +76,7 @@
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">$(TargetDir)</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">$(SolutionDir)/build-$(SolutionName)/$(ProjectName)/$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">false</LinkIncremental>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">true</GenerateManifest>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">$(Configuration)\</IntDir>
@@ -93,10 +93,18 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)</IncludePath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)</LibraryPath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)</IncludePath>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">StepMania</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">StepMania</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">StepMania</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">StepMania</TargetName>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)</IncludePath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)</LibraryPath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)</LibraryPath>
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEvent>
@@ -130,6 +138,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>true</MinimalRebuild>
<AdditionalOptions>/EHsc %(AdditionalOptions)</AdditionalOptions>
<WholeProgramOptimization>false</WholeProgramOptimization>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -151,6 +163,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
</Link>
<PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania-debug.vdi"</Command>
@@ -178,8 +191,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINDOWS;RELEASE;GLEW_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild>
<ExceptionHandling>
</ExceptionHandling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
@@ -195,6 +207,8 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<WholeProgramOptimization>true</WholeProgramOptimization>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -213,8 +227,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<MapExports>true</MapExports>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<DataExecutionPrevention>true</DataExecutionPrevention>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
<PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania.vdi"
@@ -234,11 +250,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<TypeLibraryName>../StepMania.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>.;..\extern\lua-5.1\src;ffmpeg\modern_working\include;BaseClasses;..\extern\jsoncpp\include;..\extern\glew-1.5.8\include;..\extern\pcre;..\extern\mad-0.15.1b;..\extern\libpng\lib;..\extern\libpng\include;..\extern\libjpeg;..\extern\zlib;..\extern\vorbis;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINDOWS;DEBUG;GLEW_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>
</ExceptionHandling>
<ExceptionHandling>Sync</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -251,8 +266,13 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
</BrowseInformation>
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<WholeProgramOptimization>true</WholeProgramOptimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -260,10 +280,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
</ResourceCompile>
<Link>
<AdditionalOptions>/MACHINE:I386 "$(IntDir)verstub.obj" %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>shell32.lib;gdi32.lib;user32.lib;ole32.lib;advapi32.lib;ffmpeg/modern_working/lib/avcodec.lib;ffmpeg/lib/avformat.lib;ffmpeg/lib/avutil.lib;ffmpeg/lib/swscale.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>shell32.lib;gdi32.lib;user32.lib;ole32.lib;advapi32.lib;avcodec.lib;avformat.lib;avutil.lib;swscale.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>../Program/StepMania-fastdebug.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\extern\libpng\lib;ffmpeg\lib;..\extern\libjpeg\;..\extern\zlib\;..\extern\mad-0.15.1b\msvc++\Release\%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>..\extern\libpng\lib;ffmpeg\modern_working\lib;..\extern\libjpeg\;..\extern\zlib\;..\extern\mad-0.15.1b\msvc++\Release\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>wininet.lib;msimg32.lib;libci.lib;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)StepMania.pdb</ProgramDatabaseFile>
@@ -274,6 +294,8 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania-fastdebug.vdi"</Command>
@@ -319,6 +341,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<WholeProgramOptimization>false</WholeProgramOptimization>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -340,6 +363,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>NotSet</TargetMachine>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
</Link>
<PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName)-SSE2.map" "$(TargetDir)\StepMania-SSE2.vdi"
+63 -55
View File
@@ -111,7 +111,7 @@ void TimingData::SetStopAtRow( int iRow, float fSeconds, bool bDelay )
{
unsigned i;
for( i=0; i<m_StopSegments.size(); i++ )
if( m_StopSegments[i].m_iStartRow == iRow && m_StopSegments[i].m_bDelay == bDelay )
if( m_StopSegments[i].GetRow() == iRow && m_StopSegments[i].GetDelay() == bDelay )
break;
if( i == m_StopSegments.size() ) // there is no Stop/Delay Segment at the current beat
@@ -126,7 +126,7 @@ void TimingData::SetStopAtRow( int iRow, float fSeconds, bool bDelay )
{
if( fSeconds > 0 )
{
m_StopSegments[i].m_fStopSeconds = fSeconds;
m_StopSegments[i].SetPause(fSeconds);
}
else
m_StopSegments.erase( m_StopSegments.begin()+i, m_StopSegments.begin()+i+1 );
@@ -299,25 +299,25 @@ void TimingData::SetScrollAtRow( int iRow, float fPercent )
unsigned i;
for( i = 0; i < m_ScrollSegments.size(); i++ )
{
if( m_ScrollSegments[i].m_iStartRow >= iRow)
if( m_ScrollSegments[i].GetRow() >= iRow)
break;
}
if ( i == m_ScrollSegments.size() || m_ScrollSegments[i].m_iStartRow != iRow )
if ( i == m_ScrollSegments.size() || m_ScrollSegments[i].GetRow() != iRow )
{
// the core mod itself matters the most for comparisons.
if( i == 0 || m_ScrollSegments[i-1].m_fPercent != fPercent )
if( i == 0 || m_ScrollSegments[i-1].GetRatio() != fPercent )
AddScrollSegment( ScrollSegment(iRow, fPercent) );
}
else
{
// The others aren't compared: only the mod itself matters.
if( i > 0 && m_ScrollSegments[i-1].m_fPercent == fPercent )
if( i > 0 && m_ScrollSegments[i-1].GetRatio() == fPercent )
m_ScrollSegments.erase( m_ScrollSegments.begin()+i,
m_ScrollSegments.begin()+i+1 );
else
{
m_ScrollSegments[i].m_fPercent = fPercent;
m_ScrollSegments[i].SetRatio(fPercent);
}
}
}
@@ -376,9 +376,10 @@ float TimingData::GetStopAtRow( int iNoteRow, bool bDelay ) const
{
for( unsigned i=0; i<m_StopSegments.size(); i++ )
{
if( m_StopSegments[i].m_bDelay == bDelay && m_StopSegments[i].m_iStartRow == iNoteRow )
const StopSegment &s = m_StopSegments[i];
if( s.GetDelay() == bDelay && s.GetRow() == iNoteRow )
{
return m_StopSegments[i].m_fStopSeconds;
return s.GetPause();
}
}
return 0;
@@ -434,7 +435,7 @@ unsigned short TimingData::GetSpeedModeAtRow( int iRow )
float TimingData::GetScrollAtRow( int iRow )
{
return GetScrollSegmentAtRow( iRow ).m_fPercent;
return GetScrollSegmentAtRow( iRow ).GetRatio();
}
float TimingData::GetFakeAtRow( int iFakeRow ) const
@@ -513,7 +514,7 @@ int TimingData::GetStopSegmentIndexAtRow( int iNoteRow, bool bDelay ) const
for( i=0; i<m_StopSegments.size()-1; i++ )
{
const StopSegment& s = m_StopSegments[i+1];
if( s.m_iStartRow > iNoteRow && s.m_bDelay == bDelay )
if( s.GetRow() > iNoteRow && s.GetDelay() == bDelay )
break;
}
return static_cast<int>(i);
@@ -628,7 +629,7 @@ int TimingData::GetScrollSegmentIndexAtRow( int iRow ) const
{
unsigned i;
for (i=0; i < m_ScrollSegments.size() - 1; i++ )
if( m_ScrollSegments[i+1].m_iStartRow > iRow )
if( m_ScrollSegments[i+1].GetRow() > iRow )
break;
return static_cast<int>(i);
}
@@ -665,7 +666,7 @@ ScrollSegment& TimingData::GetScrollSegmentAtRow( int iRow )
{
unsigned i;
for( i=0; i<m_ScrollSegments.size()-1; i++ )
if( m_ScrollSegments[i+1].m_iStartRow > iRow )
if( m_ScrollSegments[i+1].GetRow() > iRow )
break;
return m_ScrollSegments[i];
}
@@ -839,9 +840,9 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float
iEventRow = itBPMS->GetRow();
iEventType = FOUND_BPM_CHANGE;
}
if( itSS != m_StopSegments.end() && itSS->m_iStartRow < iEventRow )
if( itSS != m_StopSegments.end() && itSS->GetRow() < iEventRow )
{
iEventRow = itSS->m_iStartRow;
iEventRow = itSS->GetRow();
iEventType = FOUND_STOP;
}
if( itWS != m_WarpSegments.end() && itWS->GetRow() < iEventRow )
@@ -871,14 +872,14 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float
break;
case FOUND_STOP:
{
fTimeToNextEvent = itSS->m_fStopSeconds;
fTimeToNextEvent = itSS->GetPause();
fNextEventTime = fLastTime + fTimeToNextEvent;
const bool bIsDelay = itSS->m_bDelay;
const bool bIsDelay = itSS->GetDelay();
if ( fElapsedTime < fNextEventTime )
{
bFreezeOut = !bIsDelay;
bDelayOut = bIsDelay;
fBeatOut = NoteRowToBeat( itSS->m_iStartRow );
fBeatOut = itSS->GetBeat();
fBPSOut = fBPS;
return;
}
@@ -941,9 +942,9 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
iEventRow = itBPMS->GetRow();
iEventType = FOUND_BPM_CHANGE;
}
if( itSS != m_StopSegments.end() && itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) // delays (come before marker)
if( itSS != m_StopSegments.end() && itSS->GetDelay() && itSS->GetRow() < iEventRow ) // delays (come before marker)
{
iEventRow = itSS->m_iStartRow;
iEventRow = itSS->GetRow();
iEventType = FOUND_STOP;
}
if( BeatToNoteRow(fBeat) < iEventRow )
@@ -951,9 +952,9 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
iEventRow = BeatToNoteRow(fBeat);
iEventType = FOUND_MARKER;
}
if( itSS != m_StopSegments.end() && !itSS->m_bDelay && itSS->m_iStartRow < iEventRow ) // stops (come after marker)
if( itSS != m_StopSegments.end() && !itSS->GetDelay() && itSS->GetRow() < iEventRow ) // stops (come after marker)
{
iEventRow = itSS->m_iStartRow;
iEventRow = itSS->GetRow();
iEventType = FOUND_STOP;
}
if( itWS != m_WarpSegments.end() && itWS->GetRow() < iEventRow )
@@ -974,7 +975,7 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
itBPMS ++;
break;
case FOUND_STOP:
fTimeToNextEvent = itSS->m_fStopSeconds;
fTimeToNextEvent = itSS->GetPause();
fNextEventTime = fLastTime + fTimeToNextEvent;
fLastTime = fNextEventTime;
itSS ++;
@@ -1006,14 +1007,14 @@ float TimingData::GetDisplayedBeat( float fBeat ) const
float fOutBeat = 0.0;
for( ; it != end; it++ )
{
if( it+1 == end || BeatToNoteRow(fBeat) <= (it+1)->m_iStartRow )
if( it+1 == end || fBeat <= (it+1)->GetBeat() )
{
fOutBeat += ( fBeat - NoteRowToBeat((it)->m_iStartRow) ) * (it)->m_fPercent;
fOutBeat += ( fBeat - (it)->GetBeat() ) * (it)->GetRatio();
break;
}
else
{
fOutBeat += ( NoteRowToBeat((it+1)->m_iStartRow) - NoteRowToBeat((it)->m_iStartRow) ) * (it)->m_fPercent;
fOutBeat += ( (it+1)->GetBeat() - (it)->GetBeat() ) * (it)->GetRatio();
}
}
return fOutBeat;
@@ -1040,13 +1041,13 @@ void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex, bool
for( unsigned i = 0; i < m_StopSegments.size(); i++ )
{
StopSegment &s = m_StopSegments[i];
const int iSegStartRow = s.m_iStartRow;
const int iSegStartRow = s.GetRow();
if( iSegStartRow < iStartIndex )
continue;
else if( iSegStartRow > iEndIndex )
s.m_iStartRow += lrintf((iEndIndex - iStartIndex) * (fScale - 1));
s.SetRow(s.GetRow() + lrintf((iEndIndex - iStartIndex) * (fScale - 1)));
else
s.m_iStartRow = lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex;
s.SetRow(lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex);
}
for( unsigned i = 0; i < m_vTimeSignatureSegments.size(); i++ )
@@ -1155,13 +1156,13 @@ void TimingData::ScaleRegion( float fScale, int iStartIndex, int iEndIndex, bool
for( unsigned i = 0; i < m_ScrollSegments.size(); i++ )
{
ScrollSegment &s = m_ScrollSegments[i];
const int iSegStartRow = s.m_iStartRow;
const int iSegStartRow = s.GetRow();
if( iSegStartRow < iStartIndex )
continue;
else if( iSegStartRow > iEndIndex )
s.m_iStartRow += lrintf((iEndIndex - iStartIndex) * (fScale - 1));
s.SetRow(s.GetRow() + lrintf((iEndIndex - iStartIndex) * (fScale - 1)));
else
s.m_iStartRow = lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex;
s.SetRow(lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex);
}
// adjust BPM changes to preserve timing
@@ -1203,9 +1204,9 @@ void TimingData::InsertRows( int iStartRow, int iRowsToAdd )
for( unsigned i = 0; i < m_StopSegments.size(); i++ )
{
StopSegment &stop = m_StopSegments[i];
if( stop.m_iStartRow < iStartRow )
if( stop.GetRow() < iStartRow )
continue;
stop.m_iStartRow += iRowsToAdd;
stop.SetRow(stop.GetRow() + iRowsToAdd);
}
for( unsigned i = 0; i < m_WarpSegments.size(); i++ )
@@ -1266,9 +1267,9 @@ void TimingData::InsertRows( int iStartRow, int iRowsToAdd )
for( unsigned i = 0; i < m_ScrollSegments.size(); i++ )
{
ScrollSegment &scrl = m_ScrollSegments[i];
if( scrl.m_iStartRow < iStartRow )
if( scrl.GetRow() < iStartRow )
continue;
scrl.m_iStartRow += iRowsToAdd;
scrl.SetRow(scrl.GetRow() + iRowsToAdd);
}
if( iStartRow == 0 )
@@ -1311,13 +1312,13 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
for( unsigned i = 0; i < m_StopSegments.size(); i++ )
{
StopSegment &stop = m_StopSegments[i];
int keyRow = stop.GetRow();
// Before deleted region:
if( stop.m_iStartRow < iStartRow )
if( keyRow < iStartRow )
continue;
// Inside deleted region:
if( stop.m_iStartRow < iStartRow+iRowsToDelete )
if( keyRow < iStartRow+iRowsToDelete )
{
m_StopSegments.erase( m_StopSegments.begin()+i, m_StopSegments.begin()+i+1 );
--i;
@@ -1325,7 +1326,7 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
}
// After deleted region:
stop.m_iStartRow -= iRowsToDelete;
stop.SetRow(keyRow - iRowsToDelete);
}
for( unsigned i = 0; i < m_WarpSegments.size(); i++ )
@@ -1461,17 +1462,17 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
for( unsigned i = 0; i < m_ScrollSegments.size(); i++ )
{
ScrollSegment &scrl = m_ScrollSegments[i];
if( scrl.m_iStartRow < iStartRow )
int keyRow = scrl.GetRow();
if( keyRow < iStartRow )
continue;
if( scrl.m_iStartRow < iStartRow+iRowsToDelete )
if( keyRow < iStartRow+iRowsToDelete )
{
m_ScrollSegments.erase( m_ScrollSegments.begin()+i, m_ScrollSegments.begin()+i+1 );
--i;
continue;
}
scrl.m_iStartRow -= iRowsToDelete;
scrl.SetRow(keyRow - iRowsToDelete);
}
this->SetBPMAtRow( iStartRow, fNewBPM );
@@ -1479,8 +1480,13 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
float TimingData::GetDisplayedSpeedPercent( float fSongBeat, float fMusicSeconds ) const
{
/* HACK: Somehow we get called into this function when there is no
* TimingData to work with. This seems to happen the most upon
* leaving the editor. Still, cover our butts in case this instance
* isn't existing. */
if (!this) return 1.0f;
if( m_SpeedSegments.size() == 0 )
return 1.0;
return 1.0f;
const int index = GetSpeedSegmentIndexAtBeat( fSongBeat );
@@ -1607,12 +1613,12 @@ bool TimingData::HasFakes() const
bool TimingData::HasSpeedChanges() const
{
return m_SpeedSegments.size()>1;
return m_SpeedSegments.size()>1 || m_SpeedSegments[0].GetRatio() != 1;
}
bool TimingData::HasScrollChanges() const
{
return m_ScrollSegments.size()>1;
return m_ScrollSegments.size()>1 || m_ScrollSegments[0].GetRatio() != 1;
}
void TimingData::NoteRowToMeasureAndBeat( int iNoteRow, int &iMeasureIndexOut, int &iBeatIndexOut, int &iRowsRemainder ) const
@@ -1663,15 +1669,16 @@ public:
static int HasWarps( T* p, lua_State *L ) { lua_pushboolean(L, p->HasWarps()); return 1; }
static int HasFakes( T* p, lua_State *L ) { lua_pushboolean(L, p->HasFakes()); return 1; }
static int HasSpeedChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasSpeedChanges()); return 1; }
static int HasScrollChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasScrollChanges()); return 1; }
static int GetStops( T* p, lua_State *L )
{
vector<RString> vStops;
FOREACH_CONST( StopSegment, p->m_StopSegments, seg )
{
const float fStartRow = NoteRowToBeat(seg->m_iStartRow);
const float fStopLength = seg->m_fStopSeconds;
if(!seg->m_bDelay)
vStops.push_back( ssprintf("%f=%f", fStartRow, fStopLength) );
const float fStartBeat = seg->GetBeat();
const float fStopLength = seg->GetPause();
if(!seg->GetDelay())
vStops.push_back( ssprintf("%f=%f", fStartBeat, fStopLength) );
}
LuaHelpers::CreateTableFromArray(vStops, L);
@@ -1682,10 +1689,10 @@ public:
vector<RString> vDelays;
FOREACH_CONST( StopSegment, p->m_StopSegments, seg )
{
const float fStartRow = NoteRowToBeat(seg->m_iStartRow);
const float fStopLength = seg->m_fStopSeconds;
if(seg->m_bDelay)
vDelays.push_back( ssprintf("%f=%f", fStartRow, fStopLength) );
const float fStartBeat = seg->GetBeat();
const float fStopLength = seg->GetPause();
if(seg->GetDelay())
vDelays.push_back( ssprintf("%f=%f", fStartBeat, fStopLength) );
}
LuaHelpers::CreateTableFromArray(vDelays, L);
@@ -1752,6 +1759,7 @@ public:
ADD_METHOD( HasWarps );
ADD_METHOD( HasFakes );
ADD_METHOD( HasSpeedChanges );
ADD_METHOD( HasScrollChanges );
ADD_METHOD( GetStops );
ADD_METHOD( GetDelays );
ADD_METHOD( GetBPMs );
-186
View File
@@ -9,192 +9,6 @@ struct lua_State;
/** @brief Compare a TimingData segment's properties with one another. */
#define COMPARE(x) if(x!=other.x) return false;
/**
* @brief Identifies when a song has a stop or a delay.
*
* It is hopeful that stops and delays can be made into their own segments at some point.
*/
struct StopSegment
{
/**
* @brief Creates a simple Stop Segment with default values.
*
* It is best to override the values as soon as possible.
*/
StopSegment() : m_iStartRow(-1), m_fStopSeconds(-1.0f), m_bDelay(false) { }
/**
* @brief Creates a Stop Segment at the specified row for the specified length of time.
*
* This will not create a dedicated delay segment. Use the third constructor for
* making delays.
* @param s the starting row of this segment.
* @param f the length of time to pause the note scrolling.
*/
StopSegment( int s, float f ) : m_iStartRow(max(0, s)),
m_fStopSeconds(f), m_bDelay(false)
{
if (!PREFSMAN->m_bQuirksMode) m_fStopSeconds = max( 0.0f, f );
}
/**
* @brief Creates a Stop (or Delay) Segment at the specified row for the specified length of time.
* @param s the starting row of this segment.
* @param f the length of time to pause the note scrolling.
* @param d the flag that makes this Stop Segment a Delay Segment.
*/
StopSegment( int s, float f, bool d ) : m_iStartRow(max(0, s)),
m_fStopSeconds(f), m_bDelay(d)
{
if (!PREFSMAN->m_bQuirksMode) m_fStopSeconds = max( 0.0f, f );
}
/**
* @brief The row in which the StopSegment activates.
*/
int m_iStartRow;
/**
* @brief The amount of time to complete the pause at the given row.
*/
float m_fStopSeconds;
/**
* @brief If true, the Stop Segment is treated as a Delay Segment, similar to the Pump It Up series.
*/
bool m_bDelay;
/**
* @brief Compares two StopSegments to see if they are equal to each other.
* @param other the other StopSegment to compare to.
* @return the equality of the two segments.
*/
bool operator==( const StopSegment &other ) const
{
COMPARE( m_iStartRow );
COMPARE( m_fStopSeconds );
COMPARE( m_bDelay );
return true;
}
/**
* @brief Compares two StopSegments to see if they are not equal to each other.
* @param other the other StopSegment to compare to.
* @return the inequality of the two segments.
*/
bool operator!=( const StopSegment &other ) const { return !operator==(other); }
/**
* @brief Compares two StopSegments to see if one is less than the other.
*
* It should be observed that Delay Segments have to come before Stop Segments.
* Otherwise, it will act like a Stop Segment with extra time from the Delay at
* the same row.
* @param other the other StopSegment to compare to.
* @return the truth/falsehood of if the first is less than the second.
*/
bool operator<( const StopSegment &other ) const
{
return ( m_iStartRow < other.m_iStartRow ) ||
( m_iStartRow == other.m_iStartRow &&
( ( m_bDelay && !other.m_bDelay ) || m_fStopSeconds < other.m_fStopSeconds ));
}
/**
* @brief Compares two StopSegments to see if one is less than or equal to the other.
* @param other the other StopSegment to compare to.
* @return the truth/falsehood of if the first is less or equal to than the second.
*/
bool operator<=( const StopSegment &other ) const
{
return ( operator<(other) || operator==(other) );
}
/**
* @brief Compares two StopSegments to see if one is greater than the other.
*
* Similar to the less than operator function, stops must come after delays
* to avoid rendering the point of delays pointless.
* @param other the other StopSegment to compare to.
* @return the truth/falsehood of if the first is greater than the second.
*/
bool operator>( const StopSegment &other ) const { return !operator<=(other); }
/**
* @brief Compares two StopSegments to see if one is greater than or equal to the other.
* @param other the other StopSegment to compare to.
* @return the truth/falsehood of if the first is greater than or equal to the second.
*/
bool operator>=( const StopSegment &other ) const { return !operator<(other); }
};
/**
* @brief Identifies when the chart scroll changes.
*
* ScrollSegments adjusts the scrolling speed of the note field.
* Unlike forced attacks, these cannot be turned off at a set time:
* reset it by setting the precentage back to 1.
*
* These were inspired by the Pump It Up series. */
struct ScrollSegment
{
/** @brief Sets up the ScrollSegment with default values. */
ScrollSegment(): m_iStartRow(0), m_fPercent(1) {}
/**
* @brief Sets up the ScrollSegment with specified values.
* @param i The row this activates.
* @param p The percentage to use. */
ScrollSegment(int i, float p): m_iStartRow(i), m_fPercent(p) {}
/**
* @brief Sets up the ScrollSegment with specified values.
* @param r The beat this activates.
* @param p The percentage to use. */
ScrollSegment(float r, float p): m_iStartRow(BeatToNoteRow(r)), m_fPercent(p) {}
/** @brief The row in which the ScrollSegment activates. */
int m_iStartRow;
/** @brief The percentage to use when multiplying the chart's scroll rate. */
float m_fPercent;
/**
* @brief Compares two ScrollSegment to see if they are equal to each other.
* @param other the other ScrollSegment to compare to.
* @return the equality of the two segments.
*/
bool operator==( const ScrollSegment &other ) const
{
COMPARE( m_iStartRow );
COMPARE( m_fPercent );
return true;
}
/**
* @brief Compares two ScrollSegment to see if they are not equal to each other.
* @param other the other ScrollSegment to compare to.
* @return the inequality of the two segments.
*/
bool operator!=( const ScrollSegment &other ) const { return !operator==(other); }
/**
* @brief Compares two ScrollSegment to see if one is less than the other.
* @param other the other ScrollSegment to compare to.
* @return the truth/falsehood of if the first is less than the second.
*/
bool operator<( const ScrollSegment &other ) const { return m_iStartRow < other.m_iStartRow; }
/**
* @brief Compares two ScrollSegment to see if one is less than or equal to the other.
* @param other the other ScrollSegment to compare to.
* @return the truth/falsehood of if the first is less or equal to than the second.
*/
bool operator<=( const ScrollSegment &other ) const
{
return ( operator<(other) || operator==(other) );
}
/**
* @brief Compares two ScrollSegment to see if one is greater than the other.
* @param other the other ScrollSegment to compare to.
* @return the truth/falsehood of if the first is greater than the second.
*/
bool operator>( const ScrollSegment &other ) const { return !operator<=(other); }
/**
* @brief Compares two ScrollSegment to see if one is greater than or equal to the other.
* @param other the other ScrollSegment to compare to.
* @return the truth/falsehood of if the first is greater than or equal to the second.
*/
bool operator>=( const ScrollSegment &other ) const { return !operator<(other); }
};
/**
* @brief Holds data for translating beats<->seconds.
*/
+45
View File
@@ -234,6 +234,51 @@ bool SpeedSegment::operator<( const SpeedSegment &other ) const
return false;
}
float ScrollSegment::GetRatio() const
{
return this->ratio;
}
void ScrollSegment::SetRatio(const float i)
{
this->ratio = i;
}
bool ScrollSegment::operator<( const ScrollSegment &other ) const
{
LTCOMPARE(GetRow());
LTCOMPARE(GetRatio());
return false;
}
float StopSegment::GetPause() const
{
return this->pauseSeconds;
}
void StopSegment::SetPause(const float i)
{
this->pauseSeconds = i;
}
bool StopSegment::GetDelay() const
{
return this->isDelay;
}
void StopSegment::SetDelay(const bool i)
{
this->isDelay = i;
}
bool StopSegment::operator<( const StopSegment &other ) const
{
LTCOMPARE(GetRow());
if (this->GetDelay() && !other.GetDelay()) return true;
if (!this->GetDelay() && other.GetDelay()) return false;
LTCOMPARE(GetPause());
return false;
}
/**
* @file
+145 -8
View File
@@ -65,7 +65,7 @@ template <class DerivedSegment>
struct TimingSegment: public BaseTimingSegment
{
TimingSegment(): BaseTimingSegment() {};
TimingSegment(): BaseTimingSegment(-1) {};
TimingSegment(const DerivedSegment &other): BaseTimingSegment(other) {};
template <typename StartType>
@@ -206,14 +206,14 @@ struct WarpSegment : public TimingSegment<WarpSegment>
* It is best to override the values as soon as possible.
*/
WarpSegment():
TimingSegment<WarpSegment>(), lengthBeats(-1) {};
TimingSegment<WarpSegment>(-1), lengthBeats(-1) {};
/**
* @brief Create a copy of another Warp Segment.
* @param other the other warp segment
*/
WarpSegment(const WarpSegment &other):
TimingSegment<WarpSegment>(other.GetRow()),
TimingSegment<WarpSegment>(other),
lengthBeats(other.GetLength()) {};
/**
@@ -265,7 +265,7 @@ struct TickcountSegment : public TimingSegment<TickcountSegment>
* It is best to override the values as soon as possible.
*/
TickcountSegment():
TimingSegment<TickcountSegment>(), ticks(4) {};
TimingSegment<TickcountSegment>(-1), ticks(4) {};
/**
* @brief Create a copy of another Tickcount Segment.
@@ -328,7 +328,7 @@ struct ComboSegment : public TimingSegment<ComboSegment>
* It is best to override the values as soon as possible.
*/
ComboSegment() :
TimingSegment<ComboSegment>(), combo(1) { }
TimingSegment<ComboSegment>(-1), combo(1) { }
ComboSegment(const ComboSegment &other) :
TimingSegment<ComboSegment>(other),
@@ -382,7 +382,7 @@ struct LabelSegment : public TimingSegment<LabelSegment>
* It is best to override the values as soon as possible.
*/
LabelSegment() :
TimingSegment<LabelSegment>(), label("") { }
TimingSegment<LabelSegment>(-1), label("") { }
LabelSegment(const LabelSegment &other) :
TimingSegment<LabelSegment>(other),
@@ -500,7 +500,7 @@ struct TimeSignatureSegment : public TimingSegment<TimeSignatureSegment>
* @brief Creates a simple Time Signature Segment with default values.
*/
TimeSignatureSegment():
TimingSegment<TimeSignatureSegment>(),
TimingSegment<TimeSignatureSegment>(-1),
numerator(4), denominator(4) { }
TimeSignatureSegment(const TimeSignatureSegment &other) :
@@ -688,12 +688,149 @@ private:
*
* 0: beats
* 1: seconds
* other
* other values are undetermined at this time, but we're prepared this way.
*/
unsigned short unit;
};
/**
* @brief Identifies when the chart scroll changes.
*
* ScrollSegments adjusts the scrolling speed of the note field.
* Unlike forced attacks, these cannot be turned off at a set time:
* reset it by setting the precentage back to 1.
*
* These were inspired by the Pump It Up series. */
struct ScrollSegment : public TimingSegment<ScrollSegment>
{
/** @brief Sets up the ScrollSegment with default values. */
ScrollSegment(): TimingSegment<ScrollSegment>(0),
ratio(1) {}
/**
* @brief Sets up the ScrollSegment with specified values.
* @param s The row / beat this activates.
* @param p The percentage to use. */
template <typename StartType>
ScrollSegment( StartType s, float p):
TimingSegment<ScrollSegment>(max((StartType)0, s)),
ratio(p) {}
ScrollSegment(const ScrollSegment &other) :
TimingSegment<ScrollSegment>(other),
ratio(other.GetRatio()) {}
/**
* @brief Get the ratio in this ScrollSegment.
* @return the ratio. */
float GetRatio() const;
/**
* @brief Set the ratio in this ScrollSegment.
* @param i the ratio. */
void SetRatio(const float i);
/**
* @brief Compares two ScrollSegment to see if one is less than the other.
* @param other the other ScrollSegment to compare to.
* @return the truth/falsehood of if the first is less than the second.
*/
bool operator<( const ScrollSegment &other ) const;
private:
/** @brief The ratio / percentage to use when multiplying the chart's scroll rate. */
float ratio;
};
/**
* @brief Identifies when a song has a stop or a delay.
*
* It is hopeful that stops and delays can be made into their own segments at some point.
*/
struct StopSegment : public TimingSegment<StopSegment>
{
/**
* @brief Creates a simple Stop Segment with default values.
*
* It is best to override the values as soon as possible.
*/
StopSegment() : TimingSegment<StopSegment>(-1),
pauseSeconds(-1.0f), isDelay(false) {}
StopSegment (const StopSegment &other):
TimingSegment<StopSegment>(other),
pauseSeconds(other.GetPause()),
isDelay(other.GetDelay()) {}
/**
* @brief Creates a Stop Segment with specified values.
*
* This will not create a dedicated delay segment.
* Use the third constructor for making delays.
* @param s the starting row / beat of this segment.
* @param f the length of time to pause the note scrolling.
*/
template <typename StartType>
StopSegment( StartType s, float f ):
TimingSegment<StopSegment>(max((StartType)0, s)),
pauseSeconds(f), isDelay(false) {}
/**
* @brief Creates a Stop/Delay Segment with specified values.
* @param s the starting row / beat of this segment.
* @param f the length of time to pause the note scrolling.
* @param d the flag that makes this Stop Segment a Delay Segment.
*/
template <typename StartType>
StopSegment( StartType s, float f, bool d ):
TimingSegment<StopSegment>(max((StartType)0, s)),
pauseSeconds(f), isDelay(d) {}
/**
* @brief Get the pause length in this StopSegment.
* @return the pause length. */
float GetPause() const;
/**
* @brief Set the pause length in this StopSegment.
* @param i the pause length. */
void SetPause(const float i);
/**
* @brief Get the behavior in this StopSegment.
* @return the behavior. */
bool GetDelay() const;
/**
* @brief Set the behavior in this StopSegment.
* @param i the behavior. */
void SetDelay(const bool i);
/**
* @brief Compares two StopSegments to see if one is less than the other.
*
* It should be observed that Delay Segments have to come before Stop Segments.
* Otherwise, it will act like a Stop Segment with extra time from the Delay at
* the same row.
* @param other the other StopSegment to compare to.
* @return the truth/falsehood of if the first is less than the second.
*/
bool operator<( const StopSegment &other ) const;
private:
/**
* @brief The amount of time to complete the pause at the given row.
*/
float pauseSeconds;
/**
* @brief How does this StopSegment behave?
*
* If true, the Stop Segment is treated as a Delay Segment, similar to the Pump It Up series.
* If false, this behaves similar to the DDR/ITG style games.
*
* TODO: Separate out DelaySegments in the future.
*/
bool isDelay;
};
#endif
/**
+7 -2
View File
@@ -55,16 +55,21 @@ static RString GetMountDir( const RString &sDirOfExecutable )
void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable )
{
RString sDir = GetMountDir( sDirOfExecutable );
RString sCommonAppDataDir = SpecialDirs::GetCommonAppDataDir() + PRODUCT_ID;
FILEMAN->Mount( "dir", sDir, "/" );
FILEMAN->Mount( "dir", sCommonAppDataDir, "/" );
FILEMAN->Mount( "dir", sCommonAppDataDir + "/Cache", "/Cache" );
}
void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable )
{
RString sAppDataDir = SpecialDirs::GetAppDataDir() + PRODUCT_ID;
FILEMAN->Mount( "dir", sAppDataDir + "/Cache", "/Cache" );
RString sLocalAppDataDir = SpecialDirs::GetLocalAppDataDir() + PRODUCT_ID;
RString sPicturesDir = SpecialDirs::GetPicturesDir() + PRODUCT_ID;
FILEMAN->Mount( "dir", sAppDataDir + "/Logs", "/Logs" );
FILEMAN->Mount( "dir", sAppDataDir + "/Save", "/Save" );
FILEMAN->Mount( "dir", sAppDataDir + "/Screenshots", "/Screenshots" );
FILEMAN->Mount( "dir", sPicturesDir + " Screenshots", "/Screenshots" );
FILEMAN->Mount( "dir", sAppDataDir + "/Packages", "/" + SpecialFiles::USER_PACKAGES_DIR );
}
+15
View File
@@ -18,6 +18,21 @@ RString SpecialDirs::GetAppDataDir()
return GetSpecialFolderPath( CSIDL_APPDATA );
}
RString SpecialDirs::GetLocalAppDataDir()
{
return GetSpecialFolderPath( CSIDL_LOCAL_APPDATA );
}
RString SpecialDirs::GetCommonAppDataDir()
{
return GetSpecialFolderPath( CSIDL_COMMON_APPDATA );
}
RString SpecialDirs::GetPicturesDir()
{
return GetSpecialFolderPath( CSIDL_MYPICTURES );
}
RString SpecialDirs::GetDesktopDir()
{
return GetSpecialFolderPath( CSIDL_DESKTOP );
+3
View File
@@ -4,6 +4,9 @@
namespace SpecialDirs
{
RString GetAppDataDir();
RString GetLocalAppDataDir();
RString GetCommonAppDataDir();
RString GetPicturesDir();
RString GetDesktopDir();
};
+7 -7
View File
@@ -180,8 +180,8 @@ IDI_ICON1 ICON "smzip.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,2,4,1
FILEVERSION 5,0,0,2
PRODUCTVERSION 5,0,0,2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -196,14 +196,14 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "the spinal shark collective\nhttp://ssc.ajworld.net/"
VALUE "FileDescription", "sm-ssc"
VALUE "FileVersion", "1, 2, 4, 0"
VALUE "CompanyName", "StepMania Team\nhttp://www.stepmania.com/"
VALUE "FileDescription", "StepMania"
VALUE "FileVersion", "5, 0, 0, 2"
VALUE "InternalName", "sm-ssc"
VALUE "LegalCopyright", "Copyright © 2001-2011"
VALUE "OriginalFilename", "StepMania.exe"
VALUE "ProductName", "sm-ssc"
VALUE "ProductVersion", "1, 2, 4, 0"
VALUE "ProductName", "StepMania"
VALUE "ProductVersion", "5, 0, 0, 2"
END
END
BLOCK "VarFileInfo"
+13 -15
View File
@@ -1,21 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapconv", "verinc.vcproj", "{46C1AA00-F02C-4E0A-8150-542C9728474C}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "verinc", "verinc.vcxproj", "{46C1AA00-F02C-4E0A-8150-542C9728474C}"
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug.ActiveCfg = Debug|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug.Build.0 = Debug|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Release.ActiveCfg = Release|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Release.Build.0 = Release|Win32
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug|Win32.ActiveCfg = Debug|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug|Win32.Build.0 = Debug|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Release|Win32.ActiveCfg = Release|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
@@ -95,6 +95,7 @@
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -95,6 +95,7 @@
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">