renamed
- sm-ssc
_fallbackTheme
defaultTheme
descriptionCell
@@ -524,7 +512,6 @@
- sm-ssc
descriptionCell
diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml
index 135d345578..b0bd9a2393 100644
--- a/Docs/Luadoc/LuaDocumentation.xml
+++ b/Docs/Luadoc/LuaDocumentation.xml
@@ -50,7 +50,7 @@
CLAMP is an all-female Japanese mangaka group that formed in the mid 1980s. Erm, I mean... Clamps fValue between fLow and fHigh.
-
+
Closes any connection to an online server.
@@ -110,7 +110,7 @@
Returns the current Life Difficulty.
-
+
Returns a string representing the name of the operating system being used. (e.g. "Windows", "Linux", "Mac, "Unknown")
@@ -119,7 +119,7 @@
[02 Utilities.lua] Returns a path to a random song background.
-
+
Returns the name of the currently connected server.
@@ -251,22 +251,22 @@
Returns the current second.
-
+
Converts fSecs to Minutes:Seconds:Milliseconds format using two digits for each section.
-
+
Converts fSecs to Minutes:Seconds.Milliseconds format using two digits for each section except Minutes (uses 1).
-
+
Converts fSecs to Minutes:Seconds format.
Converts fSecs to Minutes:Seconds.Milliseconds format.
-
+
Converts fSecs to Minutes:Seconds.Milliseconds format using two digits for each section.
-
+
Converts fSecs to Minutes:Seconds.Milliseconds format using two digits for each section except Milliseconds (uses 3).
@@ -314,7 +314,7 @@
[00 init.lua] Alias for .
-
+
Returns a string with characters escaped for URLs. (e.g. a space becomes '%20')
@@ -490,13 +490,13 @@
Plays the commands that follow at an accelerated rate (fRate * fRate), where fRate is in seconds.
-
+
Adds rot to the Actor's current x rotation.
-
+
Adds rot to the Actor's current y rotation.
-
+
Adds rot to the Actor's current z rotation.
@@ -532,7 +532,7 @@
Sets the Actor's base Z rotation to rot.
-
+
Sets the Actor's base zoom to zoom.
@@ -541,7 +541,7 @@
Sets the Actor's base Y zoom to zoom.
-
+
Sets the Actor's base Z zoom to zoom.
@@ -667,16 +667,16 @@
Returns the Actor's base X zoom value.
-
+
Returns the Actor's base Y zoom value.
-
+
Returns the Actor's base Z zoom value.
Returns true if the Actor has a command named sCmdName.
-
+
Returns the Actor's current diffuse color.
@@ -688,10 +688,10 @@
Returns the Actor's current effect magnitude as three floats (not one; I hate Lua.xsd).
-
+
Returns the Actor's current glow color.
-
+
Returns the Actor's horizontal alignment as a number in the range 0..1.
@@ -703,13 +703,13 @@
Returns the Actor's current height.
-
+
Returns the Actor's current X rotation.
Returns the Actor's current Y rotation.
-
+
Returns the Actor's current Z rotation.
@@ -718,7 +718,7 @@
Returns how much time is remaining for the current tween.
-
+
Returns the Actor's vertical alignment as a number in the range 0..1.
@@ -733,7 +733,7 @@
Sets the Actor's glow color.
-
+
@@ -838,7 +838,7 @@
Skews the Actor on the x axis by fAmount.
-
+
Skews the Actor on the y axis by fAmount.
@@ -902,12 +902,18 @@
[02 Actor.lua]
+
+ [02 Actor.lua] Centers an Actor on the screen. (equivalent to x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y)
+
[03 ProductivityHelpers.lua] Centers an Actor on the X axis. (equivalent to x,SCREEN_CENTER_X)
[03 ProductivityHelpers.lua] Centers an Actor on the y axis. (equivalent to y,SCREEN_CENTER_Y)
+
+ [02 Actor.lua] Stretches an Actor to cover the screen. (equivalent to stretchto,0,0,SCREEN_WIDTH,SCREEN_HEIGHT)
+
[03 ProductivityHelpers.lua] A customized version of pulse that is more appealing for on-beat effects.
@@ -964,10 +970,10 @@
Runs the commands in cmds on the ActorFrame's leaves.
-
+
Sets the ActorFrame's ambient light color to c.
-
+
Sets the ActorFrame's diffuse light color to c.
@@ -979,10 +985,10 @@
Sets the field of view for the ActorFrame.
-
+
Currently unimplemented since it does not handle errors correctly. Arguments must be passed in as a table.
-
+
Sets the ActorFrame's specular light color to c.
@@ -1018,16 +1024,16 @@
-
+
Returns the scroller's current item.
-
+
Returns the item the scroller's going to.
-
+
Returns how long it will take for the scroller to completely scroll through all its items.
-
+
Returns the number of items in the ActorScroller.
@@ -1069,7 +1075,7 @@
Sets the scroller's mask to a Quad that is fWidth by fHeight pixels.
-
+
Sets the scroller to draw fNumItems items.
@@ -1113,7 +1119,7 @@
Loads the sound at sPath.
-
+
Pauses or unpauses the sound based on bPause.
@@ -1122,29 +1128,29 @@
[02 Sound.lua] Plays the sound on the given player's side. You must set SupportPan = true on load.
-
+
Stops the sound.
-
+
Returns true if Announcer sAnnouncer exists.
-
+
Returns a table of installed announcers.
-
+
Returns the current announcer's name.
-
+
Sets the announcer to sNewAnnouncer.
-
+
Returns true if the Banner is currently scrolling.
-
+
@@ -1180,7 +1186,7 @@
See .
-
+
@@ -1241,7 +1247,7 @@
Sets the stroke color to c.
-
+
If the text is glowing, specify if just the stroke layer, just the inner layer, or both are affected by the glow.
@@ -1255,42 +1261,45 @@
-
+
Returns the text that is currently set at the exact moment you call it. This is likely only going to be useful in an Update command.
-
+
Sets the BPMDisplay from the specified Course.
Sets the BPMDisplay from the GameState.
-
+
Sets the BPMDisplay from the specified Song.
+
+ Sets the BPMDisplay from the specified Steps.
+
Returns the path to the character's card graphic.
-
+
Returns this character's directory.
-
+
Returns this character's ID.
-
+
Returns the path of the dancing animation of this character.
-
+
Returns the character's display name.
Returns the path to the character's icon.
-
+
Returns the path of the model of this character.
-
+
Returns the path of the rest animation of this character.
@@ -1299,18 +1308,18 @@
Returns the path to the character's ScreenStage icon.
-
+
Returns the path of the warm-up animation of this character.
-
+
Returns a table of all characters installed.
Return the corresponding to sID.
-
+
Returns a random character.
@@ -1334,16 +1343,16 @@
Returns a table of all the Trails in the Course.
-
+
Returns the path to the Course's background.
Returns the path to the Course's banner.
-
+
Returns the Course's directory.
-
+
Returns a table of CourseEntry items.
@@ -1367,7 +1376,7 @@
Returns the Course's . (Returns PlayMode in sm-ssc; integer in SM4)
-
+
Returns the name of the person who scripted the Course.
@@ -1376,10 +1385,10 @@
Returns the full transliterated title of the Course.
-
+
Returns true if the Course has a background.
-
+
Returns true if the Course has a banner.
@@ -1388,7 +1397,7 @@
Returns true if the Course has timed modifiers.
-
+
Returns true if the Course is an edit.
@@ -1397,10 +1406,10 @@
Returns true if the Course is Endless.
-
+
Returns true if the Course is Nonstop.
-
+
Returns true if the Course is Oni.
@@ -1414,36 +1423,36 @@
Returns the Song that this CourseEntry corresponds to.
-
+
Returns the number of lives gained after completing the song.
-
+
Returns the number of seconds gained after completing the song.
-
+
Returns any stage (non-timed) modifiers.
-
+
Returns the number of modifier changes in this CourseEntry.
-
+
Returns a comma-delimited string representing various facts about the CourseEntry.
-
+
Returns true if this CourseEntry is a fixed song.
-
+
Returns true if this CourseEntry is secret.
-
+
Returns the MD5 hash for the file at sPath.
-
+
Returns the MD5 hash for s.
-
+
Returns the SHA-1 hash for s.
@@ -1467,7 +1476,7 @@
-
+
Returns the index of the last banner loaded.
@@ -1491,10 +1500,10 @@
-
+
Returns any Character associated with this item (or nil if there isn't one).
-
+
Returns any Course that may have been set.
@@ -1509,7 +1518,7 @@
Returns any Profile ID that may have been set.
-
+
Returns any screen that may have been set as a string.
@@ -1518,7 +1527,7 @@
Returns the name of any song group that may have been set.
-
+
Returns any Steps that may have been set.
@@ -1527,10 +1536,10 @@
Returns the display text.
-
+
Returns any Trail that may have been set.
-
+
Returns any Url that may have been set.
@@ -1538,7 +1547,7 @@
Return the first for the specified game.
-
+
Returns true if any noteskins exist for the specified Game s.
@@ -1554,7 +1563,7 @@
to the right. -->
Return the sound balance for pn.
-
+
Plays a sound from the current announcer.
@@ -1569,16 +1578,19 @@
The second argument is optional. Apply the GameCommand represented by sCommand
for pn, if given. See .
+
+ Removes any stage modifiers that are illegal for course play.
+
Returns true if enough credits have been inserted to join.
-
+
fishpolk.mid; See also: Rise of the Triad
Returns the environment table. See .
-
+
Returns the current for the specified .
@@ -1597,7 +1609,7 @@
The s in a are numbered sequentially
starting from 0. Return the number of the current .
-
+
Return the current number of seconds that have passed in the current song. This value can be negative.
@@ -1663,7 +1675,7 @@
Return true if the gameplay lead in is enabled. If
false, gameplay begins immediately.
-
+
Return the hardest of the
currently selected steps by all players. For example, if player 1 has
selected Hard steps and player 2 has selected Medium steps, Hard will
@@ -1672,12 +1684,18 @@
Returns an array of s corresponding to Human players.
+
+ Returns the index of the next song in the course.
+
Returns the master player number.
Returns true if the game is Multiplayer.
+
+ Returns the PlayerState for the specified MultiPlayer.
+
Returns the number of active multiplayer NoteFields.
@@ -1714,21 +1732,27 @@
Returns the current Premium.
-
-
- Returns the current beat of the song.
+
+
+ Kind of does what it says on the tin.
+
+
+ [01 compat.lua] Returns the current beat of the song.
+
+
+ [01 compat.lua] Returns the current beat of the song without an offset.
Returns the current visible beat of the song.
-
- Returns the song's current beats per second.
+
+ [01 compat.lua] Returns the song's current beats per second.
-
- Returns true if a delay is active in the song.
+
+ [01 compat.lua] Returns true if a delay is active in the song.
-
- Returns true if the song is currently in a freeze.
+
+ [01 compat.lua] Returns true if the song is currently in a freeze.
Returns the song options for the specified ModsLevel as a string.
@@ -1736,11 +1760,11 @@
Returns the song options as a string.
-
+
Returns how much of the song is through at beat fBeat.
-
-
+
+ Returns the current SongPosition.
Returns the current SortOrder.
@@ -1763,7 +1787,7 @@
Returns true if any human player is using a memory card.
-
+
Returns true if playing in Battle mode.
@@ -1799,7 +1823,7 @@
Returns true if player pn is the winner.
-
+
Joins player pn.
@@ -1814,7 +1838,7 @@
Saves the bookkeeping and machine profile data.
-
+
Sets the current for the specified .
@@ -1832,7 +1856,7 @@
Sets if the Jukebox should use modifiers.
-
+
@@ -1856,7 +1880,7 @@
Determines if Judgment W1 should be shown based on bOn.
-
+
Unjoins player pn.
@@ -1894,6 +1918,9 @@
Returns two tables representing the tips and alternate tips in the HelpDisplay.
+
+ [02 HelpDisplay.lua] Sets the tips from a Song or Course.
+
Sets the seconds between switches of tips to fSeconds.
@@ -1911,10 +1938,10 @@
Returns the Grade of this high score.
-
+
Return the number of HoldNoteScores that match hns.
-
+
Returns the modifiers used for this HighScore.
@@ -1923,7 +1950,7 @@
Returns the percentage of dance points associated with the high score.
-
+
Returns the RadarValues for this HighScore.
@@ -1932,7 +1959,7 @@
Returns the number of seconds survived associated with the high score.
-
+
Return the number of TapNoteScores that match tns.
@@ -1953,12 +1980,12 @@
-
+
-
+
Returns the X position of the mouse.
-
+
Returns the Y position of the mouse.
@@ -1977,29 +2004,29 @@
-
+
Returns the number of lives remaining.
-
+
Returns the number of total lives.
-
+
Returns true if player pn's card is locked.
Return the state for player pn.
-
+
Returns the name of the storage device.
-
+
Returns true if player pn's name is available.
-
+
Returns the current MenuTimer's value.
@@ -2048,7 +2075,7 @@
Sets the model's default animation to sAnimation at fPlayRate speed (default 1.0).
-
+
Returns the number of states the Model has.
@@ -2095,39 +2122,39 @@
Returns the actor for the specified sButton sElement using NoteSkin sNoteSkin.
-
+
Returns true if the strName noteskin exists in the current gametype.
-
+
Returns a table of noteskin names for the current gametype.
-
+
Returns true if the first item in the row goes down.
-
+
Returns an index of the choice in the row that player pn is on.
-
+
Returns the OptionRow's layout type.
-
+
Returns the name of the OptionRow.
-
+
Returns the number of choices in this OptionRow.
-
+
Returns the row title string.
-
+
Returns the OptionRow's select type.
-
+
Returns true if this row is focused by player pn.
-
+
Returns true if this row forces one choice on all players.
@@ -2147,230 +2174,230 @@
Returns the of player pn.
-
+ Returns the Steps located at index in the current steps queue.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Returns the current NoteSkin set in the PlayerOptions.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Changes the player's noteskin to noteskin.
-
+
Returns true if the player is using reverse. (equivalent to GetReverse() == 1)
@@ -2378,13 +2405,13 @@
Returns true if a full combo (TNS_W3 and up) was obtained.
-
+
Returns true if a full combo (tns and up) was obtained.
Returns the number of Dance Points obtained by the player.
-
+
Returns how long the player has been alive.
@@ -2393,7 +2420,7 @@
Returns the number of calories burned.
-
+
Returns the current possible maximum score.
@@ -2402,10 +2429,10 @@
Returns the player's current life from 0..1.
-
+
Returns the player's current miss combo.
-
+
Returns the number of Dance Points possible to be obtained by the player.
@@ -2438,7 +2465,7 @@
Returns a table of played steps.
-
+
Gets the percentage of taps that were scored as tns.
@@ -2450,10 +2477,10 @@
Returns a table of possible steps.
-
+
Returns a RadarValues object representing the player's actual performance.
-
+
Returns a RadarValues object representing the total values for the song.
@@ -2488,24 +2515,24 @@
Returns true if the player was disqualified from ranking.
-
+
Sets the current possible maximum score.
-
+
Sets the Player's score to iScore.
-
+
Returns the current PlayerOptions for this PlayerState.
-
+
Returns the HealthState for this PlayerState.
-
+
Returns the multiplayer number for this PlayerState.
-
+
Returns the PlayerController for this PlayerState.
@@ -2514,13 +2541,13 @@
Returns a PlayerOptions object for the specified ModsLevel.
-
+
Returns a string of player options for the specified ModsLevel. (was GetPlayerOptions in v1.2.2 and prior)
Returns a table of strings, containing the player options for the specified ModsLevel.
-
+
Returns the SongPosition for this PlayerState.
@@ -2531,7 +2558,7 @@
Return the value of the preference sPreference.
-
+
Return true if preference sPreference exists.
@@ -2575,6 +2602,9 @@
Gets the profile's HighScoreList for a specified Song and Steps. (Alternate arguments for Courses: Course c, Trail t)
+
+ Returns the last used high score name.
+
Returns the number of Toasties gotten using the specified profile.
@@ -2614,7 +2644,7 @@
Returns the number of Jumps stepped on.
-
+
Returns the number of successful Lifts.
@@ -2644,7 +2674,7 @@
Returns true if the specified code sUnlockEntryID is unlocked.
-
+
Sets the current for the Profile.
@@ -2660,13 +2690,13 @@
Sets how much the player weighs (in pounds) to weightPounds.
-
+
Returns the amount of time this profile has spent in gameplay (in seconds).
-
+
Returns the number of sessions this profile has had.
-
+
Returns the total session length (in seconds) of this profile.
@@ -2684,19 +2714,19 @@
Returns the profile for player pn.
-
+
Returns the profile directory of the specified ProfileSlot.
Returns true if player pn's profile is persistent.
-
+
Returns true if Song s has never been played before (according to the machine profile).
-
+
Returns true if the last load of player pn's profile was a LastGood copy of the profile.
-
+
Returns true if the last load of player pn's profile resulted in a tampered or corrupt profile.
@@ -2721,7 +2751,7 @@
These commands require a RageFile handle. You can create one using
.
-
+
Returns true if the current position within the file is the end. (EOF = End of File)
@@ -2750,13 +2780,13 @@
Returns a string containing the entire contents of the file.
-
+
Returns length bytes from the RageFile's current position.
Seeks to a position in the file and returns the new position.
-
+
Returns the current position in the file.
@@ -2764,16 +2794,16 @@
-
+
Returns true if a file exists at sPath.
-
+
Returns a listing of files from sPath. The last two arguments are optional (and default to false).
-
+
Returns a file's size in bytes.
-
+
Returns the hash of the file at sPath.
@@ -2795,7 +2825,7 @@
Sets the speed (that is, the rate at which the sound plays) to fSpeed. The associated must have SupportsRateChanging = true on load.
-
+
Sets the volume to fVolume, which is between 0..1.
@@ -2814,7 +2844,7 @@
-
+
Loads the metrics for this RollingNumbers from sGroupName.
@@ -2825,7 +2855,7 @@
Returns the name of the next Screen.
-
+
Returns the name of the previous Screen.
@@ -2836,7 +2866,7 @@
-
+
Returns the current .
@@ -2864,10 +2894,10 @@
Sets the next Screen to be loaded.
-
+
Returns true if the game is paused.
-
+
Pauses or unpauses the game, depending on the value of bPause.
@@ -2877,13 +2907,13 @@
-
+
Adds a screen at the top of the screen stack.
Gets the screen at the top of the screen stack.
-
+
Reloads any loaded overlay screens.
@@ -2928,21 +2958,21 @@
-
+
Returns the number of active players.
-
+
Returns true if all active players are on the last options row.
-
+
Returns true if the specified player is on an items that ends the screen.
Returns the current row that player pn is on. (Was previously GetCurrentRow.)
-
+
Returns the specified OptionRow.
@@ -2968,7 +2998,7 @@
-
+
Returns player pn's current selected item as an integer.
@@ -2976,10 +3006,10 @@
Returns true if the player is going to the options screen.
-
+
Returns the MusicWheel used on this screen.
-
+
Opens the OptionsList for Player pn
@@ -3008,7 +3038,7 @@
See the Changelog for details on TextEntrySetting's format.
-
+
Sets up a ScreenTextEntry's values.
@@ -3027,13 +3057,13 @@
Returns the path to the song's banner.
-
+
Gets the path to the CDTitle.
Returns the displayed artist of the song.
-
+
Returns a table of 2 floats containing the display BPMs.
@@ -3057,28 +3087,28 @@
Returns the last beat of the song.
-
+
Gets the path to the lyrics.
-
+
Gets the path to the music file.
Returns a Step object if the StepType and Difficulty exist.
-
+
Gets the Song's origin.
Returns the song's directory.
-
+
Returns the songfile path.
Returns a table of Steps that have StepsType st.
-
+
Returns how long the longest stepchart is in seconds.
@@ -3099,49 +3129,49 @@
Returns true if the song has steps for the specified difficulty in st.
-
+
Returns true if the song has attacks.
-
+
Returns true if the song has a background.
-
+
Returns true if the song has a banner.
-
+
Returns true if the song has BGChanges.
-
+
Returns true if the song has a CDTitle.
-
+
Returns true if the song has edits.
-
+
Returns true if the song has lyrics.
-
+
Returns true if the song has music.
-
+
Returns true if the song has significant elephants or bison.
-
+
Returns true if the song has .
-
+
Returns true if the song's DisplayBPM is constant.
-
+
Returns true if the song's DisplayBPM is random.
-
+
Returns true if the song's DisplayBPM is secret.
-
+
Returns true if the song is considered easy.
-
+
Returns true if the song is enabled.
@@ -3156,7 +3186,7 @@
Returns the length of the song in seconds.
-
+
Returns true if the song is normally displayed.
@@ -3176,7 +3206,7 @@
Returns the course color of Course c.
-
+
Returns a table containing all of the course group names.
@@ -3222,54 +3252,54 @@
Returns the song group color of sGroupName.
-
+
Returns a table containing all of the song group names.
-
+
Returns the rank (popularity) of Song s.
-
+
Returns a table containing all of the songs in group sGroupName.
-
+
Returns the shortened group name (based on entries in Translations.xml).
-
+
Loads preferred courses from {theme}/Other/SongManager sListName.txt.
-
+
Loads preferred songs from {theme}/Other/SongManager sListName.txt.
-
+
Returns the current beats per second.
-
+
Returns true if a Delay is active.
-
+
Returns true if a Freeze is active.
-
+
-
+
-
+
-
+
-
+
-
+
Returns the row where a warp appears.
-
+
Returns the warp destination length.
@@ -3277,10 +3307,10 @@
Returns the length of the animation in seconds.
-
+
Return the number of states this Sprite has.
-
+
Returns the Sprite's current state (frame number in a multi-frame sprite).
@@ -3341,13 +3371,13 @@
Set the texture coordinate velocity which controls how the Sprite changes as it animates.
-
+
Crops the Sprite to fWidthxfHeight.
[01 alias.lua] Alias for CropTo.
-
+
Sets all the state delays to fRate. Useful for Sprites that need to change by BPM (e.g. Tran from DDR 5th Mix, the cube from DS EuroMix 2).
@@ -3415,7 +3445,7 @@
Returns the author that made that particular Steps pattern.
-
+
Returns the Chart Style for this Steps.
@@ -3427,14 +3457,14 @@
Returns the Steps filename from the Cache.
-
+
Returns a hash of the Steps.
Returns the numerical difficulty of the Steps.
-
- Returns true if the song has significant timing changes.
+
+ returns true if the song has significant timing changes.
Returns the complete list of RadarValues for player pn. Use to grab a specific value.
@@ -3442,19 +3472,19 @@
Returns the Steps type.
-
+
Returns the TimingData for the Steps.
-
+
Returns true if the Steps are an edit.
-
+
Returns true if the Steps are a player edit (loaded from a profile).
Returns true if the steps were automatically generated.
-
+
Returns true if the Steps use different TimingData from the Song.
@@ -3476,7 +3506,7 @@
-
+
Returns the number of total tracks this Style contains (e.g. 4 for dance-versus, but 8 for dance-double).
@@ -3488,7 +3518,7 @@
Returns the StyleType for this Style.
-
+
Returns true if the Style needs to be zoomed out with two players.
@@ -3504,10 +3534,10 @@
-
+
Returns the current language.
-
+
Returns the theme's current directory.
@@ -3528,74 +3558,77 @@
returns three strings: BGAnimation ResolvedPath, MatchingMetricsGroup, MatchingElement. Used in LoadFallbackB in themes/_fallback/02 Other.lua. (Lua.xsd sucks)
-
+
Returns the path of an element in the Other folder.
Returns the path of an element in the Sounds folder.
-
+
Returns a table of selectable theme directories.
Returns the value of Element in Class for the currently loaded language.
-
+
Returns the author of the current theme or "[unknown author]".
-
+
Returns the display name of the current theme.
-
+
Reloads the current theme's metrics.
-
+
Returns the minimum and maximum BPM of the song in a table (in that order).
-
+
Returns the beat from fElapsedTime.
-
+
Returns the BPM at fBeat.
-
+
Returns a table of the BPMs as strings.
-
+
Returns a table of the BPMs and the times they happen as strings with the format "beat=BPM".
Returns the elapsed time from fBeat.
-
+
Returns a table of the Stops and the times they happen as strings with the format "beat=stop seconds".
-
+
Returns a table of the Delays and the times they happen as strings with the format "beat=stop seconds".
-
+
Returns a table of the Labels and the times they happen as strings with the format "beat=label name."
-
+
Returns true if the TimingData contains BPM changes.
-
+
Returns true if the TimingData contains any BPM changes with a negative BPM.
Returns true if the TimingData contains stops.
-
+
Returns true if the TimingData contains warps.
-
- Returns true if the TimingData contains fake segments.
+
+ returns true if the TimingData contains fake segments.
-
+
Returns true if the TimingData contains speed scrolling changes.
+
+ Returns true if the TimingData contains general scrolling changes.
+
@@ -3604,7 +3637,7 @@
Returns the Trail's difficulty.
-
+
Returns a table of TrailEntry items.
@@ -3616,21 +3649,21 @@
Returns the Trail's StepsType.
-
+
Returns the TrailEntry at index iEntry.
-
+
Returns a string of modifiers used in this TrailEntry.
Returns the Song used in this TrailEntry.
-
+
Returns the Steps used in this TrailEntry.
-
+
(why'd I think this was a good idea when we have ?)
@@ -3642,10 +3675,10 @@
Sets the UnlockEntry's course to sCourseName.
Example: course,"Driven"
-
+
Returns the code for this unlock.
-
+
Returns the Course for this unlock.
@@ -3701,10 +3734,10 @@
Returns the number of all unlock items, regardless of status.
-
+
Returns the number of points for the machine profile based on the specified UnlockRequirement.
-
+
Returns the number of points for the specified profile based on the specified UnlockRequirement.
@@ -3731,25 +3764,25 @@
-
+
Returns the wheel's current index.
-
+
Returns the total number of items in the wheel.
Returns the WheelItem at index iIndex.
-
+
Returns true if the wheel is locked.
-
+
Returns true if the wheel is settled/stopped moving.
-
+
Moves the wheel by n.
-
+
Attempts to set the open section to sSection.
diff --git a/Docs/Luadoc/favicon.ico b/Docs/Luadoc/favicon.ico
index 5a530ab403..95519364bc 100644
Binary files a/Docs/Luadoc/favicon.ico and b/Docs/Luadoc/favicon.ico differ
diff --git a/Docs/credits.txt b/Docs/credits.txt
index 55c8ad396b..b7cb9c0177 100644
--- a/Docs/credits.txt
+++ b/Docs/credits.txt
@@ -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)
diff --git a/Themes/_fallback/Fonts/_misc 16px.ini b/Themes/_fallback/Fonts/_misc 16px.ini
index 2b44a545ce..b29a07252b 100644
--- a/Themes/_fallback/Fonts/_misc 16px.ini
+++ b/Themes/_fallback/Fonts/_misc 16px.ini
@@ -27,7 +27,7 @@ Top=8
Baseline=23
LineSpacing=24
-line 0=☆★♡♥Ω
+line 0=☆★♥♡Ω
map doublezeta=5
map planet=6
diff --git a/Themes/_fallback/Graphics/Common window icon.png b/Themes/_fallback/Graphics/Common window icon.png
index 23750444ac..4a68593c5d 100644
Binary files a/Themes/_fallback/Graphics/Common window icon.png and b/Themes/_fallback/Graphics/Common window icon.png differ
diff --git a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua
index efe523ddfa..eb2d64bb9d 100644
--- a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua
+++ b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua
@@ -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
diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini
index 1c5d45139a..46246439b0 100644
--- a/Themes/_fallback/metrics.ini
+++ b/Themes/_fallback/metrics.ini
@@ -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"
diff --git a/Themes/default/Graphics/ScreenGameplay BPMDisplay.lua b/Themes/default/Graphics/ScreenGameplay BPMDisplay.lua
index 3bed3203ec..4b927fb10a 100644
--- a/Themes/default/Graphics/ScreenGameplay BPMDisplay.lua
+++ b/Themes/default/Graphics/ScreenGameplay BPMDisplay.lua
@@ -5,4 +5,4 @@ return Def.SongBPMDisplay {
SetCommand=function(self) self:SetFromGameState() end;
CurrentSongChangedMessageCommand=cmd(playcommand,"Set");
CurrentCourseChangedMessageCommand=cmd(playcommand,"Set");
-};
\ No newline at end of file
+};
diff --git a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua
index b26cdbe22e..966f417b67 100644
--- a/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua
+++ b/Themes/default/Graphics/ScreenSelectMusic DifficultyDisplay/default.lua
@@ -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
diff --git a/Themes/default/Scripts/03 ThemePrefs.lua b/Themes/default/Scripts/03 ThemePrefs.lua
index f3b91da4e3..d7c1555728 100644
--- a/Themes/default/Scripts/03 ThemePrefs.lua
+++ b/Themes/default/Scripts/03 ThemePrefs.lua
@@ -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()
diff --git a/Xcode/stepmania.xcodeproj/project.pbxproj b/Xcode/stepmania.xcodeproj/project.pbxproj
index e135889337..95044c3766 100644
--- a/Xcode/stepmania.xcodeproj/project.pbxproj
+++ b/Xcode/stepmania.xcodeproj/project.pbxproj
@@ -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 = ""; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; };
+ 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 = ""; };
2B30D6811315EA7E00044B68 /* MouseDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MouseDevice.h; sourceTree = ""; };
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 = "";
@@ -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 = (
diff --git a/src/AdjustSync.cpp b/src/AdjustSync.cpp
index dbed2a0c59..bee582b4bf 100644
--- a/src/AdjustSync.cpp
+++ b/src/AdjustSync.cpp
@@ -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 &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 )
diff --git a/src/BPMDisplay.cpp b/src/BPMDisplay.cpp
index bdeb805d52..a891f7161f 100644
--- a/src/BPMDisplay.cpp
+++ b/src/BPMDisplay.cpp
@@ -9,6 +9,7 @@
#include "CommonMetrics.h"
#include "LocalizedString.h"
#include "Song.h"
+#include "Steps.h"
#include
@@ -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::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 );
}
diff --git a/src/BPMDisplay.h b/src/BPMDisplay.h
index b27f96408a..d868ab23be 100644
--- a/src/BPMDisplay.h
+++ b/src/BPMDisplay.h
@@ -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.
diff --git a/src/LifeMeterBattery.cpp b/src/LifeMeterBattery.cpp
index 00fb586848..009d920e50 100644
--- a/src/LifeMeterBattery.cpp
+++ b/src/LifeMeterBattery.cpp
@@ -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);
diff --git a/src/LifeMeterBattery.h b/src/LifeMeterBattery.h
index 08d72233db..d7b4a90a1d 100644
--- a/src/LifeMeterBattery.h
+++ b/src/LifeMeterBattery.h
@@ -43,7 +43,6 @@ private:
float m_fBatteryBlinkTime; // if > 0 battery is blinking
// theme metrics added for sm-ssc
- //ThemeMetric<> METRIC_NAME;
ThemeMetric BATTERY_BLINK_TIME;
AutoActor m_sprFrame;
diff --git a/src/MusicWheel.cpp b/src/MusicWheel.cpp
index 85dbc2000b..77303f5286 100644
--- a/src/MusicWheel.cpp
+++ b/src/MusicWheel.cpp
@@ -23,6 +23,7 @@
#include "MessageManager.h"
static Preference g_bMoveRandomToEnd( "MoveRandomToEnd", false );
+static Preference 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 &from = m_WheelItemDatas[SORT_MODE_MENU];
+ const vector &from = getWheelItemsData(SORT_MODE_MENU);
for( unsigned i=0; im_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::iterator i = m__UnFilteredWheelItemDatas[so].begin();
+ vector::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 &wiWheelItems = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+ vector &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 &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+ vector &from = getWheelItemsData(GAMESTATE->m_SortOrder);
for( i=0; im_pSong == p )
@@ -308,7 +325,7 @@ bool MusicWheel::SelectCourse( const Course *p )
return false;
unsigned i;
- vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+ vector &from = getWheelItemsData(GAMESTATE->m_SortOrder);
for( i=0; im_pCourse == p )
@@ -335,7 +352,7 @@ bool MusicWheel::SelectModeMenuItem()
{
// Select the last-chosen option.
ASSERT( GAMESTATE->m_SortOrder == SORT_MODE_MENU );
- const vector &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+ const vector &from = getWheelItemsData(GAMESTATE->m_SortOrder);
unsigned i;
for( i=0; i &arrayWheelIt
WID.m_Flags.iStagesForSong = 1;
}
}
+}
+vector & 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 &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 &aUnFilteredDatas, vector &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 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 &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+ vector &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 &wid = m_WheelItemDatas[GAMESTATE->m_SortOrder];
+ vector &wid = getWheelItemsData(GAMESTATE->m_SortOrder);
StepsType st = GAMESTATE->GetCurrentStyle()->m_StepsType;
diff --git a/src/MusicWheel.h b/src/MusicWheel.h
index 73e63deb0e..0cc080f3d0 100644
--- a/src/MusicWheel.h
+++ b/src/MusicWheel.h
@@ -53,15 +53,14 @@ protected:
MusicWheelItem *MakeItem();
void GetSongList( vector &arraySongs, SortOrder so );
- void BuildWheelItemDatas( vector &arrayWheelItems, SortOrder so );
bool SelectSongOrCourse();
bool SelectCourse( const Course *p );
bool SelectModeMenuItem();
- //bool SelectCustomItem();
virtual void UpdateSwitch();
- vector m_WheelItemDatas[NUM_SortOrder]; // aliases into m_UnfilteredWheelItemDatas
+ vector & getWheelItemsData(SortOrder so);
+ void readyWheelItemsData(SortOrder so);
RString m_sLastModeMenuItem;
SortOrder m_SortOrder;
@@ -72,15 +71,15 @@ protected:
ThemeMetric ROULETTE_SWITCH_SECONDS;
ThemeMetric ROULETTE_SLOW_DOWN_SWITCHES;
ThemeMetric NUM_SECTION_COLORS;
- ThemeMetric SONG_REAL_EXTRA_COLOR;
- ThemeMetric SORT_MENU_COLOR;
+ ThemeMetric SONG_REAL_EXTRA_COLOR;
+ ThemeMetric SORT_MENU_COLOR;
ThemeMetric SHOW_ROULETTE;
ThemeMetric SHOW_RANDOM;
ThemeMetric SHOW_PORTAL;
ThemeMetric RANDOM_PICKS_LOCKED_SONGS;
ThemeMetric MOST_PLAYED_SONGS_TO_SHOW;
ThemeMetric RECENT_SONGS_TO_SHOW;
- ThemeMetric MODE_MENU_CHOICE_NAMES;
+ ThemeMetric MODE_MENU_CHOICE_NAMES;
ThemeMetricMap CHOICE;
ThemeMetric1D SECTION_COLORS;
ThemeMetric SORT_ORDERS;
@@ -96,6 +95,15 @@ protected:
ThemeMetric CUSTOM_WHEEL_ITEM_NAMES;
ThemeMetricMap CUSTOM_CHOICES;
ThemeMetricMap CUSTOM_CHOICE_COLORS;
+
+private:
+ //use getWheelItemsData instead of touching this one
+ enum {INVALID,NEEDREFILTER,VALID} m_WheelItemDatasStatus[NUM_SortOrder];
+ vector m__WheelItemDatas[NUM_SortOrder];
+ vector m__UnFilteredWheelItemDatas[NUM_SortOrder];
+
+ void BuildWheelItemDatas( vector &arrayWheelItems, SortOrder so );
+ void FilterWheelItemDatas(vector &aUnFilteredDatas, vector &aFilteredData, SortOrder so );
};
#endif
diff --git a/src/NoteField.cpp b/src/NoteField.cpp
index 29a08e081a..60b0d9b6be 100644
--- a/src/NoteField.cpp
+++ b/src/NoteField.cpp
@@ -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 )
{
diff --git a/src/NotesLoaderBMS.cpp b/src/NotesLoaderBMS.cpp
index e3412e7099..e7adf6d5a2 100644
--- a/src/NotesLoaderBMS.cpp
+++ b/src/NotesLoaderBMS.cpp
@@ -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
{
diff --git a/src/NotesLoaderJson.cpp b/src/NotesLoaderJson.cpp
index 4478423e6b..e0f79204d8 100644
--- a/src/NotesLoaderJson.cpp
+++ b/src/NotesLoaderJson.cpp
@@ -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)
diff --git a/src/NotesLoaderPMS.cpp b/src/NotesLoaderPMS.cpp
index 749710abde..f0d742973c 100644
--- a/src/NotesLoaderPMS.cpp
+++ b/src/NotesLoaderPMS.cpp
@@ -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
{
diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp
index acb7b5d0c7..f18c556056 100644
--- a/src/NotesLoaderSM.cpp
+++ b/src/NotesLoaderSM.cpp
@@ -84,20 +84,6 @@ void SMLoader::GetApplicableFiles( const RString &sPath, vector &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 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; iUserLog( "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;
}
diff --git a/src/NotesLoaderSM.h b/src/NotesLoaderSM.h
index d1c4feded0..94dfdd2dfe 100644
--- a/src/NotesLoaderSM.h
+++ b/src/NotesLoaderSM.h
@@ -26,8 +26,6 @@ namespace SMLoader
bool LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache = false );
void GetApplicableFiles( const RString &sPath, vector &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 );
diff --git a/src/NotesLoaderSMA.cpp b/src/NotesLoaderSMA.cpp
index a45a87f9c2..449f5d7b29 100644
--- a/src/NotesLoaderSMA.cpp
+++ b/src/NotesLoaderSMA.cpp
@@ -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 );
diff --git a/src/NotesWriterDWI.cpp b/src/NotesWriterDWI.cpp
index 4694c1f6db..3d0641c0e8 100644
--- a/src/NotesWriterDWI.cpp
+++ b/src/NotesWriterDWI.cpp
@@ -381,8 +381,8 @@ bool NotesWriterDWI::Write( RString sPath, const Song &out )
for( unsigned i=0; i &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 &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 )
diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp
index e33c4108d8..363851cd6a 100644
--- a/src/PlayerOptions.cpp
+++ b/src/PlayerOptions.cpp
@@ -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;
}
diff --git a/src/PlayerStageStats.cpp b/src/PlayerStageStats.cpp
index 6aab543b26..e57682c843 100644
--- a/src/PlayerStageStats.cpp
+++ b/src/PlayerStageStats.cpp
@@ -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 &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" );
}
diff --git a/src/ProductInfo.h b/src/ProductInfo.h
index 19268747d1..e6cd9db7a8 100644
--- a/src/ProductInfo.h
+++ b/src/ProductInfo.h
@@ -35,7 +35,7 @@
*
*/
#ifndef PRODUCT_VER_BARE
-#define PRODUCT_VER_BARE v5.0 Preview 1
+#define PRODUCT_VER_BARE v5.0 Preview 1a
#endif
/**
diff --git a/src/ProductInfo.inc b/src/ProductInfo.inc
index 5e5bfde118..d08ad19e51 100644
--- a/src/ProductInfo.inc
+++ b/src/ProductInfo.inc
@@ -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"
diff --git a/src/ScreenDebugOverlay.cpp b/src/ScreenDebugOverlay.cpp
index b7c37b3326..b65b0efc7d 100644
--- a/src/ScreenDebugOverlay.cpp
+++ b/src/ScreenDebugOverlay.cpp
@@ -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);
diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp
index d2aa616e1c..c6905545f4 100644
--- a/src/ScreenEdit.cpp
+++ b/src/ScreenEdit.cpp
@@ -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 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 &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; im_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 &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 );
diff --git a/src/ScreenEdit.h b/src/ScreenEdit.h
index c1334afbd8..2b92f8bbd5 100644
--- a/src/ScreenEdit.h
+++ b/src/ScreenEdit.h
@@ -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();
diff --git a/src/Song.cpp b/src/Song.cpp
index 491dfb477e..1e737ef182 100644
--- a/src/Song.cpp
+++ b/src/Song.cpp
@@ -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;
diff --git a/src/Song.h b/src/Song.h
index 7d3e92fab9..cbe6e5ddf4 100644
--- a/src/Song.h
+++ b/src/Song.h
@@ -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 VBackgroundChange;
private:
/**
diff --git a/src/SongManager.cpp b/src/SongManager.cpp
index e91b1c4d41..48a7d3c5eb 100644
--- a/src/SongManager.cpp
+++ b/src/SongManager.cpp
@@ -776,9 +776,7 @@ void SongManager::InitCoursesFromDisk( LoadingWindow *ld )
void SongManager::InitAutogenCourses()
{
- //
// Create group courses for Endless and Nonstop
- //
vector 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 );
}
diff --git a/src/StepMania-net2010.vcxproj b/src/StepMania-net2010.vcxproj
index ebc0108298..c1aef5d7d2 100644
--- a/src/StepMania-net2010.vcxproj
+++ b/src/StepMania-net2010.vcxproj
@@ -76,7 +76,7 @@
false
$(TargetDir)
$(SolutionDir)/build-$(SolutionName)/$(ProjectName)/$(Configuration)\
- true
+ false
true
$(SolutionDir)$(Configuration)\
$(Configuration)\
@@ -93,10 +93,18 @@
AllRules.ruleset
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)
StepMania
StepMania
StepMania
StepMania
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Include;$(IncludePath)
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)
+ C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib;$(LibraryPath)
@@ -130,6 +138,10 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)
|