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