merge
This commit is contained in:
@@ -4,6 +4,26 @@ The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes
|
||||
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
||||
________________________________________________________________________________
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0 $next | 2011xxxx
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2011/10/08
|
||||
----------
|
||||
* [GameSoundManager] Add the PlayMusicPart lua binding. [Wolfman2000]
|
||||
* [ScreenEdit] Add the FadeInPreview and FadeOutPreview metrics. This controls
|
||||
how long the fade in and fade outs are for playing the preview music.
|
||||
The default values are 0 and 1.5 respectively. [Wolfman2000]
|
||||
|
||||
2011/10/07
|
||||
----------
|
||||
* [RageDisplay] Add the GetFPS, GetVPF, and GetCumFPS bindings. [Wolfman2000]
|
||||
|
||||
2011/10/06
|
||||
----------
|
||||
* Various scoring fixes sourced from http://www47.atwiki.jp/waiei/pages/21.html
|
||||
[A.C/@waiei, 桜為小鳩/@sakuraponila]
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0 Preview 4 | 20111005
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
+31
-8
@@ -119,6 +119,7 @@
|
||||
<Function name='MultiPlayerToLocalizedString'/>
|
||||
<Function name='MultiPlayerToString'/>
|
||||
<Function name='OptionRowProTiming'/>
|
||||
<Function name='OptionRowScreenFilter'/>
|
||||
<Function name='OptionsRandomJukebox'/>
|
||||
<Function name='OptionsRowTest'/>
|
||||
<Function name='PeakComboAwardToLocalizedString'/>
|
||||
@@ -202,6 +203,7 @@
|
||||
<Function name='UserPrefNotePosition'/>
|
||||
<Function name='UserPrefScoringMode'/>
|
||||
<Function name='UserPrefShowLotsaOptions'/>
|
||||
<Function name='UserPrefTimingDisplay'/>
|
||||
<Function name='Var'/>
|
||||
<Function name='VersionDate'/>
|
||||
<Function name='VersionTime'/>
|
||||
@@ -216,7 +218,6 @@
|
||||
<Function name='clamp'/>
|
||||
<Function name='collectgarbage'/>
|
||||
<Function name='color'/>
|
||||
<Function name='date'/>
|
||||
<Function name='dofile'/>
|
||||
<Function name='error'/>
|
||||
<Function name='fapproach'/>
|
||||
@@ -663,10 +664,15 @@
|
||||
<Class base='ActorFrame' name='FadingBanner'>
|
||||
<Function name='GetLatestIndex'/>
|
||||
<Function name='LoadCardFromCharacter'/>
|
||||
<Function name='LoadCourseFallback'/>
|
||||
<Function name='LoadFallback'/>
|
||||
<Function name='LoadFromCourse'/>
|
||||
<Function name='LoadFromSong'/>
|
||||
<Function name='LoadFromSongGroup'/>
|
||||
<Function name='LoadFromSortOrder'/>
|
||||
<Function name='LoadIconFromCharacter'/>
|
||||
<Function name='LoadRandom'/>
|
||||
<Function name='LoadRoulette'/>
|
||||
<Function name='ScaleToClipped'/>
|
||||
<Function name='scaletoclipped'/>
|
||||
</Class>
|
||||
@@ -695,12 +701,17 @@
|
||||
<Function name='DimMusic'/>
|
||||
<Function name='GetPlayerBalance'/>
|
||||
<Function name='PlayAnnouncer'/>
|
||||
<Function name='PlayMusicPart'/>
|
||||
<Function name='PlayOnce'/>
|
||||
</Class>
|
||||
<Class name='GameState'>
|
||||
<Function name='AddStageToPlayer'/>
|
||||
<Function name='AnyPlayerHasRankingFeats'/>
|
||||
<Function name='ApplyGameCommand'/>
|
||||
<Function name='ApplyPreferredModifiers'/>
|
||||
<Function name='ApplyStageModifiers'/>
|
||||
<Function name='ClearStageModifiersIllegalForCourse'/>
|
||||
<Function name='CurrentOptionsDisqualifyPlayer'/>
|
||||
<Function name='Dopefish'/>
|
||||
<Function name='EnoughCreditsToJoin'/>
|
||||
<Function name='Env'/>
|
||||
@@ -720,6 +731,7 @@
|
||||
<Function name='GetCurrentStyle'/>
|
||||
<Function name='GetCurrentTrail'/>
|
||||
<Function name='GetDefaultSongOptions'/>
|
||||
<Function name='GetEarnedExtraStage'/>
|
||||
<Function name='GetEasiestStepsDifficulty'/>
|
||||
<Function name='GetEditCourseEntryIndex'/>
|
||||
<Function name='GetEditLocalProfile'/>
|
||||
@@ -855,9 +867,12 @@
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='MenuTimer'>
|
||||
<Function name='GetSeconds'/>
|
||||
<Function name='SetSeconds'/>
|
||||
<Function name='disable'/>
|
||||
<Function name='pause'/>
|
||||
<Function name='setseconds'/>
|
||||
<Function name='silent'/>
|
||||
<Function name='start'/>
|
||||
<Function name='stealth'/>
|
||||
<Function name='stop'/>
|
||||
</Class>
|
||||
@@ -871,6 +886,7 @@
|
||||
<Function name='Load'/>
|
||||
</Class>
|
||||
<Class base='Actor' name='Model'>
|
||||
<Function name='GetDefaultAnimation'/>
|
||||
<Function name='GetNumStates'/>
|
||||
<Function name='SetDefaultAnimation'/>
|
||||
<Function name='loop'/>
|
||||
@@ -1119,6 +1135,9 @@
|
||||
<Class name='RageDisplay'>
|
||||
<Function name='GetDisplayHeight'/>
|
||||
<Function name='GetDisplayWidth'/>
|
||||
<Function name='GetFPS'/>
|
||||
<Function name='GetVPF'/>
|
||||
<Function name='GetCumFPS'/>
|
||||
</Class>
|
||||
<Class name='RageFile'>
|
||||
<Function name='AtEOF'/>
|
||||
@@ -1572,10 +1591,10 @@
|
||||
<Function name='GetStepsUnlockedByEntryID'/>
|
||||
<Function name='GetUnlockEntry'/>
|
||||
<Function name='GetUnlockEntryIndexToCelebrate'/>
|
||||
<Function name='IsSongLocked'/>
|
||||
<Function name='PreferUnlockEntryID'/>
|
||||
<Function name='UnlockEntryID'/>
|
||||
<Function name='UnlockEntryIndex'/>
|
||||
<Function name='IsSongLocked'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='WheelBase'>
|
||||
<Function name='GetCurrentIndex'/>
|
||||
@@ -1585,6 +1604,10 @@
|
||||
<Function name='IsSettled'/>
|
||||
<Function name='SetOpenSection'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='WheelItemBase'>
|
||||
<Function name='GetColor'/>
|
||||
<Function name='GetText'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='WorkoutGraph'>
|
||||
<Function name='SetFromCurrentWorkout'/>
|
||||
<Function name='SetFromGameStateAndHighlightSong'/>
|
||||
@@ -2177,16 +2200,16 @@
|
||||
</Enum>
|
||||
</Enums>
|
||||
<Constants>
|
||||
<Constant name='ASPECT_SCALE_FACTOR' value='640'/>
|
||||
<Constant name='ASPECT_SCALE_FACTOR' value='854'/>
|
||||
<Constant name='NUM_PLAYERS' value='2'/>
|
||||
<Constant name='SCREEN_BOTTOM' value='480'/>
|
||||
<Constant name='SCREEN_CENTER_X' value='320'/>
|
||||
<Constant name='SCREEN_CENTER_X' value='427'/>
|
||||
<Constant name='SCREEN_CENTER_Y' value='240'/>
|
||||
<Constant name='SCREEN_HEIGHT' value='480'/>
|
||||
<Constant name='SCREEN_LEFT' value='0'/>
|
||||
<Constant name='SCREEN_RIGHT' value='640'/>
|
||||
<Constant name='SCREEN_RIGHT' value='854'/>
|
||||
<Constant name='SCREEN_TOP' value='0'/>
|
||||
<Constant name='SCREEN_WIDTH' value='640'/>
|
||||
<Constant name='SCREEN_WIDTH' value='854'/>
|
||||
<Constant name='PLAYER_1' value=''PlayerNumber_P1''/>
|
||||
<Constant name='PLAYER_2' value=''PlayerNumber_P2''/>
|
||||
<Constant name='_VERSION' value=''Lua 5.1''/>
|
||||
@@ -2198,6 +2221,6 @@
|
||||
<Constant name='sGame' value=''dance''/>
|
||||
<Constant name='top' value=''VertAlign_Top''/>
|
||||
</Constants>
|
||||
<Version>StepMania v5.0 Preview 3</Version>
|
||||
<Date>2011-08-27</Date>
|
||||
<Version>StepMania v5.0 Preview 4</Version>
|
||||
<Date>2011-10-06</Date>
|
||||
</Lua>
|
||||
|
||||
@@ -63,13 +63,13 @@
|
||||
<Function name='color' return='color' arguments='string color'>
|
||||
Returns a color from a string. <code>color</code> can be in hex (<code>"#FFFFFFFF"</code>) or 0..1 values (<code>"1.0,1.0,1.0,1.0"</code>), in RGBA order.
|
||||
</Function>
|
||||
<Function name='ColorDarkTone' theme='_fallback' return='' arguments='color c'>
|
||||
<Function name='ColorDarkTone' theme='_fallback' return='color' arguments='color c'>
|
||||
[02 Colors.lua] Returns a darker tone of the color. (Specifically <code>c[1]/2, c[2]/2, c[3]/2, c[4]</code>)
|
||||
</Function>
|
||||
<Function name='ColorLightTone' theme='_fallback' return='' arguments='color c'>
|
||||
<Function name='ColorLightTone' theme='_fallback' return='color' arguments='color c'>
|
||||
[02 Colors.lua] Returns a lighter tone of the color. (Specifically <code>c[1]+(c[1]/2), c[2]+(c[2]/2), c[3]+(c[3]/2), c[4]</code>)
|
||||
</Function>
|
||||
<Function name='ColorMidTone' theme='_fallback' return='' arguments='color c'>
|
||||
<Function name='ColorMidTone' theme='_fallback' return='color' arguments='color c'>
|
||||
[02 Colors.lua] Returns a midtone of the color. (Specifically <code>c[1]/1.5, c[2]/1.5, c[3]/1.5, c[4]</code>)
|
||||
</Function>
|
||||
<Function name='ColorToHex' theme='_fallback' return='string' arguments='color c'>
|
||||
@@ -183,7 +183,7 @@
|
||||
<Function name='GetThemeAspectRatio' return='float' arguments=''>
|
||||
Returns the theme's aspect ratio.
|
||||
</Function>
|
||||
<Function name='GetThemePref' theme='_fallback' return='' arguments=''>
|
||||
<Function name='GetThemePref' theme='_fallback' return='various' arguments='string pref'>
|
||||
[03 ThemePrefs.lua] (Alias for <Link class='ThemePrefs' function='Get' />.)
|
||||
</Function>
|
||||
<Function name='GetTimingDifficulty' return='int' arguments=''>
|
||||
@@ -302,7 +302,7 @@
|
||||
<Function name='MissCombo' theme='_fallback' return='int' arguments=''>
|
||||
[03 Gameplay.lua] Returns the value to start showing the miss combo at.
|
||||
</Function>
|
||||
<Function name='module' return='' arguments='string name, ...'>
|
||||
<Function name='module' return='void' arguments='string name, ...'>
|
||||
Creates a module. See the Lua manual for more details.
|
||||
</Function>
|
||||
<Function name='MonthOfYear' return='int' arguments=''>
|
||||
@@ -314,7 +314,7 @@
|
||||
<Function name='MonthToString' return='string' arguments='Month m'>
|
||||
Returns Month <code>m</code> as a string.
|
||||
</Function>
|
||||
<Function name='next' return='' arguments='table t, int index'>
|
||||
<Function name='next' return='void' arguments='table t, int index'>
|
||||
"Allows a program to traverse all fields of a table. Its first argument is a
|
||||
table and its second argument is an index in this table.
|
||||
<code>next</code> returns the next index of the table and its associated value."
|
||||
@@ -323,7 +323,7 @@
|
||||
<Function name='OptionRowProTiming' theme='default' return='LuaOptionRow' arguments=''>
|
||||
[03 ThemePrefs.lua] Returns a Lua option row for ProTiming.
|
||||
</Function>
|
||||
<Function name='pairs' return='' arguments='table t'>
|
||||
<Function name='pairs' return='function' arguments='table t'>
|
||||
"Returns three values: the <Link class='GLOBAL' function='next' /> function, the table <code>t</code>, and <code>nil</code>,
|
||||
so that the construction <code>for k,v in pairs(t) do body end</code>
|
||||
will iterate over all key–value pairs of table <code>t</code>."
|
||||
@@ -368,7 +368,7 @@
|
||||
<Function name='ReportStyle' return='void' arguments=''>
|
||||
Sends the current style to the server.
|
||||
</Function>
|
||||
<Function name='require' return='' arguments='string modname'>
|
||||
<Function name='require' return='void' arguments='string modname'>
|
||||
Loads the specified module. See the Lua manual for more information.
|
||||
</Function>
|
||||
<Function name='round' theme='_fallback' return='int' arguments='float val, int decimal'>
|
||||
@@ -476,7 +476,7 @@
|
||||
<Function name='type' return='string' arguments='various v'>
|
||||
Returns the type of the object as a string. See the Lua manual for valid return values.
|
||||
</Function>
|
||||
<Function name='unpack' return='' arguments='table list, int i, int j'>
|
||||
<Function name='unpack' return='various' arguments='table list, int i, int j'>
|
||||
"Returns the elements from the given table.
|
||||
This function is equivalent to <code>return list[i], list[i+1], ···, list[j]</code>"
|
||||
(<code>i</code> and <code>j</code> are optional; "by default, i is 1 and j is the length of the list.")
|
||||
@@ -508,7 +508,7 @@
|
||||
<Function name='WriteFile' theme='_fallback' return='bool' arguments='string path, string buf'>
|
||||
[04 FileUtils.lua] Writes <code>buf</code> to the file at <code>path</code>.
|
||||
</Function>
|
||||
<Function name='WriteGamePrefToFile' theme='_fallback' return='' arguments='string name'>
|
||||
<Function name='WriteGamePrefToFile' theme='_fallback' return='bool' arguments='string name'>
|
||||
[03 GamePreferences.lua]
|
||||
</Function>
|
||||
<Function name='WritePrefToFile' theme='_fallback' return='bool' arguments='string prefName, various value'>
|
||||
@@ -1580,7 +1580,7 @@
|
||||
Gets the CourseEntry at <code>iIndex</code> from the Course.
|
||||
</Function>
|
||||
<Function name='GetCourseType' renamed='true' return='CourseType' arguments=''>
|
||||
Returns the Course's <Link class='ENUM' function='CourseType' />. (Returns CourseType in sm-ssc; integer in SM4)
|
||||
Returns the Course's <Link class='ENUM' function='CourseType' />. (Returns CourseType in SM5; integer in SM4)
|
||||
</Function>
|
||||
<Function name='GetDescription' return='string' arguments=''>
|
||||
Returns the description for this Course.
|
||||
@@ -1598,7 +1598,7 @@
|
||||
Returns the Course's group name.
|
||||
</Function>
|
||||
<Function name='GetPlayMode' renamed='true' return='PlayMode' arguments=''>
|
||||
Returns the Course's <Link class='ENUM' function='PlayMode' />. (Returns PlayMode in sm-ssc; integer in SM4)
|
||||
Returns the Course's <Link class='ENUM' function='PlayMode' />. (Returns PlayMode in SM5; integer in SM4)
|
||||
</Function>
|
||||
<Function name='GetScripter' return='string' arguments=''>
|
||||
Returns the name of the person who scripted the Course.
|
||||
@@ -1715,6 +1715,15 @@
|
||||
<Function name='GetLatestIndex' return='int' arguments=''>
|
||||
Returns the index of the last banner loaded.
|
||||
</Function>
|
||||
<Function name='LoadCourseFallback' return='void' arguments=''>
|
||||
Loads the fallback course banner.
|
||||
</Function>
|
||||
<Function name='LoadFallback' return='void' arguments=''>
|
||||
Loads the fallback banner.
|
||||
</Function>
|
||||
<Function name='LoadCardFromCharacter' return='void' arguments='Character pCharacter'>
|
||||
Loads the card image from the specified Character.
|
||||
</Function>
|
||||
<Function name='LoadFromCourse' return='void' arguments='Course c'>
|
||||
Loads a Banner from a specified Course.
|
||||
</Function>
|
||||
@@ -1724,6 +1733,24 @@
|
||||
<Function name='LoadFromSongGroup' return='void' arguments='string s'>
|
||||
Loads a Banner from a specified Song Group.
|
||||
</Function>
|
||||
<Function name='LoadFromSortOrder' return='void' arguments='SortOrder so'>
|
||||
Loads a Banner from a specified SortOrder.
|
||||
</Function>
|
||||
<Function name='LoadIconFromCharacter' return='void' arguments='Character pCharacter'>
|
||||
Loads an icon from the specified Character.
|
||||
</Function>
|
||||
<Function name='LoadRandom' return='void' arguments=''>
|
||||
Loads the Random banner.
|
||||
</Function>
|
||||
<Function name='LoadRoulette' return='void' arguments=''>
|
||||
Loads the Roulette banner.
|
||||
</Function>
|
||||
<Function name='scaletoclipped' return='void' arguments='float fWidth, float fHeight'>
|
||||
See <Link class='Sprite' function='scaletoclipped' />.
|
||||
</Function>
|
||||
<Function name='ScaleToClipped' return='void' arguments='float fWidth, float fHeight'>
|
||||
See <Link class='Sprite' function='scaletoclipped' />.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='StepsDisplayList'>
|
||||
<Function name='setfromgamestate' return='void' arguments=''>
|
||||
@@ -1802,11 +1829,25 @@
|
||||
<Function name='PlayAnnouncer' return='void' arguments='string sPath'>
|
||||
Plays a sound from the current announcer.
|
||||
</Function>
|
||||
<Function name='PlayMusicPart' return='void' arguments='string musicPath, float musicStart, float musicLength, float fadeIn = 0, float fadeOut = 0'>
|
||||
Play the sound at <code>musicPath</code> starting from <code>musicStart</code> for
|
||||
<code>musicLength</code> seconds one time. Both <code>fadeIn</code> and
|
||||
<code>fadeOut</code> can be customized as required.
|
||||
</Function>
|
||||
<Function name='PlayOnce' return='void' arguments='string sPath'>
|
||||
Play the sound at <code>sPath</code> one time.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='GameState'>
|
||||
<Function name='AddStageToPlayer' return='void' arguments='PlayerNumber pn'>
|
||||
Adds another stage to the specifed player.
|
||||
</Function>
|
||||
<Function name='ApplyPreferredModifiers' return='void' arguments='PlayerNumber pn, string mods'>
|
||||
Applies the specified modifiers for the specified player's preferred modifier set.
|
||||
</Function>
|
||||
<Function name='ApplyStageModifiers' return='void' arguments='PlayerNumber pn, string mods'>
|
||||
Applies the specified modifiers for the specified player for the current stage.
|
||||
</Function>
|
||||
<Function name='AnyPlayerHasRankingFeats' return='bool' arguments=''>
|
||||
Returns <code>true</code> if any player has performed a feat worthy of ranking.
|
||||
</Function>
|
||||
@@ -1817,6 +1858,9 @@
|
||||
<Function name='ClearStageModifiersIllegalForCourse' return='void' arguments=''>
|
||||
Removes any stage modifiers that are illegal for course play.
|
||||
</Function>
|
||||
<Function name='CurrentOptionsDisqualifyPlayer' return='bool' arguments='PlayerNumber pn'>
|
||||
Returns <code>true</code> if <code>pn</code>'s options will disqualify them for ranking.
|
||||
</Function>
|
||||
<Function name='EnoughCreditsToJoin' return='bool' arguments=''>
|
||||
Returns <code>true</code> if enough credits have been inserted to join.
|
||||
</Function>
|
||||
@@ -1884,6 +1928,9 @@
|
||||
<Function name='GetDefaultSongOptions' return='string' arguments=''>
|
||||
Return a string representation of the default song options.
|
||||
</Function>
|
||||
<Function name='GetEarnedExtraStage' return='EarnedExtraStage' arguments=''>
|
||||
Returns the <Link class='ENUM' function='EarnedExtraStage' /> value.
|
||||
</Function>
|
||||
<Function name='GetEasiestStepsDifficulty' return='Difficulty' arguments=''>
|
||||
Return the easiest <Link class='ENUM' function='Difficulty' /> of the
|
||||
currently selected steps by all players. For example, if player 1 has
|
||||
@@ -1976,22 +2023,22 @@
|
||||
Returns the smallest number of stages left for any human player.
|
||||
</Function>
|
||||
<Function name='GetSongBeat' theme='_fallback' return='float' arguments=''>
|
||||
[01 compat.lua] Returns the current beat of the song.
|
||||
[01 alias.lua] Returns the current beat of the song.
|
||||
</Function>
|
||||
<Function name='GetSongBeatNoOffset' theme='_fallback' return='float' arguments=''>
|
||||
[01 compat.lua] Returns the current beat of the song without an offset.
|
||||
[01 alias.lua] Returns the current beat of the song without an offset.
|
||||
</Function>
|
||||
<Function name='GetSongBeatVisible' return='float' arguments=''>
|
||||
Returns the current visible beat of the song.
|
||||
</Function>
|
||||
<Function name='GetSongBPS' theme='_fallback' return='float' arguments=''>
|
||||
[01 compat.lua] Returns the song's current beats per second.
|
||||
[01 alias.lua] Returns the song's current beats per second.
|
||||
</Function>
|
||||
<Function name='GetSongDelay' theme='_fallback' return='bool' arguments=''>
|
||||
[01 compat.lua] Returns <code>true</code> if a delay is active in the song.
|
||||
[01 alias.lua] Returns <code>true</code> if a delay is active in the song.
|
||||
</Function>
|
||||
<Function name='GetSongFreeze' theme='_fallback' return='bool' arguments=''>
|
||||
[01 compat.lua] Returns <code>true</code> if the song is currently in a freeze.
|
||||
[01 alias.lua] Returns <code>true</code> if the song is currently in a freeze.
|
||||
</Function>
|
||||
<Function name='GetSongOptions' return='string' arguments='ModsLevel ml'>
|
||||
Returns the song options for the specified ModsLevel as a string.
|
||||
@@ -2268,6 +2315,9 @@
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='MenuTimer'>
|
||||
<Function name='disable' return='void' arguments=''>
|
||||
Stops the MenuTimer by setting it to 99.99 and pausing.
|
||||
</Function>
|
||||
<Function name='GetSeconds' return='float' arguments=''>
|
||||
Returns the current MenuTimer's value.
|
||||
</Function>
|
||||
@@ -2275,11 +2325,17 @@
|
||||
Pauses the MenuTimer, stopping it from counting down.
|
||||
</Function>
|
||||
<Function name='setseconds' return='void' arguments='float fSeconds'>
|
||||
Compatibility alias for SetSeconds.
|
||||
</Function>
|
||||
<Function name='SetSeconds' return='void' arguments='float fSeconds'>
|
||||
Sets the MenuTimer's value to <code>fSeconds</code>.
|
||||
</Function>
|
||||
<Function name='silent' return='void' arguments='bool bSilent'>
|
||||
Sets the MenuTimer's silent setting to <code>bSilent</code>.
|
||||
</Function>
|
||||
<Function name='start' return='void' arguments=''>
|
||||
Starts up the timer.
|
||||
</Function>
|
||||
<Function name='stealth' return='void' arguments='bool bStealth'>
|
||||
Sets the MenuTimer's stealth setting to <code>bStealth</code>. If
|
||||
<code>true</code>, the timer will be invisible and silent.
|
||||
@@ -2301,6 +2357,9 @@
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='Model'>
|
||||
<Function name='GetDefaultAnimation' return='string' arguments=''>
|
||||
Returns the model's default animation.
|
||||
</Function>
|
||||
<Function name='loop' return='void' arguments='bool bLoop'>
|
||||
Controls if the model should loop or not.
|
||||
</Function>
|
||||
@@ -2740,20 +2799,6 @@
|
||||
<Function name='GetTapNoteScores' return='int' arguments='TapNoteScore tns'>
|
||||
Returns the number of judgments for a specified TapNoteScore.
|
||||
</Function>
|
||||
<!-- removed:
|
||||
<Function name='IsFullComboW1' renamed='true' return='bool' arguments=''>
|
||||
[01 compat.lua] Returns <code>true</code> if the player got a full combo of all W1s.
|
||||
</Function>
|
||||
<Function name='IsFullComboW2' renamed='true' return='bool' arguments=''>
|
||||
[01 compat.lua] Returns <code>true</code> if the player got a full combo of all W2s.
|
||||
</Function>
|
||||
<Function name='IsFullComboW3' renamed='true' return='bool' arguments=''>
|
||||
[01 compat.lua] Returns <code>true</code> if the player got a full combo of all W3s.
|
||||
</Function>
|
||||
<Function name='IsFullComboW4' renamed='true' return='bool' arguments=''>
|
||||
[01 compat.lua] Returns <code>true</code> if the player got a full combo of all W4s.
|
||||
</Function>
|
||||
-->
|
||||
<Function name='MaxCombo' return='int' arguments=''>
|
||||
Returns the max combo for this performance.
|
||||
</Function>
|
||||
@@ -2995,6 +3040,15 @@
|
||||
<Function name='GetDisplayWidth' return='int' arguments=''>
|
||||
Return the width of the display.
|
||||
</Function>
|
||||
<Function name='GetFPS' return='int' arguments=''>
|
||||
Return the FPS.
|
||||
</Function>
|
||||
<Function name='GetVPF' return='int' arguments=''>
|
||||
Return the VPF.
|
||||
</Function>
|
||||
<Function name='GetCumFPS' return='int' arguments=''>
|
||||
Return the cumulative FPS.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='RageFile'>
|
||||
<Description>
|
||||
@@ -3316,9 +3370,15 @@
|
||||
<Function name='GetBannerPath' return='string' arguments=''>
|
||||
Returns the path to the song's banner.
|
||||
</Function>
|
||||
<Function name='GetCDImagePath' return='string' arguments=''>
|
||||
Returns the path to the song's CD image.
|
||||
</Function>
|
||||
<Function name='GetCDTitlePath' return='string' arguments=''>
|
||||
Gets the path to the CDTitle.
|
||||
</Function>
|
||||
<Function name='GetDiscPath' return='string' arguments=''>
|
||||
Returns the path to the song's disc image (different from CD, think Pump).
|
||||
</Function>
|
||||
<Function name='GetDisplayArtist' return='string' arguments=''>
|
||||
Returns the displayed artist of the song.
|
||||
</Function>
|
||||
@@ -3346,6 +3406,9 @@
|
||||
<Function name='GetGroupName' return='string' arguments=''>
|
||||
Returns the group name that the song is in.
|
||||
</Function>
|
||||
<Function name='GetJacketPath' return='string' arguments=''>
|
||||
Returns the path to the song's jacket image.
|
||||
</Function>
|
||||
<Function name='GetLastBeat' return='float' arguments=''>
|
||||
Returns the last beat of the song.
|
||||
</Function>
|
||||
@@ -3412,12 +3475,21 @@
|
||||
<Function name='HasBGChanges' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has BGChanges.
|
||||
</Function>
|
||||
<Function name='HasCDImage' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has a CD image.
|
||||
</Function>
|
||||
<Function name='HasCDTitle' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has a CDTitle.
|
||||
</Function>
|
||||
<Function name='HasDisc' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has a Disc graphic.
|
||||
</Function>
|
||||
<Function name='HasEdits' return='bool' arguments='StepsType st'>
|
||||
Returns <code>true</code> if the song has edits.
|
||||
</Function>
|
||||
<Function name='HasCDJacket' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has a jacket graphic.
|
||||
</Function>
|
||||
<Function name='HasLyrics' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has lyrics.
|
||||
</Function>
|
||||
@@ -3425,10 +3497,10 @@
|
||||
Returns <code>true</code> if the song has music.
|
||||
</Function>
|
||||
<Function name='HasSignificantBPMChangesOrStops' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has significant elephants or bison.
|
||||
Returns <code>true</code> if the song has significant BPM changes or stops.
|
||||
</Function>
|
||||
<Function name='HasStepsType' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song has .
|
||||
<Function name='HasStepsType' return='bool' arguments='StepsType st'>
|
||||
Returns <code>true</code> if the song has the specified StepsType.
|
||||
</Function>
|
||||
<Function name='IsDisplayBpmConstant' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the song's DisplayBPM is constant.
|
||||
@@ -3531,7 +3603,7 @@
|
||||
<Function name='GetPopularSongs' return='{Song}' arguments=''>
|
||||
Returns a table of popular songs.
|
||||
</Function>
|
||||
<Function name='GetPreferredSortCourses' return='' arguments='CourseType ct, bool bIncludeAutogen'>
|
||||
<Function name='GetPreferredSortCourses' return='{Course}' arguments='CourseType ct, bool bIncludeAutogen'>
|
||||
Returns a table of courses as they'd appear in preferred sort.
|
||||
</Function>
|
||||
<Function name='GetPreferredSortSongs' return='{Song}' arguments=''>
|
||||
@@ -3814,13 +3886,13 @@
|
||||
<Function name='IsAutogen' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the steps were automatically generated.
|
||||
</Function>
|
||||
<Function name='IsDisplayBpmConstant' return='' arguments=''>
|
||||
<Function name='IsDisplayBpmConstant' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the DisplayBPM is constant.
|
||||
</Function>
|
||||
<Function name='IsDisplayBpmRandom' return='' arguments=''>
|
||||
<Function name='IsDisplayBpmRandom' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the DisplayBPM is random.
|
||||
</Function>
|
||||
<Function name='IsDisplayBpmSecret' return='' arguments=''>
|
||||
<Function name='IsDisplayBpmSecret' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the DisplayBPM is secret.
|
||||
</Function>
|
||||
<Function name='PredictMeter' return='float' arguments=''>
|
||||
@@ -4197,6 +4269,14 @@
|
||||
Attempts to set the open section to <code>sSection</code>.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='WheelItemBase'>
|
||||
<Function name='GetColor' return='color' arguments=''>
|
||||
Returns the color of this wheel item.
|
||||
</Function>
|
||||
<Function name='GetText' return='string' arguments=''>
|
||||
Returns the text of this wheel item.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='WorkoutGraph'>
|
||||
<Function name='SetFromCurrentWorkout' return='void' arguments=''>
|
||||
Sets the WorkoutGraph from the current Workout.
|
||||
|
||||
+11
-5
@@ -10,7 +10,7 @@ AJ Kelly as freem
|
||||
* UserPreferences and some other Lua scripts
|
||||
* Some small theme edits here and there
|
||||
* Noteskins (retro, retrobar*)
|
||||
* Windows project file maintainer
|
||||
* Windows project file maintainer (mostly)
|
||||
|
||||
Midiman
|
||||
* Did most of the work on _fallback and default themes
|
||||
@@ -39,7 +39,7 @@ Daisuke Master
|
||||
* Taking advantage of sm-ssc's new features :)
|
||||
|
||||
FSX
|
||||
* Various fixes. (see Changelog_sm-ssc.txt for more details)
|
||||
* Various fixes. (see Changelogs for more details)
|
||||
|
||||
Nicole Reid (okeeblow)
|
||||
* Tested building sm-ssc on FreeBSD, provided fixes.
|
||||
@@ -59,6 +59,9 @@ StepMania Team
|
||||
* Keeping StepMania 5 alive with changes, and providing a nice codebase for
|
||||
us to work with.
|
||||
|
||||
1a2a3a2a1a
|
||||
* Various beat mode fixes
|
||||
|
||||
Kaox
|
||||
* Pump/default noteskin
|
||||
|
||||
@@ -66,7 +69,7 @@ cesarmades
|
||||
* Pump/cmd-* noteskins
|
||||
|
||||
David Santamaría Rogado (howl)
|
||||
* Various patches (see Changelog_sm-ssc.txt for more details and links)
|
||||
* Various patches (see Changelogs for more details and links)
|
||||
|
||||
Kita K./D. Trucks
|
||||
* default theme music
|
||||
@@ -113,10 +116,13 @@ Tatsh
|
||||
* A patch to fix building with system ffmpeg
|
||||
(http://ssc.ajworld.net/sm-ssc/bugtracker/view.php?id=218)
|
||||
|
||||
A.C(waiei)
|
||||
* Hybrid scoring mode
|
||||
A.C (@waiei)
|
||||
* Hybrid scoring mode + scoring fixes
|
||||
* Various patches/fixes/bug reporting
|
||||
|
||||
桜為�鳩 (@sakuraponila)
|
||||
* Scoring fixes
|
||||
|
||||
==the beta testers==
|
||||
[SSC Beta Testing Team]
|
||||
KeithD
|
||||
|
||||
@@ -44,21 +44,23 @@ local oitg = {
|
||||
}
|
||||
|
||||
local contrib = {
|
||||
"Aldo Fregoso (Aldo_MX)", -- delays
|
||||
"cerbo",
|
||||
"Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator
|
||||
"A.C/@waiei", -- custom scoring fixes + Hybrid scoring
|
||||
"cerbo", -- lua bindings and other fun stuff
|
||||
"cesarmades", -- pump/cmd* noteskins
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel stepstype support
|
||||
"Christophe Goulet-LeBlanc (Kommisar)", -- songs
|
||||
"corec", -- various fixes
|
||||
"galopin", -- piu PlayStation2 usb mat support
|
||||
"gholms", -- automake 1.11 support
|
||||
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
|
||||
"Kaox", -- pump/default noteskin
|
||||
"Petriform", -- Music
|
||||
"NitroX72", -- pump/frame noteskin
|
||||
"Petriform", -- default theme music
|
||||
"桜為小鳩/@sakuraponila", -- custom scoring fixes
|
||||
"Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes
|
||||
"sy567", -- beginner helper fix
|
||||
"v1toko", -- x-mode from StepNXA
|
||||
"waiei", -- custom scoring fixes + Hybrid scoring
|
||||
}
|
||||
|
||||
local translators = {
|
||||
@@ -72,6 +74,7 @@ local thanks = {
|
||||
"Dreamwoods",
|
||||
"Jason Bolt (LightningXCE)",
|
||||
"Jousway", -- Noteskins
|
||||
"Luizsan", -- creator of Delta theme
|
||||
"Matt1360", -- Automake magic + oitg bro
|
||||
"Renard",
|
||||
"Ryan McKanna (Plaguefox)",
|
||||
@@ -80,13 +83,13 @@ local thanks = {
|
||||
local shoutout = {
|
||||
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
|
||||
"Mojang AB", -- minecraft forever -freem
|
||||
"Wolfire Games", -- piles of inspiration
|
||||
"NAKET Coder",
|
||||
"Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits
|
||||
--Image(), -- we should have some logos probably to look super pro
|
||||
"#KBO",
|
||||
"Celestia Radio", -- LOVE AND TOLERANCE
|
||||
"You showed us... your ultimate dance",
|
||||
-- "Can't stop crying... buckets of tears!"
|
||||
}
|
||||
|
||||
local copyright = {
|
||||
@@ -146,7 +149,6 @@ creditScroller.BeginCommand=function(self)
|
||||
SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) );
|
||||
end;
|
||||
|
||||
|
||||
return Def.ActorFrame{
|
||||
creditScroller..{
|
||||
InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64),
|
||||
|
||||
@@ -148,31 +148,3 @@ function InitUserPrefs()
|
||||
SetUserPref("UserPrefScoringMode", 'DDR Extreme');
|
||||
end;
|
||||
end;
|
||||
|
||||
function UserPrefScoringMode()
|
||||
local baseChoices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR Extreme', 'DDR SuperNOVA', 'DDR SuperNOVA 2', 'MIGS', 'HYBRID' }; --'[SSC] Radar Master'
|
||||
local t = {
|
||||
Name = "UserPrefScoringMode";
|
||||
LayoutType = "ShowAllInRow";
|
||||
SelectType = "SelectOne";
|
||||
OneChoiceForAllPlayers = true;
|
||||
ExportOnChange = false;
|
||||
Choices = baseChoices;
|
||||
LoadSelections = function(self, list, pn)
|
||||
if ReadPrefFromFile("UserPrefScoringMode") ~= nil then
|
||||
local theValue = ReadPrefFromFile("UserPrefScoringMode");
|
||||
local success = false;
|
||||
for k,v in ipairs(baseChoices) do if v == theValue then list[k] = true success = true break end end;
|
||||
if success == false then list[1] = true end;
|
||||
else
|
||||
WritePrefToFile("UserPrefScoringMode", 'DDR Extreme');
|
||||
list[1] = true;
|
||||
end;
|
||||
end;
|
||||
SaveSelections = function(self, list, pn)
|
||||
for k,v in ipairs(list) do if v then WritePrefToFile("UserPrefScoringMode", baseChoices[k]) break end end;
|
||||
end;
|
||||
};
|
||||
setmetatable( t, t );
|
||||
return t;
|
||||
end
|
||||
@@ -11,7 +11,14 @@ function GetTotalItems(radars)
|
||||
local total = radars:GetValue('RadarCategory_TapsAndHolds')
|
||||
total = total + radars:GetValue('RadarCategory_Holds')
|
||||
total = total + radars:GetValue('RadarCategory_Rolls')
|
||||
total = total + radars:GetValue('RadarCategory_Lifts')
|
||||
-- [ja] Liftを加えると一部二重加算になるため除外する。
|
||||
-- total = total + radars:GetValue('RadarCategory_Lifts')
|
||||
|
||||
-- [en] prevent divide by 0
|
||||
-- [ja] 0除算対策(しなくても動作するけど満点になっちゃうんで)
|
||||
if total <= 0 then
|
||||
total = 1
|
||||
end;
|
||||
return total
|
||||
end;
|
||||
|
||||
@@ -29,61 +36,44 @@ function GetDirectRadar(player)
|
||||
end;
|
||||
|
||||
-----------------------------------------------------------
|
||||
--DDR 1st Mix and 2nd Mix Scoring
|
||||
--Oldschool scoring, best described as a modified 4th mix scheme
|
||||
--with a little 1st mix influence
|
||||
-----------------------------------------------------------
|
||||
r['DDR 1stMIX'] = function(params, pss)
|
||||
local dCombo = math.floor((pss:GetCurrentCombo()+1)/4);
|
||||
local bScore = (dCombo^2+1) * 100;
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1']=3,
|
||||
['TapNoteScore_W2']=3,
|
||||
['TapNoteScore_W3']=1
|
||||
};
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
--if score increases above the boundaries of a 32-bit signed
|
||||
--(about 2.15 billion), it stops increasing. Conveniently,
|
||||
--1st Mix clamped score as well.
|
||||
local capScore = 999999999;
|
||||
local bestScore = bScore * multLookup['TapNoteScore_W1'];
|
||||
local localScore = bScore * multLookup[params.TapNoteScore];
|
||||
pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+(bestScore),0,capScore));
|
||||
pss:SetScore(clamp(pss:GetScore()+(localScore),0,capScore));
|
||||
|
||||
end;
|
||||
-----------------------------------------------------------
|
||||
--DDR 4th Mix/Extra Mix/Konamix/GB3/DDRPC Scoring
|
||||
-----------------------------------------------------------
|
||||
r['DDR 4thMIX'] = function(params, pss)
|
||||
r['Oldschool'] = function(params, pss)
|
||||
local bestPoints = 999
|
||||
local scoreLookupTable =
|
||||
{
|
||||
['TapNoteScore_W1']=777,
|
||||
['TapNoteScore_W2']=777,
|
||||
['TapNoteScore_W3']=555
|
||||
['TapNoteScore_W1']=999,
|
||||
['TapNoteScore_W2']=IsW1Allowed('TapNoteScore_W2') and 888 or 999,
|
||||
['TapNoteScore_W3']=777,
|
||||
['TapNoteScore_W4']=555,
|
||||
['TapNoteScore_W5']=111,
|
||||
};
|
||||
setmetatable(scoreLookupTable, ZeroIfNotFound);
|
||||
-- TODO: Modify this so that current max assumes full combo?
|
||||
local comboBonusForThisStep = (pss:GetCurrentCombo()+1)*333;
|
||||
local capScore = 999999999;
|
||||
local bestPoints = scoreLookupTable['TapNoteScore_W1'];
|
||||
local bestCombo = bestPoints and comboBonusForThisStep or 0;
|
||||
pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+bestPoints+bestCombo,0,capScore));
|
||||
local localPoints = scoreLookupTable[params.TapNoteScore];
|
||||
local localCombo = localPoints and comboBonusForThisStep or 0;
|
||||
pss:SetScore(clamp(pss:GetScore()+localPoints+localCombo,0,capScore));
|
||||
local comboBonusForThisStep = (pss:GetCurrentCombo()*111)^1.1;
|
||||
local capScore = 1000000000;
|
||||
pss:SetCurMaxScore(capScore); --i don't really care about weird scoring modes -fsx
|
||||
local pointsGot = comboBonusForThisStep + scoreLookupTable[params.TapNoteScore] + (params.HoldNoteScore == 'HoldNoteScore_Held' and 777 or 0);
|
||||
pss:SetScore(clamp(pss:GetScore()+pointsGot,0,capScore));
|
||||
end;
|
||||
|
||||
-----------------------------------------------------------
|
||||
--DDR MAX2/Extreme Scoring
|
||||
--DDR MAX2/Extreme(-esque) Scoring by @sakuraponila
|
||||
-----------------------------------------------------------
|
||||
local ext_Steps = {0,0};
|
||||
r['DDR Extreme'] = function(params, pss)
|
||||
local judgmentBase = {
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1'] = 10,
|
||||
['TapNoteScore_W2'] = 9,
|
||||
['TapNoteScore_W3'] = 5
|
||||
};
|
||||
setmetatable(judgmentBase, ZeroIfNotFound);
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
local steps = GAMESTATE:GetCurrentSteps(params.Player);
|
||||
local radarValues = steps:GetRadarValues(params.Player);
|
||||
local radarValues = GetDirectRadar(params.Player);
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
-- 1 + 2 + 3 + ... + totalItems value/の値
|
||||
local sTotal = (totalItems + 1) * totalItems / 2;
|
||||
local meter = steps:GetMeter();
|
||||
if (steps:IsAnEdit()) then
|
||||
meter = 5;
|
||||
@@ -92,39 +82,62 @@ r['DDR Extreme'] = function(params, pss)
|
||||
elseif (meter > 10) then
|
||||
meter = 10;
|
||||
end;
|
||||
local baseScore = meter * 1000000;
|
||||
-- [en] score for one step
|
||||
-- [ja] 1ステップあたりのスコア
|
||||
local baseScore = meter * 1000000
|
||||
if (GAMESTATE:GetCurrentSong():IsMarathon()) then
|
||||
baseScore = baseScore * 3;
|
||||
elseif (GAMESTATE:GetCurrentSong():IsLong()) then
|
||||
baseScore = baseScore * 2;
|
||||
end;
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
local singleStep = (1 + totalItems) * totalItems / 2;
|
||||
if (not Shared.CurrentStep) then
|
||||
Shared.CurrentStep = {};
|
||||
Shared.CurrentStep["P1"] = 0;
|
||||
Shared.CurrentStep["P2"] = 0;
|
||||
end;
|
||||
local pn = PlayerNumberToString(params.Player);
|
||||
Shared.CurrentStep[pn] = Shared.CurrentStep[pn] + 1;
|
||||
local stepValue = math.floor(baseScore /singleStep);
|
||||
local stepLast = stepValue * Shared.CurrentStep[pn];
|
||||
pss:SetCurMaxScore(pss:GetCurMaxScore() +
|
||||
(stepLast * judgmentBase['TapNoteScore_W1']));
|
||||
local judgeScore = 0;
|
||||
if (params.HoldNoteScore == 'HoldNoteScore_Held') then
|
||||
judgeScore = judgmentBase['TapNoteScore_W1'];
|
||||
local sOne = math.floor(baseScore / sTotal);
|
||||
-- [en] measures for 5 points of units
|
||||
-- [ja] 5点単位のための処置
|
||||
sOne = sOne - sOne % 5;
|
||||
-- [en] because fractions are added by the last step, get value
|
||||
-- [ja] 端数は最後の1ステップで加算するのでその値を取得
|
||||
local sLast = baseScore - (sOne * sTotal);
|
||||
|
||||
local p;
|
||||
if params.Player == 'PlayerNumber_P1' then
|
||||
p = 1;
|
||||
else
|
||||
judgeScore = judgmentBase[params.TapNoteScore];
|
||||
if (IsW1Allowed(params.TapNoteScore)) then
|
||||
judgeScore = judgmentBase['TapNoteScore_W1'];
|
||||
p = 2;
|
||||
end;
|
||||
-- [en] initialized when score is 0
|
||||
-- [ja] スコアが0の時に初期化
|
||||
if pss:GetScore() == 0 then
|
||||
ext_Steps[p] = 0;
|
||||
end;
|
||||
-- [en] now step count
|
||||
-- [ja] 現在のステップ数
|
||||
ext_Steps[p] = ext_Steps[p] + 1;
|
||||
-- [en] current score
|
||||
-- [ja] 今回加算するスコア(W1の時)
|
||||
local vScore = sOne * ext_Steps[p];
|
||||
pss:SetCurMaxScore(pss:GetCurMaxScore() + vScore);
|
||||
-- [ja] 判定によって加算量を変更
|
||||
if (params.HoldNoteScore == 'HoldNoteScore_Held') then
|
||||
-- [ja] O.K.判定時は問答無用で満点
|
||||
vScore = vScore;
|
||||
else
|
||||
-- [ja] N.G.判定時は問答無用で0点
|
||||
if (params.HoldNoteScore == 'HoldNoteScore_LetGo') then
|
||||
vScore = 0;
|
||||
-- [en] non-long note scoring
|
||||
-- [ja] それ以外ということは、ロングノート以外の判定である
|
||||
else
|
||||
vScore = vScore * multLookup[params.TapNoteScore] / 10
|
||||
end;
|
||||
end;
|
||||
local stepScore = judgeScore * stepLast;
|
||||
pss:SetScore(pss:GetScore() + stepScore);
|
||||
if (Shared.CurrentStep[pn] >= totalItems) then -- Just in case.
|
||||
-- TODO: Implement the bonus for the last step?
|
||||
Shared.CurrentStep[pn] = 0; -- Reset for the next song.
|
||||
-- [en] measures for 5 points of units
|
||||
-- [ja] ここでも5点単位のための処置
|
||||
vScore = vScore - vScore % 5
|
||||
pss:SetScore(pss:GetScore() + vScore);
|
||||
-- if one of the last step, add the fractions
|
||||
-- [ja] 最後の1ステップの場合、端数を加算する
|
||||
if ((vScore > 0) and (ext_Steps[p] == totalItems)) then
|
||||
pss:SetScore(pss:GetScore() + sLast);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -132,7 +145,7 @@ end;
|
||||
--HYBRID Scoring, contributed by @waiei
|
||||
-----------------------------------------------------------
|
||||
local hyb_Steps={0,0};
|
||||
r['HYBRID'] = function(params, pss)
|
||||
r['Hybrid'] = function(params, pss)
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1'] = 10,
|
||||
@@ -141,8 +154,7 @@ r['HYBRID'] = function(params, pss)
|
||||
};
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
local radarValues = GetDirectRadar(params.Player);
|
||||
-- [ja] GetTotalItems(radarValues) に Liftも含まれているので 引いておく
|
||||
local totalItems = GetTotalItems(radarValues) - radarValues:GetValue('RadarCategory_Lifts');
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
-- 1+2+3+...+totalItems value/の値
|
||||
local sTotal = (totalItems+1)*totalItems/2;
|
||||
-- [en] Score for one song
|
||||
@@ -151,9 +163,13 @@ r['HYBRID'] = function(params, pss)
|
||||
-- [ja] 端数は最後の1ステップで加算するのでその値を取得
|
||||
local sLast = 100000000-(sOne*sTotal);
|
||||
|
||||
local p = (params.Player == 'PlayerNumber_P1') and 1 or 2
|
||||
local p;
|
||||
if params.Player=='PlayerNumber_P1' then
|
||||
p=1;
|
||||
else
|
||||
p=2;
|
||||
end;
|
||||
|
||||
-- [en] Initialize score if 0.
|
||||
-- [ja] スコアが0の時に初期化
|
||||
if pss:GetScore()==0 then
|
||||
hyb_Steps[p]=0;
|
||||
@@ -184,26 +200,81 @@ r['HYBRID'] = function(params, pss)
|
||||
end;
|
||||
|
||||
-----------------------------------------------------------
|
||||
--DDR SuperNOVA(-esque) scoring
|
||||
--DDR SuperNOVA scoring (Use MARVELOUS) by @sakuraponila
|
||||
-----------------------------------------------------------
|
||||
local sntmp_Score = {0,0};
|
||||
local sntmp_Steps = {0,0};
|
||||
r['DDR SuperNOVA'] = function(params, pss)
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1'] = 3,
|
||||
['TapNoteScore_W2'] = 2,
|
||||
['TapNoteScore_W3'] = 1
|
||||
};
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
local radarValues = GetDirectRadar(params.Player);
|
||||
local totalItems = GetTotalItems(radarValues)
|
||||
local p;
|
||||
if params.Player == 'PlayerNumber_P1' then
|
||||
p = 1;
|
||||
else
|
||||
p = 2;
|
||||
end;
|
||||
|
||||
-- initialized when score is 0
|
||||
-- [ja] スコアが0の時に初期化
|
||||
if pss:GetScore() == 0 then
|
||||
sntmp_Score[p] = 0;
|
||||
sntmp_Steps[p] = 0;
|
||||
end;
|
||||
|
||||
-- [ja] 判定によって加算量を変更
|
||||
local maxAdd = 0;
|
||||
-- [ja] O.K.判定時は問答無用で満点
|
||||
if params.HoldNoteScore == 'HoldNoteScore_Held' then
|
||||
maxAdd = 3;
|
||||
else
|
||||
-- [ja] N.G.判定時は問答無用で0点
|
||||
if params.HoldNoteScore == 'HoldNoteScore_LetGo' then
|
||||
maxAdd = 0;
|
||||
-- [ja] それ以外ということは、ロングノート以外の判定である
|
||||
else
|
||||
maxAdd = multLookup[params.TapNoteScore];
|
||||
end
|
||||
end;
|
||||
sntmp_Score[p] = sntmp_Score[p] + maxAdd;
|
||||
|
||||
-- [ja] 踏み踏みしたステップ数
|
||||
sntmp_Steps[p] = sntmp_Steps[p] + 1;
|
||||
-- [ja] 現時点での、All W1判定の時のスコア
|
||||
pss:SetCurMaxScore(math.floor(10000000 * sntmp_Steps[p] / totalItems / 3));
|
||||
-- [ja] 計算して代入
|
||||
pss:SetScore(math.floor(10000000 * sntmp_Score[p] / totalItems / 3));
|
||||
end;
|
||||
|
||||
-----------------------------------------------------------
|
||||
--DDR SuperNOVA 2 scoring by @waiei
|
||||
-----------------------------------------------------------
|
||||
local sn2tmp_Sub={0,0};
|
||||
local sn2tmp_Score={0,0};
|
||||
local sn2tmp_Steps={0,0};
|
||||
r['DDR SuperNOVA'] = function(params, pss)
|
||||
r['DDR SuperNOVA 2'] = function(params, pss)
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1'] = 1,
|
||||
['TapNoteScore_W2'] = 1,
|
||||
['TapNoteScore_W3'] = 0.5
|
||||
['TapNoteScore_W1'] = 10,
|
||||
['TapNoteScore_W2'] = 10,
|
||||
['TapNoteScore_W3'] = 5
|
||||
};
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
local radarValues = GetDirectRadar(params.Player);
|
||||
local totalItems = GetTotalItems(radarValues);
|
||||
local p;
|
||||
if params.Player=='PlayerNumber_P1' then
|
||||
p=1;
|
||||
else
|
||||
p=2;
|
||||
end;
|
||||
|
||||
if totalItems < 0 then totalItems = 1; end
|
||||
local p = (params.Player == 'PlayerNumber_P1') and 1 or 2
|
||||
|
||||
-- [en] Initialize score if 0.
|
||||
-- [ja] スコアが0の時に初期化
|
||||
if pss:GetScore()==0 then
|
||||
sn2tmp_Sub[p]=0;
|
||||
@@ -213,7 +284,6 @@ r['DDR SuperNOVA'] = function(params, pss)
|
||||
|
||||
-- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%)
|
||||
local maxAdd = 0;
|
||||
|
||||
-- [ja] O.K.判定時は問答無用で満点
|
||||
if params.HoldNoteScore == 'HoldNoteScore_Held' then
|
||||
maxAdd = 10;
|
||||
@@ -229,7 +299,7 @@ r['DDR SuperNOVA'] = function(params, pss)
|
||||
sn2tmp_Sub[p]=sn2tmp_Sub[p]+1;
|
||||
end;
|
||||
end
|
||||
end
|
||||
end;
|
||||
sn2tmp_Score[p]=sn2tmp_Score[p]+maxAdd;
|
||||
-- [ja] 踏み踏みしたステップ数
|
||||
sn2tmp_Steps[p]=sn2tmp_Steps[p]+1;
|
||||
@@ -239,62 +309,7 @@ r['DDR SuperNOVA'] = function(params, pss)
|
||||
-- [ja] 計算して代入
|
||||
pss:SetScore((math.floor(10000*sn2tmp_Score[p]/totalItems) * 10) - (sn2tmp_Sub[p]*10) );
|
||||
end;
|
||||
-----------------------------------------------------------
|
||||
--DDR SuperNOVA 2(-esque) scoring
|
||||
-----------------------------------------------------------
|
||||
local sn2tmp_Sub=0;
|
||||
local sn2tmp_Score=0;
|
||||
local sn2tmp_Steps=0;
|
||||
r['DDR SuperNOVA 2'] = function(params, pss)
|
||||
local multLookup =
|
||||
{
|
||||
['TapNoteScore_W1'] = 10,
|
||||
['TapNoteScore_W2'] = 10,
|
||||
['TapNoteScore_W3'] = 5
|
||||
};
|
||||
setmetatable(multLookup, ZeroIfNotFound);
|
||||
local radarValues = GetDirectRadar(params.Player);
|
||||
-- [ja] GetTotalItems(radarValues) に Liftも含まれているので 引いておく
|
||||
local totalItems = GetTotalItems(radarValues) - radarValues:GetValue('RadarCategory_Lifts');
|
||||
-- [ja] 0除算対策(しなくても動作するけど満点になっちゃうんで)
|
||||
if totalItems <= 0 then
|
||||
totalItems=1
|
||||
end;
|
||||
|
||||
-- [ja] スコアが0の時に初期化
|
||||
if pss:GetScore() == 0 then
|
||||
sn2tmp_Sub=0;
|
||||
sn2tmp_Score=0;
|
||||
sn2tmp_Steps=0;
|
||||
end;
|
||||
|
||||
-- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%)
|
||||
local maxAdd = 0;
|
||||
-- [ja] O.K.判定時は問答無用で満点
|
||||
if params.HoldNoteScore == 'HoldNoteScore_Held' then
|
||||
maxAdd = 10;
|
||||
else
|
||||
-- [ja] N.G.判定時は問答無用で0点
|
||||
if params.HoldNoteScore == 'HoldNoteScore_LetGo' then
|
||||
maxAdd = 0;
|
||||
-- [ja] それ以外ということは、ロングノート以外の判定である
|
||||
else
|
||||
maxAdd = multLookup[params.TapNoteScore];
|
||||
if (params.TapNoteScore == 'TapNoteScore_W2') or (params.TapNoteScore=='TapNoteScore_W3') then
|
||||
-- [ja] W2とW3の数を記録
|
||||
sn2tmp_Sub=sn2tmp_Sub+1;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
sn2tmp_Score=sn2tmp_Score+maxAdd;
|
||||
-- [ja] 踏み踏みしたステップ数
|
||||
sn2tmp_Steps=sn2tmp_Steps+1;
|
||||
-- [ja] 現時点での、All W1判定の時のスコア
|
||||
pss:SetCurMaxScore(math.floor(10000*sn2tmp_Steps/totalItems) * 10);
|
||||
|
||||
-- [ja] 計算して代入
|
||||
pss:SetScore((math.floor(10000*sn2tmp_Score/totalItems) * 10) - (sn2tmp_Sub*10) );
|
||||
end;
|
||||
-----------------------------------------------------------
|
||||
--Radar Master (disabled; todo: get this working with StepMania 5)
|
||||
-----------------------------------------------------------
|
||||
@@ -343,12 +358,13 @@ r['MIGS'] = function(params,pss)
|
||||
curScore = curScore + ( pss:GetTapNoteScores(k) * v );
|
||||
end;
|
||||
curScore = math.max(0,curScore + ( pss:GetHoldNoteScores('HoldNoteScore_Held') * 6 ));
|
||||
pss:SetScore(curScore);
|
||||
end;
|
||||
|
||||
--------------------------------------------------------------
|
||||
--1bilDP scoring because I can.
|
||||
--------------------------------------------------------------
|
||||
r['1bilDP']= function(params,pss)
|
||||
r['Billions DP']= function(params,pss)
|
||||
local poss = pss:GetPossibleDancePoints()
|
||||
pss:SetScore(math.floor((pss:GetActualDancePoints()/poss)*1000000000))
|
||||
pss:SetCurMaxScore(math.floor((pss:GetCurrentPossibleDancePoints()/poss)*1000000000))
|
||||
@@ -356,14 +372,34 @@ end
|
||||
-------------------------------------------------------------------------------
|
||||
-- Formulas end here.
|
||||
for v in ivalues(DisabledScoringModes) do r[v] = nil end
|
||||
Scoring = {}
|
||||
setmetatable(Scoring, {
|
||||
__metatable = { "Letting you change the metatable sort of defeats the purpose." },
|
||||
__index = function(tbl, key)
|
||||
for v in ivalues(DisabledScoringModes) do
|
||||
if key == v then return r['DDR Extreme'] end
|
||||
end
|
||||
return r[key]
|
||||
end,
|
||||
}
|
||||
);
|
||||
Scoring = r;
|
||||
|
||||
function UserPrefScoringMode()
|
||||
local baseChoices = {}
|
||||
for k,v in pairs(Scoring) do table.insert(baseChoices,k) end
|
||||
if next(baseChoices) == nil then UndocumentedFeature "No scoring modes available" end
|
||||
local t = {
|
||||
Name = "UserPrefScoringMode";
|
||||
LayoutType = "ShowAllInRow";
|
||||
SelectType = "SelectOne";
|
||||
OneChoiceForAllPlayers = true;
|
||||
ExportOnChange = false;
|
||||
Choices = baseChoices;
|
||||
LoadSelections = function(self, list, pn)
|
||||
if ReadPrefFromFile("UserPrefScoringMode") ~= nil then
|
||||
local theValue = ReadPrefFromFile("UserPrefScoringMode");
|
||||
local success = false;
|
||||
for k,v in ipairs(baseChoices) do if v == theValue then list[k] = true success = true break end end;
|
||||
if success == false then list[1] = true end;
|
||||
else
|
||||
WritePrefToFile("UserPrefScoringMode", baseChoices[1]);
|
||||
list[1] = true;
|
||||
end;
|
||||
end;
|
||||
SaveSelections = function(self, list, pn)
|
||||
for k,v in ipairs(list) do if v then WritePrefToFile("UserPrefScoringMode", baseChoices[k]) break end end;
|
||||
end;
|
||||
};
|
||||
setmetatable( t, t );
|
||||
return t;
|
||||
end
|
||||
|
||||
@@ -3654,6 +3654,9 @@ Beat0OffsetFormat="%s:\n %.3f secs\n"
|
||||
PreviewStartFormat="%s:\n %.3f secs\n"
|
||||
PreviewLengthFormat="%s:\n %.3f secs\n"
|
||||
|
||||
FadeInPreview=0
|
||||
FadeOutPreview=1.5
|
||||
|
||||
[ScreenPracticeMenu]
|
||||
Fallback="ScreenEditMenu"
|
||||
Class="ScreenEditMenu"
|
||||
|
||||
@@ -44,10 +44,11 @@ local oitg = {
|
||||
}
|
||||
|
||||
local contrib = {
|
||||
"Aldo Fregoso (Aldo_MX)", -- delays
|
||||
"cerbo",
|
||||
"Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator
|
||||
"A.C (@waiei)", -- custom scoring fixes + Hybrid scoring
|
||||
"cerbo", -- lua bindings and other fun stuff
|
||||
"cesarmades", -- pump/cmd* noteskins
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel stepstype support
|
||||
"Christophe Goulet-LeBlanc (Kommisar)", -- songs
|
||||
"corec", -- various fixes
|
||||
"galopin", -- piu PlayStation2 usb mat support
|
||||
@@ -55,10 +56,11 @@ local contrib = {
|
||||
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
|
||||
"Kaox", -- pump/default noteskin
|
||||
"NitroX72", -- pump/frame noteskin
|
||||
"Petriform", -- Music
|
||||
"Petriform", -- default theme music
|
||||
"桜為小鳩 (@sakuraponila)", -- custom scoring fixes
|
||||
"Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes
|
||||
"sy567", -- beginner helper fix
|
||||
"v1toko", -- x-mode from StepNXA
|
||||
"waiei", -- custom scoring fixes + Hybrid scoring
|
||||
}
|
||||
|
||||
local translators = {
|
||||
@@ -72,6 +74,7 @@ local thanks = {
|
||||
"Dreamwoods",
|
||||
"Jason Bolt (LightningXCE)",
|
||||
"Jousway", -- Noteskins
|
||||
"Luizsan", -- creator of Delta theme
|
||||
"Matt1360", -- Automake magic + oitg bro
|
||||
"Renard",
|
||||
"Ryan McKanna (Plaguefox)",
|
||||
@@ -87,7 +90,6 @@ local shoutout = {
|
||||
"#KBO",
|
||||
"Celestia Radio", -- LOVE AND TOLERANCE
|
||||
"You showed us... your ultimate dance",
|
||||
-- "Can't stop crying... buckets of tears!"
|
||||
}
|
||||
|
||||
local copyright = {
|
||||
@@ -147,7 +149,6 @@ creditScroller.BeginCommand=function(self)
|
||||
SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) );
|
||||
end;
|
||||
|
||||
|
||||
return Def.ActorFrame{
|
||||
creditScroller..{
|
||||
InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64),
|
||||
|
||||
+106
-111
@@ -3,11 +3,60 @@
|
||||
verbose=0
|
||||
msg=
|
||||
notify=0
|
||||
s_configure=
|
||||
s_stepmania=
|
||||
s_data=
|
||||
s_rebuild=
|
||||
s_ffmpeg=
|
||||
num_jobs=1
|
||||
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]"
|
||||
echo 'Build StepMania.'
|
||||
echo "CONFIGURE_OPTIONS are passed to StepMania's configure."
|
||||
echo ''
|
||||
echo ' -c, --configure stop after configuring StepMania.'
|
||||
echo ' -s, --stepmania stop after building StepMania'
|
||||
echo ' (do not copy binaries).'
|
||||
echo ' -d, --data generate GameData.smzip.'
|
||||
echo ' -r, --rebuild rebuild StepMania (soft).'
|
||||
echo ' -f, --ffmpeg build with ffmpeg 0.6.1.'
|
||||
echo ' -j#, --jobs=# pass -j# to make.'
|
||||
echo ' -h, --help print this help and exit.'
|
||||
echo ' -v, --verbose increase verbosity (up to 2).'
|
||||
echo ' --version print version and exit.'
|
||||
exit $1
|
||||
}
|
||||
|
||||
if which notify-send >/dev/null 2>&1; then
|
||||
#Comment the following line out to disable notify.
|
||||
notify=1
|
||||
fi
|
||||
|
||||
if which getopt >/dev/null 2>&1; then
|
||||
set -- `getopt -l configure,stepmania,data,rebuild,ffmpeg,help \
|
||||
-l jobs::,verbose,version -- drfcshj::v $*`
|
||||
fi
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
arg=$1
|
||||
shift
|
||||
case $arg in
|
||||
-c|--configure) s_configure=yes ;;
|
||||
-s|--stepmania) s_stepmania=yes ;;
|
||||
-d|--data) s_data=yes ;;
|
||||
-r|--rebuild) s_rebuild=yes ;;
|
||||
-f|--ffmpeg) s_ffmpeg=yes ;;
|
||||
-h|--help) usage 0 ;;
|
||||
-j|--jobs) num_jobs=$1; shift ;;
|
||||
-v|--verbose) verbose=$[verbose+1] ;;
|
||||
--version) version ;;
|
||||
--) break ;;
|
||||
*) usage 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
message () {
|
||||
msg=$1
|
||||
if [ $verbose -gt 0 ]; then
|
||||
@@ -15,7 +64,7 @@ message () {
|
||||
else
|
||||
echo -n "$msg..."
|
||||
fi
|
||||
if [ $notify -gt 0 ]; then
|
||||
if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
|
||||
notify-send "StepMania build script" "$msg..."
|
||||
fi
|
||||
}
|
||||
@@ -26,7 +75,7 @@ success () {
|
||||
else
|
||||
echo okay.
|
||||
fi
|
||||
if [ $notify -gt 0 ]; then
|
||||
if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
|
||||
notify-send "StepMania build script" "$msg...okay."
|
||||
fi
|
||||
}
|
||||
@@ -41,11 +90,11 @@ failure () {
|
||||
echo "$msg...failed$error"
|
||||
else
|
||||
echo failed$error
|
||||
echo "Consider passing --verbose to $0. Pass --help for details."
|
||||
fi
|
||||
if [ $notify -gt 0 ]; then
|
||||
if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
|
||||
notify-send "StepMania build script failed" "$msg...failed$error"
|
||||
fi;
|
||||
echo "Consider passing --verbose to $0. Pass --help for details."
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -61,115 +110,55 @@ call () {
|
||||
success
|
||||
}
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]"
|
||||
echo 'Build StepMania with a statically linked ffmpeg.'
|
||||
echo "CONFIGURE_OPTIONS are passed to StepMania's configure."
|
||||
echo ''
|
||||
echo ' -d, --download stop after ffmpeg download.'
|
||||
echo ' -f, --ffmpeg stop after building ffmpeg.'
|
||||
echo ' -c, --configure stop after configuring StepMania.'
|
||||
echo ' -s, --stepmania stop after building StepMania'
|
||||
echo ' (do not copy binaries).'
|
||||
echo ' -j#, --jobs=# pass -j# to make.'
|
||||
echo ' -h, --help print this help and exit.'
|
||||
echo ' -v, --verbose increase verbosity (up to 2).'
|
||||
echo ' --version print version and exit.'
|
||||
exit $1
|
||||
}
|
||||
|
||||
version () {
|
||||
echo 'build.sh (StepMania) 2.62'
|
||||
echo 'build.sh (StepMania) 2.63'
|
||||
echo 'Copyright (C) 2006-2009 Steve Checkoway'
|
||||
echo 'StepMania is Copyright (C) 2001-2011 Chris Danford et al.'
|
||||
echo 'sm-ssc is Copyright (C) 2009-2011 the spinal shark collective'
|
||||
exit 0
|
||||
}
|
||||
|
||||
if ! test -x configure; then
|
||||
msg='Checking for configure'
|
||||
verbose=1
|
||||
failure 'file not found.'
|
||||
fi
|
||||
|
||||
if which getopt >/dev/null 2>&1; then
|
||||
set -- `getopt -l download,ffmpeg,configure,stepmania,help \
|
||||
-l jobs::,verbose,version -- dfcshj::v $*`
|
||||
fi
|
||||
|
||||
s_download=
|
||||
s_ffmpeg=
|
||||
s_configure=
|
||||
s_stepmania=
|
||||
num_jobs=1
|
||||
while [ $# -gt 0 ]; do
|
||||
arg=$1
|
||||
shift
|
||||
case $arg in
|
||||
-d|--download) s_download=yes ;;
|
||||
-f|--ffmpeg) s_ffmpeg=yes ;;
|
||||
-c|--configure) s_configure=yes ;;
|
||||
-s|--stepmania) s_stepmania=yes ;;
|
||||
-h|--help) usage 0 ;;
|
||||
-j|--jobs) num_jobs=$1; shift ;;
|
||||
-v|--verbose) verbose=$[verbose+1] ;;
|
||||
--version) version ;;
|
||||
--) break ;;
|
||||
*) usage 1 ;;
|
||||
esac
|
||||
done
|
||||
version=0.6.1
|
||||
ffmpeg=ffmpeg-$version
|
||||
directory=http://ffmpeg.org/releases
|
||||
if [ ! -d $ffmpeg ]; then
|
||||
message 'Downloading ffmpeg'
|
||||
if which bzip2 &>/dev/null; then
|
||||
zipcommand=jxf
|
||||
ffmarc=ffmpeg-$version.tar.bz2
|
||||
elif which gzip &>/dev/null; then
|
||||
zipcommand=zxf
|
||||
ffmarc=ffmpeg-$version.tar.gz
|
||||
if [ -n "$s_data" ]; then
|
||||
message 'Generating GameData.smzip'
|
||||
if [ -f _build/Makefile ]; then
|
||||
cd _build
|
||||
call make dist-hook
|
||||
mv ./GameData.smzip ../
|
||||
cd ..
|
||||
else
|
||||
failure 'Install either bzip2 or gzip.'
|
||||
failure "You need to configure StepMania first."
|
||||
fi
|
||||
if which curl &>/dev/null; then
|
||||
get='curl -O'
|
||||
elif which wget &>/dev/null; then
|
||||
get=wget
|
||||
else
|
||||
failure 'Install either curl or wget.'
|
||||
fi
|
||||
call $get $directory/$ffmarc
|
||||
message 'Extracting ffmpeg'
|
||||
call tar -$zipcommand $ffmarc
|
||||
message 'Cleaning up temporary files'
|
||||
call rm $ffmarc
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$s_download" ]; then exit 0; fi
|
||||
args='--enable-static --disable-debug
|
||||
--enable-memalign-hack --disable-network --enable-small
|
||||
--disable-encoders --disable-ffserver
|
||||
--enable-demuxer=avi
|
||||
--enable-demuxer=h261 --enable-demuxer=h263 --enable-demuxer=h264
|
||||
--enable-demuxer=m4v --enable-demuxer=mjpeg --enable-demuxer=mov
|
||||
--enable-demuxer=mpegps --enable-demuxer=mpegts
|
||||
--enable-demuxer=mpegvideo --enable-demuxer=ogg
|
||||
--enable-demuxer=rawvideo --enable-demuxer=yuv4mpegpipe
|
||||
--enable-decoder=h261 --enable-decoder=h263
|
||||
--enable-decoder=h263i --enable-decoder=h264 --enable-decoder=huffyuv
|
||||
--enable-decoder=mjpeg --enable-decoder=mjpegb
|
||||
--enable-decoder=mpeg_xvmc --enable-decoder=mpeg1video
|
||||
--enable-decoder=mpeg2video --enable-decoder=mpeg4
|
||||
--enable-decoder=mpegvideo --enable-decoder=msmpeg4v1
|
||||
--enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3
|
||||
--enable-decoder=rawvideo --enable-decoder=theora
|
||||
--enable-parser=h261 --enable-parser=h263 --enable-parser=h264
|
||||
--enable-parser=mjpeg --enable-parser=mpeg4video
|
||||
--enable-parser=mpegaudio --enable-parser=mpegvideo
|
||||
--enable-parser=ac3
|
||||
--extra-cflags=-Dattribute_deprecated='
|
||||
if [ ! -f $ffmpeg/_inst/lib/libavcodec.a ]; then
|
||||
if [ -n "$s_ffmpeg" ]; then
|
||||
ffversion=0.6.1
|
||||
ffmpeg=ffmpeg-$ffversion
|
||||
if [ ! -d $ffmpeg ]; then
|
||||
message 'Downloading ffmpeg'
|
||||
if which bzip2 &>/dev/null; then
|
||||
zipcommand=jxf
|
||||
ffmarc=$ffmpeg.tar.bz2
|
||||
elif which gzip &>/dev/null; then
|
||||
zipcommand=zxf
|
||||
ffmarc=$ffmpeg.tar.gz
|
||||
else
|
||||
failure 'Install either bzip2 or gzip.'
|
||||
fi
|
||||
if which wget &>/dev/null; then
|
||||
get=wget
|
||||
elif which curl &>/dev/null; then
|
||||
get='curl -O'
|
||||
else
|
||||
failure 'Install either curl or wget.'
|
||||
fi
|
||||
call $get "http://ffmpeg.org/releases/$ffmarc"
|
||||
message 'Extracting ffmpeg'
|
||||
call tar -$zipcommand $ffmarc
|
||||
message 'Cleaning up temporary files'
|
||||
# call rm $ffmarc
|
||||
fi
|
||||
args="--enable-static --enable-gpl --enable-version3 --enable-nonfree --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --disable-debug --enable-memalign-hack --disable-network --enable-small --disable-encoders --disable-ffserver --extra-cflags=-Dattribute_deprecated="
|
||||
cd $ffmpeg
|
||||
message 'Configuring ffmpeg'
|
||||
call ./configure --prefix="`pwd`/_inst" $args
|
||||
@@ -177,27 +166,33 @@ if [ ! -f $ffmpeg/_inst/lib/libavcodec.a ]; then
|
||||
call make --jobs="$num_jobs" install-libs install-headers
|
||||
cd ..
|
||||
fi
|
||||
if [ -n "$s_ffmpeg" ]; then exit 0; fi
|
||||
if [ ! -f _build/src/config.h ]; then
|
||||
|
||||
if [ ! -f _build/src/config.h ] || [ -n "$s_rebuild" ]; then
|
||||
message 'Configuring StepMania'
|
||||
mkdir -p _build
|
||||
cd _build
|
||||
call ../configure --with-ffmpeg=../$ffmpeg/_inst "$@"
|
||||
if [ -n "$s_ffmpeg" ]; then
|
||||
call ../configure --with-ffmpeg=../$ffmpeg/_inst "$@"
|
||||
else
|
||||
call ../configure "$@"
|
||||
fi
|
||||
cd ..
|
||||
fi
|
||||
if [ -n "$s_configure" ]; then exit 0; fi
|
||||
if [ ! -f _build/src/stepmania ]; then
|
||||
if [ ! -f _build/src/stepmania ] || [ -n "$s_rebuild" ]; then
|
||||
message 'Building StepMania'
|
||||
cd _build || failure
|
||||
cd _build
|
||||
call make --jobs="$num_jobs"
|
||||
cd ..
|
||||
fi
|
||||
if [ -n "$s_stepmania" ]; then exit 0; fi
|
||||
if [ ! -f stepmania -o ! -f GtkModule.so ]; then
|
||||
if [ ! -f stepmania -o ! -f GtkModule.so ] || [ -n "$s_rebuild" ]; then
|
||||
message 'Copying StepMania binaries'
|
||||
call cp _build/src/stepmania .
|
||||
# todo: check for existence of GtkModule.so -freem
|
||||
#_build/src/GtkModule.so . # we tend to not have this file!
|
||||
cp _build/src/stepmania .
|
||||
if [ -e _build/src/GtkModule.so ]; then
|
||||
cp _build/src/GtkModule.so . # we tend to not have this file!
|
||||
fi
|
||||
success
|
||||
fi
|
||||
|
||||
|
||||
|
||||
Regular → Executable
+6
-9
@@ -21,18 +21,16 @@ cp -dpR autoconf $PRODUCTVER/
|
||||
#cp -dpR Utils $PRODUCTVER/
|
||||
cp -dpR src $PRODUCTVER/
|
||||
|
||||
cp Docs/Copying.MAD Docs/Licenses.txt Makefile.am aclocal.m4 \
|
||||
configure Makefile.in configure.ac $PRODUCTVER
|
||||
cp Docs/Copying.MAD Docs/Licenses.txt Docs/Changelog_sm5.txt \
|
||||
Docs/Changelog_sm-ssc.txt Docs/Changelog_SSCformat.txt \
|
||||
Docs/credits.txt Docs/KnownIssues.txt \
|
||||
Makefile.am aclocal.m4 configure Makefile.in configure.ac \
|
||||
$PRODUCTVER
|
||||
|
||||
echo Pruning...
|
||||
cd $PRODUCTVER/src
|
||||
# Obsolete and going away:
|
||||
rm -rf SDL-1.2.5
|
||||
rm -rf SDL-1.2.6
|
||||
# Incomplete:
|
||||
rm -rf Texture Font Generator
|
||||
# Xbox:
|
||||
rm -rf SDLx-0.02
|
||||
# Unused:
|
||||
rm -rf smlobby
|
||||
|
||||
@@ -46,12 +44,11 @@ rm -rf vorbis
|
||||
rm -rf BaseClasses
|
||||
rm -rf ddk
|
||||
rm -rf smpackage
|
||||
rm -rf sdl_xbox_includes
|
||||
rm -rf SDLx-0.02.rar
|
||||
|
||||
cd ..
|
||||
|
||||
find . -type d -name 'CVS' | xargs rm -rf
|
||||
find . -type d -name '.svn' | xargs rm -rf
|
||||
find . -type f -name '*.lib' | xargs rm -rf
|
||||
find . -type f -name '*.exe' | xargs rm -rf
|
||||
find . -type f -name '*.a' | xargs rm -rf
|
||||
|
||||
@@ -670,12 +670,6 @@ FunctionEnd
|
||||
|
||||
Function .onInit
|
||||
|
||||
nsisos::osversion
|
||||
${If} $R0 >= 6
|
||||
;vista & win7
|
||||
StrCpy $INSTDIR "%HOMEPATH%\${PRODUCT_ID}"
|
||||
${EndIf}
|
||||
|
||||
; Force show language selection for debugging
|
||||
;!define MUI_LANGDLL_ALWAYSSHOW
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
@@ -807,9 +807,43 @@ public:
|
||||
p->DimMusic( fVolume, fDurationSeconds );
|
||||
return 0;
|
||||
}
|
||||
static int PlayOnce( T* p, lua_State *L ) { RString sPath = SArg(1); p->PlayOnce( sPath ); return 0; }
|
||||
static int PlayAnnouncer( T* p, lua_State *L ) { RString sPath = SArg(1); p->PlayOnceFromAnnouncer( sPath ); return 0; }
|
||||
static int GetPlayerBalance( T* p, lua_State *L ) { PlayerNumber pn = Enum::Check<PlayerNumber>(L, 1); lua_pushnumber( L, p->GetPlayerBalance(pn) ); return 1; }
|
||||
static int PlayOnce( T* p, lua_State *L )
|
||||
{
|
||||
RString sPath = SArg(1);
|
||||
p->PlayOnce( sPath );
|
||||
return 0;
|
||||
}
|
||||
static int PlayAnnouncer( T* p, lua_State *L )
|
||||
{
|
||||
RString sPath = SArg(1);
|
||||
p->PlayOnceFromAnnouncer( sPath );
|
||||
return 0;
|
||||
}
|
||||
static int GetPlayerBalance( T* p, lua_State *L )
|
||||
{
|
||||
PlayerNumber pn = Enum::Check<PlayerNumber>(L, 1);
|
||||
lua_pushnumber( L, p->GetPlayerBalance(pn) );
|
||||
return 1;
|
||||
}
|
||||
static int PlayMusicPart( T* p, lua_State *L )
|
||||
{
|
||||
RString musicPath = SArg(1);
|
||||
float musicStart = FArg(2);
|
||||
float musicLength = FArg(3);
|
||||
float fadeIn = 0;
|
||||
float fadeOut = 0;
|
||||
if (lua_gettop(L) >= 4 && !lua_isnil(L,4))
|
||||
{
|
||||
fadeIn = FArg(4);
|
||||
if (lua_gettop(L) >= 5 && !lua_isnil(L,5))
|
||||
{
|
||||
fadeOut = FArg(5);
|
||||
}
|
||||
}
|
||||
p->PlayMusic(musicPath, NULL, false, musicStart, musicLength,
|
||||
fadeIn, fadeOut);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LunaGameSoundManager()
|
||||
{
|
||||
@@ -817,6 +851,7 @@ public:
|
||||
ADD_METHOD( PlayOnce );
|
||||
ADD_METHOD( PlayAnnouncer );
|
||||
ADD_METHOD( GetPlayerBalance );
|
||||
ADD_METHOD( PlayMusicPart );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
|
||||
if( tn.type == TapNote::hold_head && tn.iDuration == MAX_NOTE_ROW )
|
||||
{
|
||||
int iRow = begin->first;
|
||||
LOG->UserLog( "", "", "While loading SM note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) );
|
||||
LOG->UserLog( "", "", "While loading .sm/.ssc note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) );
|
||||
out.RemoveTapNote( t, begin );
|
||||
}
|
||||
|
||||
|
||||
@@ -426,10 +426,14 @@ static bool LoadFromDWITokens(
|
||||
|
||||
out.m_StepsType = GetTypeFromMode(sMode);
|
||||
|
||||
// if the meter is empty, force it to 1.
|
||||
if( sNumFeet.empty() )
|
||||
sNumFeet = "1";
|
||||
|
||||
out.SetMeter(StringToInt(sNumFeet));
|
||||
|
||||
out.SetDifficulty( DwiCompatibleStringToDifficulty(sDescription) );
|
||||
|
||||
|
||||
out.SetNoteData( ParseNoteData(sStepData1, sStepData2, out, sPath) );
|
||||
|
||||
out.TidyUpData();
|
||||
|
||||
@@ -141,7 +141,7 @@ static bool LoadFromKSFFile( const RString &sPath, Steps &out, Song &song, bool
|
||||
|
||||
else if( sValueName=="DIFFICULTY" )
|
||||
{
|
||||
out.SetMeter( max(StringToInt(sParams[1]), 0) );
|
||||
out.SetMeter( max(StringToInt(sParams[1]), 1) );
|
||||
}
|
||||
// new cases from Aldo_MX's fork:
|
||||
else if( sValueName=="PLAYER" )
|
||||
|
||||
@@ -103,6 +103,12 @@ void SMLoader::LoadFromTokens(
|
||||
out.SetDifficulty( Difficulty_Challenge );
|
||||
}
|
||||
|
||||
if( sMeter.empty() )
|
||||
{
|
||||
// some simfiles (e.g. X-SPECIALs from Zenius-I-Vanisher) don't
|
||||
// have a meter on certain steps. Make the meter 1 in these instances.
|
||||
sMeter = "1";
|
||||
}
|
||||
out.SetMeter( StringToInt(sMeter) );
|
||||
|
||||
out.SetSMNoteData( sNoteData );
|
||||
|
||||
@@ -1012,11 +1012,32 @@ public:
|
||||
LuaHelpers::Push( L, params.height );
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int GetFPS( T* p, lua_State *L )
|
||||
{
|
||||
lua_pushnumber(L, p->GetFPS());
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int GetVPF( T* p, lua_State *L )
|
||||
{
|
||||
lua_pushnumber(L, p->GetVPF());
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int GetCumFPS( T* p, lua_State *L )
|
||||
{
|
||||
lua_pushnumber(L, p->GetCumFPS());
|
||||
return 1;
|
||||
}
|
||||
|
||||
LunaRageDisplay()
|
||||
{
|
||||
ADD_METHOD( GetDisplayWidth );
|
||||
ADD_METHOD( GetDisplayHeight );
|
||||
ADD_METHOD( GetFPS );
|
||||
ADD_METHOD( GetVPF );
|
||||
ADD_METHOD( GetCumFPS );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+5
-2
@@ -1004,6 +1004,9 @@ void ScreenEdit::PlayTicks()
|
||||
m_GameplayAssist.PlayTicks( m_Player->GetNoteData(), m_Player->GetPlayerState() );
|
||||
}
|
||||
|
||||
static ThemeMetric<float> FADE_IN_PREVIEW("ScreenEdit", "FadeInPreview");
|
||||
static ThemeMetric<float> FADE_OUT_PREVIEW("ScreenEdit", "FadeOutPreview");
|
||||
|
||||
void ScreenEdit::PlayPreviewMusic()
|
||||
{
|
||||
SOUND->StopMusic();
|
||||
@@ -1013,8 +1016,8 @@ void ScreenEdit::PlayPreviewMusic()
|
||||
false,
|
||||
m_pSong->m_fMusicSampleStartSeconds,
|
||||
m_pSong->m_fMusicSampleLengthSeconds,
|
||||
0.0f,
|
||||
1.5f );
|
||||
FADE_IN_PREVIEW,
|
||||
FADE_OUT_PREVIEW );
|
||||
}
|
||||
|
||||
void ScreenEdit::MakeFilteredMenuDef( const MenuDef* pDef, MenuDef &menu )
|
||||
|
||||
@@ -1429,7 +1429,7 @@ void ScreenGameplay::PlayTicks()
|
||||
}
|
||||
|
||||
/* Play announcer "type" if it's been at least fSeconds since the last announcer. */
|
||||
void ScreenGameplay::PlayAnnouncer( RString type, float fSeconds )
|
||||
void ScreenGameplay::PlayAnnouncer( const RString &type, float fSeconds, float *fDeltaSeconds )
|
||||
{
|
||||
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
||||
return; // Shut the announcer up
|
||||
@@ -1445,9 +1445,9 @@ void ScreenGameplay::PlayAnnouncer( RString type, float fSeconds )
|
||||
GAMESTATE->m_Position.m_fSongBeat < GAMESTATE->m_pCurSong->GetFirstBeat())
|
||||
return;
|
||||
|
||||
if( m_fTimeSinceLastDancingComment < fSeconds )
|
||||
if( *fDeltaSeconds < fSeconds )
|
||||
return;
|
||||
m_fTimeSinceLastDancingComment = 0;
|
||||
*fDeltaSeconds = 0;
|
||||
|
||||
SOUND->PlayOnceFromAnnouncer( type );
|
||||
}
|
||||
|
||||
@@ -206,7 +206,8 @@ protected:
|
||||
void GetMusicEndTiming( float &fSecondsToStartFadingOutMusic, float &fSecondsToStartTransitioningOut );
|
||||
void LoadLights();
|
||||
void PauseGame( bool bPause, GameController gc = GameController_Invalid );
|
||||
void PlayAnnouncer( RString type, float fSeconds );
|
||||
void PlayAnnouncer( const RString &type, float fSeconds, float *fDeltaSeconds );
|
||||
void PlayAnnouncer( const RString &type, float fSeconds ) { PlayAnnouncer(type, fSeconds, &m_fTimeSinceLastDancingComment); }
|
||||
void UpdateLights();
|
||||
void SendCrossedMessages();
|
||||
void BeginBackingOutFromGameplay();
|
||||
|
||||
@@ -729,8 +729,7 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
|
||||
}
|
||||
|
||||
// two part confirms only means we can actually change songs here,
|
||||
// so we need some hackery. oops looks like this is never going into
|
||||
// mainline sm4 then -aj
|
||||
// so we need some hackery. -aj
|
||||
if( TWO_PART_CONFIRMS_ONLY )
|
||||
{
|
||||
if( m_SelectionState == SelectionState_SelectingSteps )
|
||||
@@ -1080,6 +1079,8 @@ void ScreenSelectMusic::HandleMessage( const Message &msg )
|
||||
}
|
||||
else
|
||||
{
|
||||
// todo: handle changing rave difficulty on join -aj
|
||||
|
||||
Steps* pSteps = m_vpSteps.empty()? NULL: m_vpSteps[m_iSelection[pn]];
|
||||
GAMESTATE->m_pCurSteps[pn].Set( pSteps );
|
||||
}
|
||||
|
||||
+4
-3
@@ -613,8 +613,9 @@ void Song::TidyUpData( bool fromCache, bool duringCache )
|
||||
|
||||
// find an image with "bg" or "background" in the file name
|
||||
vector<RString> arrayPossibleBGs;
|
||||
GetImageDirListing( m_sSongDir + "*bg*", arrayPossibleBGs );
|
||||
GetImageDirListing( m_sSongDir + "*background*", arrayPossibleBGs );
|
||||
// don't match e.g. "subgroup", "hobgoblin", etc.
|
||||
GetImageDirListing( m_sSongDir + "*bg", arrayPossibleBGs );
|
||||
if( !arrayPossibleBGs.empty() )
|
||||
m_sBackgroundFile = arrayPossibleBGs[0];
|
||||
}
|
||||
@@ -644,8 +645,8 @@ void Song::TidyUpData( bool fromCache, bool duringCache )
|
||||
{
|
||||
// a rectangular graphic, not to be confused with CDImage above.
|
||||
vector<RString> arrayPossibleDiscImages;
|
||||
GetImageDirListing( m_sSongDir + "* Disc", arrayPossibleDiscImages );
|
||||
GetImageDirListing( m_sSongDir + "* Title", arrayPossibleDiscImages );
|
||||
GetImageDirListing( m_sSongDir + "* disc", arrayPossibleDiscImages );
|
||||
GetImageDirListing( m_sSongDir + "* title", arrayPossibleDiscImages );
|
||||
if( !arrayPossibleDiscImages.empty() )
|
||||
m_sDiscFile = arrayPossibleDiscImages[0];
|
||||
}
|
||||
|
||||
+344
-59
@@ -1,60 +1,345 @@
|
||||
/* XPM */
|
||||
static char *icon[] = {
|
||||
"32 32 21 1",
|
||||
/* colors */
|
||||
" c #000000",
|
||||
". c #737300",
|
||||
"X c #FF00FF",
|
||||
"o c #004A73",
|
||||
"O c #969600",
|
||||
"+ c #006296",
|
||||
"@ c #001950",
|
||||
"# c #B9B900",
|
||||
"$ c #007AB9",
|
||||
"% c #FFB848",
|
||||
"& c #734A00",
|
||||
"* c #DCDC00",
|
||||
"= c #505000",
|
||||
"- c #323232",
|
||||
"; c #003250",
|
||||
": c #503200",
|
||||
"> c #262626",
|
||||
", c #1A1A1A",
|
||||
"< c #0E0E0E",
|
||||
"1 c #808000",
|
||||
"2 c None",
|
||||
/* pixels */
|
||||
"XXXXXXXXXXXXXXXXXX XXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXX <,:::>< XXXXXXX",
|
||||
"XXXXXXXXXXXX <=1OOOOO11.:<XXXXXX",
|
||||
"XXXXXXXXXX <=####OOOOOOO=<< XXXX",
|
||||
"XXXXXXXXX :O**##OOOOOO1:>;<, XXX",
|
||||
"XXXXXXXX =#***###OOOOO:;$$;>> XX",
|
||||
"XXXXXXX =****##1.OOOO:;$+>,,=<XX",
|
||||
"X ,< X =#***###,@:#O,;$+,=...: X",
|
||||
" ;$+> O***####.@,=,;$$>=OO1.=<X",
|
||||
" ;;+$+o>&#*#####=>;o$$;:OO1..., ",
|
||||
"XX <o$$+;:O**###O>$$$;:OO111.1: ",
|
||||
"XXX ;o$$o,&O#*#,o$$o:OOOOO111= ",
|
||||
"XXX :.,;$$+;,:1>o$$$o=#OOOOO11= ",
|
||||
"XXX =#O=>+$$$o;o$$$$+,1#OOOOOO= ",
|
||||
"XXX .##%1,+$$$$$$$$$$o:##OOOOO= ",
|
||||
"XXX<O####.,;+$$$$$$$$+,####OOO: ",
|
||||
"XXX,OOOOO##=,$$$$$$$$$;::O##OO<X",
|
||||
"XXX,OOOO##%#=;$$$$$$$$+oo>##O. X",
|
||||
"XXX=11OO####O,+$$$$$$$$$$,O##= X",
|
||||
"XXX=.1OO#OOO#.@$$$$$$$$+@&##O<XX",
|
||||
"XXX=11OOOOOOOO=,;+$$$$$,1###: XX",
|
||||
"XXXX=1111OOOOO#1=,o+$$o:*##1 XXX",
|
||||
"XXXX,...111OOOO##O=,o$o=**O<XXXX",
|
||||
"XXXXX:....1OOOO####=o$;.*#, XXXX",
|
||||
"XXXXX<=...11OO#####:+$;O#, XXXXX",
|
||||
"XXXXXX<=.111OO#OOO#=o$-=< XXXXXX",
|
||||
"XXXXXXX<=.11OOOOOO#.;+< XXXXXXXX",
|
||||
"XXXXXXXX ,=O#OOOOOO=o; XXXXXXXXX",
|
||||
"XXXXXXXXXX ,====::< ;>XXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXX ;;XXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXXX XXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
||||
};
|
||||
|
||||
static char * sm5icon_xpm[] = {
|
||||
"32 32 310 2",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #1A0502",
|
||||
"@ c #4B0D04",
|
||||
"# c #671104",
|
||||
"$ c #691104",
|
||||
"% c #6B1105",
|
||||
"& c #6D1105",
|
||||
"* c #6E1205",
|
||||
"= c #701205",
|
||||
"- c #510E04",
|
||||
"; c #1C0602",
|
||||
"> c #260702",
|
||||
", c #BD4212",
|
||||
"' c #F49329",
|
||||
") c #F9AA31",
|
||||
"! c #FAAF3A",
|
||||
"~ c #FAB140",
|
||||
"{ c #FAB142",
|
||||
"] c #FAB246",
|
||||
"^ c #FAB44D",
|
||||
"/ c #FAB550",
|
||||
"( c #FAB552",
|
||||
"_ c #FAB656",
|
||||
": c #FAB95D",
|
||||
"< c #FAB75C",
|
||||
"[ c #F6A852",
|
||||
"} c #D54E15",
|
||||
"| c #2B0702",
|
||||
"1 c #240602",
|
||||
"2 c #E0661B",
|
||||
"3 c #FDA32B",
|
||||
"4 c #FE9B29",
|
||||
"5 c #FC9D2A",
|
||||
"6 c #FD9E2A",
|
||||
"7 c #FD9F2A",
|
||||
"8 c #FDA32C",
|
||||
"9 c #FDA52C",
|
||||
"0 c #FDA72C",
|
||||
"a c #FEA82E",
|
||||
"b c #FEAA31",
|
||||
"c c #FEAD38",
|
||||
"d c #FEAE3B",
|
||||
"e c #FEAF3F",
|
||||
"f c #FEB040",
|
||||
"g c #FEB044",
|
||||
"h c #FEB248",
|
||||
"i c #FEB34B",
|
||||
"j c #FEB54F",
|
||||
"k c #FEB651",
|
||||
"l c #FEB95B",
|
||||
"m c #F18233",
|
||||
"n c #010000",
|
||||
"o c #B03B10",
|
||||
"p c #F88022",
|
||||
"q c #F67921",
|
||||
"r c #F67A21",
|
||||
"s c #F67D22",
|
||||
"t c #F77E22",
|
||||
"u c #F87F22",
|
||||
"v c #F98323",
|
||||
"w c #F98423",
|
||||
"x c #FA8623",
|
||||
"y c #FA8725",
|
||||
"z c #FA8927",
|
||||
"A c #FA8C2E",
|
||||
"B c #FA8D30",
|
||||
"C c #FA8F32",
|
||||
"D c #FA9033",
|
||||
"E c #FA9037",
|
||||
"F c #FA933A",
|
||||
"G c #FA943C",
|
||||
"H c #FA973F",
|
||||
"I c #FB9841",
|
||||
"J c #FB9C4A",
|
||||
"K c #D14914",
|
||||
"L c #010100",
|
||||
"M c #280602",
|
||||
"N c #E65F19",
|
||||
"O c #F05F1A",
|
||||
"P c #EE5E1A",
|
||||
"Q c #EF601A",
|
||||
"R c #F0601A",
|
||||
"S c #F1631B",
|
||||
"T c #F2641B",
|
||||
"U c #F3651B",
|
||||
"V c #F4671C",
|
||||
"W c #F5681C",
|
||||
"X c #F66A1C",
|
||||
"Y c #F76A1C",
|
||||
"Z c #F76B1D",
|
||||
"` c #F76D1F",
|
||||
" . c #F77223",
|
||||
".. c #F77325",
|
||||
"+. c #F77428",
|
||||
"@. c #F77529",
|
||||
"#. c #F7772B",
|
||||
"$. c #F87A2E",
|
||||
"%. c #F87B30",
|
||||
"&. c #F87E32",
|
||||
"*. c #F97F33",
|
||||
"=. c #F27D37",
|
||||
"-. c #310802",
|
||||
";. c #460D03",
|
||||
">. c #E65417",
|
||||
",. c #E64D14",
|
||||
"'. c #E64F15",
|
||||
"). c #E74F15",
|
||||
"!. c #E85015",
|
||||
"~. c #EA5115",
|
||||
"{. c #EA5316",
|
||||
"]. c #EC5416",
|
||||
"^. c #ED5416",
|
||||
"/. c #EE5516",
|
||||
"(. c #F05717",
|
||||
"_. c #F15717",
|
||||
":. c #F25917",
|
||||
"<. c #F35917",
|
||||
"[. c #F35A18",
|
||||
"}. c #F35D1A",
|
||||
"|. c #F4611E",
|
||||
"1. c #F4621F",
|
||||
"2. c #F46421",
|
||||
"3. c #F46522",
|
||||
"4. c #F46624",
|
||||
"5. c #F46926",
|
||||
"6. c #F46A28",
|
||||
"7. c #F56D2A",
|
||||
"8. c #F27331",
|
||||
"9. c #561004",
|
||||
"0. c #3A0A03",
|
||||
"a. c #DD4F15",
|
||||
"b. c #DD4613",
|
||||
"c. c #DC4813",
|
||||
"d. c #DF4A14",
|
||||
"e. c #E04A14",
|
||||
"f. c #E14B14",
|
||||
"g. c #E34C14",
|
||||
"h. c #E44D15",
|
||||
"i. c #E74E15",
|
||||
"j. c #E94F15",
|
||||
"k. c #EB5115",
|
||||
"l. c #EC5115",
|
||||
"m. c #EE5215",
|
||||
"n. c #F05215",
|
||||
"o. c #F05316",
|
||||
"p. c #F05618",
|
||||
"q. c #F15B1C",
|
||||
"r. c #F05B1C",
|
||||
"s. c #F05C1D",
|
||||
"t. c #F05E1F",
|
||||
"u. c #F05F20",
|
||||
"v. c #F06022",
|
||||
"w. c #F16323",
|
||||
"x. c #F26425",
|
||||
"y. c #F06D2E",
|
||||
"z. c #591105",
|
||||
"A. c #0B0201",
|
||||
"B. c #C94913",
|
||||
"C. c #D84D15",
|
||||
"D. c #D44B14",
|
||||
"E. c #D54C14",
|
||||
"F. c #D94D15",
|
||||
"G. c #DB4E15",
|
||||
"H. c #DF5116",
|
||||
"I. c #E25216",
|
||||
"J. c #E35416",
|
||||
"K. c #E55617",
|
||||
"L. c #E65817",
|
||||
"M. c #E45918",
|
||||
"N. c #E65C18",
|
||||
"O. c #E75C18",
|
||||
"P. c #E85E19",
|
||||
"Q. c #E7611C",
|
||||
"R. c #E86420",
|
||||
"S. c #E86522",
|
||||
"T. c #E86624",
|
||||
"U. c #E86725",
|
||||
"V. c #E86826",
|
||||
"W. c #E96A28",
|
||||
"X. c #EA7133",
|
||||
"Y. c #581104",
|
||||
"Z. c #581506",
|
||||
"`. c #D65416",
|
||||
" + c #CD4E15",
|
||||
".+ c #CE4F15",
|
||||
"++ c #D15116",
|
||||
"@+ c #D35116",
|
||||
"#+ c #D55216",
|
||||
"$+ c #D55416",
|
||||
"%+ c #D55718",
|
||||
"&+ c #D85A18",
|
||||
"*+ c #DA5B18",
|
||||
"=+ c #DE5D19",
|
||||
"-+ c #E05E19",
|
||||
";+ c #E35F19",
|
||||
">+ c #E55F19",
|
||||
",+ c #E6601A",
|
||||
"'+ c #E6621C",
|
||||
")+ c #E76520",
|
||||
"!+ c #E76622",
|
||||
"~+ c #E76724",
|
||||
"{+ c #E76825",
|
||||
"]+ c #E76927",
|
||||
"^+ c #E97234",
|
||||
"/+ c #7E2009",
|
||||
"(+ c #D25617",
|
||||
"_+ c #D35617",
|
||||
":+ c #D05517",
|
||||
"<+ c #D15717",
|
||||
"[+ c #D55918",
|
||||
"}+ c #D75A18",
|
||||
"|+ c #D35918",
|
||||
"1+ c #320902",
|
||||
"2+ c #742009",
|
||||
"3+ c #A2340E",
|
||||
"4+ c #B0380F",
|
||||
"5+ c #B1380F",
|
||||
"6+ c #B53A0F",
|
||||
"7+ c #B83A0F",
|
||||
"8+ c #BA390F",
|
||||
"9+ c #D85717",
|
||||
"0+ c #8B2109",
|
||||
"a+ c #E05D19",
|
||||
"b+ c #8A2309",
|
||||
"c+ c #DC5C19",
|
||||
"d+ c #CE5617",
|
||||
"e+ c #872209",
|
||||
"f+ c #CA5517",
|
||||
"g+ c #CC5517",
|
||||
"h+ c #832109",
|
||||
"i+ c #C55216",
|
||||
"j+ c #C65316",
|
||||
"k+ c #802109",
|
||||
"l+ c #CF5617",
|
||||
"m+ c #C15116",
|
||||
"n+ c #C35216",
|
||||
"o+ c #E86F30",
|
||||
"p+ c #7E2109",
|
||||
"q+ c #BC4F15",
|
||||
"r+ c #BF5015",
|
||||
"s+ c #E86E2E",
|
||||
"t+ c #7A2008",
|
||||
"u+ c #B84D15",
|
||||
"v+ c #BA4E15",
|
||||
"w+ c #E05B18",
|
||||
"x+ c #E86E2D",
|
||||
"y+ c #771F08",
|
||||
"z+ c #B44B14",
|
||||
"A+ c #B64C14",
|
||||
"B+ c #8F2409",
|
||||
"C+ c #A8330E",
|
||||
"D+ c #E86C2B",
|
||||
"E+ c #751E08",
|
||||
"F+ c #B14A14",
|
||||
"G+ c #B34B14",
|
||||
"H+ c #8D260A",
|
||||
"I+ c #A6320D",
|
||||
"J+ c #541004",
|
||||
"K+ c #621706",
|
||||
"L+ c #AD4813",
|
||||
"M+ c #AF4914",
|
||||
"N+ c #8A260A",
|
||||
"O+ c #A4320D",
|
||||
"P+ c #130301",
|
||||
"Q+ c #B04713",
|
||||
"R+ c #AB4713",
|
||||
"S+ c #A94713",
|
||||
"T+ c #86240A",
|
||||
"U+ c #A2320D",
|
||||
"V+ c #4B1105",
|
||||
"W+ c #A84613",
|
||||
"X+ c #82230A",
|
||||
"Y+ c #521004",
|
||||
"Z+ c #5B1706",
|
||||
"`+ c #A64613",
|
||||
" @ c #81230A",
|
||||
".@ c #9F320E",
|
||||
"+@ c #491004",
|
||||
"@@ c #A44412",
|
||||
"#@ c #7E230A",
|
||||
"$@ c #9D300D",
|
||||
"%@ c #4E0F04",
|
||||
"&@ c #120301",
|
||||
"*@ c #A64212",
|
||||
"=@ c #7A2109",
|
||||
"-@ c #812209",
|
||||
";@ c #2C0702",
|
||||
">@ c #4D1305",
|
||||
",@ c #762109",
|
||||
"'@ c #2F0802",
|
||||
")@ c #B03C10",
|
||||
"!@ c #4F1405",
|
||||
"~@ c #A74212",
|
||||
"{@ c #AE4613",
|
||||
"]@ c #541606",
|
||||
"^@ c #701D08",
|
||||
"/@ c #D45417",
|
||||
"(@ c #270702",
|
||||
"_@ c #3D0F04",
|
||||
":@ c #511506",
|
||||
"<@ c #401004",
|
||||
"[@ c #130401",
|
||||
"}@ c #591506",
|
||||
"|@ c #C34A14",
|
||||
"1@ c #AE3B10",
|
||||
"2@ c #050201",
|
||||
"3@ c #2D0903",
|
||||
"4@ c #3D0D03",
|
||||
"5@ c #190602",
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
" . . + @ # $ $ % % & & * = = = = = = = = = = - ; . . ",
|
||||
" . > , ' ) ! ! ~ { ] ^ / ( _ : : : : : : : : : < [ } | . ",
|
||||
" . 1 2 3 4 5 6 6 7 8 9 9 0 0 a b c c d e f g h i j k l m | . ",
|
||||
". n o p q r r s t t u v w w x x y z A A B C D E F G H I J K L . ",
|
||||
". M N O P Q R R S T T U V W W X Y Z ` . ...+.@.#.$.%.&.*.=.-.. ",
|
||||
". ;.>.,.'.).!.~.~.{.].^./.(._._.:.<.[.}.|.|.1.2.3.4.5.6.7.8.9.. ",
|
||||
". 0.a.b.c.d.e.f.g.g.h.i.i.j.k.l.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.. ",
|
||||
". A.B.C.D.E.C.F.G.a.a.H.I.I.J.K.L.M.N.O.P.Q.R.R.S.T.U.V.W.X.Y.. ",
|
||||
" . Z.`. + +.+++@+#+`.$+%+&+&+*+=+-+-+;+>+,+'+)+)+!+~+{+]+^+Y.. ",
|
||||
" . . /+(+_+:+:+(+<+[+}+&+|+}+&+*+=+-+-+;+>+,+'+)+)+!+~+{+^+Y.. ",
|
||||
" . . 1+2+3+4+5+6+6+7+8+9+|+}+&+*+=+-+-+;+>+,+'+)+)+!+~+^+Y.. ",
|
||||
" . . . . . . . . . 0+a+<+|+}+&+*+=+-+-+;+>+,+'+)+)+!+^+Y.. ",
|
||||
" . . . . b+c+d+<+<+|+}+&+*+=+-+-+;+>+,+'+)+)+^+Y.. ",
|
||||
" . . e+&+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+'+)+^+Y.. ",
|
||||
" . . h+<+i+j+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+'+^+Y.. ",
|
||||
" . . k+l+m+n+i+j+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+o+Y.. ",
|
||||
" . . p+f+q+r+m+n+i+j+f+g+d+<+<+[+}+&+*+=+-+-+;+>+s+Y.. ",
|
||||
" . . t+i+u+v+q+r+m+n+i+j+f+g+d+=+w+[+}+&+*+=+-+-+;+x+9.. ",
|
||||
" . . y+m+z+A+u+v+q+r+m+n+i+j+f+c+B+C+c+|+}+&+*+=+-+-+D+9.. ",
|
||||
" . . E+q+F+G+z+A+u+v+q+r+m+n+i+&+H+. I+*+<+|+}+&+*+=+-+]+J+. ",
|
||||
" . K+u+L+M+F+G+z+A+u+v+q+r+m+<+N+. . O+&+<+<+|+}+&+*+=+{+J+. ",
|
||||
" . P+Q+R+S+L+M+F+G+z+A+u+v+q+l+T+. . . U+[+d+<+<+|+}+&+*+~+J+. ",
|
||||
" . V+G+W+S+S+L+M+F+G+z+A+u+f+X+. . . U+|+g+d+<+<+|+}+&+)+Y+. ",
|
||||
" . Z+F+`+W+S+S+L+M+F+G+z+i+ @. . . .@<+f+g+d+<+<+|+}+)+Y+. ",
|
||||
" . +@M+@@`+W+S+S+L+M+F+m+#@. . . $@l+j+f+g+d+<+<+|+'+%@. ",
|
||||
" . &@*@W+@@`+W+S+S+L+q+=@. . . -@<+i+j+f+g+d+<+<+,+;@. ",
|
||||
" . >@L+W+@@`+W+M+u+,@. . . '@l+i+i+j+f+g+d+-+)@L . ",
|
||||
" . . !@~@M+F+G+{@]@. . . . ^@<+f+i+j+f+c+/@(@. ",
|
||||
" . . &@_@:@<@[@. . . . }@|@<+[+&+1@> . ",
|
||||
" . . . . . . . 2@3@4@5@n . ",
|
||||
" . . . . . "};
|
||||
|
||||
+9
-4
@@ -36,8 +36,11 @@ void TimingData::Clear()
|
||||
vector<TimingSegment*> &vSegs = m_avpTimingSegments[tst];
|
||||
for( unsigned i = 0; i < vSegs.size(); ++i )
|
||||
{
|
||||
//LOG->Trace( "deleting %p", vSegs[i] );
|
||||
SAFE_DELETE( vSegs[i] ); }
|
||||
#if defined(DEBUG)
|
||||
LOG->Trace( "TimingData::Clear(): deleting %p", vSegs[i] );
|
||||
#endif
|
||||
SAFE_DELETE( vSegs[i] );
|
||||
}
|
||||
|
||||
vSegs.clear();
|
||||
}
|
||||
@@ -312,8 +315,8 @@ TimingSegment* GetSegmentAtRow( int iNoteRow, TimingSegmentType tst )
|
||||
|
||||
static void EraseSegment( vector<TimingSegment*> &vSegs, int index, TimingSegment *cur )
|
||||
{
|
||||
LOG->Trace( "EraseSegment(%d, %p)", index, cur );
|
||||
#ifdef DEBUG
|
||||
LOG->Trace( "EraseSegment(%d, %p)", index, cur );
|
||||
cur->DebugPrint();
|
||||
#endif
|
||||
|
||||
@@ -325,8 +328,8 @@ static void EraseSegment( vector<TimingSegment*> &vSegs, int index, TimingSegmen
|
||||
// so we must deep-copy it (with ::Copy) for new allocations.
|
||||
void TimingData::AddSegment( const TimingSegment *seg )
|
||||
{
|
||||
LOG->Trace( "AddSegment( %s )", TimingSegmentTypeToString(seg->GetType()).c_str() );
|
||||
#ifdef DEBUG
|
||||
LOG->Trace( "AddSegment( %s )", TimingSegmentTypeToString(seg->GetType()).c_str() );
|
||||
seg->DebugPrint();
|
||||
#endif
|
||||
|
||||
@@ -390,7 +393,9 @@ void TimingData::AddSegment( const TimingSegment *seg )
|
||||
// the segment at or before this row is equal to the new one; ignore it
|
||||
if( bOnSameRow && (*cur) == (*seg) )
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
LOG->Trace( "equals previous segment, ignoring" );
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ extern "C" const char *Init( int *argc, char ***argv )
|
||||
return "Couldn't initialize gtk (cannot open display)";
|
||||
|
||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER );
|
||||
gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS );
|
||||
gtk_window_set_default_size( GTK_WINDOW(window), 512,96 );
|
||||
//gtk_window_set_icon( GTK_WINDOW(window), );
|
||||
gtk_widget_realize(window);
|
||||
|
||||
Reference in New Issue
Block a user