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; #COURSE:Challenging Random 5;
#LIVES:4; #LIVES:4;
#SCRIPTER:AJ;
#SONG:*:Hard; #SONG:*:Hard;
#SONG:*:Hard; #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 2011/05/31
---------- ----------
* [Player] Added the BattleRaveMirror metric. This determines if Battle and * [Player] Added the BattleRaveMirror metric. This determines if Battle and
Rave mode will have the two players with mirrored charts or not. By default, 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] this is set to true, preserving the ITG style behavior. [Wolfman2000]
* [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000]
================================================================================ ================================================================================
StepMania 5.0 Preview 1 | 20110529 StepMania 5.0 Preview 1 | 20110529
+6 -48
View File
@@ -130,6 +130,7 @@
<Function name='PrintTable'/> <Function name='PrintTable'/>
<Function name='ProductID'/> <Function name='ProductID'/>
<Function name='ProductVersion'/> <Function name='ProductVersion'/>
<Function name='Profile'/>
<Function name='RadarCategoryToLocalizedString'/> <Function name='RadarCategoryToLocalizedString'/>
<Function name='ReadGamePrefFromFile'/> <Function name='ReadGamePrefFromFile'/>
<Function name='ReadPrefFromFile'/> <Function name='ReadPrefFromFile'/>
@@ -522,6 +523,7 @@
<Function name='SetFromCourse'/> <Function name='SetFromCourse'/>
<Function name='SetFromGameState'/> <Function name='SetFromGameState'/>
<Function name='SetFromSong'/> <Function name='SetFromSong'/>
<Function name='SetFromSteps'/>
</Class> </Class>
<Class base='Sprite' name='Banner'> <Class base='Sprite' name='Banner'>
<Function name='GetPercentScrolling'/> <Function name='GetPercentScrolling'/>
@@ -627,6 +629,7 @@
<Class name='CryptManager'> <Class name='CryptManager'>
<Function name='MD5File'/> <Function name='MD5File'/>
<Function name='MD5String'/> <Function name='MD5String'/>
<Function name='SHA1File'/>
<Function name='SHA1String'/> <Function name='SHA1String'/>
</Class> </Class>
<Class base='Sprite' name='DifficultyIcon'> <Class base='Sprite' name='DifficultyIcon'>
@@ -1023,52 +1026,6 @@
<Function name='SetPreference'/> <Function name='SetPreference'/>
<Function name='SetPreferenceToDefault'/> <Function name='SetPreferenceToDefault'/>
</Class> </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'> <Class name='ProfileManager'>
<Function name='GetLocalProfile'/> <Function name='GetLocalProfile'/>
<Function name='GetLocalProfileFromIndex'/> <Function name='GetLocalProfileFromIndex'/>
@@ -1427,6 +1384,7 @@
<Function name='HasBPMChanges'/> <Function name='HasBPMChanges'/>
<Function name='HasFakes'/> <Function name='HasFakes'/>
<Function name='HasNegativeBPMs'/> <Function name='HasNegativeBPMs'/>
<Function name='HasScrollChanges'/>
<Function name='HasSpeedChanges'/> <Function name='HasSpeedChanges'/>
<Function name='HasStops'/> <Function name='HasStops'/>
<Function name='HasWarps'/> <Function name='HasWarps'/>
@@ -2102,6 +2060,6 @@
<Constant name='sGame' value='&apos;dance&apos;'/> <Constant name='sGame' value='&apos;dance&apos;'/>
<Constant name='top' value='&apos;VertAlign_Top&apos;'/> <Constant name='top' value='&apos;VertAlign_Top&apos;'/>
</Constants> </Constants>
<Version>sm-ssc v1.2.5</Version> <Version>StepMania 5 v5.0 Preview 1a</Version>
<Date>2011-05-19</Date> <Date>2011-06-04</Date>
</Lua> </Lua>
-1
View File
@@ -143,7 +143,6 @@
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded" /> <xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attribute name="name" type="Identifier" use="required" /> <xs:attribute name="name" type="Identifier" use="required" />
<xs:attribute name="renamed" type="Identifier" use="optional" /> <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="theme" type="Identifier" use="optional" />
<xs:attribute name="return" type="IdentifierOrTable" use="optional" /> <xs:attribute name="return" type="IdentifierOrTable" use="optional" />
<xs:attribute name="arguments" type="ArgumentList" use="optional" /> <xs:attribute name="arguments" type="ArgumentList" use="optional" />
+1 -14
View File
@@ -78,16 +78,6 @@
margin: 1px 2px 1px 2px; margin: 1px 2px 1px 2px;
border: 1px solid #777; 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{ ._fallbackTheme{
text-align: justify; text-align: justify;
vertical-align: text-top; vertical-align: text-top;
@@ -243,9 +233,8 @@
<div> <div>
<fieldset> <fieldset>
<legend>Function Colors</legend> <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="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="_fallbackTheme">Defined in the _fallback theme</div>
<div class="defaultTheme">Defined in the default theme</div> <div class="defaultTheme">Defined in the default theme</div>
</fieldset> </fieldset>
@@ -487,7 +476,6 @@
<xsl:choose> <xsl:choose>
<!-- "renamed" also covers functions with modified behavior --> <!-- "renamed" also covers functions with modified behavior -->
<xsl:when test="$elmt/@renamed='true'">renamed</xsl:when> <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='_fallback'">_fallbackTheme</xsl:when>
<xsl:when test="$elmt/@theme='default'">defaultTheme</xsl:when> <xsl:when test="$elmt/@theme='default'">defaultTheme</xsl:when>
<xsl:otherwise>descriptionCell</xsl:otherwise> <xsl:otherwise>descriptionCell</xsl:otherwise>
@@ -524,7 +512,6 @@
<td> <td>
<xsl:attribute name="class"> <xsl:attribute name="class">
<xsl:choose> <xsl:choose>
<xsl:when test="$elmt/@sm-ssc='true'">sm-ssc</xsl:when>
<xsl:otherwise>descriptionCell</xsl:otherwise> <xsl:otherwise>descriptionCell</xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:attribute> </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) * Various patches (see Changelog_sm-ssc.txt for more details and links)
Kita K./D. Trucks Kita K./D. Trucks
* sm-ssc default theme music * default theme music
kurisu kurisu
* Dance-threepanel gametype code (3.9; re-adapted for sm-ssc) * Dance-threepanel gametype code (3.9; re-adapted for sm-ssc)
+1 -1
View File
@@ -27,7 +27,7 @@ Top=8
Baseline=23 Baseline=23
LineSpacing=24 LineSpacing=24
line 0=☆★♥Ω line 0=☆★♥Ω
map doublezeta=5 map doublezeta=5
map planet=6 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 ]] --[[ helper functions ]]
function tobool(v) function tobool(v)
if type(v) == "string" then if type(v) == "string" then
+2 -2
View File
@@ -1016,7 +1016,7 @@ TickcountOffsetX=70
ComboOffsetX=50 ComboOffsetX=50
LabelOffsetX=130 LabelOffsetX=130
SpeedOffsetX=30 SpeedOffsetX=30
ScrollOffsetX=40 ScrollOffsetX=100
FakeOffsetX=90 FakeOffsetX=90
[PlayerStageStats] [PlayerStageStats]
@@ -2867,7 +2867,7 @@ PlayMusic=false
# #
TimerSeconds=30 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="lua,SpeedMods()"
# Line1="list,Speed" # Line1="list,Speed"
Line2="list,Accel" Line2="list,Accel"
@@ -8,7 +8,7 @@ local function GetEdits( in_Song, in_StepsType )
if sSong:HasEdits( sStepsType ) then if sSong:HasEdits( sStepsType ) then
local tAllSteps = sSong:GetAllSteps(); local tAllSteps = sSong:GetAllSteps();
for i,Step in pairs(tAllSteps) do 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; iNumEdits = iNumEdits + 1;
end end
end end
+1 -1
View File
@@ -232,7 +232,7 @@ end
function GetDefaultOptionLines() function GetDefaultOptionLines()
local LineSets = { 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 ) "1,8,14,2,7,13,16,17,18", -- DDR Essentials ( no turns, fx )
}; };
local function IsExtra() local function IsExtra()
+772 -66
View File
@@ -23,6 +23,40 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
1215D7A208C6559A00B87D8B /* ScreenGameplayNormal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1215D7A008C6559A00B87D8B /* ScreenGameplayNormal.cpp */; }; 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 */; }; 2B30D6821315EA7E00044B68 /* MouseDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B30D6801315EA7E00044B68 /* MouseDevice.cpp */; };
2B30D6831315EA7E00044B68 /* MouseDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B30D6811315EA7E00044B68 /* MouseDevice.h */; }; 2B30D6831315EA7E00044B68 /* MouseDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B30D6811315EA7E00044B68 /* MouseDevice.h */; };
2B43509513949F37006FA051 /* TimingSegments.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B43509313949F37006FA051 /* TimingSegments.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 */; }; 2BA7925F1304F20D002BD8E1 /* NotesLoaderSSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA7925B1304F20D002BD8E1 /* NotesLoaderSSC.h */; };
2BA792601304F20D002BD8E1 /* NotesWriterSSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BA7925C1304F20D002BD8E1 /* NotesWriterSSC.cpp */; }; 2BA792601304F20D002BD8E1 /* NotesWriterSSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BA7925C1304F20D002BD8E1 /* NotesWriterSSC.cpp */; };
2BA792611304F20D002BD8E1 /* NotesWriterSSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA7925D1304F20D002BD8E1 /* NotesWriterSSC.h */; }; 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 */; }; 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 */; }; 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 */; }; 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 */; }; AA29CDFE0558741A00961A51 /* ScreenSelectMaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA1DC47404A4861700D02EE9 /* ScreenSelectMaster.cpp */; };
AA29CE000558741A00961A51 /* CombinedLifeMeterTug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443EB04B0F9F600D02EE9 /* CombinedLifeMeterTug.cpp */; }; AA29CE000558741A00961A51 /* CombinedLifeMeterTug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443EB04B0F9F600D02EE9 /* CombinedLifeMeterTug.cpp */; };
AA29CE010558741A00961A51 /* ScoreKeeperRave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443F304B0FEB700D02EE9 /* ScoreKeeperRave.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 */; }; AA29CE070558741A00961A51 /* RageUtil_FileDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAF580A704B3E2DC00D02EE9 /* RageUtil_FileDB.cpp */; };
AA29CE090558741A00961A51 /* ActorUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA983CA04B9060A00D02EE9 /* ActorUtil.cpp */; }; AA29CE090558741A00961A51 /* ActorUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA983CA04B9060A00D02EE9 /* ActorUtil.cpp */; };
AA29CE0B0558741A00961A51 /* ArchHooks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA3F283B04BE6DDC00D02EE9 /* ArchHooks.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 */; }; AA40D26709A08D650068C0D5 /* ScreenSelectMaster.h in Headers */ = {isa = PBXBuildFile; fileRef = AA1DC47504A4861700D02EE9 /* ScreenSelectMaster.h */; };
AA40D26B09A08D650068C0D5 /* CombinedLifeMeterTug.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE443EC04B0F9F600D02EE9 /* CombinedLifeMeterTug.h */; }; AA40D26B09A08D650068C0D5 /* CombinedLifeMeterTug.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE443EC04B0F9F600D02EE9 /* CombinedLifeMeterTug.h */; };
AA40D26C09A08D650068C0D5 /* ScoreKeeperRave.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE443F404B0FEB700D02EE9 /* ScoreKeeperRave.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 */; }; AA40D26F09A08D650068C0D5 /* RageUtil_FileDB.h in Headers */ = {isa = PBXBuildFile; fileRef = AAF580A804B3E2DC00D02EE9 /* RageUtil_FileDB.h */; };
AA40D27109A08D650068C0D5 /* LoadingWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = AAEF3D1004B53E2900D02EE9 /* LoadingWindow.h */; }; AA40D27109A08D650068C0D5 /* LoadingWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = AAEF3D1004B53E2900D02EE9 /* LoadingWindow.h */; };
AA40D27209A08D650068C0D5 /* InputHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AAB3B36C04C38B4600D02EE9 /* InputHandler.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 */; }; AA40D42009A08D650068C0D5 /* ScreenSelectMaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA1DC47404A4861700D02EE9 /* ScreenSelectMaster.cpp */; };
AA40D42109A08D650068C0D5 /* CombinedLifeMeterTug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443EB04B0F9F600D02EE9 /* CombinedLifeMeterTug.cpp */; }; AA40D42109A08D650068C0D5 /* CombinedLifeMeterTug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443EB04B0F9F600D02EE9 /* CombinedLifeMeterTug.cpp */; };
AA40D42209A08D650068C0D5 /* ScoreKeeperRave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE443F304B0FEB700D02EE9 /* ScoreKeeperRave.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 */; }; AA40D42709A08D650068C0D5 /* RageUtil_FileDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAF580A704B3E2DC00D02EE9 /* RageUtil_FileDB.cpp */; };
AA40D42909A08D650068C0D5 /* ActorUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA983CA04B9060A00D02EE9 /* ActorUtil.cpp */; }; AA40D42909A08D650068C0D5 /* ActorUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAA983CA04B9060A00D02EE9 /* ActorUtil.cpp */; };
AA40D42A09A08D650068C0D5 /* ArchHooks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA3F283B04BE6DDC00D02EE9 /* ArchHooks.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 */; }; AAFF41A60F5BD4AD00FFDB67 /* ScreenOptionsExportPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = AAFF41A20F5BD4AD00FFDB67 /* ScreenOptionsExportPackage.h */; };
B75CE3B5137963350076A82D /* SongPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = B75CE3B3137963350076A82D /* SongPosition.h */; }; B75CE3B5137963350076A82D /* SongPosition.h in Headers */ = {isa = PBXBuildFile; fileRef = B75CE3B3137963350076A82D /* SongPosition.h */; };
B75CE3B6137963350076A82D /* SongPosition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B75CE3B4137963350076A82D /* SongPosition.cpp */; }; 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 */; }; EE2153A910A75BEE0074B01B /* NotesLoaderPMS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE2153A710A75BEE0074B01B /* NotesLoaderPMS.cpp */; };
EE2153AA10A75BEE0074B01B /* NotesLoaderPMS.h in Headers */ = {isa = PBXBuildFile; fileRef = EE2153A810A75BEE0074B01B /* NotesLoaderPMS.h */; }; 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 */; }; EE879B60132DEE720078FDDC /* RageDisplay_Legacy_Helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE879B5C132DEE720078FDDC /* RageDisplay_Legacy_Helpers.cpp */; };
@@ -1682,6 +1683,27 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy 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 */ = { AA30C61907F5E2EF0066F398 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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; }; 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 */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase 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 */ = { AA29CE3B0558741A00961A51 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -3077,6 +3123,9 @@
AA059E2C0B8F0C67006F8139 /* libz_link.a in Frameworks */, AA059E2C0B8F0C67006F8139 /* libz_link.a in Frameworks */,
AAA0704E0CE5082E005A3060 /* libffmpeg_link.a in Frameworks */, AAA0704E0CE5082E005A3060 /* libffmpeg_link.a in Frameworks */,
AAA071B40CE7C9C9005A3060 /* libmad.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; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -3103,6 +3152,7 @@
AA7C8D430B674F4E00FD9940 /* libtommath.a in Frameworks */, AA7C8D430B674F4E00FD9940 /* libtommath.a in Frameworks */,
AA059E2B0B8F0C67006F8139 /* libz_link.a in Frameworks */, AA059E2B0B8F0C67006F8139 /* libz_link.a in Frameworks */,
AAA0704F0CE5082E005A3060 /* libffmpeg_link.a in Frameworks */, AAA0704F0CE5082E005A3060 /* libffmpeg_link.a in Frameworks */,
2B17ABFD139817D6001AE57D /* libpcre.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -3191,6 +3241,9 @@
AA7C895F0B67444700FD9940 /* libtommath.a */, AA7C895F0B67444700FD9940 /* libtommath.a */,
AA7C8B8B0B67460600FD9940 /* libtomcrypt.a */, AA7C8B8B0B67460600FD9940 /* libtomcrypt.a */,
AAA070A90CE7B0DF005A3060 /* libmad.a */, AAA070A90CE7B0DF005A3060 /* libmad.a */,
2B17AB7213980FDF001AE57D /* libpng.a */,
2B17ABC013981521001AE57D /* libglew.a */,
2B17ABE013981756001AE57D /* libpcre.a */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -5039,6 +5092,36 @@
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXHeadersBuildPhase 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 */ = { AA29CC270558741A00961A51 /* Headers */ = {
isa = PBXHeadersBuildPhase; isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -5061,13 +5144,6 @@
EE879B63132DEE720078FDDC /* RageDisplay_Legacy.h in Headers */, EE879B63132DEE720078FDDC /* RageDisplay_Legacy.h in Headers */,
2B76698B132FF71500586512 /* NotesLoaderSMA.h in Headers */, 2B76698B132FF71500586512 /* NotesLoaderSMA.h in Headers */,
2BD06FEE137242680018CB9F /* json_batchallocator.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 */, B75CE3B5137963350076A82D /* SongPosition.h in Headers */,
2B9C2E8E137A138B004C92F3 /* NotesLoaderJson.h in Headers */, 2B9C2E8E137A138B004C92F3 /* NotesLoaderJson.h in Headers */,
2B9C2E90137A138B004C92F3 /* NotesWriterJson.h in Headers */, 2B9C2E90137A138B004C92F3 /* NotesWriterJson.h in Headers */,
@@ -5227,8 +5303,6 @@
AA40D26709A08D650068C0D5 /* ScreenSelectMaster.h in Headers */, AA40D26709A08D650068C0D5 /* ScreenSelectMaster.h in Headers */,
AA40D26B09A08D650068C0D5 /* CombinedLifeMeterTug.h in Headers */, AA40D26B09A08D650068C0D5 /* CombinedLifeMeterTug.h in Headers */,
AA40D26C09A08D650068C0D5 /* ScoreKeeperRave.h in Headers */, AA40D26C09A08D650068C0D5 /* ScoreKeeperRave.h in Headers */,
AA40D26D09A08D650068C0D5 /* internal.h in Headers */,
AA40D26E09A08D650068C0D5 /* pcre.h in Headers */,
AA40D26F09A08D650068C0D5 /* RageUtil_FileDB.h in Headers */, AA40D26F09A08D650068C0D5 /* RageUtil_FileDB.h in Headers */,
AA40D27109A08D650068C0D5 /* LoadingWindow.h in Headers */, AA40D27109A08D650068C0D5 /* LoadingWindow.h in Headers */,
AA40D27209A08D650068C0D5 /* InputHandler.h in Headers */, AA40D27209A08D650068C0D5 /* InputHandler.h in Headers */,
@@ -5585,6 +5659,57 @@
/* End PBXLegacyTarget section */ /* End PBXLegacyTarget section */
/* Begin PBXNativeTarget 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 */ = { AA29CC240558741A00961A51 /* stepmania */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = AAC8450F0856A19700A9FEAB /* Build configuration list for PBXNativeTarget "stepmania" */; buildConfigurationList = AAC8450F0856A19700A9FEAB /* Build configuration list for PBXNativeTarget "stepmania" */;
@@ -5601,9 +5726,12 @@
); );
dependencies = ( dependencies = (
AAE781FE0AC7E61900AEFC64 /* PBXTargetDependency */, AAE781FE0AC7E61900AEFC64 /* PBXTargetDependency */,
2B17ABD1139815EB001AE57D /* PBXTargetDependency */,
AA7C8D180B6748B800FD9940 /* PBXTargetDependency */, AA7C8D180B6748B800FD9940 /* PBXTargetDependency */,
AA7C8D160B6748B800FD9940 /* PBXTargetDependency */, AA7C8D160B6748B800FD9940 /* PBXTargetDependency */,
2B17AB8E13981009001AE57D /* PBXTargetDependency */,
AAA071AA0CE7B879005A3060 /* PBXTargetDependency */, AAA071AA0CE7B879005A3060 /* PBXTargetDependency */,
2B17ABFF139817DF001AE57D /* PBXTargetDependency */,
AA30C61A07F5E2EF0066F398 /* PBXTargetDependency */, AA30C61A07F5E2EF0066F398 /* PBXTargetDependency */,
); );
name = stepmania; name = stepmania;
@@ -5776,6 +5904,9 @@
AA7C895E0B67444700FD9940 /* tommath */, AA7C895E0B67444700FD9940 /* tommath */,
AA7C8B8A0B67460600FD9940 /* tomcrypt */, AA7C8B8A0B67460600FD9940 /* tomcrypt */,
AAA070A80CE7B0DF005A3060 /* mad */, AAA070A80CE7B0DF005A3060 /* mad */,
2B17AB7113980FDF001AE57D /* png */,
2B17ABBF13981521001AE57D /* glew */,
2B17ABDF13981756001AE57D /* pcre */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@@ -5905,12 +6036,53 @@
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase 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 */ = { AA29CD410558741A00961A51 /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
comments = "We need a better way of organizing compile order here."; comments = "We need a better way of organizing compile order here.";
files = ( files = (
B7B0914B1393481B00C33E6B /* glew.c in Sources */,
AA29CD520558741A00961A51 /* RageUtil.cpp in Sources */, AA29CD520558741A00961A51 /* RageUtil.cpp in Sources */,
AA29CD420558741A00961A51 /* RageBitmapTexture.cpp in Sources */, AA29CD420558741A00961A51 /* RageBitmapTexture.cpp in Sources */,
AA29CD430558741A00961A51 /* RageDisplay.cpp in Sources */, AA29CD430558741A00961A51 /* RageDisplay.cpp in Sources */,
@@ -6052,10 +6224,6 @@
AA29CDFE0558741A00961A51 /* ScreenSelectMaster.cpp in Sources */, AA29CDFE0558741A00961A51 /* ScreenSelectMaster.cpp in Sources */,
AA29CE000558741A00961A51 /* CombinedLifeMeterTug.cpp in Sources */, AA29CE000558741A00961A51 /* CombinedLifeMeterTug.cpp in Sources */,
AA29CE010558741A00961A51 /* ScoreKeeperRave.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 */, AA29CE070558741A00961A51 /* RageUtil_FileDB.cpp in Sources */,
AA29CE090558741A00961A51 /* ActorUtil.cpp in Sources */, AA29CE090558741A00961A51 /* ActorUtil.cpp in Sources */,
AA29CE0B0558741A00961A51 /* ArchHooks.cpp in Sources */, AA29CE0B0558741A00961A51 /* ArchHooks.cpp in Sources */,
@@ -6320,21 +6488,6 @@
2BD06FF1137242680018CB9F /* json_reader.cpp in Sources */, 2BD06FF1137242680018CB9F /* json_reader.cpp in Sources */,
2BD06FF2137242680018CB9F /* json_value.cpp in Sources */, 2BD06FF2137242680018CB9F /* json_value.cpp in Sources */,
2BD06FF4137242680018CB9F /* json_writer.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 */, 2B43509613949F37006FA051 /* TimingSegments.cpp in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@@ -6478,10 +6631,6 @@
AA40D42009A08D650068C0D5 /* ScreenSelectMaster.cpp in Sources */, AA40D42009A08D650068C0D5 /* ScreenSelectMaster.cpp in Sources */,
AA40D42109A08D650068C0D5 /* CombinedLifeMeterTug.cpp in Sources */, AA40D42109A08D650068C0D5 /* CombinedLifeMeterTug.cpp in Sources */,
AA40D42209A08D650068C0D5 /* ScoreKeeperRave.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 */, AA40D42709A08D650068C0D5 /* RageUtil_FileDB.cpp in Sources */,
AA40D42909A08D650068C0D5 /* ActorUtil.cpp in Sources */, AA40D42909A08D650068C0D5 /* ActorUtil.cpp in Sources */,
AA40D42A09A08D650068C0D5 /* ArchHooks.cpp in Sources */, AA40D42A09A08D650068C0D5 /* ArchHooks.cpp in Sources */,
@@ -7087,6 +7236,21 @@
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency 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 */ = { AA30C61A07F5E2EF0066F398 /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = AA30C60F07F5E24A0066F398 /* version */; target = AA30C60F07F5E24A0066F398 /* version */;
@@ -7171,6 +7335,515 @@
/* End PBXVariantGroup section */ /* End PBXVariantGroup section */
/* Begin XCBuildConfiguration 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 */ = { AA0AA8FE0963CF7700427F4D /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
@@ -8436,6 +9109,39 @@
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList 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" */ = { AA40D52709A08D650068C0D5 /* Build configuration list for PBXNativeTarget "stepmania-bare" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
+6 -6
View File
@@ -269,11 +269,11 @@ void AdjustSync::AutosyncTempo()
FOREACH( BPMSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_BPMSegments, i ) FOREACH( BPMSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_BPMSegments, i )
i->SetBPM( i->GetBPM() * fScaleBPM ); i->SetBPM( i->GetBPM() * fScaleBPM );
// We assume that the stops were measured as a number of beats. /* We assume that the stops were measured as a number of beats.
// Therefore, if we change the bpms, we need to make a similar * Therefore, if we change the bpms, we need to make a similar
// change to the stops. * change to the stops. */
FOREACH( StopSegment, GAMESTATE->m_pCurSong->m_SongTiming.m_StopSegments, i ) 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() ); 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++ ) for( unsigned i=0; i< testing.m_StopSegments.size(); i++ )
{ {
float fOld = Quantize( original.m_StopSegments[i].m_fStopSeconds, 0.001f ); float fOld = Quantize( original.m_StopSegments[i].GetPause(), 0.001f );
float fNew = Quantize( testing.m_StopSegments[i].m_fStopSeconds, 0.001f ); float fNew = Quantize( testing.m_StopSegments[i].GetPause(), 0.001f );
float fDelta = fNew - fOld; float fDelta = fNew - fOld;
if( fabsf(fDelta) > 0.0001f ) if( fabsf(fDelta) > 0.0001f )
+23
View File
@@ -9,6 +9,7 @@
#include "CommonMetrics.h" #include "CommonMetrics.h"
#include "LocalizedString.h" #include "LocalizedString.h"
#include "Song.h" #include "Song.h"
#include "Steps.h"
#include <limits.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 ) void BPMDisplay::SetBpmFromCourse( const Course* pCourse )
{ {
ASSERT( pCourse ); ASSERT( pCourse );
@@ -307,6 +319,16 @@ public:
} }
return 0; 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 ) static int SetFromCourse( T* p, lua_State *L )
{ {
if( lua_isnil(L,1) ) { p->NoBPM(); } if( lua_isnil(L,1) ) { p->NoBPM(); }
@@ -323,6 +345,7 @@ public:
{ {
ADD_METHOD( SetFromGameState ); ADD_METHOD( SetFromGameState );
ADD_METHOD( SetFromSong ); ADD_METHOD( SetFromSong );
ADD_METHOD( SetFromSteps );
ADD_METHOD( SetFromCourse ); ADD_METHOD( SetFromCourse );
ADD_METHOD( GetText ); ADD_METHOD( GetText );
} }
+6
View File
@@ -6,6 +6,7 @@
#include "ThemeMetric.h" #include "ThemeMetric.h"
#include "LocalizedString.h" #include "LocalizedString.h"
class Song; class Song;
class Steps;
class Course; class Course;
struct DisplayBpms; struct DisplayBpms;
@@ -30,6 +31,11 @@ public:
* @param pSong the song in question. * @param pSong the song in question.
*/ */
void SetBpmFromSong( const Song* pSong ); 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. * @brief Use the BPM[s] from a course.
* @param pCourse the course in question. * @param pCourse the course in question.
+2 -1
View File
@@ -106,7 +106,7 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score )
if( m_iLivesLeft == 0 ) if( m_iLivesLeft == 0 )
return; return;
// xxx: This is hardcoded; we should use metrics for this. -aj // todo: let the themer decide how this is handled. -aj
switch( score ) switch( score )
{ {
case TNS_W1: case TNS_W1:
@@ -142,6 +142,7 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score )
Message msg( "LifeChanged" ); Message msg( "LifeChanged" );
msg.SetParam( "Player", m_pPlayerState->m_PlayerNumber ); msg.SetParam( "Player", m_pPlayerState->m_PlayerNumber );
msg.SetParam( "LifeMeter", LuaReference::CreateFromPush(*this) ); msg.SetParam( "LifeMeter", LuaReference::CreateFromPush(*this) );
msg.SetParam( "LivesLeft", GetLivesLeft() );
MESSAGEMAN->Broadcast( msg ); MESSAGEMAN->Broadcast( msg );
} }
-1
View File
@@ -43,7 +43,6 @@ private:
float m_fBatteryBlinkTime; // if > 0 battery is blinking float m_fBatteryBlinkTime; // if > 0 battery is blinking
// theme metrics added for sm-ssc // theme metrics added for sm-ssc
//ThemeMetric<> METRIC_NAME;
ThemeMetric<float> BATTERY_BLINK_TIME; ThemeMetric<float> BATTERY_BLINK_TIME;
AutoActor m_sprFrame; AutoActor m_sprFrame;
+211 -26
View File
@@ -23,6 +23,7 @@
#include "MessageManager.h" #include "MessageManager.h"
static Preference<bool> g_bMoveRandomToEnd( "MoveRandomToEnd", false ); 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 NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2))
#define WHEEL_TEXT(s) THEME->GetString( "MusicWheel", ssprintf("%sText",s.c_str()) ); #define WHEEL_TEXT(s) THEME->GetString( "MusicWheel", ssprintf("%sText",s.c_str()) );
@@ -113,25 +114,36 @@ void MusicWheel::Load( RString sType )
* stable_sort) from its output, and title will be the secondary sort, without having * stable_sort) from its output, and title will be the secondary sort, without having
* to re-sort by title each time. */ * to re-sort by title each time. */
SONGMAN->SortSongs(); SONGMAN->SortSongs();
FOREACH_ENUM( SortOrder, so ) {
m_WheelItemDatasStatus[so]=INVALID;
}
} }
void MusicWheel::BeginScreen() void MusicWheel::BeginScreen()
{ {
RageTimer timer; RageTimer timer;
RString times; RString times;
/* Build all of the wheel item data. Do this after selecting the extra stage, FOREACH_ENUM( SortOrder, so ) {
* so it knows to always display it. */ if(m_WheelItemDatasStatus[so]!=INVALID) {
FOREACH_ENUM( SortOrder, so ) m_WheelItemDatasStatus[so]=NEEDREFILTER;
{
BuildWheelItemDatas( m_WheelItemDatas[so], so ); }
if(g_bPrecacheAllSorts) {
readyWheelItemsData(so);
times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() ); times += ssprintf( "%i:%.3f ", so, timer.GetDeltaTime() );
} }
}
if(g_bPrecacheAllSorts) {
LOG->Trace( "MusicWheel sorting took: %s", times.c_str() ); LOG->Trace( "MusicWheel sorting took: %s", times.c_str() );
}
/* Set m_LastModeMenuItem to the first item that matches the current mode. (Do this // Set m_LastModeMenuItem to the first item that matches the current mode. (Do this
* after building wheel item data.) */ // 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++ ) for( unsigned i=0; i<from.size(); i++ )
{ {
ASSERT( &*from[i]->m_pAction ); ASSERT( &*from[i]->m_pAction );
@@ -227,14 +239,19 @@ void MusicWheel::BeginScreen()
MusicWheel::~MusicWheel() MusicWheel::~MusicWheel()
{ {
FOREACH_ENUM( SortOrder, so ) FOREACH_ENUM( SortOrder, so ) {
FOREACH( MusicWheelItemData*, m_WheelItemDatas[so], i ) vector<MusicWheelItemData*>::iterator i = m__UnFilteredWheelItemDatas[so].begin();
vector<MusicWheelItemData*>::iterator iEnd = m__UnFilteredWheelItemDatas[so].end();
for( ; i != iEnd; ++i ) {
delete *i; delete *i;
}
}
} }
/* If a song or course is set in GAMESTATE and available, select it. Otherwise, /* If a song or course is set in GAMESTATE and available, select it. Otherwise, choose the
* choose the first available song or course. Return true if an item was set, * first available song or course. Return true if an item was set, false if no items are
* false if no items are available. */ * available. */
bool MusicWheel::SelectSongOrCourse() bool MusicWheel::SelectSongOrCourse()
{ {
if( GAMESTATE->m_pPreferredSong && SelectSong( GAMESTATE->m_pPreferredSong ) ) if( GAMESTATE->m_pPreferredSong && SelectSong( GAMESTATE->m_pPreferredSong ) )
@@ -247,7 +264,7 @@ bool MusicWheel::SelectSongOrCourse()
return true; return true;
// Select the first selectable song based on the sort order... // 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++ ) for( unsigned i = 0; i < wiWheelItems.size(); i++ )
{ {
if( wiWheelItems[i]->m_pSong ) if( wiWheelItems[i]->m_pSong )
@@ -280,7 +297,7 @@ bool MusicWheel::SelectSong( const Song *p )
return false; return false;
unsigned i; unsigned i;
vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
for( i=0; i<from.size(); i++ ) for( i=0; i<from.size(); i++ )
{ {
if( from[i]->m_pSong == p ) if( from[i]->m_pSong == p )
@@ -308,7 +325,7 @@ bool MusicWheel::SelectCourse( const Course *p )
return false; return false;
unsigned i; unsigned i;
vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
for( i=0; i<from.size(); i++ ) for( i=0; i<from.size(); i++ )
{ {
if( from[i]->m_pCourse == p ) if( from[i]->m_pCourse == p )
@@ -335,7 +352,7 @@ bool MusicWheel::SelectModeMenuItem()
{ {
// Select the last-chosen option. // Select the last-chosen option.
ASSERT( GAMESTATE->m_SortOrder == SORT_MODE_MENU ); 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; unsigned i;
for( i=0; i<from.size(); i++ ) for( i=0; i<from.size(); i++ )
{ {
@@ -839,20 +856,185 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
WID.m_Flags.iStagesForSong = 1; WID.m_Flags.iStagesForSong = 1;
} }
} }
}
vector<MusicWheelItemData *> & MusicWheel::getWheelItemsData(SortOrder so) {
// Update the popularity and init icons. // 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 ) 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; WID.m_Flags.iPlayersBestNumber = i+1;
} }
} }
// If we've filtered all items, insert a dummy. // If we've filtered all items, insert a dummy.
if( arrayWheelItemDatas.empty() ) if( aFilteredData.empty() )
arrayWheelItemDatas.push_back( new MusicWheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), 0) ); aFilteredData.push_back( new MusicWheelItemData(TYPE_SECTION, NULL, "- EMPTY -", NULL, RageColor(1,0,0,1), 0) );
} }
void MusicWheel::UpdateSwitch() void MusicWheel::UpdateSwitch()
@@ -980,7 +1162,7 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success
return false; return false;
// Don't change to SORT_MODE_MENU if it doesn't have at least two choices. // 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; return false;
switch( m_WheelState ) switch( m_WheelState )
@@ -1116,7 +1298,7 @@ void MusicWheel::StartRandom()
{ {
// Shuffle and use the roulette wheel. // Shuffle and use the roulette wheel.
RandomGen rnd; 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 ); GAMESTATE->m_SortOrder.Set( SORT_ROULETTE );
} }
else else
@@ -1154,7 +1336,7 @@ void MusicWheel::SetOpenSection( RString group )
GAMEMAN->GetCompatibleStyles( GAMESTATE->m_pCurGame, GAMESTATE->GetNumPlayersEnabled(), vpPossibleStyles ); GAMEMAN->GetCompatibleStyles( GAMESTATE->m_pCurGame, GAMESTATE->GetNumPlayersEnabled(), vpPossibleStyles );
m_CurWheelItemData.clear(); m_CurWheelItemData.clear();
vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder]; vector<MusicWheelItemData *> &from = getWheelItemsData(GAMESTATE->m_SortOrder);
m_CurWheelItemData.reserve( from.size() ); m_CurWheelItemData.reserve( from.size() );
for( unsigned i = 0; i < from.size(); ++i ) 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 // We need to rebuild the wheel item data in this situation. -aj
if( !GAMESTATE->IsCourseMode() && !PREFSMAN->m_bAutogenSteps ) 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 ); SetOpenSection( m_sExpandedSectionName );
@@ -1366,7 +1551,7 @@ Song *MusicWheel::GetPreferredSelectionForRandomOrPortal()
} }
RString sPreferredGroup = m_sExpandedSectionName; 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; StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
+11 -3
View File
@@ -53,15 +53,14 @@ protected:
MusicWheelItem *MakeItem(); MusicWheelItem *MakeItem();
void GetSongList( vector<Song*> &arraySongs, SortOrder so ); void GetSongList( vector<Song*> &arraySongs, SortOrder so );
void BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelItems, SortOrder so );
bool SelectSongOrCourse(); bool SelectSongOrCourse();
bool SelectCourse( const Course *p ); bool SelectCourse( const Course *p );
bool SelectModeMenuItem(); bool SelectModeMenuItem();
//bool SelectCustomItem();
virtual void UpdateSwitch(); 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; RString m_sLastModeMenuItem;
SortOrder m_SortOrder; SortOrder m_SortOrder;
@@ -96,6 +95,15 @@ protected:
ThemeMetric<RString> CUSTOM_WHEEL_ITEM_NAMES; ThemeMetric<RString> CUSTOM_WHEEL_ITEM_NAMES;
ThemeMetricMap<RString> CUSTOM_CHOICES; ThemeMetricMap<RString> CUSTOM_CHOICES;
ThemeMetricMap<RageColor> CUSTOM_CHOICE_COLORS; 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 #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.SetHorizAlign( SCROLL_IS_LEFT_SIDE ? align_right : align_left );
m_textMeasureNumber.SetDiffuse( SCROLL_COLOR ); m_textMeasureNumber.SetDiffuse( SCROLL_COLOR );
m_textMeasureNumber.SetGlow( RageColor(1,1,1,RageFastCos(RageTimer::GetTimeSinceStartFast()*2)/2+0.5f) ); 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.SetXY( (SCROLL_IS_LEFT_SIDE ? -xBase - xOffset : xBase + xOffset), fYPos );
m_textMeasureNumber.Draw(); m_textMeasureNumber.Draw();
} }
@@ -896,6 +896,20 @@ void NoteField::DrawPrimitives()
const TimingData &timing = *pTiming; 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 // BPM text
FOREACH_CONST( BPMSegment, timing.m_BPMSegments, seg ) FOREACH_CONST( BPMSegment, timing.m_BPMSegments, seg )
{ {
@@ -910,11 +924,11 @@ void NoteField::DrawPrimitives()
// Freeze text // Freeze text
FOREACH_CONST( StopSegment, timing.m_StopSegments, seg ) 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) ) 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 // Speed text
if( GAMESTATE->m_bIsUsingStepTiming ) 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 ); StopSegment newSeg( BeatToNoteRow(fBeat), fFreezeSecs );
out.m_Timing.AddStopSegment( newSeg ); 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 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) static void Deserialize(StopSegment &seg, const Json::Value &root)
{ {
seg.m_iStartRow = BeatToNoteRow((float)(root["Beat"].asDouble())); seg.SetBeat((float)(root["Beat"].asDouble()));
seg.m_fStopSeconds = (float)root["Seconds"].asDouble(); seg.SetPause((float)(root["Seconds"].asDouble()));
} }
static void Deserialize(TimingData &td, const Json::Value &root) 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 ); StopSegment newSeg( BeatToNoteRow(fBeat), fFreezeSecs );
out.m_SongTiming.AddStopSegment( newSeg ); 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 else
{ {
+38 -70
View File
@@ -84,20 +84,6 @@ void SMLoader::GetApplicableFiles( const RString &sPath, vector<RString> &out )
GetDirListing( sPath + RString("*.sm"), 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 ) void SMLoader::ProcessBGChanges( Song &out, const RString &sValueName, const RString &sPath, const RString &sParam )
{ {
BackgroundLayer iLayer = BACKGROUND_LAYER_1; 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 fFreezeBeat = StringToFloat( arrayDelayValues[0] );
const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] ); const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] );
StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds, true ); StopSegment new_seg( fFreezeBeat, fFreezeSeconds, true );
// XXX: Remove Negatives Bug? // XXX: Remove Negatives Bug?
new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); new_seg.SetBeat(fFreezeBeat);
new_seg.m_fStopSeconds = fFreezeSeconds; new_seg.SetPause(fFreezeSeconds);
// LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); // 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 ) bool SMLoader::LoadFromBGChangesString( BackgroundChange &change, const RString &sBGChangeExpression )
{ {
vector<RString> aBGChangeValues; vector<RString> aBGChangeValues;
@@ -568,7 +507,6 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache
} }
out.m_SongTiming.m_sFile = sPath; out.m_SongTiming.m_sFile = sPath;
LoadTimingFromSMFile( msd, out.m_SongTiming );
for( unsigned i=0; i<msd.GetNumValues(); i++ ) 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" ) else if( sValueName=="MUSIC" )
out.m_sMusicFile = sParams[1]; 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" ) else if( sValueName=="INSTRUMENTTRACK" )
{ {
ProcessInstrumentTracks( out, sParams[1] ); ProcessInstrumentTracks( out, sParams[1] );
@@ -762,15 +730,15 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache
out.AddSteps( pNewNotes ); out.AddSteps( pNewNotes );
} }
/* // XXX: Does anyone know what LEADTRACK is for? -Wolfman2000
* We used to check for timing data in this section. That has else if( sValueName=="LEADTRACK" )
* 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" )
; ;
else else
LOG->UserLog( "Song file", sPath, "has an unexpected value named \"%s\".", sValueName.c_str() ); 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 ); TidyUpData( out, bFromCache );
return true; return true;
} }
-2
View File
@@ -26,8 +26,6 @@ namespace SMLoader
bool LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache = false ); bool LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache = false );
void GetApplicableFiles( const RString &sPath, vector<RString> &out ); 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 LoadEditFromFile( RString sEditFilePath, ProfileSlot slot, bool bAddStepsToSong );
bool LoadEditFromBuffer( const RString &sBuffer, const RString &sEditFilePath, ProfileSlot slot ); bool LoadEditFromBuffer( const RString &sBuffer, const RString &sEditFilePath, ProfileSlot slot );
bool LoadEditFromMsd( const MsdFile &msd, const RString &sEditFilePath, ProfileSlot slot, bool bAddStepsToSong ); 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 fFreezeBeat = RowToBeat( arrayDelayValues[0], iRowsPerBeat );
const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] ); const float fFreezeSeconds = StringToFloat( arrayDelayValues[1] );
StopSegment new_seg( BeatToNoteRow(fFreezeBeat), fFreezeSeconds, true ); StopSegment new_seg( fFreezeBeat, fFreezeSeconds, true );
// XXX: Remove Negatives Bug? // XXX: Remove Negatives Bug?
new_seg.m_iStartRow = BeatToNoteRow(fFreezeBeat); new_seg.SetBeat(fFreezeBeat);
new_seg.m_fStopSeconds = fFreezeSeconds; new_seg.SetPause(fFreezeSeconds);
// LOG->Trace( "Adding a delay segment: beat: %f, seconds = %f", new_seg.m_fStartBeat, new_seg.m_fStopSeconds ); // 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++ ) for( unsigned i=0; i<out.m_SongTiming.m_StopSegments.size(); i++ )
{ {
const StopSegment &fs = out.m_SongTiming.m_StopSegments[i]; const StopSegment &fs = out.m_SongTiming.m_StopSegments[i];
f.Write( ssprintf("%.3f=%.3f", fs.m_iStartRow * 4.0f / ROWS_PER_BEAT, f.Write( ssprintf("%.3f=%.3f", fs.GetRow() * 4.0f / ROWS_PER_BEAT,
roundf(fs.m_fStopSeconds*1000)) ); roundf(fs.GetPause()*1000)) );
if( i != out.m_SongTiming.m_StopSegments.size()-1 ) if( i != out.m_SongTiming.m_StopSegments.size()-1 )
f.Write( "," ); 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) static void Serialize(const StopSegment &seg, Json::Value &root)
{ {
root["Beat"] = NoteRowToBeat(seg.m_iStartRow); root["Beat"] = seg.GetBeat();
root["Seconds"] = seg.m_fStopSeconds; root["Seconds"] = seg.GetPause();
} }
static void Serialize(const TimingData &td, Json::Value &root) static void Serialize(const TimingData &td, Json::Value &root)
+5 -11
View File
@@ -116,10 +116,7 @@ static void WriteGlobalTags( RageFile &f, Song &out )
int iRow = out.m_SongTiming.m_WarpSegments[i].GetRow(); int iRow = out.m_SongTiming.m_WarpSegments[i].GetRow();
float fBPS = 60 / out.m_SongTiming.GetBPMAtRow(iRow); float fBPS = 60 / out.m_SongTiming.GetBPMAtRow(iRow);
float fSkip = fBPS * out.m_SongTiming.m_WarpSegments[i].GetLength(); float fSkip = fBPS * out.m_SongTiming.m_WarpSegments[i].GetLength();
StopSegment ss; StopSegment ss(iRow, -fSkip, false);
ss.m_iStartRow = iRow;
ss.m_fStopSeconds = -fSkip;
ss.m_bDelay = false; // Best to be sure.
out.m_SongTiming.AddStopSegment( ss ); out.m_SongTiming.AddStopSegment( ss );
} }
} }
@@ -128,15 +125,13 @@ static void WriteGlobalTags( RageFile &f, Song &out )
for( unsigned i=0; i<out.m_SongTiming.m_StopSegments.size(); i++ ) for( unsigned i=0; i<out.m_SongTiming.m_StopSegments.size(); i++ )
{ {
const StopSegment &fs = out.m_SongTiming.m_StopSegments[i]; const StopSegment &fs = out.m_SongTiming.m_StopSegments[i];
int iRow = fs.m_iStartRow; float fBeat = fs.GetBeat();
float fBeat = NoteRowToBeat(!fs.m_bDelay ? iRow : iRow - 1); if (fs.GetDelay()) fBeat--;
if(!fs.m_bDelay) f.PutLine( ssprintf( "%.3f=%.3f", fBeat, fs.GetPause() ) );
{
f.PutLine( ssprintf( "%.3f=%.3f", fBeat, fs.m_fStopSeconds ) );
if( i != out.m_SongTiming.m_StopSegments.size()-1 ) if( i != out.m_SongTiming.m_StopSegments.size()-1 )
f.Write( "," ); f.Write( "," );
if( fs.m_fStopSeconds < 0 ) if( fs.GetPause() < 0 )
{ {
out.m_SongTiming.m_StopSegments.erase( out.m_SongTiming.m_StopSegments.erase(
out.m_SongTiming.m_StopSegments.begin()+i, out.m_SongTiming.m_StopSegments.begin()+i,
@@ -144,7 +139,6 @@ static void WriteGlobalTags( RageFile &f, Song &out )
i--; i--;
} }
} }
}
f.PutLine( ";" ); f.PutLine( ";" );
FOREACH_BackgroundLayer( b ) FOREACH_BackgroundLayer( b )
+5 -5
View File
@@ -98,14 +98,14 @@ static void GetTimingTags( vector<RString> &lines, TimingData timing, bool bIsSo
w.Init( "STOPS" ); w.Init( "STOPS" );
FOREACH_CONST( StopSegment, timing.m_StopSegments, ss ) FOREACH_CONST( StopSegment, timing.m_StopSegments, ss )
if( !ss->m_bDelay ) if( !ss->GetDelay() )
w.Write( ss->m_iStartRow, ss->m_fStopSeconds ); w.Write( ss->GetRow(), ss->GetPause() );
w.Finish(); w.Finish();
w.Init( "DELAYS" ); w.Init( "DELAYS" );
FOREACH_CONST( StopSegment, timing.m_StopSegments, ss ) FOREACH_CONST( StopSegment, timing.m_StopSegments, ss )
if( ss->m_bDelay ) if( ss->GetDelay() )
w.Write( ss->m_iStartRow, ss->m_fStopSeconds ); w.Write( ss->GetRow(), ss->GetPause() );
w.Finish(); w.Finish();
w.Init( "WARPS" ); w.Init( "WARPS" );
@@ -139,7 +139,7 @@ static void GetTimingTags( vector<RString> &lines, TimingData timing, bool bIsSo
w.Init( "SCROLLS" ); w.Init( "SCROLLS" );
FOREACH_CONST( ScrollSegment, timing.m_ScrollSegments, ss ) FOREACH_CONST( ScrollSegment, timing.m_ScrollSegments, ss )
w.Write( ss->m_iStartRow, ss->m_fPercent ); w.Write( ss->GetRow(), ss->GetRatio() );
w.Finish(); w.Finish();
if( !bIsSong ) if( !bIsSong )
+3 -3
View File
@@ -265,7 +265,7 @@ void PlayerOptions::FromString( const RString &sMultipleMods )
{ {
if (!FromOneModString( *s, sThrowAway )) 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". */ * they meant "*123". */
if( s->Right(1) == "*" ) if( s->Right(1) == "*" )
{ {
/* XXX We know what they want, is there any reason not to handle it? */ // XXX: We know what they want, is there any reason not to handle it?
/* Yes. We should be strict in handling the format. -Chris */ // 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) ); sErrorOut = ssprintf("Invalid player options \"%s\"; did you mean '*%d'?", s->c_str(), StringToInt(*s) );
return false; 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 ) void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutoplay )
{ {
LOG->Trace( "hand out awards" ); //LOG->Trace( "hand out awards" );
m_PeakComboAward = PeakComboAward_Invalid; m_PeakComboAward = PeakComboAward_Invalid;
@@ -592,7 +592,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
deque<StageAward> &vPdas = GAMESTATE->m_vLastStageAwards[p]; deque<StageAward> &vPdas = GAMESTATE->m_vLastStageAwards[p];
LOG->Trace( "per difficulty awards" ); //LOG->Trace( "per difficulty awards" );
// per-difficulty awards // per-difficulty awards
// don't give per-difficutly awards if using easy mods // don't give per-difficutly awards if using easy mods
@@ -632,7 +632,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
else else
m_StageAward = StageAward_Invalid; 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 // DO give peak combo awards if using easy mods
int iComboAtStartOfStage = GetComboAtStartOfStage(); int iComboAtStartOfStage = GetComboAtStartOfStage();
@@ -642,7 +642,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
{ {
int iLevel = 1000 * (pca+1); int iLevel = 1000 * (pca+1);
bool bCrossedLevel = iComboAtStartOfStage < iLevel && iPeakCombo >= iLevel; 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 ) if( bCrossedLevel )
GAMESTATE->m_vLastPeakComboAwards[p].push_back( pca ); GAMESTATE->m_vLastPeakComboAwards[p].push_back( pca );
} }
@@ -652,7 +652,7 @@ void PlayerStageStats::CalcAwards( PlayerNumber p, bool bGaveUp, bool bUsedAutop
else else
m_PeakComboAward = PeakComboAward_Invalid; 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> * </li></ul>
*/ */
#ifndef PRODUCT_VER_BARE #ifndef PRODUCT_VER_BARE
#define PRODUCT_VER_BARE v5.0 Preview 1 #define PRODUCT_VER_BARE v5.0 Preview 1a
#endif #endif
/** /**
+1 -1
View File
@@ -5,7 +5,7 @@
; see ProductInfo.h for use descriptions ; see ProductInfo.h for use descriptions
!define PRODUCT_ID "StepMania" !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_DISPLAY "${PRODUCT_ID} ${PRODUCT_VER}"
!define PRODUCT_BITMAP "ssc" !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.holdForSlow = DeviceInput(DEVICE_KEYBOARD, KEY_ACCENT);
g_Mappings.holdForFast = DeviceInput(DEVICE_KEYBOARD, KEY_TAB); 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; int i=0;
g_Mappings.gameplayButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_F8); 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_Cq);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cw); 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_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_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_Cy);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cu); g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Cu);
g_Mappings.debugButton[i++] = DeviceInput(DEVICE_KEYBOARD, KEY_Ci); 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; return;
} }
TimingData &sTiming = GAMESTATE->m_pCurSong->m_SongTiming; 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(); int beatsPerMeasure = sTiming.GetTimeSignatureSegmentAtBeat( playerBeat ).GetNum();
switch( EditB ) switch( EditB )
@@ -1527,11 +1527,11 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
break; break;
case EDIT_BUTTON_LAY_SELECT: 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 ) if( m_NoteFieldEdit.m_iBeginMarker==-1 && m_NoteFieldEdit.m_iEndMarker==-1 )
{ {
// lay begin marker // 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 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; unsigned i;
for( i=0; i<GetAppropriateTiming().m_StopSegments.size(); 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; break;
} }
@@ -1706,66 +1706,20 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
{ {
// create a new StopSegment // create a new StopSegment
if( fDelta > 0 ) if( fDelta > 0 )
GetAppropriateTiming().AddStopSegment( StopSegment(BeatToNoteRow( GetBeat() ), fDelta) ); GetAppropriateTiming().AddStopSegment( StopSegment( GetRow(), fDelta) );
} }
else // StopSegment being modified is m_SongTiming.m_StopSegments[i] else // StopSegment being modified is m_SongTiming.m_StopSegments[i]
{ {
GetAppropriateTiming().m_StopSegments[i].m_fStopSeconds += fDelta; vector<StopSegment> &s = GetAppropriateTiming().m_StopSegments;
if( GetAppropriateTiming().m_StopSegments[i].m_fStopSeconds <= 0 ) s[i].SetPause(s[i].GetPause() + fDelta);
GetAppropriateTiming().m_StopSegments.erase( GetAppropriateTiming().m_StopSegments.begin()+i, if( s[i].GetPause() <= 0 )
GetAppropriateTiming().m_StopSegments.begin()+i+1); s.erase( s.begin()+i, s.begin()+i+1);
} }
(fDelta>0 ? m_soundValueIncrease : m_soundValueDecrease).Play(); (fDelta>0 ? m_soundValueIncrease : m_soundValueDecrease).Play();
SetDirty( true ); SetDirty( true );
} }
break; 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_UP:
case EDIT_BUTTON_OFFSET_DOWN: case EDIT_BUTTON_OFFSET_DOWN:
{ {
@@ -2091,12 +2045,12 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
{ {
if( g_iDefaultRecordLength.Get() == -1 ) 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 ); m_iStopPlayingAt = max( m_iStartPlayingAt, m_NoteDataEdit.GetLastRow() + 1 );
} }
else 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() ); m_iStopPlayingAt = m_iStartPlayingAt + BeatToNoteRow( g_iDefaultRecordLength.Get() );
} }
@@ -2113,7 +2067,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
} }
break; break;
case EDIT_BUTTON_RECORD_FROM_CURSOR: 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() ); m_iStopPlayingAt = max( m_iStartPlayingAt, m_NoteDataEdit.GetLastRow() );
TransitionEditState( STATE_RECORDING ); TransitionEditState( STATE_RECORDING );
break; break;
@@ -2324,7 +2278,7 @@ void ScreenEdit::InputPlay( const InputEventPlus &input, EditButton EditB )
{ {
case EDIT_BUTTON_RETURN_TO_EDIT: case EDIT_BUTTON_RETURN_TO_EDIT:
/* When exiting play mode manually, leave the cursor where it is. */ /* 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 ); TransitionEditState( STATE_EDITING );
break; break;
case EDIT_BUTTON_OFFSET_UP: case EDIT_BUTTON_OFFSET_UP:
@@ -2395,17 +2349,21 @@ void ScreenEdit::TransitionEditState( EditState em )
{ {
case STATE_EDITING: case STATE_EDITING:
// If exiting EDIT mode, save the cursor position. // 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; break;
case STATE_PLAYING: case STATE_PLAYING:
AdjustSync::HandleSongEnd(); AdjustSync::HandleSongEnd();
if (!GAMESTATE->m_bIsUsingStepTiming)
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = backupStepTiming;
if( AdjustSync::IsSyncDataChanged() ) if( AdjustSync::IsSyncDataChanged() )
ScreenSaveSync::PromptSaveSync(); ScreenSaveSync::PromptSaveSync();
break; break;
case STATE_RECORDING: case STATE_RECORDING:
SetDirty( true ); SetDirty( true );
if (!GAMESTATE->m_bIsUsingStepTiming)
GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = backupStepTiming;
SaveUndo(); SaveUndo();
// delete old TapNotes in the range // delete old TapNotes in the range
@@ -2457,6 +2415,12 @@ void ScreenEdit::TransitionEditState( EditState em )
GAMESTATE->m_bGameplayLeadIn.Set( false ); 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. */ /* Reset the note skin, in case preferences have changed. */
// XXX // XXX
// GAMESTATE->ResetNoteSkins(); // GAMESTATE->ResetNoteSkins();
@@ -2555,7 +2519,7 @@ void ScreenEdit::ScrollTo( float fDestinationBeat )
CLAMP( fDestinationBeat, 0, GetMaximumBeatForMoving() ); CLAMP( fDestinationBeat, 0, GetMaximumBeatForMoving() );
// Don't play the sound and do the hold note logic below if our position didn't change. // 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 ) if( fOriginalBeat == fDestinationBeat )
return; return;
@@ -3192,6 +3156,15 @@ TimingData & ScreenEdit::GetAppropriateTiming() const
return m_pSong->m_SongTiming; 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) inline void ScreenEdit::SetBeat(float fBeat)
{ {
if( !GAMESTATE->m_bIsUsingStepTiming ) 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_current_beat:
case paste_at_begin_marker: case paste_at_begin_marker:
{ {
// TODO: Song/Step Timing checks?
int iDestFirstRow = -1; int iDestFirstRow = -1;
switch( c ) switch( c )
{ {
DEFAULT_FAIL( c ); DEFAULT_FAIL( c );
case paste_at_current_beat: case paste_at_current_beat:
iDestFirstRow = BeatToNoteRow( GAMESTATE->m_pPlayerState[PLAYER_1]->m_Position.m_fSongBeat ); iDestFirstRow = BeatToNoteRow( GetAppropriatePosition().m_fSongBeat );
break; break;
case paste_at_begin_marker: case paste_at_begin_marker:
ASSERT( m_NoteFieldEdit.m_iBeginMarker!=-1 ); ASSERT( m_NoteFieldEdit.m_iBeginMarker!=-1 );
@@ -4023,7 +3994,7 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice
ScreenTextEntry::TextEntry( ScreenTextEntry::TextEntry(
SM_BackFromScrollChange, SM_BackFromScrollChange,
ENTER_SCROLL_VALUE, ENTER_SCROLL_VALUE,
ssprintf( "%.5f", GetAppropriateTiming().GetScrollSegmentAtBeat( GetBeat() ).m_fPercent ), ssprintf( "%.5f", GetAppropriateTiming().GetScrollSegmentAtBeat( GetBeat() ).GetRatio() ),
10 10
); );
break; break;
@@ -4316,7 +4287,7 @@ float ScreenEdit::GetMaximumBeatForNewNote() const
* mid-measure, and it's odd to have movement capped to these weird * mid-measure, and it's odd to have movement capped to these weird
* beats. */ * beats. */
TimingData &songTiming = GAMESTATE->m_pCurSong->m_SongTiming; 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(); int beatsPerMeasure = songTiming.GetTimeSignatureSegmentAtBeat( playerBeat ).GetNum();
fEndBeat += beatsPerMeasure; fEndBeat += beatsPerMeasure;
fEndBeat = ftruncf( fEndBeat, (float)beatsPerMeasure ); fEndBeat = ftruncf( fEndBeat, (float)beatsPerMeasure );
+11
View File
@@ -251,6 +251,13 @@ protected:
BitmapText m_textInputTips; 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. */ /** @brief The current TapNote that would be inserted. */
TapNote m_selectedTap; TapNote m_selectedTap;
@@ -580,6 +587,10 @@ private:
* @brief Retrieve the appropriate TimingData based on GAMESTATE. * @brief Retrieve the appropriate TimingData based on GAMESTATE.
* @return the proper TimingData. */ * @return the proper TimingData. */
TimingData & GetAppropriateTiming() const; TimingData & GetAppropriateTiming() const;
/**
* @brief Retrieve the appropriate SongPosition data based on GAMESTATE.
* @return the proper SongPosition. */
SongPosition & GetAppropriatePosition() const;
void SetBeat(float fBeat); void SetBeat(float fBeat);
float GetBeat(); float GetBeat();
int GetRow(); int GetRow();
+1 -1
View File
@@ -41,7 +41,7 @@
* @brief The internal version of the cache for StepMania. * @brief The internal version of the cache for StepMania.
* *
* Increment this value to invalidate the current cache. */ * 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? */ /** @brief How long does a song sample last by default? */
const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f; const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f;
-3
View File
@@ -287,9 +287,6 @@ public:
/** @brief The Song's TimingData. */ /** @brief The Song's TimingData. */
TimingData m_SongTiming; TimingData m_SongTiming;
/** @brief The initial offset of a song. */
float m_fBeat0OffsetInSeconds;
typedef vector<BackgroundChange> VBackgroundChange; typedef vector<BackgroundChange> VBackgroundChange;
private: private:
/** /**
+4 -2
View File
@@ -776,9 +776,7 @@ void SongManager::InitCoursesFromDisk( LoadingWindow *ld )
void SongManager::InitAutogenCourses() void SongManager::InitAutogenCourses()
{ {
//
// Create group courses for Endless and Nonstop // Create group courses for Endless and Nonstop
//
vector<RString> saGroupNames; vector<RString> saGroupNames;
this->GetSongGroupNames( saGroupNames ); this->GetSongGroupNames( saGroupNames );
Course* pCourse; Course* pCourse;
@@ -789,10 +787,12 @@ void SongManager::InitAutogenCourses()
// Generate random courses from each group. // Generate random courses from each group.
pCourse = new Course; pCourse = new Course;
CourseUtil::AutogenEndlessFromGroup( sGroupName, Difficulty_Medium, *pCourse ); CourseUtil::AutogenEndlessFromGroup( sGroupName, Difficulty_Medium, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse ); m_pCourses.push_back( pCourse );
pCourse = new Course; pCourse = new Course;
CourseUtil::AutogenNonstopFromGroup( sGroupName, Difficulty_Medium, *pCourse ); CourseUtil::AutogenNonstopFromGroup( sGroupName, Difficulty_Medium, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse ); m_pCourses.push_back( pCourse );
} }
@@ -801,6 +801,7 @@ void SongManager::InitAutogenCourses()
// Generate "All Songs" endless course. // Generate "All Songs" endless course.
pCourse = new Course; pCourse = new Course;
CourseUtil::AutogenEndlessFromGroup( "", Difficulty_Medium, *pCourse ); CourseUtil::AutogenEndlessFromGroup( "", Difficulty_Medium, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse ); m_pCourses.push_back( pCourse );
/* Generate Oni courses from artists. Only create courses if we have at least /* Generate Oni courses from artists. Only create courses if we have at least
@@ -836,6 +837,7 @@ void SongManager::InitAutogenCourses()
{ {
pCourse = new Course; pCourse = new Course;
CourseUtil::AutogenOniFromArtist( sCurArtist, sCurArtistTranslit, aSongs, Difficulty_Hard, *pCourse ); CourseUtil::AutogenOniFromArtist( sCurArtist, sCurArtistTranslit, aSongs, Difficulty_Hard, *pCourse );
pCourse->m_sScripter = "Autogen";
m_pCourses.push_back( pCourse ); m_pCourses.push_back( pCourse );
} }
+35 -11
View File
@@ -76,7 +76,7 @@
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental> <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">$(TargetDir)</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">$(TargetDir)</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">$(SolutionDir)/build-$(SolutionName)/$(ProjectName)/$(Configuration)\</IntDir> <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> <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='FastDebug|Win32'">true</GenerateManifest>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">$(SolutionDir)$(Configuration)\</OutDir> <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">$(Configuration)\</IntDir> <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">$(Configuration)\</IntDir>
@@ -93,10 +93,18 @@
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet> <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies 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)'=='Debug|Win32'">StepMania</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='FastDebug|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-SSE2|Win32'">StepMania</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|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> </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEvent> <PreBuildEvent>
@@ -130,6 +138,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <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> </ClCompile>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -151,6 +163,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<RandomizedBaseAddress>false</RandomizedBaseAddress> <RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention> <DataExecutionPrevention>
</DataExecutionPrevention> </DataExecutionPrevention>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania-debug.vdi"</Command> <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> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINDOWS;RELEASE;GLEW_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<MinimalRebuild>false</MinimalRebuild> <MinimalRebuild>false</MinimalRebuild>
<ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
</ExceptionHandling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking> <FunctionLevelLinking>false</FunctionLevelLinking>
@@ -195,6 +207,8 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<WholeProgramOptimization>true</WholeProgramOptimization>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -213,8 +227,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<MapExports>true</MapExports> <MapExports>true</MapExports>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress> <RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention> <DataExecutionPrevention>true</DataExecutionPrevention>
</DataExecutionPrevention> <LinkErrorReporting>SendErrorReport</LinkErrorReporting>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania.vdi" <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> <TypeLibraryName>../StepMania.tlb</TypeLibraryName>
</Midl> </Midl>
<ClCompile> <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> <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> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINDOWS;DEBUG;GLEW_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
</ExceptionHandling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks> <BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
@@ -251,8 +266,13 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
</BrowseInformation> </BrowseInformation>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <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> </ClCompile>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -260,10 +280,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
</ResourceCompile> </ResourceCompile>
<Link> <Link>
<AdditionalOptions>/MACHINE:I386 "$(IntDir)verstub.obj" %(AdditionalOptions)</AdditionalOptions> <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> <OutputFile>../Program/StepMania-fastdebug.exe</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner> <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> <IgnoreSpecificDefaultLibraries>wininet.lib;msimg32.lib;libci.lib;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)StepMania.pdb</ProgramDatabaseFile> <ProgramDatabaseFile>$(IntDir)StepMania.pdb</ProgramDatabaseFile>
@@ -274,6 +294,8 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<RandomizedBaseAddress>false</RandomizedBaseAddress> <RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention> <DataExecutionPrevention>
</DataExecutionPrevention> </DataExecutionPrevention>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName).map" "$(TargetDir)\StepMania-fastdebug.vdi"</Command> <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> <SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> <DisableSpecificWarnings>4063;4100;4127;4201;4244;4275;4355;4505;4512;4702;4786;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<WholeProgramOptimization>false</WholeProgramOptimization>
</ClCompile> </ClCompile>
<ResourceCompile> <ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -340,6 +363,7 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)</Command>
<DataExecutionPrevention> <DataExecutionPrevention>
</DataExecutionPrevention> </DataExecutionPrevention>
<TargetMachine>NotSet</TargetMachine> <TargetMachine>NotSet</TargetMachine>
<LinkErrorReporting>SendErrorReport</LinkErrorReporting>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>archutils\Win32\mapconv "$(IntDir)$(TargetName)-SSE2.map" "$(TargetDir)\StepMania-SSE2.vdi" <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; unsigned i;
for( i=0; i<m_StopSegments.size(); 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; break;
if( i == m_StopSegments.size() ) // there is no Stop/Delay Segment at the current beat 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 ) if( fSeconds > 0 )
{ {
m_StopSegments[i].m_fStopSeconds = fSeconds; m_StopSegments[i].SetPause(fSeconds);
} }
else else
m_StopSegments.erase( m_StopSegments.begin()+i, m_StopSegments.begin()+i+1 ); 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; unsigned i;
for( i = 0; i < m_ScrollSegments.size(); i++ ) for( i = 0; i < m_ScrollSegments.size(); i++ )
{ {
if( m_ScrollSegments[i].m_iStartRow >= iRow) if( m_ScrollSegments[i].GetRow() >= iRow)
break; 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. // 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) ); AddScrollSegment( ScrollSegment(iRow, fPercent) );
} }
else else
{ {
// The others aren't compared: only the mod itself matters. // 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.erase( m_ScrollSegments.begin()+i,
m_ScrollSegments.begin()+i+1 ); m_ScrollSegments.begin()+i+1 );
else 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++ ) 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; return 0;
@@ -434,7 +435,7 @@ unsigned short TimingData::GetSpeedModeAtRow( int iRow )
float TimingData::GetScrollAtRow( int iRow ) float TimingData::GetScrollAtRow( int iRow )
{ {
return GetScrollSegmentAtRow( iRow ).m_fPercent; return GetScrollSegmentAtRow( iRow ).GetRatio();
} }
float TimingData::GetFakeAtRow( int iFakeRow ) const 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++ ) for( i=0; i<m_StopSegments.size()-1; i++ )
{ {
const StopSegment& s = m_StopSegments[i+1]; const StopSegment& s = m_StopSegments[i+1];
if( s.m_iStartRow > iNoteRow && s.m_bDelay == bDelay ) if( s.GetRow() > iNoteRow && s.GetDelay() == bDelay )
break; break;
} }
return static_cast<int>(i); return static_cast<int>(i);
@@ -628,7 +629,7 @@ int TimingData::GetScrollSegmentIndexAtRow( int iRow ) const
{ {
unsigned i; unsigned i;
for (i=0; i < m_ScrollSegments.size() - 1; 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; break;
return static_cast<int>(i); return static_cast<int>(i);
} }
@@ -665,7 +666,7 @@ ScrollSegment& TimingData::GetScrollSegmentAtRow( int iRow )
{ {
unsigned i; unsigned i;
for( i=0; i<m_ScrollSegments.size()-1; 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; break;
return m_ScrollSegments[i]; return m_ScrollSegments[i];
} }
@@ -839,9 +840,9 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float
iEventRow = itBPMS->GetRow(); iEventRow = itBPMS->GetRow();
iEventType = FOUND_BPM_CHANGE; 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; iEventType = FOUND_STOP;
} }
if( itWS != m_WarpSegments.end() && itWS->GetRow() < iEventRow ) if( itWS != m_WarpSegments.end() && itWS->GetRow() < iEventRow )
@@ -871,14 +872,14 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float
break; break;
case FOUND_STOP: case FOUND_STOP:
{ {
fTimeToNextEvent = itSS->m_fStopSeconds; fTimeToNextEvent = itSS->GetPause();
fNextEventTime = fLastTime + fTimeToNextEvent; fNextEventTime = fLastTime + fTimeToNextEvent;
const bool bIsDelay = itSS->m_bDelay; const bool bIsDelay = itSS->GetDelay();
if ( fElapsedTime < fNextEventTime ) if ( fElapsedTime < fNextEventTime )
{ {
bFreezeOut = !bIsDelay; bFreezeOut = !bIsDelay;
bDelayOut = bIsDelay; bDelayOut = bIsDelay;
fBeatOut = NoteRowToBeat( itSS->m_iStartRow ); fBeatOut = itSS->GetBeat();
fBPSOut = fBPS; fBPSOut = fBPS;
return; return;
} }
@@ -941,9 +942,9 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
iEventRow = itBPMS->GetRow(); iEventRow = itBPMS->GetRow();
iEventType = FOUND_BPM_CHANGE; 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; iEventType = FOUND_STOP;
} }
if( BeatToNoteRow(fBeat) < iEventRow ) if( BeatToNoteRow(fBeat) < iEventRow )
@@ -951,9 +952,9 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
iEventRow = BeatToNoteRow(fBeat); iEventRow = BeatToNoteRow(fBeat);
iEventType = FOUND_MARKER; 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; iEventType = FOUND_STOP;
} }
if( itWS != m_WarpSegments.end() && itWS->GetRow() < iEventRow ) if( itWS != m_WarpSegments.end() && itWS->GetRow() < iEventRow )
@@ -974,7 +975,7 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const
itBPMS ++; itBPMS ++;
break; break;
case FOUND_STOP: case FOUND_STOP:
fTimeToNextEvent = itSS->m_fStopSeconds; fTimeToNextEvent = itSS->GetPause();
fNextEventTime = fLastTime + fTimeToNextEvent; fNextEventTime = fLastTime + fTimeToNextEvent;
fLastTime = fNextEventTime; fLastTime = fNextEventTime;
itSS ++; itSS ++;
@@ -1006,14 +1007,14 @@ float TimingData::GetDisplayedBeat( float fBeat ) const
float fOutBeat = 0.0; float fOutBeat = 0.0;
for( ; it != end; it++ ) 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; break;
} }
else else
{ {
fOutBeat += ( NoteRowToBeat((it+1)->m_iStartRow) - NoteRowToBeat((it)->m_iStartRow) ) * (it)->m_fPercent; fOutBeat += ( (it+1)->GetBeat() - (it)->GetBeat() ) * (it)->GetRatio();
} }
} }
return fOutBeat; 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++ ) for( unsigned i = 0; i < m_StopSegments.size(); i++ )
{ {
StopSegment &s = m_StopSegments[i]; StopSegment &s = m_StopSegments[i];
const int iSegStartRow = s.m_iStartRow; const int iSegStartRow = s.GetRow();
if( iSegStartRow < iStartIndex ) if( iSegStartRow < iStartIndex )
continue; continue;
else if( iSegStartRow > iEndIndex ) else if( iSegStartRow > iEndIndex )
s.m_iStartRow += lrintf((iEndIndex - iStartIndex) * (fScale - 1)); s.SetRow(s.GetRow() + lrintf((iEndIndex - iStartIndex) * (fScale - 1)));
else 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++ ) 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++ ) for( unsigned i = 0; i < m_ScrollSegments.size(); i++ )
{ {
ScrollSegment &s = m_ScrollSegments[i]; ScrollSegment &s = m_ScrollSegments[i];
const int iSegStartRow = s.m_iStartRow; const int iSegStartRow = s.GetRow();
if( iSegStartRow < iStartIndex ) if( iSegStartRow < iStartIndex )
continue; continue;
else if( iSegStartRow > iEndIndex ) else if( iSegStartRow > iEndIndex )
s.m_iStartRow += lrintf((iEndIndex - iStartIndex) * (fScale - 1)); s.SetRow(s.GetRow() + lrintf((iEndIndex - iStartIndex) * (fScale - 1)));
else else
s.m_iStartRow = lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex; s.SetRow(lrintf((iSegStartRow - iStartIndex) * fScale) + iStartIndex);
} }
// adjust BPM changes to preserve timing // 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++ ) for( unsigned i = 0; i < m_StopSegments.size(); i++ )
{ {
StopSegment &stop = m_StopSegments[i]; StopSegment &stop = m_StopSegments[i];
if( stop.m_iStartRow < iStartRow ) if( stop.GetRow() < iStartRow )
continue; continue;
stop.m_iStartRow += iRowsToAdd; stop.SetRow(stop.GetRow() + iRowsToAdd);
} }
for( unsigned i = 0; i < m_WarpSegments.size(); i++ ) 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++ ) for( unsigned i = 0; i < m_ScrollSegments.size(); i++ )
{ {
ScrollSegment &scrl = m_ScrollSegments[i]; ScrollSegment &scrl = m_ScrollSegments[i];
if( scrl.m_iStartRow < iStartRow ) if( scrl.GetRow() < iStartRow )
continue; continue;
scrl.m_iStartRow += iRowsToAdd; scrl.SetRow(scrl.GetRow() + iRowsToAdd);
} }
if( iStartRow == 0 ) if( iStartRow == 0 )
@@ -1311,13 +1312,13 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
for( unsigned i = 0; i < m_StopSegments.size(); i++ ) for( unsigned i = 0; i < m_StopSegments.size(); i++ )
{ {
StopSegment &stop = m_StopSegments[i]; StopSegment &stop = m_StopSegments[i];
int keyRow = stop.GetRow();
// Before deleted region: // Before deleted region:
if( stop.m_iStartRow < iStartRow ) if( keyRow < iStartRow )
continue; continue;
// Inside deleted region: // 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 ); m_StopSegments.erase( m_StopSegments.begin()+i, m_StopSegments.begin()+i+1 );
--i; --i;
@@ -1325,7 +1326,7 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
} }
// After deleted region: // After deleted region:
stop.m_iStartRow -= iRowsToDelete; stop.SetRow(keyRow - iRowsToDelete);
} }
for( unsigned i = 0; i < m_WarpSegments.size(); i++ ) 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++ ) for( unsigned i = 0; i < m_ScrollSegments.size(); i++ )
{ {
ScrollSegment &scrl = m_ScrollSegments[i]; ScrollSegment &scrl = m_ScrollSegments[i];
int keyRow = scrl.GetRow();
if( scrl.m_iStartRow < iStartRow ) if( keyRow < iStartRow )
continue; continue;
if( scrl.m_iStartRow < iStartRow+iRowsToDelete ) if( keyRow < iStartRow+iRowsToDelete )
{ {
m_ScrollSegments.erase( m_ScrollSegments.begin()+i, m_ScrollSegments.begin()+i+1 ); m_ScrollSegments.erase( m_ScrollSegments.begin()+i, m_ScrollSegments.begin()+i+1 );
--i; --i;
continue; continue;
} }
scrl.m_iStartRow -= iRowsToDelete; scrl.SetRow(keyRow - iRowsToDelete);
} }
this->SetBPMAtRow( iStartRow, fNewBPM ); this->SetBPMAtRow( iStartRow, fNewBPM );
@@ -1479,8 +1480,13 @@ void TimingData::DeleteRows( int iStartRow, int iRowsToDelete )
float TimingData::GetDisplayedSpeedPercent( float fSongBeat, float fMusicSeconds ) const 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 ) if( m_SpeedSegments.size() == 0 )
return 1.0; return 1.0f;
const int index = GetSpeedSegmentIndexAtBeat( fSongBeat ); const int index = GetSpeedSegmentIndexAtBeat( fSongBeat );
@@ -1607,12 +1613,12 @@ bool TimingData::HasFakes() const
bool TimingData::HasSpeedChanges() const bool TimingData::HasSpeedChanges() const
{ {
return m_SpeedSegments.size()>1; return m_SpeedSegments.size()>1 || m_SpeedSegments[0].GetRatio() != 1;
} }
bool TimingData::HasScrollChanges() const 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 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 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 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 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 ) static int GetStops( T* p, lua_State *L )
{ {
vector<RString> vStops; vector<RString> vStops;
FOREACH_CONST( StopSegment, p->m_StopSegments, seg ) FOREACH_CONST( StopSegment, p->m_StopSegments, seg )
{ {
const float fStartRow = NoteRowToBeat(seg->m_iStartRow); const float fStartBeat = seg->GetBeat();
const float fStopLength = seg->m_fStopSeconds; const float fStopLength = seg->GetPause();
if(!seg->m_bDelay) if(!seg->GetDelay())
vStops.push_back( ssprintf("%f=%f", fStartRow, fStopLength) ); vStops.push_back( ssprintf("%f=%f", fStartBeat, fStopLength) );
} }
LuaHelpers::CreateTableFromArray(vStops, L); LuaHelpers::CreateTableFromArray(vStops, L);
@@ -1682,10 +1689,10 @@ public:
vector<RString> vDelays; vector<RString> vDelays;
FOREACH_CONST( StopSegment, p->m_StopSegments, seg ) FOREACH_CONST( StopSegment, p->m_StopSegments, seg )
{ {
const float fStartRow = NoteRowToBeat(seg->m_iStartRow); const float fStartBeat = seg->GetBeat();
const float fStopLength = seg->m_fStopSeconds; const float fStopLength = seg->GetPause();
if(seg->m_bDelay) if(seg->GetDelay())
vDelays.push_back( ssprintf("%f=%f", fStartRow, fStopLength) ); vDelays.push_back( ssprintf("%f=%f", fStartBeat, fStopLength) );
} }
LuaHelpers::CreateTableFromArray(vDelays, L); LuaHelpers::CreateTableFromArray(vDelays, L);
@@ -1752,6 +1759,7 @@ public:
ADD_METHOD( HasWarps ); ADD_METHOD( HasWarps );
ADD_METHOD( HasFakes ); ADD_METHOD( HasFakes );
ADD_METHOD( HasSpeedChanges ); ADD_METHOD( HasSpeedChanges );
ADD_METHOD( HasScrollChanges );
ADD_METHOD( GetStops ); ADD_METHOD( GetStops );
ADD_METHOD( GetDelays ); ADD_METHOD( GetDelays );
ADD_METHOD( GetBPMs ); ADD_METHOD( GetBPMs );
-186
View File
@@ -9,192 +9,6 @@ struct lua_State;
/** @brief Compare a TimingData segment's properties with one another. */ /** @brief Compare a TimingData segment's properties with one another. */
#define COMPARE(x) if(x!=other.x) return false; #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. * @brief Holds data for translating beats<->seconds.
*/ */
+45
View File
@@ -234,6 +234,51 @@ bool SpeedSegment::operator<( const SpeedSegment &other ) const
return false; 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 * @file
+145 -8
View File
@@ -65,7 +65,7 @@ template <class DerivedSegment>
struct TimingSegment: public BaseTimingSegment struct TimingSegment: public BaseTimingSegment
{ {
TimingSegment(): BaseTimingSegment() {}; TimingSegment(): BaseTimingSegment(-1) {};
TimingSegment(const DerivedSegment &other): BaseTimingSegment(other) {}; TimingSegment(const DerivedSegment &other): BaseTimingSegment(other) {};
template <typename StartType> template <typename StartType>
@@ -206,14 +206,14 @@ struct WarpSegment : public TimingSegment<WarpSegment>
* It is best to override the values as soon as possible. * It is best to override the values as soon as possible.
*/ */
WarpSegment(): WarpSegment():
TimingSegment<WarpSegment>(), lengthBeats(-1) {}; TimingSegment<WarpSegment>(-1), lengthBeats(-1) {};
/** /**
* @brief Create a copy of another Warp Segment. * @brief Create a copy of another Warp Segment.
* @param other the other warp segment * @param other the other warp segment
*/ */
WarpSegment(const WarpSegment &other): WarpSegment(const WarpSegment &other):
TimingSegment<WarpSegment>(other.GetRow()), TimingSegment<WarpSegment>(other),
lengthBeats(other.GetLength()) {}; lengthBeats(other.GetLength()) {};
/** /**
@@ -265,7 +265,7 @@ struct TickcountSegment : public TimingSegment<TickcountSegment>
* It is best to override the values as soon as possible. * It is best to override the values as soon as possible.
*/ */
TickcountSegment(): TickcountSegment():
TimingSegment<TickcountSegment>(), ticks(4) {}; TimingSegment<TickcountSegment>(-1), ticks(4) {};
/** /**
* @brief Create a copy of another Tickcount Segment. * @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. * It is best to override the values as soon as possible.
*/ */
ComboSegment() : ComboSegment() :
TimingSegment<ComboSegment>(), combo(1) { } TimingSegment<ComboSegment>(-1), combo(1) { }
ComboSegment(const ComboSegment &other) : ComboSegment(const ComboSegment &other) :
TimingSegment<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. * It is best to override the values as soon as possible.
*/ */
LabelSegment() : LabelSegment() :
TimingSegment<LabelSegment>(), label("") { } TimingSegment<LabelSegment>(-1), label("") { }
LabelSegment(const LabelSegment &other) : LabelSegment(const LabelSegment &other) :
TimingSegment<LabelSegment>(other), TimingSegment<LabelSegment>(other),
@@ -500,7 +500,7 @@ struct TimeSignatureSegment : public TimingSegment<TimeSignatureSegment>
* @brief Creates a simple Time Signature Segment with default values. * @brief Creates a simple Time Signature Segment with default values.
*/ */
TimeSignatureSegment(): TimeSignatureSegment():
TimingSegment<TimeSignatureSegment>(), TimingSegment<TimeSignatureSegment>(-1),
numerator(4), denominator(4) { } numerator(4), denominator(4) { }
TimeSignatureSegment(const TimeSignatureSegment &other) : TimeSignatureSegment(const TimeSignatureSegment &other) :
@@ -688,12 +688,149 @@ private:
* *
* 0: beats * 0: beats
* 1: seconds * 1: seconds
* other * other values are undetermined at this time, but we're prepared this way.
*/ */
unsigned short unit; 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 #endif
/** /**
+7 -2
View File
@@ -55,16 +55,21 @@ static RString GetMountDir( const RString &sDirOfExecutable )
void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable ) void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable )
{ {
RString sDir = GetMountDir( sDirOfExecutable ); RString sDir = GetMountDir( sDirOfExecutable );
RString sCommonAppDataDir = SpecialDirs::GetCommonAppDataDir() + PRODUCT_ID;
FILEMAN->Mount( "dir", sDir, "/" ); FILEMAN->Mount( "dir", sDir, "/" );
FILEMAN->Mount( "dir", sCommonAppDataDir, "/" );
FILEMAN->Mount( "dir", sCommonAppDataDir + "/Cache", "/Cache" );
} }
void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable ) void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable )
{ {
RString sAppDataDir = SpecialDirs::GetAppDataDir() + PRODUCT_ID; 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 + "/Logs", "/Logs" );
FILEMAN->Mount( "dir", sAppDataDir + "/Save", "/Save" ); 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 ); FILEMAN->Mount( "dir", sAppDataDir + "/Packages", "/" + SpecialFiles::USER_PACKAGES_DIR );
} }
+15
View File
@@ -18,6 +18,21 @@ RString SpecialDirs::GetAppDataDir()
return GetSpecialFolderPath( CSIDL_APPDATA ); 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() RString SpecialDirs::GetDesktopDir()
{ {
return GetSpecialFolderPath( CSIDL_DESKTOP ); return GetSpecialFolderPath( CSIDL_DESKTOP );
+3
View File
@@ -4,6 +4,9 @@
namespace SpecialDirs namespace SpecialDirs
{ {
RString GetAppDataDir(); RString GetAppDataDir();
RString GetLocalAppDataDir();
RString GetCommonAppDataDir();
RString GetPicturesDir();
RString GetDesktopDir(); RString GetDesktopDir();
}; };
+7 -7
View File
@@ -180,8 +180,8 @@ IDI_ICON1 ICON "smzip.ico"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1 FILEVERSION 5,0,0,2
PRODUCTVERSION 1,2,4,1 PRODUCTVERSION 5,0,0,2
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@@ -196,14 +196,14 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "CompanyName", "the spinal shark collective\nhttp://ssc.ajworld.net/" VALUE "CompanyName", "StepMania Team\nhttp://www.stepmania.com/"
VALUE "FileDescription", "sm-ssc" VALUE "FileDescription", "StepMania"
VALUE "FileVersion", "1, 2, 4, 0" VALUE "FileVersion", "5, 0, 0, 2"
VALUE "InternalName", "sm-ssc" VALUE "InternalName", "sm-ssc"
VALUE "LegalCopyright", "Copyright © 2001-2011" VALUE "LegalCopyright", "Copyright © 2001-2011"
VALUE "OriginalFilename", "StepMania.exe" VALUE "OriginalFilename", "StepMania.exe"
VALUE "ProductName", "sm-ssc" VALUE "ProductName", "StepMania"
VALUE "ProductVersion", "1, 2, 4, 0" VALUE "ProductVersion", "5, 0, 0, 2"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
+13 -15
View File
@@ -1,21 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 8.00 Microsoft Visual Studio Solution File, Format Version 11.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapconv", "verinc.vcproj", "{46C1AA00-F02C-4E0A-8150-542C9728474C}" # Visual Studio 2010
ProjectSection(ProjectDependencies) = postProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "verinc", "verinc.vcxproj", "{46C1AA00-F02C-4E0A-8150-542C9728474C}"
EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfiguration) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug = Debug Debug|Win32 = Debug|Win32
Release = Release Release|Win32 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug.ActiveCfg = Debug|Win32 {46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug|Win32.ActiveCfg = Debug|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug.Build.0 = Debug|Win32 {46C1AA00-F02C-4E0A-8150-542C9728474C}.Debug|Win32.Build.0 = Debug|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Release.ActiveCfg = Release|Win32 {46C1AA00-F02C-4E0A-8150-542C9728474C}.Release|Win32.ActiveCfg = Release|Win32
{46C1AA00-F02C-4E0A-8150-542C9728474C}.Release.Build.0 = Release|Win32 {46C1AA00-F02C-4E0A-8150-542C9728474C}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(SolutionProperties) = preSolution
EndGlobalSection HideSolutionNode = FALSE
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal
@@ -95,6 +95,7 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level2</WarningLevel> <WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -95,6 +95,7 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level2</WarningLevel> <WarningLevel>Level2</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat> <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">