merge+fix NotesLoaderBMS.cpp
@@ -28,6 +28,8 @@ Thumbs.db
|
||||
Docs/doxygen
|
||||
PBProject/build
|
||||
Xcode/build
|
||||
Xcode/stepmania.xcodeproj/xcuserdata
|
||||
Xcode/stepmania.xcodeproj/project.xcworkspace/xcuserdata
|
||||
src/build-*
|
||||
src/Release-*
|
||||
src/libtomcrypt/build-*
|
||||
@@ -35,6 +37,7 @@ src/libtomcrypt/Release-*
|
||||
src/libtommath/build-*
|
||||
src/libtommath/Release-*
|
||||
src/*.old
|
||||
src/.deps
|
||||
ver.cpp
|
||||
lib*_link.a
|
||||
Data/UserPrefs
|
||||
|
||||
@@ -1,24 +1,29 @@
|
||||
varying vec2 texCoords;
|
||||
varying vec3 normal, viewVector;
|
||||
varying vec4 lightVector, lightColor;
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
float intensity = dot(normal, lightVector.xyz);
|
||||
float fresnel = pow(1.0 - dot(viewVector, normal), 5.0);
|
||||
fresnel = fresnel < 0.5 ? 0.0 : 0.4;
|
||||
|
||||
float shade = 1.0;
|
||||
if( intensity > 0.35 )
|
||||
shade = clamp(1.0 * intensity + 0.4, 0.0, 1.0);
|
||||
else
|
||||
shade = clamp(0.85 * intensity + 0.25, 0.4, 0.6);
|
||||
shade = clamp(shade - fresnel, 0.3, 1.0);
|
||||
|
||||
vec4 vcol = gl_FrontMaterial.diffuse;
|
||||
vec4 tex = texture2D(Texture1, texCoords);
|
||||
|
||||
gl_FragColor = lightColor * vec4(tex.rgb * shade, 1.0);
|
||||
}
|
||||
uniform sampler2D Texture0;
|
||||
|
||||
varying vec2 vCoord;
|
||||
varying vec3 vNor;
|
||||
|
||||
const vec4 shadowColor = vec4(0.6, 0.75, 0.9, 1.0);
|
||||
|
||||
void main() {
|
||||
vec3 nor, light;
|
||||
nor = normalize(vNor);
|
||||
|
||||
vec4 diffuse, specular, color, lightSource;
|
||||
float ambient = length(gl_FrontMaterial.ambient.rgb);
|
||||
lightSource = gl_LightSource[0].position;
|
||||
light = normalize(gl_ModelViewMatrix * lightSource).xyz;
|
||||
|
||||
color = texture2D(Texture0, vCoord.st);
|
||||
float intensity = max(dot(light,nor), 0.0);
|
||||
if (intensity < 0.5) {
|
||||
intensity *= 0.5;
|
||||
color *= shadowColor;
|
||||
}
|
||||
intensity = min(clamp(intensity, ambient, 1.0) + 0.25, 1.0);
|
||||
|
||||
gl_FragColor = color * intensity;
|
||||
|
||||
// Don't allow transparency. Bad Things will happen.
|
||||
gl_FragColor.a = 1.0;
|
||||
}
|
||||
|
||||
@@ -1,16 +1,9 @@
|
||||
varying vec3 normal, viewVector;
|
||||
varying vec4 lightVector, lightColor;
|
||||
varying vec2 texCoords;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
texCoords = gl_MultiTexCoord0.st;
|
||||
|
||||
vec4 objectPos = gl_ModelViewMatrix * gl_Vertex;
|
||||
|
||||
normal = gl_NormalMatrix * gl_Normal;
|
||||
lightVector = normalize(gl_LightSource[0].position);
|
||||
lightColor = gl_LightSource[0].diffuse;
|
||||
viewVector = normalize(vec3(0) - objectPos.xyz);
|
||||
gl_Position = ftransform();
|
||||
}
|
||||
varying vec2 vCoord;
|
||||
varying vec3 vNor;
|
||||
|
||||
void main() {
|
||||
vCoord = gl_MultiTexCoord0.st;
|
||||
vNor = gl_Normal.xyz;
|
||||
|
||||
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
void main() {
|
||||
gl_FragColor = vec4(0.25, 0.125, 0.125, 1.0);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
void main() {
|
||||
vec4 position = gl_Vertex + vec4(gl_Normal, 1.0) * 0.125;
|
||||
// prevent skewing
|
||||
position.w = 1.0;
|
||||
|
||||
gl_Position = gl_ModelViewProjectionMatrix * position;
|
||||
}
|
||||
@@ -9,6 +9,12 @@ change to JSON, but it is unsure if this will be done.
|
||||
Implement .ssc at your own risk.
|
||||
________________________________________________________________________________
|
||||
|
||||
[v0.55] - Wolfman2000
|
||||
* Add #COMBOS tag to the Song and Steps (does nothing here).
|
||||
|
||||
[v0.54] - Wolfman2000
|
||||
* Add #ATTACKS tag to the Notedata sections. Right now it does nothing.
|
||||
|
||||
[v0.53] - Wolfman2000
|
||||
* Added Fakes to the RadarCategories. Start parsing between versions.
|
||||
* Always write out the latest version to cache and hard drive.
|
||||
|
||||
@@ -10,9 +10,48 @@ supported but exist anyways.)
|
||||
_____________________________________________________________________________
|
||||
|
||||
================================================================================
|
||||
sm-ssc v1.2.3 | 2011022?
|
||||
sm-ssc v1.2.4 | 20110???
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
20110313
|
||||
--------
|
||||
* [NotesWriterSM] Allow for either the #DESCRIPTION or #CREDIT tags to be used
|
||||
for the .sm format's description token. [Wolfman2000]
|
||||
* [ScreenEdit] Add Tap Note Cycling to allow inputting all of the taps. The way
|
||||
to make holds and rolls are still the same as before. [Wolfman2000]
|
||||
|
||||
================================================================================
|
||||
sm-ssc v1.2.3 | 20110323
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
20110309
|
||||
--------
|
||||
* [MusicWheelItem] Added Label param, renamed SongGroup param to Text. [AJ]
|
||||
|
||||
20110308
|
||||
--------
|
||||
* [WheelBase] Add GetCurrentIndex and GetNumItems Lua bindings. [AJ]
|
||||
* [ScreenSelectMusic] Add GetMusicWheel Lua binding. [AJ]
|
||||
* Added custom MusicWheel items. [AJ]
|
||||
* [MeterDisplay] Add Lua binding. "Allow setting and changing the width
|
||||
dynamically. Phase out the "StreamWidth" node property; set it with
|
||||
SetStreamWidth instead." [Glenn Maynard]
|
||||
|
||||
20110305
|
||||
--------
|
||||
* Added #COMBOS tag to the .ssc format. [Wolfman2000]
|
||||
|
||||
20110302
|
||||
--------
|
||||
* [ScreenGameplaySyncMachine] Allow themers to use either .ssc or .sm files. [AJ]
|
||||
* [ScreenHowToPlay] Allow themers to use either .ssc or .sm files. [AJ]
|
||||
* [ScreenGameplay] Footer to prevent 'arrow overflow' [Midiman]
|
||||
|
||||
20110301
|
||||
--------
|
||||
* Allow Tickcount Segments to have a value of 0 to better replicate some
|
||||
charts in the Pump series. [Wolfman2000]
|
||||
|
||||
20110228
|
||||
--------
|
||||
* Add Fakes to the RadarCategories. [Wolfman2000]
|
||||
@@ -56,7 +95,6 @@ sm-ssc v1.2.3 | 2011022?
|
||||
* [ScreenEdit] Display the Player Number for Routine mode. [Wolfman2000]
|
||||
* [ScreenEdit] Add format string metrics for the right hand side of the editor.
|
||||
[Wolfman2000]
|
||||
* [ScreenGameplaySyncMachine] Allow themes to use either .ssc or .sm files. [AJ]
|
||||
|
||||
20110221
|
||||
--------
|
||||
|
||||
@@ -42,10 +42,10 @@
|
||||
<Function name='GamePrefAutoSetStyle'/>
|
||||
<Function name='GamePrefComboOnRolls'/>
|
||||
<Function name='GamePrefComboUnderField'/>
|
||||
<Function name='GamePrefDefaultFail'/>
|
||||
<Function name='GamePrefNotePosition'/>
|
||||
<Function name='GetCoursesToShowRanking'/>
|
||||
<Function name='GetCustomDifficulty'/>
|
||||
<Function name='GetDefaultArrowSpacing'/>
|
||||
<Function name='GetDefaultOptionLines'/>
|
||||
<Function name='GetDirectRadar'/>
|
||||
<Function name='GetEditModeSubScreens'/>
|
||||
@@ -177,11 +177,11 @@
|
||||
<Function name='TrailToCustomDifficulty'/>
|
||||
<Function name='URLEncode'/>
|
||||
<Function name='UnlockRewardTypeToLocalizedString'/>
|
||||
<Function name='UserPrefAdjustSpeed'/>
|
||||
<Function name='UserPrefAutoSetStyle'/>
|
||||
<Function name='UserPrefComboOnRolls'/>
|
||||
<Function name='UserPrefComboUnderField'/>
|
||||
<Function name='UserPrefFlashyCombo'/>
|
||||
<Function name='UserPrefGameplayFooter'/>
|
||||
<Function name='UserPrefGameplayShowScore'/>
|
||||
<Function name='UserPrefGameplayShowStepsDisplay'/>
|
||||
<Function name='UserPrefLongFail'/>
|
||||
@@ -672,6 +672,7 @@
|
||||
<Function name='AnyPlayerHasRankingFeats'/>
|
||||
<Function name='ApplyGameCommand'/>
|
||||
<Function name='ClearStageModifiersIllegalForCourse'/>
|
||||
<Function name='Dopefish'/>
|
||||
<Function name='EnoughCreditsToJoin'/>
|
||||
<Function name='Env'/>
|
||||
<Function name='GetCharacter'/>
|
||||
@@ -801,6 +802,10 @@
|
||||
<Class base='ActorFrame' name='HoldJudgment'>
|
||||
<Function name='LoadFromMultiPlayer'/>
|
||||
</Class>
|
||||
<Class name='InputFilter'>
|
||||
<Function name='GetMouseX'/>
|
||||
<Function name='GetMouseY'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='LifeMeter'>
|
||||
<Function name='GetLife'/>
|
||||
<Function name='IsFailing'/>
|
||||
@@ -826,6 +831,9 @@
|
||||
<Class name='MessageManager'>
|
||||
<Function name='Broadcast'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='MeterDisplay'>
|
||||
<Function name='SetStreamWidth'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='ModIconRow'>
|
||||
<Function name='Load'/>
|
||||
</Class>
|
||||
@@ -856,9 +864,11 @@
|
||||
<Class base='ActorFrame' name='OptionRow'>
|
||||
<Function name='FirstItemGoesDown'/>
|
||||
<Function name='GetChoiceInRowWithFocus'/>
|
||||
<Function name='GetLayoutType'/>
|
||||
<Function name='GetName'/>
|
||||
<Function name='GetNumChoices'/>
|
||||
<Function name='GetRowTitle'/>
|
||||
<Function name='GetSelectType'/>
|
||||
<Function name='HasFocus'/>
|
||||
<Function name='OneChoiceForAllPlayers'/>
|
||||
</Class>
|
||||
@@ -876,6 +886,9 @@
|
||||
<Function name='GetLifeMeter'/>
|
||||
<Function name='GetStepsQueueWrapped'/>
|
||||
</Class>
|
||||
<Class name='PlayerOptions'>
|
||||
<Function name='GetNoteSkin'/>
|
||||
</Class>
|
||||
<Class name='PlayerStageStats'>
|
||||
<Function name='FullCombo'/>
|
||||
<Function name='FullComboOfScore'/>
|
||||
@@ -917,6 +930,7 @@
|
||||
<Function name='GetPlayerNumber'/>
|
||||
<Function name='GetPlayerOptions'/>
|
||||
<Function name='GetPlayerOptionsArray'/>
|
||||
<Function name='GetPlayerOptionsString'/>
|
||||
<Function name='SetPlayerOptions'/>
|
||||
</Class>
|
||||
<Class name='PrefsManager'>
|
||||
@@ -1100,6 +1114,7 @@
|
||||
</Class>
|
||||
<Class base='ScreenWithMenuElements' name='ScreenSelectMusic'>
|
||||
<Function name='GetGoToOptions'/>
|
||||
<Function name='GetMusicWheel'/>
|
||||
<Function name='setupcoursestagemods'/>
|
||||
<Function name='setupmusicstagemods'/>
|
||||
</Class>
|
||||
@@ -1245,6 +1260,7 @@
|
||||
</Class>
|
||||
<Class name='Steps'>
|
||||
<Function name='GetAuthorCredit'/>
|
||||
<Function name='GetChartStyle'/>
|
||||
<Function name='GetDescription'/>
|
||||
<Function name='GetDifficulty'/>
|
||||
<Function name='GetFilename'/>
|
||||
@@ -1353,6 +1369,8 @@
|
||||
<Function name='UnlockEntryIndex'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='WheelBase'>
|
||||
<Function name='GetCurrentIndex'/>
|
||||
<Function name='GetNumItems'/>
|
||||
<Function name='GetWheelItem'/>
|
||||
<Function name='IsLocked'/>
|
||||
<Function name='IsSettled'/>
|
||||
@@ -1583,6 +1601,10 @@
|
||||
<EnumValue name=''JudgmentLine_Held'' value='6'/>
|
||||
<EnumValue name=''JudgmentLine_MaxCombo'' value='7'/>
|
||||
</Enum>
|
||||
<Enum name='LayoutType'>
|
||||
<EnumValue name=''LayoutType_ShowAllInRow'' value='0'/>
|
||||
<EnumValue name=''LayoutType_ShowOneInRow'' value='1'/>
|
||||
</Enum>
|
||||
<Enum name='LightsMode'>
|
||||
<EnumValue name=''LightsMode_Attract'' value='0'/>
|
||||
<EnumValue name=''LightsMode_Joining'' value='1'/>
|
||||
@@ -1696,9 +1718,10 @@
|
||||
<EnumValue name=''PaneCategory_Mines'' value='4'/>
|
||||
<EnumValue name=''PaneCategory_Hands'' value='5'/>
|
||||
<EnumValue name=''PaneCategory_Lifts'' value='6'/>
|
||||
<EnumValue name=''PaneCategory_MachineHighScore'' value='7'/>
|
||||
<EnumValue name=''PaneCategory_MachineHighName'' value='8'/>
|
||||
<EnumValue name=''PaneCategory_ProfileHighScore'' value='9'/>
|
||||
<EnumValue name=''PaneCategory_Fakes'' value='7'/>
|
||||
<EnumValue name=''PaneCategory_MachineHighScore'' value='8'/>
|
||||
<EnumValue name=''PaneCategory_MachineHighName'' value='9'/>
|
||||
<EnumValue name=''PaneCategory_ProfileHighScore'' value='10'/>
|
||||
</Enum>
|
||||
<Enum name='PeakComboAward'>
|
||||
<EnumValue name=''PeakComboAward_1000'' value='0'/>
|
||||
@@ -1752,6 +1775,7 @@
|
||||
<EnumValue name=''RadarCategory_Hands'' value='9'/>
|
||||
<EnumValue name=''RadarCategory_Rolls'' value='10'/>
|
||||
<EnumValue name=''RadarCategory_Lifts'' value='11'/>
|
||||
<EnumValue name=''RadarCategory_Fakes'' value='12'/>
|
||||
</Enum>
|
||||
<Enum name='RandomBackgroundMode'>
|
||||
<EnumValue name=''RandomBackgroundMode_Off'' value='0'/>
|
||||
@@ -1779,6 +1803,11 @@
|
||||
<EnumValue name=''ScreenType_Gameplay'' value='2'/>
|
||||
<EnumValue name=''ScreenType_SystemMenu'' value='3'/>
|
||||
</Enum>
|
||||
<Enum name='SelectType'>
|
||||
<EnumValue name=''SelectType_SelectOne'' value='0'/>
|
||||
<EnumValue name=''SelectType_SelectMultiple'' value='1'/>
|
||||
<EnumValue name=''SelectType_SelectNone'' value='2'/>
|
||||
</Enum>
|
||||
<Enum name='ShowDancingCharacters'>
|
||||
<EnumValue name=''ShowDancingCharacters_Off'' value='0'/>
|
||||
<EnumValue name=''ShowDancingCharacters_Random'' value='1'/>
|
||||
@@ -1963,6 +1992,6 @@
|
||||
<Constant name='sGame' value=''dance''/>
|
||||
<Constant name='top' value=''VertAlign_Top''/>
|
||||
</Constants>
|
||||
<Version>sm-ssc v1.2.2</Version>
|
||||
<Date>2011-02-21</Date>
|
||||
<Version>sm-ssc v1.2.3</Version>
|
||||
<Date>2011-03-15</Date>
|
||||
</Lua>
|
||||
|
||||
@@ -1526,6 +1526,9 @@
|
||||
<Function name='EnoughCreditsToJoin' return='bool' arguments=''>
|
||||
Returns <code>true</code> if enough credits have been inserted to join.
|
||||
</Function>
|
||||
<Function name='Dopefish' sm-ssc='true' return='bool' arguments=''>
|
||||
fishpolk.mid; See also: Rise of the Triad
|
||||
</Function>
|
||||
<Function name='Env' return='table' arguments=''>
|
||||
Returns the environment table. See <Link class='GameCommand' />.
|
||||
</Function>
|
||||
@@ -1898,6 +1901,14 @@
|
||||
Loads the HoldJudgment for the specified MultiPlayer.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='InputFilter'>
|
||||
<Function name='GetMouseX' sm-ssc='true' return='float' arguments=''>
|
||||
Returns the X position of the mouse.
|
||||
</Function>
|
||||
<Function name='GetMouseY' sm-ssc='true' return='float' arguments=''>
|
||||
Returns the Y position of the mouse.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='LifeMeter'>
|
||||
<Function name='GetLife' return='float' arguments=''>
|
||||
Returns the amount of life left in the LifeMeter as a float in the range 0..1.
|
||||
@@ -1964,7 +1975,7 @@
|
||||
</Class>
|
||||
<Class name='MeterDisplay'>
|
||||
<Function name='SetStreamWidth' return='void' arguments='float fWidth'>
|
||||
|
||||
Sets the width of the MeterDisplay to <code>fWidth</code>.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='Model'>
|
||||
@@ -2045,6 +2056,9 @@
|
||||
<Function name='GetChoiceInRowWithFocus' sm-ssc='true' return='int' arguments='PlayerNumber pn'>
|
||||
Returns an index of the choice in the row that player <code>pn</code> is on.
|
||||
</Function>
|
||||
<Function name='GetLayoutType' sm-ssc='true' return='LayoutType' arguments=''>
|
||||
Returns the OptionRow's layout type.
|
||||
</Function>
|
||||
<Function name='GetName' sm-ssc='true' return='string' arguments=''>
|
||||
Returns the name of the OptionRow.
|
||||
</Function>
|
||||
@@ -2054,6 +2068,9 @@
|
||||
<Function name='GetRowTitle' sm-ssc='true' return='string' arguments=''>
|
||||
Returns the row title string.
|
||||
</Function>
|
||||
<Function name='GetSelectType' sm-ssc='true' return='SelectType' arguments=''>
|
||||
Returns the OptionRow's select type.
|
||||
</Function>
|
||||
<Function name='HasFocus' sm-ssc='true' return='bool' arguments='PlayerNumber pn'>
|
||||
Returns <code>true</code> if this row is focused by player <code>pn</code>.
|
||||
</Function>
|
||||
@@ -2080,6 +2097,11 @@
|
||||
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='PlayerOptions'>
|
||||
<Function name='GetNoteSkin' sm-ssc='true' return='string' arguments=''>
|
||||
Returns the current NoteSkin set in the PlayerOptions.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='PlayerStageStats'>
|
||||
<Function name='FullCombo' return='bool' arguments=''>
|
||||
Returns <code>true</code> if a full combo (TNS_W3 and up) was obtained.
|
||||
@@ -2208,8 +2230,11 @@
|
||||
<Function name='GetPlayerNumber' return='PlayerNumber' arguments=''>
|
||||
Returns the player number for this PlayerState.
|
||||
</Function>
|
||||
<Function name='GetPlayerOptions' return='string' arguments='ModsLevel ml'>
|
||||
Returns a string of player options for the specified ModsLevel.
|
||||
<Function name='GetPlayerOptions' renamed='true' return='PlayerOptions' arguments='ModsLevel ml'>
|
||||
Returns a PlayerOptions object for the specified ModsLevel.
|
||||
</Function>
|
||||
<Function name='GetPlayerOptionsString' sm-ssc='true' return='string' arguments='ModsLevel ml'>
|
||||
Returns a string of player options for the specified ModsLevel. (was GetPlayerOptions in v1.2.2 and prior)
|
||||
</Function>
|
||||
<Function name='GetPlayerOptionsArray' return='{string}' arguments='ModsLevel ml'>
|
||||
Returns a table of strings, containing the player options for the specified ModsLevel.
|
||||
@@ -2667,6 +2692,9 @@
|
||||
<Function name='GetGoToOptions' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the player is going to the options screen.
|
||||
</Function>
|
||||
<Function name='GetMusicWheel' sm-ssc='true' return='MusicWheel' arguments=''>
|
||||
Returns the MusicWheel used on this screen.
|
||||
</Function>
|
||||
<Function name='setupcoursestagemods' theme='_fallback' return='void' arguments=''>
|
||||
[02 StageMods.lua] Sets up modifiers for course modes.
|
||||
</Function>
|
||||
@@ -3059,12 +3087,15 @@
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='Steps'>
|
||||
<Function name='GetDescription' return='string' arguments=''>
|
||||
Returns the Steps description.
|
||||
</Function>
|
||||
<Function name='GetAuthorCredit' return='string' arguments=''>
|
||||
Returns the author that made that particular Steps pattern.
|
||||
</Function>
|
||||
<Function name='GetChartStyle' sm-ssc='true' return='string' arguments=''>
|
||||
Returns the Chart Style for this Steps.
|
||||
</Function>
|
||||
<Function name='GetDescription' return='string' arguments=''>
|
||||
Returns the Steps description.
|
||||
</Function>
|
||||
<Function name='GetDifficulty' return='Difficulty' arguments=''>
|
||||
Returns the Steps difficulty.
|
||||
</Function>
|
||||
@@ -3342,6 +3373,12 @@
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='WheelBase'>
|
||||
<Function name='GetCurrentIndex' sm-ssc='true' return='int' arguments=''>
|
||||
Returns the wheel's current index.
|
||||
</Function>
|
||||
<Function name='GetNumItems' sm-ssc='true' return='int' arguments=''>
|
||||
Returns the total number of items in the wheel.
|
||||
</Function>
|
||||
<Function name='GetWheelItem' return='WheelItemBaseData' arguments='int iIndex'>
|
||||
Returns the WheelItem at index <code>iIndex</code>.
|
||||
</Function>
|
||||
|
||||
@@ -109,6 +109,10 @@ juanelote
|
||||
NitroX72
|
||||
* Pump/frame noteskin
|
||||
|
||||
Tatsh
|
||||
* A patch to fix building with system ffmpeg
|
||||
(http://ssc.ajworld.net/sm-ssc/bugtracker/view.php?id=218)
|
||||
|
||||
==the beta testers==
|
||||
[SSC Beta Testing Team]
|
||||
KeithD
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[as taken from src/ProductInfo.h]
|
||||
[as taken from src/ProductInfo.h] (before doxygen)
|
||||
|
||||
Version info displayed to the user.
|
||||
|
||||
@@ -9,4 +9,4 @@ These are the 'official' version designations:
|
||||
* "v0.0 alpha #": Alpha versions (bug squashing, polishing until we reach beta)
|
||||
* "v0.0 beta #": Beta versions (bug squashing, _focus_ is on high priority bugs)
|
||||
* "v0.0 rc#": Release Candidates (if there are no problems, move on to final)
|
||||
* "v0.0": Final Releases
|
||||
* "v0.0": Final Releases
|
||||
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 302 B |
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 302 B |
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 382 B After Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 513 B |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 192 B |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 192 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 278 B |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 18 KiB |
@@ -4,35 +4,27 @@
|
||||
TapNoteAnimationIsVivid=0
|
||||
DrawHoldHeadForTapsOnSameRow=0
|
||||
|
||||
|
||||
|
||||
TapNoteAnimationLength=2
|
||||
TapAdditionAnimationLength=4
|
||||
TapMineAnimationLength=1
|
||||
TapLiftAnimationLength=4
|
||||
|
||||
|
||||
HoldHeadAnimationLength=1 // doesn't matter. Only 1 frame anyway.
|
||||
HoldTopCapAnimationLength=1 // doesn't matter. Only 1 frame anyway.
|
||||
HoldBottomCapAnimationLength=1 // doesn't matter. Only 1 frame anyway.
|
||||
HoldBodyAnimationLength=1 // doesn't matter. Only 1 frame anyway.
|
||||
HoldTailAnimationLength=1 // doesn't matter. Only 1 frame anyway.
|
||||
|
||||
|
||||
|
||||
HoldHeadAnimationIsNoteColor=0
|
||||
HoldTopCapAnimationIsNoteColor=0
|
||||
HoldBodyAnimationIsNoteColor=0
|
||||
HoldBottomCapAnimationIsNoteColor=0
|
||||
HoldTailAnimationIsNoteColor=0
|
||||
|
||||
|
||||
HoldLetGoGrayPercent=0.25
|
||||
HoldHeadIsAboveWavyParts=0
|
||||
HoldTailIsAboveWavyParts=0
|
||||
|
||||
|
||||
|
||||
StartDrawingHoldBodyOffsetFromHead=0
|
||||
StopDrawingHoldBodyOffsetFromTail=0 // top of tail
|
||||
|
||||
@@ -48,8 +40,6 @@ TapNoteNoteColorTextureCoordSpacingY=0
|
||||
HoldHeadNoteColorTextureCoordSpacingX=0
|
||||
HoldHeadNoteColorTextureCoordSpacingY=0
|
||||
|
||||
|
||||
|
||||
[GhostArrowDim]
|
||||
HitMineCommand=blend,"BlendMode_Add";diffuse,1,1,1,1;zoom,1;rotationz,0;linear,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0
|
||||
W5Command=diffuse,0.8,0.0,0.6,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||
@@ -71,17 +61,10 @@ W2Command=diffuse,1.0,1.0,0.3,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusea
|
||||
W1Command=diffuse,0.8,0.0,0.6,1;zoom,1;linear,0.2;zoom,1.5;decelerate,0.1;zoom,1.5;diffusealpha,0
|
||||
HeldCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||
|
||||
|
||||
[ReceptorArrow]
|
||||
InitCommand=effectclock,'beat';diffuseramp;effectcolor1,color("0.5,0.5,0.5,1");effectcolor2,color("1,1,1,1");
|
||||
# By default, always step. Individual game skins can override this.
|
||||
|
||||
NoneCommand=zoom,1.1;linear,0.06;diffusealpha,0;linear,0.06;zoom,1.0;diffuse,0.3,0.8,1.0,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
HitMineCommand=
|
||||
AvoidMineCommand=
|
||||
MissCommand=
|
||||
|
||||
@@ -14,6 +14,7 @@ TEXT_IO_SMZIP_PACKAGE=SMZIP package
|
||||
TEXT_IO_FATAL_ERROR_COPYING_PCK =Fatal error copying pck files.
|
||||
TEXT_IO_FATAL_ERROR_INSTALL=Fatal error during install.
|
||||
TEXT_IO_LAUNCH_THE_GAME=Launch StepMania
|
||||
TEXT_IO_TEXTURE_FONT_GENERATOR=Texture Font Generator
|
||||
|
||||
[Installer Functions]
|
||||
TEXT_IO_TITLE=${PRODUCT_DISPLAY}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Common Normal
|
||||
@@ -0,0 +1 @@
|
||||
_blank
|
||||
@@ -0,0 +1 @@
|
||||
MusicWheelItem Roulette NormalPart
|
||||
@@ -0,0 +1 @@
|
||||
MusicWheelItem Roulette NormalPart
|
||||
@@ -842,6 +842,7 @@ Edit time signature=Edit time signature (not working yet)
|
||||
Edit time signature (top)=Edit time signature (beats per measure)
|
||||
Edit time signature (bottom)=Edit time signature (single beat note value)
|
||||
Edit tickcount=Edit tickcount
|
||||
Edit combo=Edit combo
|
||||
Editor options=Options
|
||||
EditorShowBGChangesPlay=Show Backgrounds
|
||||
Effect=Effect
|
||||
@@ -1207,6 +1208,7 @@ Enter a new Delay value.=Enter a new Delay value.
|
||||
Enter a new Time Signature numerator value.=Enter the number of beats per measure.
|
||||
Enter a new Time Signature denominator value.=Enter the note value that represents one beat.
|
||||
Enter a new Tickcount value.=Enter a new Tickcount value.
|
||||
Enter a new Combo value.=Enter a new Combo value.
|
||||
Enter a new artist transliteration.=Enter a new artist transliteration.
|
||||
Enter a new artist.=Enter a new artist.
|
||||
Enter a new genre.=Enter a new genre.
|
||||
@@ -1221,7 +1223,7 @@ Enter a new sub title transliteration.=Enter a new sub title transliteration.
|
||||
Enter a new sub title.=Enter a new sub title.
|
||||
More than %d notes per measure is not allowed. This change has been reverted.=More than %d notes per measure is not allowed. This change has been reverted.
|
||||
No backgrounds available=No backgrounds available
|
||||
EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nSpace bar:\n Set area\n marker\nEnter:\n Area Menu\nEscape:\n Main Menu\nF1:\n Show help\n
|
||||
EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nCreate roll note:\n Hold Shift,\n then create a\n hold note.\nSpace bar:\n Set area\n marker\nEnter:\n Area Menu\nEscape:\n Main Menu\nF1:\n Show help\n
|
||||
PlayRecordHelpText=Press START to end
|
||||
Save successful.=Save successful.
|
||||
Saved as SM and DWI.=Saved as SM and DWI.
|
||||
@@ -1242,6 +1244,7 @@ Description=Description
|
||||
Chart Style=Chart Style
|
||||
Main title=Main title
|
||||
Subtitle=Subtitle
|
||||
Tap Note=Tap Note
|
||||
Tap Steps=Tap Steps
|
||||
Jumps=Jumps
|
||||
Hands=Hands
|
||||
@@ -1910,7 +1913,6 @@ Play current beat to end=Play current beat to end
|
||||
Play whole song=Play whole song
|
||||
Record=Record
|
||||
Set selection=Set selection
|
||||
Drag area marker=Drag area marker
|
||||
Toggle assist tick=Toggle assist tick
|
||||
Next/prev steps of same StepsType=Next/prev steps of same StepsType
|
||||
Decrease/increase BPM at cur beat=Decrease/increase BPM at cur beat
|
||||
@@ -1924,6 +1926,7 @@ Insert beat and shift down=Insert beat and shift down
|
||||
Shift BPM changes and stops down one beat=Shift BPM changes and stops down one beat
|
||||
Delete beat and shift up=Delete beat and shift up
|
||||
Shift BPM changes and stops up one beat=Shift BPM changes and stops up one beat
|
||||
Cycle between tap notes=Cycle between tap notes
|
||||
Lay mine=Lay mine
|
||||
Lay lift=Lay lift
|
||||
Add to/remove from right half=Add to/remove from right half
|
||||
|
||||
@@ -18,9 +18,17 @@ function ScreenSelectMusic:setupmusicstagemods()
|
||||
local pm = GAMESTATE:GetPlayMode()
|
||||
|
||||
if pm == "PlayMode_Battle" or pm == "PlayMode_Rave" then
|
||||
local so = GAMESTATE:GetDefaultSongOptions() .. ",failoff"
|
||||
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so )
|
||||
MESSAGEMAN:Broadcast( "SongOptionsChanged" )
|
||||
-- FIX DAT BUG;
|
||||
local sFail = "";
|
||||
if GetGamePref("DefaultFail") then
|
||||
sFail = string.format("Fail%s", GetGamePref("DefaultFail") );
|
||||
else
|
||||
sFail = "Failoff";
|
||||
end;
|
||||
--
|
||||
local so = GAMESTATE:GetDefaultSongOptions() .. "," .. sFail;
|
||||
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so );
|
||||
MESSAGEMAN:Broadcast( "SongOptionsChanged" );
|
||||
elseif GAMESTATE:IsAnExtraStage() then
|
||||
if GAMESTATE:GetPreferredSongGroup() == "---Group All---" then
|
||||
local song = GAMESTATE:GetCurrentSong()
|
||||
@@ -51,7 +59,7 @@ function ScreenSelectMusic:setupmusicstagemods()
|
||||
MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} )
|
||||
end
|
||||
|
||||
-- if PREFSMAN:GetPreference("
|
||||
|
||||
|
||||
GAMESTATE:SetSongOptions( "ModsLevel_Stage", so )
|
||||
MESSAGEMAN:Broadcast( "SongOptionsChanged" )
|
||||
|
||||
@@ -74,7 +74,7 @@ function ComboContinue()
|
||||
sGame = GAMESTATE:GetCurrentGame():GetName()
|
||||
local Continue = {
|
||||
dance = GAMESTATE:GetPlayMode() == "PlayMode_Oni" and "TapNoteScore_W2" or "TapNoteScore_W3",
|
||||
pump = "TapNoteScore_W4",
|
||||
pump = "TapNoteScore_W3",
|
||||
beat = "TapNoteScore_W3",
|
||||
kb7 = "TapNoteScore_W3",
|
||||
para = "TapNoteScore_W4"
|
||||
|
||||
@@ -46,6 +46,7 @@ function InitUserPrefs()
|
||||
{ "UserPrefProtimingP1", false},
|
||||
{ "UserPrefProtimingP2", false},
|
||||
{ "FlashyCombos", false},
|
||||
{ "GameplayFooter", false},
|
||||
};
|
||||
|
||||
for idx,pref in ipairs(Prefs) do
|
||||
@@ -323,6 +324,42 @@ function UserPrefFlashyCombo()
|
||||
setmetatable( t, t );
|
||||
return t;
|
||||
end
|
||||
|
||||
function UserPrefGameplayFooter()
|
||||
local t = {
|
||||
Name = "UserPrefGameplayFooter";
|
||||
LayoutType = "ShowAllInRow";
|
||||
SelectType = "SelectOne";
|
||||
OneChoiceForAllPlayers = true;
|
||||
ExportOnChange = false;
|
||||
Choices = { 'Off','On' };
|
||||
LoadSelections = function(self, list, pn)
|
||||
if ReadPrefFromFile("GameplayFooter") ~= nil then
|
||||
if GetUserPrefB("GameplayFooter") then
|
||||
list[2] = true;
|
||||
else
|
||||
list[1] = true;
|
||||
end;
|
||||
else
|
||||
WritePrefToFile("GameplayFooter",false);
|
||||
list[1] = true;
|
||||
end;
|
||||
end;
|
||||
SaveSelections = function(self, list, pn)
|
||||
local val;
|
||||
if list[2] then
|
||||
val = true;
|
||||
else
|
||||
val = false;
|
||||
end;
|
||||
WritePrefToFile("GameplayFooter",val);
|
||||
MESSAGEMAN:Broadcast("PreferenceSet", { Message == "Set Preference" } );
|
||||
THEME:ReloadMetrics();
|
||||
end;
|
||||
};
|
||||
setmetatable( t, t );
|
||||
return t;
|
||||
end
|
||||
--[[ end themeoption rows ]]
|
||||
|
||||
--[[ game option rows ]]
|
||||
@@ -479,7 +516,18 @@ function GamePrefDefaultFail()
|
||||
LoadSelections = function(self, list, pn)
|
||||
if ReadGamePrefFromFile("DefaultFail") ~= nil then
|
||||
if GetGamePref("DefaultFail") then
|
||||
list[table.find( list, GetGamePref("DefaultFail") )] = true;
|
||||
if GetGamePref("DefaultFail") == "Immediate" then
|
||||
list[1] = true;
|
||||
elseif GetGamePref("DefaultFail") == "ImmediateContinue" then
|
||||
list[2] = true;
|
||||
elseif GetGamePref("DefaultFail") == "AtEnd" then
|
||||
list[3] = true;
|
||||
elseif GetGamePref("DefaultFail") == "Off" then
|
||||
list[4] = true;
|
||||
else
|
||||
list[1] = true;
|
||||
end
|
||||
-- list[table.find( list, GetGamePref("DefaultFail") )] = true;
|
||||
else
|
||||
list[1] = true;
|
||||
end;
|
||||
@@ -492,14 +540,18 @@ function GamePrefDefaultFail()
|
||||
-- This is so stupid.
|
||||
local tChoices = { "Immediate","ImmediateContinue", "AtEnd", "Off" };
|
||||
local val;
|
||||
for i=1,#list do
|
||||
if list[i] then
|
||||
val = i;
|
||||
else
|
||||
val = 1;
|
||||
end
|
||||
if list[1] then
|
||||
val = tChoices[1];
|
||||
elseif list[2] then
|
||||
val = tChoices[2];
|
||||
elseif list[3] then
|
||||
val = tChoices[3];
|
||||
elseif list[4] then
|
||||
val = tChoices[4];
|
||||
else
|
||||
val = tChoices[1];
|
||||
end
|
||||
WriteGamePrefToFile("DefaultFail",tChoices[val]);
|
||||
WriteGamePrefToFile("DefaultFail",val);
|
||||
MESSAGEMAN:Broadcast("PreferenceSet", { Message == "Set Preference" } );
|
||||
THEME:ReloadMetrics();
|
||||
end;
|
||||
|
||||
@@ -647,6 +647,9 @@ LyricBackChangedCommand=LyricCommand,"Back"
|
||||
InLength=0
|
||||
OutLength=0
|
||||
|
||||
[NotesWriterSM]
|
||||
DescriptionUsesCreditField=false
|
||||
|
||||
[OptionRow]
|
||||
ShowModIcons=false
|
||||
ShowUnderlines=true
|
||||
@@ -843,6 +846,8 @@ ShowPortal=false
|
||||
MostPlayedSongsToShow=30
|
||||
RecentSongsToShow=30
|
||||
#
|
||||
UseEasyMarkerFlag=false
|
||||
#
|
||||
ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent"
|
||||
# ModeMenuChoiceNames="Preferred,Group,Title,Bpm,Popularity,TopGrades,Artist,EasyMeter,MediumMeter,HardMeter,ChallengeMeter,DoubleEasyMeter,DoubleMediumMeter,DoubleHardMeter,DoubleChallengeMeter,Genre,Length,Recent,NormalMode,BattleMode"
|
||||
ChoicePreferred="sort,Preferred"
|
||||
@@ -865,8 +870,8 @@ ChoiceLength="sort,Length"
|
||||
ChoiceRecent="sort,Recent"
|
||||
ChoiceNormalMode="playmode,regular"
|
||||
ChoiceBattleMode="playmode,battle"
|
||||
UseEasyMarkerFlag=false
|
||||
#
|
||||
CustomWheelItemNames=""
|
||||
|
||||
[CourseWheel]
|
||||
Fallback="MusicWheel"
|
||||
@@ -930,6 +935,10 @@ ModeX=0
|
||||
ModeY=0
|
||||
ModeOnCommand=
|
||||
#
|
||||
CustomX=0
|
||||
CustomY=0
|
||||
CustomOnCommand=
|
||||
#
|
||||
GradeP1X=0
|
||||
GradeP1Y=0
|
||||
GradeP2X=0
|
||||
@@ -956,18 +965,21 @@ StopColor=color("0.8,0.8,0,1")
|
||||
DelayColor=color("0,0.8,0.8,1")
|
||||
TimeSignatureColor=color("1,0.55,0,1")
|
||||
TickcountColor=color("0,1,0,1")
|
||||
ComboColor=color("0.55,1,0,1")
|
||||
#
|
||||
BPMIsLeftSide=true
|
||||
StopIsLeftSide=true
|
||||
DelayIsLeftSide=true
|
||||
TimeSignatureIsLeftSide=true
|
||||
TickcountIsLeftSide=false
|
||||
ComboIsLeftSide=false
|
||||
#
|
||||
BPMOffsetX=60
|
||||
StopOffsetX=10
|
||||
DelayOffsetX=10
|
||||
TimeSignatureOffsetX=30
|
||||
TickcountOffsetX=10
|
||||
ComboOffsetX=30
|
||||
|
||||
[PlayerStageStats]
|
||||
# Original CVS Grading
|
||||
@@ -3640,6 +3652,7 @@ DescriptionFormat="%s:\n %s\n"
|
||||
ChartStyleFormat="%s:\n %s\n"
|
||||
MainTitleFormat="%s:\n %s\n"
|
||||
SubtitleFormat="%s:\n %s\n"
|
||||
TapNoteTypeFormat="%s: %s\n"
|
||||
NumStepsFormat="%s: %d\n"
|
||||
NumJumpsFormat="%s: %d\n"
|
||||
NumHoldsFormat="%s: %d\n"
|
||||
@@ -3706,6 +3719,7 @@ Fallback="StepsDisplay"
|
||||
# oh, right, minimenus.
|
||||
[ScreenMiniMenuEditHelp]
|
||||
Fallback="ScreenMiniMenu"
|
||||
ShowFooter=false
|
||||
ColorDisabled=color("1,1,1,1")
|
||||
RowInitCommand=halign,0.5;valign,0.5;zoom,0.8;x,75;y,45;shadowlength,1
|
||||
OptionRowNormalMetricsGroup="OptionRowMiniMenuEditHelp"
|
||||
|
||||
@@ -176,23 +176,23 @@ t[#t+1] = StandardDecorationFromFileOptional("SongInformation","SongInformation"
|
||||
local SongOrCourse;
|
||||
if GAMESTATE:GetCurrentSong() then
|
||||
SongOrCourse = GAMESTATE:GetCurrentSong();
|
||||
|
||||
|
||||
c.TextTitle:settext( SongOrCourse:GetDisplayMainTitle() or nil );
|
||||
c.TextSubtitle:settext( SongOrCourse:GetDisplaySubTitle() or nil );
|
||||
c.TextArtist:settext( SongOrCourse:GetDisplayArtist() or nil );
|
||||
|
||||
|
||||
if SongOrCourse:GetDisplaySubTitle() == "" then
|
||||
c.TextTitle:visible(true);
|
||||
c.TextTitle:y(-16.5/2);
|
||||
c.Subtitle:visible(false);
|
||||
c.Subtitle:y(0);
|
||||
c.TextSubtitle:visible(false);
|
||||
c.TextSubtitle:y(0);
|
||||
c.TextArtist:visible(true);
|
||||
c.TextArtist:y(18/2);
|
||||
else
|
||||
c.TextTitle:visible(true);
|
||||
c.TextTitle:y(-16.5);
|
||||
c.Subtitle:visible(true);
|
||||
c.Subtitle:y(0);
|
||||
c.TextSubtitle:visible(true);
|
||||
c.TextSubtitle:y(0);
|
||||
c.TextArtist:visible(true);
|
||||
c.TextArtist:y(18);
|
||||
end
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
local vStats = STATSMAN:GetCurStageStats();
|
||||
|
||||
local function CreateStats( pnPlayer )
|
||||
-- Actor Templates
|
||||
local aLabel = LoadFont("Common Normal") .. { Text="..."; InitCommand=cmd(zoom,0.5;shadowlength,1;horizalign,left); };
|
||||
local aText = LoadFont("Common Normal") .. { Text="..."; InitCommand=cmd(zoom,0.5;shadowlength,1;horizalign,left); };
|
||||
local aLabel = LoadFont("Common Normal") .. { InitCommand=cmd(zoom,0.5;shadowlength,1;horizalign,left); };
|
||||
local aText = LoadFont("Common Normal") .. { InitCommand=cmd(zoom,0.5;shadowlength,1;horizalign,left); };
|
||||
-- DA STATS, JIM!!
|
||||
local pnStageStats = vStats:GetPlayerStageStats( pnPlayer );
|
||||
-- Organized Stats.
|
||||
@@ -28,12 +29,11 @@ local function CreateStats( pnPlayer )
|
||||
MIGS = ( tStats["W1"]*3 + tStats["W2"]*2 + tStats["W3"] - tStats["W5"]*4 - tStats["Miss"]*8 + tStats["Held"]*6 ),
|
||||
-- (marvcount + perfcount + greatcount + goodcount + boocount + misscount)*3 + (okcount + ngcount)*6
|
||||
MIGS_MAX = ( (tStats["W1"] + tStats["W2"] + tStats["W3"] + tStats["W4"] + tStats["W5"] + tStats["Miss"])*3 + (tStats["Held"] + tStats["LetGo"])*6 ),
|
||||
|
||||
};
|
||||
--
|
||||
|
||||
local t = Def.ActorFrame {};
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=cmd(y,-32);
|
||||
InitCommand=cmd(y,-34);
|
||||
LoadActor(THEME:GetPathG("ScreenTitleMenu","PreferenceFrame")) .. {
|
||||
InitCommand=cmd(zoom,0.875;diffuse,PlayerColor( pnPlayer ));
|
||||
};
|
||||
@@ -43,7 +43,7 @@ local function CreateStats( pnPlayer )
|
||||
aText .. { Text=string.format("%04i",tValues["ITG_MAX"]); InitCommand=cmd(x,32;y,5;vertalign,bottom;zoom,0.5); };
|
||||
};
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=cmd(y,-16);
|
||||
InitCommand=cmd(y,-6);
|
||||
LoadActor(THEME:GetPathG("ScreenTitleMenu","PreferenceFrame")) .. {
|
||||
InitCommand=cmd(zoom,0.875;diffuse,PlayerColor( pnPlayer ));
|
||||
};
|
||||
@@ -52,20 +52,13 @@ local function CreateStats( pnPlayer )
|
||||
aText .. { Text="/"; InitCommand=cmd(x,28;y,5;vertalign,bottom;zoom,0.5;diffusealpha,0.5); };
|
||||
aText .. { Text=string.format("%04i",tValues["MIGS_MAX"]); InitCommand=cmd(x,32;y,5;vertalign,bottom;zoom,0.5); };
|
||||
};
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=cmd(y,0);
|
||||
LoadActor(THEME:GetPathG("ScreenTitleMenu","PreferenceFrame")) .. {
|
||||
InitCommand=cmd(zoom,0.875;diffuse,PlayerColor( pnPlayer ));
|
||||
};
|
||||
aLabel .. { Text="Signed:"; InitCommand=cmd(x,-64) };
|
||||
aText .. { Text=string.format( #(tPlayerData[PLAYER_1].SignedJudgments) ); InitCommand=cmd(x,-8;y,5;vertalign,bottom;zoom,0.675); };
|
||||
};
|
||||
return t
|
||||
end;
|
||||
|
||||
-- xxx: this only currently works for player 1. -aj
|
||||
local t = Def.ActorFrame {};
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=cmd(x,math.floor(SCREEN_CENTER_X*0.5)-8;y,SCREEN_CENTER_Y);
|
||||
--
|
||||
InitCommand=cmd(x,WideScale(math.floor(SCREEN_CENTER_X*0.3)-8,math.floor(SCREEN_CENTER_X*0.5)-8);y,SCREEN_CENTER_Y);
|
||||
CreateStats( PLAYER_1 );
|
||||
};
|
||||
return t
|
||||
@@ -130,9 +130,12 @@ for pn in ivalues(PlayerNumber) do
|
||||
end;
|
||||
};
|
||||
end;
|
||||
|
||||
t[#t+1] = StandardDecorationFromFileOptional("ScoreFrame","ScoreFrame");
|
||||
t[#t+1] = StandardDecorationFromFileOptional("BPMDisplay","BPMDisplay");
|
||||
t[#t+1] = StandardDecorationFromFileOptional("StageDisplay","StageDisplay");
|
||||
t[#t+1] = StandardDecorationFromFileOptional("SongTitle","SongTitle");
|
||||
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=function(self)
|
||||
self:name("SongMeterDisplay");
|
||||
@@ -157,7 +160,7 @@ t[#t+1] = Def.ActorFrame {
|
||||
OnCommand=cmd(x,scale(0.75,0,1,-380/2,380/2);diffuse,Color("Orange");diffusealpha,0.5);
|
||||
};
|
||||
Def.SongMeterDisplay {
|
||||
StreamWidth=THEME:GetMetric( "SongMeterDisplay", 'StreamWidth' );
|
||||
InitCommand=cmd(SetStreamWidth,THEME:GetMetric( "SongMeterDisplay", 'StreamWidth' ));
|
||||
Stream=LoadActor( THEME:GetPathG( 'SongMeterDisplay', 'stream ' .. PlayerNumberToString(PLAYER_1) ) )..{
|
||||
InitCommand=cmd(diffuse,Color("Orange");diffusealpha,0.5;blend,Blend.Add;);
|
||||
};
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
_CombinedLifeMeterTug stream p1
|
||||
@@ -1 +0,0 @@
|
||||
_CombinedLifeMeterTug stream p2
|
||||
@@ -33,6 +33,9 @@ local ProtimingCmds = {
|
||||
local AverageCmds = {
|
||||
Pulse = THEME:GetMetric( "Protiming", "AveragePulseCommand" );
|
||||
};
|
||||
local TextCmds = {
|
||||
Pulse = THEME:GetMetric( "Protiming", "TextPulseCommand" );
|
||||
};
|
||||
|
||||
local TNSFrames = {
|
||||
TapNoteScore_W1 = 0;
|
||||
@@ -64,6 +67,13 @@ t[#t+1] = Def.ActorFrame {
|
||||
OnCommand=THEME:GetMetric("Protiming","AverageOnCommand");
|
||||
ResetCommand=cmd(finishtweening;stopeffect;visible,false);
|
||||
};
|
||||
LoadFont("Common Normal") .. {
|
||||
Name="TextDisplay";
|
||||
Text="MS";
|
||||
InitCommand=cmd(visible,false);
|
||||
OnCommand=THEME:GetMetric("Protiming","TextOnCommand");
|
||||
ResetCommand=cmd(finishtweening;stopeffect;visible,false);
|
||||
};
|
||||
Def.Quad {
|
||||
Name="ProtimingGraphBG";
|
||||
InitCommand=cmd(visible,false;y,32;zoomto,192,16);
|
||||
@@ -166,6 +176,9 @@ t[#t+1] = Def.ActorFrame {
|
||||
c.ProtimingAverage:settextf("%.2f%%",clamp(100 - MakeAverage( tTotalJudgments ) * 1000 ,0,100));
|
||||
AverageCmds['Pulse'](c.ProtimingAverage);
|
||||
|
||||
c.TextDisplay:visible( bShowProtiming );
|
||||
TextCmds['Pulse'](c.TextDisplay);
|
||||
|
||||
c.ProtimingGraphBG:visible( bShowProtiming );
|
||||
c.ProtimingGraphUnderlay:visible( bShowProtiming );
|
||||
c.ProtimingGraphWindowW3:visible( bShowProtiming );
|
||||
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -70,6 +70,7 @@ UserPrefGameplayShowStepsDisplay=Show Steps
|
||||
UserPrefShowLotsaOptions=Options Density
|
||||
UserPrefLongFail=Fail Length
|
||||
UserPrefFlashyCombo=Flashy Combo
|
||||
UserPrefGameplayFooter=Gameplay Footer
|
||||
[OptionExplanations]
|
||||
GamePrefAutoSetStyle=Allow the game to list all one player and two player modes at once instead of one style only. This might require a restart of StepMania\n( or alternatively hit F2! )
|
||||
GamePrefNotePosition=Determines where the arrow receptors are placed in gameplay.
|
||||
@@ -82,6 +83,8 @@ UserPrefGameplayShowStepsDisplay=Show or Hide the step information display in ga
|
||||
UserPrefShowLotsaOptions=Choose how many lines/rows of options to choose from. &oq;Few&cq; keeps the list to a minimum. &oq;Many&cq; adds various show-off mods.
|
||||
UserPrefLongFail=Choose between the original sm-ssc fail (Long) or the new sm-ssc fail (Short).
|
||||
UserPrefFlashyCombo=Determine if combo flashes should be shown or not.
|
||||
UserPrefGameplayFooter=If on, displays a footer that blocks visibility of incoming arrows for a certain region ( DDR's score frame ).
|
||||
|
||||
ScoringType=Defines which scoring method to use. If Special is selected, you can select a Special Scoring Mode in Theme Options.
|
||||
|
||||
Speed=Adjust the speed at which arrows travel toward the targets.
|
||||
@@ -155,3 +158,6 @@ Explanation-Exit=Return to the title menu.
|
||||
|
||||
[OptionNames]
|
||||
Custom=Special
|
||||
|
||||
[ScreenTestInput]
|
||||
HelpText=Hold &BACK; or &START; to exit.
|
||||
@@ -10,7 +10,7 @@
|
||||
#BACKGROUND:;
|
||||
#LYRICSPATH:;
|
||||
#CDTITLE:;
|
||||
#MUSIC:ScreenGameplaySyncMachine music.ogg;
|
||||
#MUSIC:_gameplay sync music.ogg;
|
||||
#OFFSET:-0.012;
|
||||
#SAMPLESTART:0.000;
|
||||
#SAMPLELENGTH:12.000;
|
||||
|
||||
@@ -307,6 +307,7 @@ RightOnCommand=horizalign,left;diffuse,PlayerColor(PLAYER_2)
|
||||
[Protiming]
|
||||
ProtimingOnCommand=shadowlength,1;horizalign,right;x,30;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner";
|
||||
AverageOnCommand=shadowlength,1;horizalign,left;x,32;y,8;zoom,0.75;diffuse,ColorLightTone( Color("Green") );strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner";
|
||||
TextOnCommand=shadowlength,1;horizalign,left;x,32;y,-6;zoom,0.5;strokecolor,Color("Outline");skewx,-0.125;textglowmode,"TextGlowMode_Inner";
|
||||
#
|
||||
ProtimingW1Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W1"];sleep,2;linear,0.5;diffuse,Color("Invisible");
|
||||
ProtimingW2Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W2"];sleep,2;linear,0.5;diffuse,Color("Invisible");
|
||||
@@ -315,7 +316,8 @@ ProtimingW4Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("W
|
||||
ProtimingW5Command=finishtweening;diffuse,Color("White");zoom,1.15;glow,Color("White");linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_W5"];sleep,2;linear,0.5;diffuse,Color("Invisible");
|
||||
ProtimingMissCommand=finishtweening;diffusealpha,1;zoom,1.15;glow,GameColor.Judgment["JudgmentLine_Miss"];linear,0.05;zoom,1;glow,Color("Invisible");diffuse,GameColor.Judgment["JudgmentLine_Miss"];sleep,2;linear,0.5;diffuse,Color("Invisible");
|
||||
#
|
||||
AveragePulseCommand=finishtweening;diffusealpha,1;zoom,0.75*1.25;decelerate,0.05;zoom,0.75;sleep,2;linear,0.5;diffusealpha,0;
|
||||
AveragePulseCommand=finishtweening;diffusealpha,1;zoom,0.75*1.025;decelerate,0.05;zoom,0.75;sleep,2;linear,0.5;diffusealpha,0;
|
||||
TextPulseCommand=finishtweening;diffusealpha,1;zoom,0.5*1.025;decelerate,0.05;zoom,0.5;sleep,2;linear,0.5;diffusealpha,0;
|
||||
[Player]
|
||||
# ReceptorArrowsYStandard=GetTapPosition('Standard')
|
||||
# ReceptorArrowsYReverse=GetTapPosition('Reverse')
|
||||
@@ -647,6 +649,7 @@ MeterSetCommand=%function(self,param) \
|
||||
end; \
|
||||
if param.Meter then \
|
||||
if param.Meter >= 10 then \
|
||||
self:textglowmode('TextGlowMode_Inner'); \
|
||||
self:glowshift(); \
|
||||
else \
|
||||
self:stopeffect(); \
|
||||
@@ -824,7 +827,9 @@ ItemsLongRowSharedX=SCREEN_CENTER_X
|
||||
|
||||
[ScreenOptionsTheme]
|
||||
Fallback="ScreenOptionsServiceChild"
|
||||
LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo"
|
||||
NextScreen="ScreenOptionsExtended"
|
||||
PrevScreen="ScreenOptionsExtended"
|
||||
LineNames="gNotePos,gAuto,gScore,gSScore,gSDisp,gOpts,gLongFail,gComboUnderField,FlashyCombo,GameplayFooter"
|
||||
LinegNotePos="lua,GamePrefNotePosition()"
|
||||
LinegScore="lua,UserPrefGameplayShowScore()"
|
||||
LinegSScore="lua,UserPrefSpecialScoringMode()"
|
||||
@@ -834,6 +839,7 @@ LinegAuto="lua,GamePrefAutoSetStyle()"
|
||||
LinegLongFail="lua,UserPrefLongFail()"
|
||||
LinegComboUnderField="lua,GamePrefComboUnderField()"
|
||||
LineFlashyCombo="lua,UserPrefFlashyCombo()"
|
||||
LineGameplayFooter="lua,UserPrefGameplayFooter()"
|
||||
[ScreenOptionsSystemDirection]
|
||||
LineNames="1,2,3,4,5,6,7,8,9,FlashyCombo,RollCombo,10,11,12,13,14,15,16,LF,17,18,19,20,21,22"
|
||||
LineLF="lua,UserPrefLongFail()"
|
||||
@@ -1435,6 +1441,12 @@ StageDisplayY=SCREEN_TOP+24
|
||||
StageDisplayOnCommand=zoom,0.5;
|
||||
StageDisplayOffCommand=bounceend,0.25;zoom,0
|
||||
#
|
||||
ShowScoreFrame=GetUserPrefB("GameplayFooter");
|
||||
ScoreFrameX=SCREEN_CENTER_X
|
||||
ScoreFrameY=SCREEN_BOTTOM+4
|
||||
ScoreFrameOnCommand=vertalign,bottom;zoomtowidth,SCREEN_WIDTH+4;diffuse,color("#ffd400");addy,80;sleep,2;decelerate,0.5;addy,-80;
|
||||
ScoreFrameOffCommand=
|
||||
#
|
||||
LifeP1X=Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX")
|
||||
# LifeP1X=(GAMESTATE:GetCurrentStyle():GetStyleType() == 'StyleType_OnePlayerTwoSides' or (PREFSMAN:GetPreference("Center1Player") and GAMESTATE:GetNumPlayersEnabled() == 1)) and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX")
|
||||
LifeP1Y=SCREEN_TOP+24
|
||||
|
||||
@@ -1,8 +1,62 @@
|
||||
return Def.ActorFrame {
|
||||
local t = Def.ActorFrame {};
|
||||
--
|
||||
--[[ local tGridSizeMajor = { 32, 32 };
|
||||
local tGridSizeMinor = { 16, 16 };
|
||||
local function CreateDebugGrid()
|
||||
local t = Def.ActorFrame {};
|
||||
local numX = math.ceil(SCREEN_WIDTH/tGridSizeMajor[1])
|
||||
local numY = math.ceil(SCREEN_HEIGHT/tGridSizeMajor[2])
|
||||
local offset = ( math.ceil(SCREEN_WIDTH/tGridSizeMajor[1]) - SCREEN_WIDTH ) + SCREEN_WIDTH;
|
||||
for a=1,numY do
|
||||
for b=1,numX do
|
||||
t[#t+1] = Def.Quad {
|
||||
InitCommand=cmd(x,b*tGridSizeMajor[1]-(tGridSizeMajor[1]/2);y,a*tGridSizeMajor[2]-(tGridSizeMajor[2]/2));
|
||||
OnCommand=cmd(zoomto,tGridSizeMajor[1]-2,tGridSizeMajor[2]-2;diffuse,color("1,1,1,0.25"));
|
||||
};
|
||||
end;
|
||||
end;
|
||||
return t
|
||||
end --]]
|
||||
|
||||
--
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y);
|
||||
|
||||
Def.Quad {
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,SCREEN_HEIGHT);
|
||||
OnCommand=cmd(diffuse,color("0.25,0.15,0.25,1"));
|
||||
LoadActor("VOL1-29-NTSC") .. {
|
||||
InitCommand=cmd(scaletoclipped,SCREEN_WIDTH,SCREEN_HEIGHT);
|
||||
OnCommand=cmd(diffusealpha,0.75);
|
||||
};
|
||||
};
|
||||
};
|
||||
--
|
||||
local bShow = 0;
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
InitCommand=cmd(visible,false);
|
||||
ToggleConsoleDisplayMessageCommand=function(self)
|
||||
bShow = 1 - bShow;
|
||||
self:visible( bShow == 1 );
|
||||
end;
|
||||
-- Grid
|
||||
LoadActor("_32") .. {
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;customtexturerect,0,0,SCREEN_WIDTH/32,SCREEN_HEIGHT/32);
|
||||
OnCommand=cmd(diffuse,color("0,0,0,0.5"));
|
||||
};
|
||||
LoadActor("_16") .. {
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;customtexturerect,0,0,SCREEN_WIDTH/16,SCREEN_HEIGHT/16);
|
||||
OnCommand=cmd(diffuse,color("1,1,1,0.125"));
|
||||
};
|
||||
--[[ LoadActor("_8") .. {
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;customtexturerect,0,0,SCREEN_WIDTH/8,SCREEN_HEIGHT/8);
|
||||
OnCommand=cmd(diffuse,color("#00BFE833"));
|
||||
}; --]]
|
||||
-- Left
|
||||
Def.Quad {
|
||||
InitCommand=cmd(horizalign,left;x,SCREEN_LEFT;y,SCREEN_CENTER_Y;zoomto,16,SCREEN_HEIGHT);
|
||||
OnCommand=cmd(diffuse,color("0,0,0,0.5"));
|
||||
};
|
||||
-- Right
|
||||
Def.Quad {
|
||||
InitCommand=cmd(horizalign,right;x,SCREEN_RIGHT;y,SCREEN_CENTER_Y;zoomto,16,SCREEN_HEIGHT);
|
||||
OnCommand=cmd(diffuse,color("0,0,0,0.5"));
|
||||
};
|
||||
};
|
||||
--
|
||||
return t
|
||||
@@ -2,8 +2,6 @@
|
||||
-- I prefer to keep these optional, incase another screen wants to hide
|
||||
-- these elements.
|
||||
local t = Def.ActorFrame {};
|
||||
|
||||
t[#t+1] = StandardDecorationFromFileOptional("Header","Header");
|
||||
t[#t+1] = StandardDecorationFromFileOptional("Footer","Footer");
|
||||
|
||||
return t
|
||||
@@ -4,10 +4,8 @@ local t = Def.ActorFrame {};
|
||||
|
||||
t[#t+1] = LoadFont("Common Normal") .. {
|
||||
Text=gc:GetText();
|
||||
InitCommand=THEME:GetMetric(Var "LoadingScreen","ScrollerItemInitCommand");
|
||||
GainFocusCommand=THEME:GetMetric(Var "LoadingScreen","ScrollerItemGainFocusCommand");
|
||||
LoseFocusCommand=THEME:GetMetric(Var "LoadingScreen","ScrollerItemGainFocusCommand");
|
||||
};
|
||||
|
||||
|
||||
t.GainFocusCommand=cmd(diffusealpha,1);
|
||||
t.LoseFocusCommand=cmd(diffusealpha,0.5);
|
||||
return t;
|
||||
@@ -1,3 +0,0 @@
|
||||
return Def.Quad {
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,32);
|
||||
};
|
||||
@@ -1,3 +0,0 @@
|
||||
return Def.Quad {
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,48);
|
||||
};
|
||||
@@ -1,59 +1,37 @@
|
||||
[Global]
|
||||
FallbackTheme=_fallback
|
||||
|
||||
[CustomScoring]
|
||||
ComboAboveThresholdAddsToScoreBonus=0
|
||||
ComboScoreBonusThreshold=50
|
||||
ComboScoreBonusValue=+1000
|
||||
|
||||
ComboMultiplier=0.0
|
||||
|
||||
DoubleNoteScoreMultiplier=2.0
|
||||
TripleNoteScoreMultiplier=3.0
|
||||
QuadOrHigherNoteScoreMultiplier=4.0
|
||||
|
||||
PointsW1=+50
|
||||
PointsW2=+20
|
||||
PointsW3=+10
|
||||
PointsW4=+5
|
||||
PointsW5=0
|
||||
PointsMiss=-5
|
||||
PointsHitMine=-5
|
||||
PointsCheckpointHit=+5
|
||||
PointsCheckpointMiss=-5
|
||||
PointsNone=0
|
||||
PointsHoldHeld=+5
|
||||
PointsHoldLetGo=-5
|
||||
|
||||
[ScreenWithMenuElements]
|
||||
WaitForChildrenBeforeTweeningOut=true
|
||||
|
||||
ShowHeader=true
|
||||
HeaderX=SCREEN_CENTER_X
|
||||
HeaderY=SCREEN_TOP
|
||||
HeaderOnCommand=vertalign,top;diffuse,color("0.5,0.25,0.35,1");
|
||||
HeaderOnCommand=
|
||||
HeaderOffCommand=
|
||||
|
||||
#
|
||||
ShowFooter=true
|
||||
FooterX=SCREEN_CENTER_X
|
||||
FooterY=SCREEN_BOTTOM
|
||||
FooterOnCommand=vertalign,bottom;diffuse,color("0.5,0.25,0.35,1");
|
||||
FooterOnCommand=
|
||||
FooterOffCommand=
|
||||
#
|
||||
TimerX=SCREEN_WIDTH-64
|
||||
TimerY=SCREEN_TOP+48-4.5
|
||||
TimerOnCommand=
|
||||
TimerOffCommand=
|
||||
[MenuTimer]
|
||||
# Text
|
||||
Text1OnCommand=stopeffect;stoptweening;vertalign,bottom;horizalign,right
|
||||
Text1FormatFunction=function(fSeconds) \
|
||||
return string.format("%0.1f", fSeconds); \
|
||||
end
|
||||
FrameOnCommand=
|
||||
# Warning
|
||||
Warning10Command=diffuseshift;effectperiod,1;effectcolor2,Color("Red");effectcolor1,color("0.5,0,0,1");
|
||||
[ScreenTitleMenu]
|
||||
ScrollerY=SCREEN_CENTER_Y*1.5
|
||||
ScrollerOnCommand=
|
||||
# New: Load ScrollerItem SpacingX/Y
|
||||
ScrollerTransform=function(self,offset,itemIndex,numItems) \
|
||||
local fSpaceX = THEME:GetMetric( Var "LoadingScreen","ScrollerItemSpacingX"); \
|
||||
local fSpaceY = THEME:GetMetric( Var "LoadingScreen","ScrollerItemSpacingY"); \
|
||||
self:x( (i-1) * fSpaceX ); \
|
||||
self:y( (i-1) * fSpaceY ); \
|
||||
end;
|
||||
# New: Adjust menu items
|
||||
ScrollerItemSpacingX=0
|
||||
ScrollerItemSpacingY=24
|
||||
ScrollerItemInitCommand=zoom,1;shadowlength,1
|
||||
ScrollerItemGainFocusCommand=finishtweening;linear,0.125;zoom,1.25
|
||||
ScrollerItemLoseFocusCommand=finishtweening;linear,0.125;zoom,1
|
||||
ShowHeader=true
|
||||
ShowFooter=true
|
||||
[ScreenSelectMusic]
|
||||
|
||||
MusicWheelX=SCREEN_RIGHT-128-18
|
||||
MusicWheelOnCommand=draworder,-1
|
||||
[MusicWheel]
|
||||
ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:x( (1-math.cos(offsetFromCenter/math.pi))*0 ); self:y( offsetFromCenter*48 ); end
|
||||
NumWheelItems=13
|
||||
@@ -27,7 +27,7 @@ success () {
|
||||
echo okay.
|
||||
fi
|
||||
if [ $notify -gt 0 ]; then
|
||||
notify send "sm-ssc build script" "$msg...okay."
|
||||
notify-send "sm-ssc build script" "$msg...okay."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>smzip</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>smicon.icns</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>application/zip</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>SMZip</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>LSTypeIsPackage</key>
|
||||
<false/>
|
||||
<key>NSPersistentStoreTypeKey</key>
|
||||
<string>Binary</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>EXECUTABLE_NAME</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>PRODUCT_FAMILY_BARE PRODUCT_VER_BARE</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>smicon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.PRODUCT_ID_BARE</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>PRODUCT_FAMILY_BARE</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>PRODUCT_VER_BARE</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>Step</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>PRODUCT_VER_BARE</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.4.10</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 2001-2010</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>SMApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>smzip</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>smicon.icns</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>application/zip</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>SMZip</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>LSTypeIsPackage</key>
|
||||
<false/>
|
||||
<key>NSPersistentStoreTypeKey</key>
|
||||
<string>Binary</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>EXECUTABLE_NAME</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>PRODUCT_FAMILY_BARE PRODUCT_VER_BARE</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>smicon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.PRODUCT_ID_BARE</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>PRODUCT_FAMILY_BARE</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>PRODUCT_VER_BARE</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>Step</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>PRODUCT_VER_BARE</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.4.10</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 2001-2011</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>SMApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -7099,7 +7099,7 @@
|
||||
GCC_DYNAMIC_NO_PIC = YES;
|
||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||
GCC_ENABLE_SYMBOL_SEPARATION = NO;
|
||||
GCC_FAST_MATH = YES;
|
||||
GCC_FAST_MATH = NO;
|
||||
GCC_FAST_OBJC_DISPATCH = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
@@ -7112,16 +7112,20 @@
|
||||
GCC_UNROLL_LOOPS = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_MISSING_PARENTHESES = YES;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_SHADOW = NO;
|
||||
GCC_WARN_PROTOTYPE_CONVERSION = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = NO;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
@@ -7632,7 +7636,7 @@
|
||||
GCC_DYNAMIC_NO_PIC = YES;
|
||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||
GCC_ENABLE_SYMBOL_SEPARATION = NO;
|
||||
GCC_FAST_MATH = YES;
|
||||
GCC_FAST_MATH = NO;
|
||||
GCC_FAST_OBJC_DISPATCH = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
@@ -7644,16 +7648,20 @@
|
||||
GCC_UNROLL_LOOPS = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_MISSING_PARENTHESES = YES;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_SHADOW = NO;
|
||||
GCC_WARN_PROTOTYPE_CONVERSION = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
@@ -7963,7 +7971,7 @@
|
||||
GCC_DYNAMIC_NO_PIC = YES;
|
||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||
GCC_ENABLE_SYMBOL_SEPARATION = NO;
|
||||
GCC_FAST_MATH = YES;
|
||||
GCC_FAST_MATH = NO;
|
||||
GCC_FAST_OBJC_DISPATCH = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
@@ -7975,16 +7983,20 @@
|
||||
GCC_UNROLL_LOOPS = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_MISSING_PARENTHESES = YES;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_SHADOW = NO;
|
||||
GCC_WARN_PROTOTYPE_CONVERSION = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
@@ -8088,7 +8100,7 @@
|
||||
GCC_DYNAMIC_NO_PIC = YES;
|
||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||
GCC_ENABLE_SYMBOL_SEPARATION = NO;
|
||||
GCC_FAST_MATH = YES;
|
||||
GCC_FAST_MATH = NO;
|
||||
GCC_FAST_OBJC_DISPATCH = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
@@ -8100,16 +8112,20 @@
|
||||
GCC_UNROLL_LOOPS = YES;
|
||||
GCC_VERSION = 4.0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_MISSING_PARENTHESES = YES;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_SHADOW = NO;
|
||||
GCC_WARN_PROTOTYPE_CONVERSION = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
|
||||
@@ -40,12 +40,23 @@
|
||||
CRCCheck off
|
||||
!endif
|
||||
|
||||
; don't forget to change this before releasing a new verson.
|
||||
; wish this could be automated, but it requires "X.Y.Z.a" format. -aj
|
||||
VIProductVersion "1.2.3.0"
|
||||
VIAddVersionKey "ProductName" "${PRODUCT_ID}"
|
||||
VIAddVersionKey "FileVersion" "${PRODUCT_VER}"
|
||||
VIAddVersionKey "FileDescription" "${PRODUCT_ID} Installer"
|
||||
|
||||
AutoCloseWindow true ; (can be true for the window go away automatically at end)
|
||||
; ShowInstDetails hide ; (can be show to have them shown, or nevershow to disable)
|
||||
SetDateSave on ; (can be on to have files restored to their orginal date)
|
||||
; may not be the best idea for vista/7? -aj
|
||||
|
||||
; I think it may need actual admin privs for writing to the registry... -aj
|
||||
; RequestExecutionLevel user
|
||||
; this folder may not be the best idea for Windows Vista/7. -aj
|
||||
InstallDir "$PROGRAMFILES\${PRODUCT_ID}"
|
||||
InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${PRODUCT_ID}" ""
|
||||
|
||||
; DirShow show ; (make this hide to not let the user change it)
|
||||
DirText "${PRODUCT_DISPLAY}"
|
||||
InstallColors /windows
|
||||
@@ -464,7 +475,7 @@ Section "Main Section" SecMain
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_OPEN_PROGRAM_FOLDER).lnk" "$WINDIR\explorer.exe" "$INSTDIR\"
|
||||
!endif
|
||||
!ifdef MAKE_OPEN_SETTINGS_FOLDER_SHORTCUT
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_OPEN_SETTINGS_FOLDER).lnk" "$WINDIR\explorer.exe" "%APPDATA%\${PRODUCT_ID}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_OPEN_SETTINGS_FOLDER).lnk" "$WINDIR\explorer.exe" "$APPDATA\${PRODUCT_ID}"
|
||||
!endif
|
||||
|
||||
;CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_VIEW_STATISTICS).lnk" "$INSTDIR\Program\tools.exe" "--machine-profile-stats"
|
||||
@@ -472,6 +483,7 @@ Section "Main Section" SecMain
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_MANUAL).lnk" "$INSTDIR\Manual\index.html"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_UNINSTALL).lnk" "$INSTDIR\uninstall.exe"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_WEB_SITE).lnk" "${PRODUCT_URL}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_TEXTURE_FONT_GENERATOR).lnk" '"$INSTDIR\Program\Texture Font Generator.exe"'
|
||||
!ifdef MAKE_UPDATES_SHORTCUT
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_ID}\$(TEXT_IO_CHECK_FOR_UPDATES).lnk" "${UPDATES_URL}"
|
||||
!endif
|
||||
|
||||
@@ -528,9 +528,10 @@ public:
|
||||
}
|
||||
static int SortByDrawOrder( T* p, lua_State *L ) { p->SortByDrawOrder(); return 0; }
|
||||
|
||||
//static int CustomLighting( T* p, lua_State *L ) { p->SetCustomLighting(BArg(1)); return 0; }
|
||||
static int SetAmbientLightColor( T* p, lua_State *L ) { RageColor c; c.FromStackCompat( L, 1 ); p->SetAmbientLightColor( c ); return 0; }
|
||||
static int SetDiffuseLightColor( T* p, lua_State *L ) { RageColor c; c.FromStackCompat( L, 1 ); p->SetDiffuseLightColor( c ); return 0; }
|
||||
static int SetSpecularLightColor( T* p, lua_State *L ) { RageColor c; c.FromStackCompat( L, 1 ); p->SetSpecularLightColor( c ); return 0; }
|
||||
static int SetSpecularLightColor( T* p, lua_State *L ) { RageColor c; c.FromStackCompat( L, 1 ); p->SetSpecularLightColor( c ); return 0; }
|
||||
static int SetLightDirection( T* p, lua_State *L )
|
||||
{
|
||||
luaL_checktype( L, 1, LUA_TTABLE );
|
||||
@@ -546,6 +547,7 @@ public:
|
||||
p->SetLightDirection( vTmp );
|
||||
return 0;
|
||||
}
|
||||
|
||||
// xxx: these might not be good ideas... -aj
|
||||
/*
|
||||
static int AddChild( T* p, lua_State *L )
|
||||
@@ -585,6 +587,7 @@ public:
|
||||
ADD_METHOD( GetDrawFunction );
|
||||
ADD_METHOD( SetUpdateFunction );
|
||||
ADD_METHOD( SortByDrawOrder );
|
||||
//ADD_METHOD( CustomLighting );
|
||||
ADD_METHOD( SetAmbientLightColor );
|
||||
ADD_METHOD( SetDiffuseLightColor );
|
||||
ADD_METHOD( SetSpecularLightColor );
|
||||
|
||||
@@ -81,6 +81,7 @@ public:
|
||||
void SetFOV( float fFOV ) { m_fFOV = fFOV; }
|
||||
void SetVanishPoint( float fX, float fY) { m_fVanishX = fX; m_fVanishY = fY; }
|
||||
|
||||
void SetCustomLighting( bool bCustomLighting ) { m_bOverrideLighting = bCustomLighting; }
|
||||
void SetAmbientLightColor( RageColor c ) { m_ambientColor = c; }
|
||||
void SetDiffuseLightColor( RageColor c ) { m_diffuseColor = c; }
|
||||
void SetSpecularLightColor( RageColor c ) { m_specularColor = c; }
|
||||
|
||||
@@ -33,6 +33,7 @@ public:
|
||||
static void GetSyncChangeTextGlobal( vector<RString> &vsAddTo );
|
||||
static void GetSyncChangeTextSong( vector<RString> &vsAddTo );
|
||||
|
||||
/** @brief The minimum number of steps to hit for syncing purposes. */
|
||||
static const int OFFSET_SAMPLE_COUNT = 56;
|
||||
|
||||
static float s_fAutosyncOffset[OFFSET_SAMPLE_COUNT];
|
||||
|
||||
@@ -445,7 +445,7 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float
|
||||
{
|
||||
// find the middle, and split based on iColNum
|
||||
// it's unknown if this will work for routine.
|
||||
const int iMiddleColumn = floor(pStyle->m_iColsPerPlayer/2.0f);
|
||||
const int iMiddleColumn = static_cast<int>(floor(pStyle->m_iColsPerPlayer/2.0f));
|
||||
if( iColNum > iMiddleColumn-1 )
|
||||
fPixelOffsetFromCenter += fEffects[PlayerOptions::EFFECT_XMODE]*-(fYOffset);
|
||||
else
|
||||
|
||||
@@ -34,8 +34,8 @@ void Attack::GetRealtimeAttackBeats( const Song *pSong, const PlayerState* pPlay
|
||||
fStartBeat = min( GAMESTATE->m_fSongBeat+8, pPlayerState->m_fLastDrawnBeat );
|
||||
fStartBeat = truncf(fStartBeat)+1;
|
||||
|
||||
const float fStartSecond = pSong->GetElapsedTimeFromBeat( fStartBeat );
|
||||
const float fEndSecond = fStartSecond + fSecsRemaining;
|
||||
const float lStartSecond = pSong->GetElapsedTimeFromBeat( fStartBeat );
|
||||
const float fEndSecond = lStartSecond + fSecsRemaining;
|
||||
fEndBeat = pSong->GetBeatFromElapsedTime( fEndSecond );
|
||||
fEndBeat = truncf(fEndBeat)+1;
|
||||
|
||||
|
||||
@@ -32,7 +32,10 @@ struct Attack
|
||||
bGlobal = false;
|
||||
bShowInAttackList = true;
|
||||
}
|
||||
Attack() { MakeBlank(); }
|
||||
Attack(): level(ATTACK_LEVEL_1), fStartSecond(-1),
|
||||
fSecsRemaining(0), sModifiers(RString()),
|
||||
bOn(false), bGlobal(false), bShowInAttackList(true)
|
||||
{} // MakeBlank() is effectively called here.
|
||||
Attack(
|
||||
AttackLevel level_,
|
||||
float fStartSecond_,
|
||||
@@ -40,16 +43,11 @@ struct Attack
|
||||
RString sModifiers_,
|
||||
bool bOn_,
|
||||
bool bGlobal_,
|
||||
bool bShowInAttackList_ = true )
|
||||
{
|
||||
level = level_;
|
||||
fStartSecond = fStartSecond_;
|
||||
fSecsRemaining = fSecsRemaining_;
|
||||
sModifiers = sModifiers_;
|
||||
bOn = bOn_;
|
||||
bGlobal = bGlobal_;
|
||||
bShowInAttackList = bShowInAttackList_;
|
||||
}
|
||||
bool bShowInAttackList_ = true ):
|
||||
level(level_), fStartSecond(fStartSecond_),
|
||||
fSecsRemaining(fSecsRemaining_), sModifiers(sModifiers_),
|
||||
bOn(bOn_), bGlobal(bGlobal_),
|
||||
bShowInAttackList(bShowInAttackList_) {}
|
||||
|
||||
void GetAttackBeats( const Song *pSong, float &fStartBeat, float &fEndBeat ) const;
|
||||
void GetRealtimeAttackBeats( const Song *pSong, const PlayerState* pPlayerState, float &fStartBeat, float &fEndBeat ) const;
|
||||
|
||||
@@ -80,11 +80,11 @@ void AutoKeysounds::LoadAutoplaySoundsInto( RageSoundReader_Chain *pChain )
|
||||
bool bSoundIsGlobal = true;
|
||||
{
|
||||
PlayerNumber pn = GetNextEnabledPlayer((PlayerNumber)-1);
|
||||
const TapNote &t = tn[pn];
|
||||
const TapNote &tap = tn[pn];
|
||||
pn = GetNextEnabledPlayer(pn);
|
||||
while( pn != PLAYER_INVALID )
|
||||
{
|
||||
if( tn[pn].type != TapNote::autoKeysound || tn[pn].iKeysoundIndex != t.iKeysoundIndex )
|
||||
if( tn[pn].type != TapNote::autoKeysound || tn[pn].iKeysoundIndex != tap.iKeysoundIndex )
|
||||
bSoundIsGlobal = false;
|
||||
pn = GetNextEnabledPlayer(pn);
|
||||
}
|
||||
|
||||
@@ -77,9 +77,9 @@ void BGAnimation::AddLayersFromAniDir( const RString &_sAniDir, const XNode *pNo
|
||||
else
|
||||
{
|
||||
// import as a single layer
|
||||
BGAnimationLayer* pLayer = new BGAnimationLayer;
|
||||
pLayer->LoadFromNode( pKey );
|
||||
this->AddChild( pLayer );
|
||||
BGAnimationLayer* bgLayer = new BGAnimationLayer;
|
||||
bgLayer->LoadFromNode( pKey );
|
||||
this->AddChild( bgLayer );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -746,9 +746,9 @@ void BackgroundImpl::Layer::UpdateCurBGChange( const Song *pSong, float fLastMus
|
||||
|
||||
if( !change.m_sTransition.empty() )
|
||||
{
|
||||
map<RString,BackgroundTransition>::const_iterator iter = mapNameToTransition.find( change.m_sTransition );
|
||||
ASSERT( iter != mapNameToTransition.end() );
|
||||
const BackgroundTransition &bt = iter->second;
|
||||
map<RString,BackgroundTransition>::const_iterator lIter = mapNameToTransition.find( change.m_sTransition );
|
||||
ASSERT( lIter != mapNameToTransition.end() );
|
||||
const BackgroundTransition &bt = lIter->second;
|
||||
m_pFadingBGA->RunCommandsOnLeaves( *bt.cmdLeaves );
|
||||
m_pFadingBGA->RunCommands( *bt.cmdRoot );
|
||||
}
|
||||
|
||||
@@ -250,9 +250,11 @@ void BeginnerHelper::DrawPrimitives()
|
||||
m_sStepCircle[scd][scde].Draw();
|
||||
|
||||
if( DrawCelShaded )
|
||||
{
|
||||
FOREACH_PlayerNumber( pn ) // Draw each dancer
|
||||
if( GAMESTATE->IsHumanPlayer(pn) )
|
||||
m_pDancer[pn]->DrawCelShaded();
|
||||
}
|
||||
else
|
||||
{
|
||||
DISPLAY->SetLighting( true );
|
||||
|
||||
@@ -328,9 +328,6 @@ void BitmapText::DrawChars( bool bUseStrokeTexture )
|
||||
}
|
||||
}
|
||||
|
||||
vector<RageSpriteVertex*> vertices;
|
||||
int iNumVertsToDraw = 0;
|
||||
|
||||
for( int start = iStartGlyph; start < iEndGlyph; )
|
||||
{
|
||||
int end = start;
|
||||
@@ -346,21 +343,19 @@ void BitmapText::DrawChars( bool bUseStrokeTexture )
|
||||
else
|
||||
DISPLAY->SetTexture( TextureUnit_1, m_vpFontPageTextures[start]->m_pTextureMain->GetTexHandle() );
|
||||
|
||||
/* Don't bother setting texture render states for text. We never go outside of 0..1. */
|
||||
// Don't bother setting texture render states for text. We never go outside of 0..1.
|
||||
/* We should call SetTextureRenderStates because it does more than just setting
|
||||
* the texture wrapping state. If setting the wrapping state is found to be slow,
|
||||
* there should probably be a "don't care" texture wrapping mode set in Actor. -Chris */
|
||||
Actor::SetTextureRenderStates();
|
||||
|
||||
RageSpriteVertex &start_vertex = m_aVertices[start*4];
|
||||
vertices.push_back(&start_vertex);
|
||||
iNumVertsToDraw += (end-start)*4;
|
||||
|
||||
// This is SLOW. We need to do something else about this. -Colby
|
||||
//Actor::SetTextureRenderStates();
|
||||
|
||||
DISPLAY->DrawQuads( &m_aVertices[start*4], (end-start)*4);
|
||||
}
|
||||
|
||||
start = end;
|
||||
}
|
||||
if (!vertices.empty())
|
||||
DISPLAY->DrawQuads( vertices[0], iNumVertsToDraw );
|
||||
}
|
||||
|
||||
/* sText is UTF-8. If not all of the characters in sText are available in the
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
#include "RageTextureID.h"
|
||||
#include "ActorUtil.h"
|
||||
|
||||
Character::Character()
|
||||
{
|
||||
m_iPreloadRefcount = 0;
|
||||
}
|
||||
Character::Character(): m_sCharDir(""), m_sCharacterID(""),
|
||||
m_sDisplayName(""), m_sCardPath(""), m_sIconPath(""),
|
||||
m_bUsableInRave(false), m_iPreloadRefcount(0) {}
|
||||
|
||||
bool Character::Load( RString sCharDir )
|
||||
{
|
||||
|
||||
@@ -85,47 +85,7 @@ int CourseEntry::GetNumModChanges() const
|
||||
return iNumModChanges;
|
||||
}
|
||||
|
||||
// lua start
|
||||
#include "LuaBinding.h"
|
||||
|
||||
/** @brief Allow Lua to have access to the CourseEntry. */
|
||||
class LunaCourseEntry: public Luna<CourseEntry>
|
||||
{
|
||||
public:
|
||||
static int GetSong( T* p, lua_State *L )
|
||||
{
|
||||
if( p->songID.ToSong() )
|
||||
p->songID.ToSong()->PushSelf(L);
|
||||
else
|
||||
lua_pushnil(L);
|
||||
return 1;
|
||||
}
|
||||
DEFINE_METHOD( IsSecret, bSecret );
|
||||
DEFINE_METHOD( IsFixedSong, IsFixedSong() );
|
||||
DEFINE_METHOD( GetGainSeconds, fGainSeconds );
|
||||
DEFINE_METHOD( GetGainLives, iGainLives );
|
||||
DEFINE_METHOD( GetNormalModifiers, sModifiers );
|
||||
// GetTimedModifiers - table
|
||||
DEFINE_METHOD( GetNumModChanges, GetNumModChanges() );
|
||||
DEFINE_METHOD( GetTextDescription, GetTextDescription() );
|
||||
|
||||
LunaCourseEntry()
|
||||
{
|
||||
ADD_METHOD( GetSong );
|
||||
// sm-ssc additions:
|
||||
ADD_METHOD( IsSecret );
|
||||
ADD_METHOD( IsFixedSong );
|
||||
ADD_METHOD( GetGainSeconds );
|
||||
ADD_METHOD( GetGainLives );
|
||||
ADD_METHOD( GetNormalModifiers );
|
||||
//ADD_METHOD( GetTimedModifiers );
|
||||
ADD_METHOD( GetNumModChanges );
|
||||
ADD_METHOD( GetTextDescription );
|
||||
}
|
||||
};
|
||||
|
||||
LUA_REGISTER_CLASS( CourseEntry )
|
||||
// lua end
|
||||
|
||||
|
||||
Course::Course()
|
||||
@@ -559,8 +519,8 @@ bool Course::GetTrailUnsorted( StepsType st, CourseDifficulty cd, Trail &trail )
|
||||
if( e->iChooseIndex < int(vSongAndSteps.size()) )
|
||||
{
|
||||
resolved.pSong = vpSongs[e->iChooseIndex];
|
||||
const vector<Steps*> &vpSongs = mapSongToSteps[resolved.pSong];
|
||||
resolved.pSteps = vpSongs[ RandomInt(vpSongs.size()) ];
|
||||
const vector<Steps*> &mappedSongs = mapSongToSteps[resolved.pSong];
|
||||
resolved.pSteps = mappedSongs[ RandomInt(mappedSongs.size()) ];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -970,8 +930,8 @@ const CourseEntry *Course::FindFixedSong( const Song *pSong ) const
|
||||
FOREACH_CONST( CourseEntry, m_vEntries, e )
|
||||
{
|
||||
const CourseEntry &entry = *e;
|
||||
Song *pSong = entry.songID.ToSong();
|
||||
if( pSong == pSong )
|
||||
Song *lSong = entry.songID.ToSong();
|
||||
if( pSong == lSong )
|
||||
return &entry;
|
||||
}
|
||||
|
||||
@@ -1042,10 +1002,49 @@ bool Course::Matches( RString sGroup, RString sCourse ) const
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// lua start
|
||||
#include "LuaBinding.h"
|
||||
|
||||
/** @brief Allow Lua to have access to the CourseEntry. */
|
||||
class LunaCourseEntry: public Luna<CourseEntry>
|
||||
{
|
||||
public:
|
||||
static int GetSong( T* p, lua_State *L )
|
||||
{
|
||||
if( p->songID.ToSong() )
|
||||
p->songID.ToSong()->PushSelf(L);
|
||||
else
|
||||
lua_pushnil(L);
|
||||
return 1;
|
||||
}
|
||||
DEFINE_METHOD( IsSecret, bSecret );
|
||||
DEFINE_METHOD( IsFixedSong, IsFixedSong() );
|
||||
DEFINE_METHOD( GetGainSeconds, fGainSeconds );
|
||||
DEFINE_METHOD( GetGainLives, iGainLives );
|
||||
DEFINE_METHOD( GetNormalModifiers, sModifiers );
|
||||
// GetTimedModifiers - table
|
||||
DEFINE_METHOD( GetNumModChanges, GetNumModChanges() );
|
||||
DEFINE_METHOD( GetTextDescription, GetTextDescription() );
|
||||
|
||||
LunaCourseEntry()
|
||||
{
|
||||
ADD_METHOD( GetSong );
|
||||
// sm-ssc additions:
|
||||
ADD_METHOD( IsSecret );
|
||||
ADD_METHOD( IsFixedSong );
|
||||
ADD_METHOD( GetGainSeconds );
|
||||
ADD_METHOD( GetGainLives );
|
||||
ADD_METHOD( GetNormalModifiers );
|
||||
//ADD_METHOD( GetTimedModifiers );
|
||||
ADD_METHOD( GetNumModChanges );
|
||||
ADD_METHOD( GetTextDescription );
|
||||
}
|
||||
};
|
||||
|
||||
LUA_REGISTER_CLASS( CourseEntry )
|
||||
|
||||
// Not done with lua yet: still another class.
|
||||
|
||||
/** @brief Allow Lua to have access to the Course. */
|
||||
class LunaCourse: public Luna<Course>
|
||||
{
|
||||
|
||||
@@ -55,18 +55,9 @@ public:
|
||||
float fGainSeconds; // time gained back at the beginning of the song. LifeMeterTime only.
|
||||
int iGainLives; // lives gained back at the beginning of the next song
|
||||
|
||||
CourseEntry()
|
||||
{
|
||||
bSecret = false;
|
||||
bNoDifficult = false;
|
||||
|
||||
songSort = SongSort_Randomize;
|
||||
iChooseIndex = 0;
|
||||
|
||||
sModifiers = "";
|
||||
fGainSeconds = 0;
|
||||
iGainLives = -1;
|
||||
}
|
||||
CourseEntry(): bSecret(false), bNoDifficult(false),
|
||||
songSort(SongSort_Randomize), iChooseIndex(0),
|
||||
sModifiers(RString("")), fGainSeconds(0), iGainLives(-1) {}
|
||||
|
||||
bool IsFixedSong() const { return songID.IsValid(); }
|
||||
|
||||
|
||||
@@ -464,7 +464,7 @@ void EditCourseUtil::PrepareForPlay()
|
||||
|
||||
PROFILEMAN->GetProfile(ProfileSlot_Player1)->m_GoalType = GoalType_Time;
|
||||
Course *pCourse = GAMESTATE->m_pCurCourse;
|
||||
PROFILEMAN->GetProfile(ProfileSlot_Player1)->m_iGoalSeconds = pCourse->m_fGoalSeconds;
|
||||
PROFILEMAN->GetProfile(ProfileSlot_Player1)->m_iGoalSeconds = static_cast<int>(pCourse->m_fGoalSeconds);
|
||||
}
|
||||
|
||||
void EditCourseUtil::GetAllEditCourses( vector<Course*> &vpCoursesOut )
|
||||
|
||||
@@ -11,10 +11,9 @@
|
||||
#include "FontCharAliases.h"
|
||||
#include "arch/Dialog/Dialog.h"
|
||||
|
||||
FontPage::FontPage()
|
||||
{
|
||||
m_iDrawExtraPixelsLeft = m_iDrawExtraPixelsRight = 0;
|
||||
}
|
||||
FontPage::FontPage(): m_iHeight(0), m_iLineSpacing(0), m_fVshift(0),
|
||||
m_iDrawExtraPixelsLeft(0), m_iDrawExtraPixelsRight(0),
|
||||
m_sTexturePath("") {}
|
||||
|
||||
void FontPage::Load( const FontPageSettings &cfg )
|
||||
{
|
||||
@@ -311,15 +310,15 @@ const glyph &Font::GetGlyph( wchar_t c ) const
|
||||
|
||||
bool Font::FontCompleteForString( const wstring &str ) const
|
||||
{
|
||||
map<wchar_t,glyph*>::const_iterator m_pDefault = m_iCharToGlyph.find( FONT_DEFAULT_GLYPH );
|
||||
if( m_pDefault == m_iCharToGlyph.end() )
|
||||
map<wchar_t,glyph*>::const_iterator mapDefault = m_iCharToGlyph.find( FONT_DEFAULT_GLYPH );
|
||||
if( mapDefault == m_iCharToGlyph.end() )
|
||||
RageException::Throw( "The default glyph is missing from the font \"%s\".", path.c_str() );
|
||||
|
||||
for( unsigned i = 0; i < str.size(); ++i )
|
||||
{
|
||||
// If the glyph for this character is the default glyph, we're incomplete.
|
||||
const glyph &g = GetGlyph( str[i] );
|
||||
if( &g == m_pDefault->second )
|
||||
if( &g == mapDefault->second )
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -718,8 +717,8 @@ void Font::Load( const RString &sIniPath, RString sChars )
|
||||
|
||||
for(unsigned i = 0; i < ImportList.size(); ++i)
|
||||
{
|
||||
RString path = THEME->GetPathF( "", ImportList[i], true );
|
||||
if( path == "" )
|
||||
RString fPath = THEME->GetPathF( "", ImportList[i], true );
|
||||
if( fPath == "" )
|
||||
{
|
||||
RString s = ssprintf( "Font \"%s\" imports a font \"%s\" that doesn't exist", sIniPath.c_str(), ImportList[i].c_str() );
|
||||
Dialog::OK( s );
|
||||
@@ -727,7 +726,7 @@ void Font::Load( const RString &sIniPath, RString sChars )
|
||||
}
|
||||
|
||||
Font subfont;
|
||||
subfont.Load(path,"");
|
||||
subfont.Load(fPath,"");
|
||||
MergeFont(subfont);
|
||||
//FONT->UnloadFont(subfont);
|
||||
}
|
||||
|
||||
@@ -204,6 +204,9 @@ private:
|
||||
void LoadFontPageSettings( FontPageSettings &cfg, IniFile &ini, const RString &sTexturePath, const RString &PageName, RString sChars );
|
||||
static void GetFontPaths( const RString &sFontOrTextureFilePath, vector<RString> &sTexturePaths );
|
||||
RString GetPageNameFromFileName( const RString &sFilename );
|
||||
|
||||
Font(const Font& rhs);
|
||||
Font& operator=(const Font& rhs);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -76,23 +76,23 @@ void Foreground::Update( float fDeltaTime )
|
||||
|
||||
/* Update the actor even if we're about to hide it, so queued commands
|
||||
* are always run. */
|
||||
float fDeltaTime;
|
||||
float lDeltaTime;
|
||||
if( !bga.m_bga->GetVisible() )
|
||||
{
|
||||
bga.m_bga->SetVisible( true );
|
||||
|
||||
const float fStartSecond = m_pSong->m_Timing.GetElapsedTimeFromBeat( bga.m_fStartBeat );
|
||||
fDeltaTime = GAMESTATE->m_fMusicSeconds - fStartSecond;
|
||||
lDeltaTime = GAMESTATE->m_fMusicSeconds - fStartSecond;
|
||||
}
|
||||
else
|
||||
{
|
||||
fDeltaTime = GAMESTATE->m_fMusicSeconds - m_fLastMusicSeconds;
|
||||
lDeltaTime = GAMESTATE->m_fMusicSeconds - m_fLastMusicSeconds;
|
||||
}
|
||||
|
||||
// This shouldn't go down, but be safe:
|
||||
fDeltaTime = max( fDeltaTime, 0 );
|
||||
lDeltaTime = max( lDeltaTime, 0 );
|
||||
|
||||
bga.m_bga->Update( fDeltaTime / fRate );
|
||||
bga.m_bga->Update( lDeltaTime / fRate );
|
||||
|
||||
if( GAMESTATE->m_fSongBeat > bga.m_fStopBeat )
|
||||
{
|
||||
|
||||
@@ -93,8 +93,8 @@ bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
|
||||
if( m_pSteps == NULL && m_dc != Difficulty_Invalid )
|
||||
{
|
||||
// Why is this checking for all players?
|
||||
FOREACH_HumanPlayer( pn )
|
||||
if( GAMESTATE->m_PreferredDifficulty[pn] != m_dc )
|
||||
FOREACH_HumanPlayer( human )
|
||||
if( GAMESTATE->m_PreferredDifficulty[human] != m_dc )
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -412,7 +412,6 @@ void GameCommand::LoadOne( const Command& cmd )
|
||||
|
||||
else if( sName == "fademusic" )
|
||||
{
|
||||
// todo: parse things correctly. -aj
|
||||
if( cmd.m_vsArgs.size() == 3 )
|
||||
{
|
||||
m_bFadeMusic = true;
|
||||
|
||||
@@ -3064,7 +3064,7 @@ StepsType GameManager::StringToStepsType( RString sStepsType )
|
||||
for( int i=0; i<NUM_StepsType; i++ )
|
||||
if( g_StepsTypeInfos[i].szName == sStepsType )
|
||||
return StepsType(i);
|
||||
|
||||
|
||||
return StepsType_Invalid;
|
||||
}
|
||||
|
||||
|
||||
@@ -159,6 +159,8 @@ GameState::GameState() :
|
||||
|
||||
m_Environment = new LuaTable;
|
||||
|
||||
m_bDopefish = false;
|
||||
|
||||
// Don't reset yet; let the first screen do it, so we can use PREFSMAN and THEME.
|
||||
//Reset();
|
||||
|
||||
@@ -1447,27 +1449,6 @@ bool GameState::CurrentOptionsDisqualifyPlayer( PlayerNumber pn )
|
||||
return po.IsEasierForSongAndSteps( m_pCurSong, m_pCurSteps[pn], pn);
|
||||
}
|
||||
|
||||
/*
|
||||
void GameState::LoadNoteSkinMetrics( PlayerNumber pn )
|
||||
{
|
||||
// Read metrics from current noteskin for setting row/col spacing and
|
||||
// arrow size (originally from StepMania AMX)
|
||||
if( !IsPlayerEnabled( pn ) )
|
||||
return;
|
||||
|
||||
ASSERT( this->m_pCurSteps[pn] );
|
||||
|
||||
RString m_sNoteSkin = m_pPlayerState[pn]->m_PlayerOptions.GetStage().m_sNoteSkin;
|
||||
RString sStepsType = StringConversion::ToString( this->m_pCurSteps[pn]->m_StepsType );
|
||||
LOG->Trace("Loading Row/Col/Size values for Noteskin %s | StepsType: %s",m_sNoteSkin.c_str(),sStepsType.c_str());
|
||||
|
||||
//m_iNoteSkinRowSpacing[pn] = NOTESKIN->GetMetricI( m_sNoteSkin, sStepsType, "RowSpacing" );
|
||||
// todo: allow per-column spacing values? -aj
|
||||
m_iNoteSkinColSpacing[pn] = NOTESKIN->GetMetricI( m_sNoteSkin, sStepsType, "ColSpacing" );
|
||||
m_iNoteSkinArrowSize[pn] = NOTESKIN->GetMetricI( m_sNoteSkin, sStepsType, "ArrowSize" );
|
||||
}
|
||||
*/
|
||||
|
||||
/* reset noteskins (?)
|
||||
* GameState::ResetNoteSkins()
|
||||
* GameState::ResetNoteSkinsForPlayer( PlayerNumber pn )
|
||||
@@ -2380,9 +2361,9 @@ public:
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int GetCurrentStepsCredits( T* p, lua_State *L )
|
||||
static int GetCurrentStepsCredits( T* t, lua_State *L )
|
||||
{
|
||||
const Song* pSong = p->m_pCurSong;
|
||||
const Song* pSong = t->m_pCurSong;
|
||||
if( pSong == NULL )
|
||||
return 0;
|
||||
|
||||
@@ -2466,6 +2447,11 @@ public:
|
||||
p->m_pCurCharacters[Enum::Check<PlayerNumber>(L, 1)] = c;
|
||||
return 0;
|
||||
}
|
||||
static int Dopefish( T* p, lua_State *L )
|
||||
{
|
||||
lua_pushboolean(L, p->m_bDopefish);
|
||||
return 1;
|
||||
}
|
||||
|
||||
LunaGameState()
|
||||
{
|
||||
@@ -2563,6 +2549,7 @@ public:
|
||||
ADD_METHOD( GetCurMusicSeconds );
|
||||
ADD_METHOD( GetCharacter );
|
||||
ADD_METHOD( SetCharacter );
|
||||
ADD_METHOD( Dopefish );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -214,16 +214,6 @@ public:
|
||||
RageTimer m_LastBeatUpdate; // time of last m_fSongBeat, etc. update
|
||||
BroadcastOnChange<bool> m_bGameplayLeadIn;
|
||||
|
||||
// Metricable noteskin things
|
||||
/*
|
||||
void LoadNoteSkinMetrics( PlayerNumber pn );
|
||||
int m_iNoteSkinColSpacing[NUM_PLAYERS];
|
||||
int m_iNoteSkinArrowSize[NUM_PLAYERS];
|
||||
*/
|
||||
// not sure I want to let noteskins change row spacing, as that changes how
|
||||
// the speed mods work... -aj
|
||||
//int m_iNoteSkinRowSpacing[NUM_PLAYERS];
|
||||
|
||||
float m_fMusicSecondsVisible;
|
||||
float m_fSongBeatVisible;
|
||||
|
||||
@@ -348,6 +338,8 @@ public:
|
||||
float GetGoalPercentComplete( PlayerNumber pn );
|
||||
bool IsGoalComplete( PlayerNumber pn ) { return GetGoalPercentComplete( pn ) >= 1; }
|
||||
|
||||
bool m_bDopefish;
|
||||
|
||||
// Lua
|
||||
void PushSelf( lua_State *L );
|
||||
|
||||
@@ -356,6 +348,9 @@ private:
|
||||
EarnedExtraStage CalculateEarnedExtraStage() const;
|
||||
int m_iAwardedExtraStages[NUM_PLAYERS];
|
||||
bool m_bEarnedExtraStage;
|
||||
|
||||
GameState(const GameState& rhs);
|
||||
GameState& operator=(const GameState& rhs);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
*
|
||||
* TODO: Look into a more flexible system without a fixed number of grades. -Wolfman2000
|
||||
*/
|
||||
enum Grade
|
||||
enum Grade
|
||||
{
|
||||
Grade_Tier01, /**< Usually an AAAA */
|
||||
Grade_Tier02, /**< Usually an AAA */
|
||||
|
||||
@@ -24,7 +24,7 @@ enum InputEventType
|
||||
|
||||
struct InputEvent
|
||||
{
|
||||
InputEvent() { type=IET_FIRST_PRESS; };
|
||||
InputEvent(): type(IET_FIRST_PRESS) {}
|
||||
|
||||
DeviceInput di;
|
||||
InputEventType type;
|
||||
@@ -84,6 +84,9 @@ private:
|
||||
vector<InputEvent> queue;
|
||||
RageMutex *queuemutex;
|
||||
MouseCoordinates m_MouseCoords;
|
||||
|
||||
InputFilter(const InputFilter& rhs);
|
||||
InputFilter& operator=(const InputFilter& rhs);
|
||||
};
|
||||
|
||||
extern InputFilter* INPUTFILTER; // global and accessable from anywhere in our program
|
||||
|
||||
@@ -266,7 +266,6 @@ static const AutoMappings g_AutoMappings[] =
|
||||
AutoMappingEntry( 0, JOY_BUTTON_10, GAME_BUTTON_BACK, false ),
|
||||
AutoMappingEntry( 0, JOY_BUTTON_9, GAME_BUTTON_START, false )
|
||||
),
|
||||
// TODO: add black and white buttons, as well as other missing inputs -aj
|
||||
AutoMappings(
|
||||
"dance",
|
||||
"XBOX Gamepad Plugin V0.01",
|
||||
@@ -1094,12 +1093,12 @@ void InputMappings::ReadMappings( const InputScheme *pInputScheme, RString sFile
|
||||
vector<RString> sDeviceInputStrings;
|
||||
split( value, DEVICE_INPUT_SEPARATOR, sDeviceInputStrings, false );
|
||||
|
||||
for( unsigned i=0; i<sDeviceInputStrings.size() && i<unsigned(NUM_GAME_TO_DEVICE_SLOTS); i++ )
|
||||
for( unsigned j=0; j<sDeviceInputStrings.size() && j<unsigned(NUM_GAME_TO_DEVICE_SLOTS); j++ )
|
||||
{
|
||||
DeviceInput DeviceI;
|
||||
DeviceI.FromString( sDeviceInputStrings[i] );
|
||||
DeviceI.FromString( sDeviceInputStrings[j] );
|
||||
if( DeviceI.IsValid() )
|
||||
SetInputMap( DeviceI, GameI, i );
|
||||
SetInputMap( DeviceI, GameI, j );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,20 +12,12 @@ const int NUM_USER_GAME_TO_DEVICE_SLOTS = 2;
|
||||
|
||||
struct AutoMappingEntry
|
||||
{
|
||||
AutoMappingEntry( int i, DeviceButton db, GameButton gb, bool b )
|
||||
{
|
||||
m_iSlotIndex = i;
|
||||
m_deviceButton = db;
|
||||
m_gb = gb;
|
||||
m_bSecondController = b;
|
||||
}
|
||||
AutoMappingEntry()
|
||||
{
|
||||
m_iSlotIndex = -1;
|
||||
m_deviceButton = DeviceButton_Invalid;
|
||||
m_gb = GameButton_Invalid;
|
||||
m_bSecondController = false;
|
||||
}
|
||||
AutoMappingEntry( int i, DeviceButton db, GameButton gb, bool b ):
|
||||
m_iSlotIndex(i), m_deviceButton(db),
|
||||
m_gb(gb), m_bSecondController(b) {}
|
||||
AutoMappingEntry(): m_iSlotIndex(-1),
|
||||
m_deviceButton(DeviceButton_Invalid), m_gb(GameButton_Invalid),
|
||||
m_bSecondController(false) {}
|
||||
bool IsEmpty() const { return m_deviceButton == DeviceButton_Invalid && m_gb == GameButton_Invalid; }
|
||||
|
||||
int m_iSlotIndex;
|
||||
@@ -86,10 +78,8 @@ struct AutoMappings
|
||||
AutoMappingEntry im37 = AutoMappingEntry(),
|
||||
AutoMappingEntry im38 = AutoMappingEntry(),
|
||||
AutoMappingEntry im39 = AutoMappingEntry() )
|
||||
: m_sGame(s1), m_sDriverRegex(s2), m_sControllerName(s3)
|
||||
{
|
||||
m_sGame = s1;
|
||||
m_sDriverRegex = s2;
|
||||
m_sControllerName = s3;
|
||||
#define PUSH( im ) if(!im.IsEmpty()) m_vMaps.push_back(im);
|
||||
PUSH(im0);PUSH(im1);PUSH(im2);PUSH(im3);PUSH(im4);PUSH(im5);PUSH(im6);PUSH(im7);PUSH(im8);PUSH(im9);PUSH(im10);PUSH(im11);PUSH(im12);PUSH(im13);PUSH(im14);PUSH(im15);PUSH(im16);PUSH(im17);PUSH(im18);PUSH(im19);
|
||||
PUSH(im20);PUSH(im21);PUSH(im22);PUSH(im23);PUSH(im24);PUSH(im25);PUSH(im26);PUSH(im27);PUSH(im28);PUSH(im29);PUSH(im30);PUSH(im31);PUSH(im32);PUSH(im33);PUSH(im34);PUSH(im35);PUSH(im36);PUSH(im37);PUSH(im38);PUSH(im39);
|
||||
@@ -206,6 +196,10 @@ protected:
|
||||
|
||||
void UpdateTempDItoGI();
|
||||
const InputScheme *m_pInputScheme;
|
||||
|
||||
private:
|
||||
InputMapper(const InputMapper& rhs);
|
||||
InputMapper& operator=(const InputMapper& rhs);
|
||||
};
|
||||
|
||||
extern InputMapper* INPUTMAPPER; // global and accessable from anywhere in our program
|
||||
|
||||
@@ -25,6 +25,8 @@ private:
|
||||
void CreateImpl();
|
||||
RString m_sGroup, m_sName;
|
||||
ILocalizedStringImpl *m_pImpl;
|
||||
// Swallow up warnings. If they must be used, define them.
|
||||
LocalizedString& operator=(const LocalizedString& rhs);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -42,6 +42,9 @@ public:
|
||||
|
||||
private:
|
||||
lua_State *m_pLuaMain;
|
||||
// Swallow up warnings. If they must be used, define them.
|
||||
LuaManager& operator=(const LuaManager& rhs);
|
||||
LuaManager(const LuaManager& rhs);
|
||||
};
|
||||
|
||||
extern LuaManager *LUA;
|
||||
@@ -155,6 +158,9 @@ private:
|
||||
|
||||
LuaReference *m_Name;
|
||||
LuaReference *m_pOldValue;
|
||||
|
||||
// Swallow up warnings. If they must be used, define them.
|
||||
LuaThreadVariable& operator=(const LuaThreadVariable& rhs);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,15 +17,13 @@ MeterDisplay::MeterDisplay()
|
||||
|
||||
void MeterDisplay::Load( RString sStreamPath, float fStreamWidth, RString sTipPath )
|
||||
{
|
||||
m_fStreamWidth = fStreamWidth;
|
||||
|
||||
m_sprStream.Load( sStreamPath );
|
||||
m_sprStream->SetZoomX( fStreamWidth / m_sprStream->GetUnzoomedWidth() );
|
||||
this->AddChild( m_sprStream );
|
||||
|
||||
m_sprTip.Load( sTipPath );
|
||||
this->AddChild( m_sprTip );
|
||||
|
||||
SetStreamWidth( fStreamWidth );
|
||||
SetPercent( 0.5f );
|
||||
}
|
||||
|
||||
@@ -33,14 +31,10 @@ void MeterDisplay::LoadFromNode( const XNode* pNode )
|
||||
{
|
||||
LOG->Trace( "MeterDisplay::LoadFromNode(%s)", ActorUtil::GetWhere(pNode).c_str() );
|
||||
|
||||
if( !pNode->GetAttrValue("StreamWidth", m_fStreamWidth) )
|
||||
RageException::Throw( "%s: MeterDisplay: missing the \"StreamWidth\" attribute", ActorUtil::GetWhere(pNode).c_str() );
|
||||
|
||||
const XNode *pStream = pNode->GetChild( "Stream" );
|
||||
if( pStream == NULL )
|
||||
RageException::Throw( "%s: MeterDisplay: missing the \"Stream\" attribute", ActorUtil::GetWhere(pNode).c_str() );
|
||||
m_sprStream.LoadActorFromNode( pStream, this );
|
||||
m_sprStream->SetZoomX( m_fStreamWidth / m_sprStream->GetUnzoomedWidth() );
|
||||
this->AddChild( m_sprStream );
|
||||
|
||||
const XNode* pChild = pNode->GetChild( "Tip" );
|
||||
@@ -50,6 +44,10 @@ void MeterDisplay::LoadFromNode( const XNode* pNode )
|
||||
this->AddChild( m_sprTip );
|
||||
}
|
||||
|
||||
float fStreamWidth = 0;
|
||||
pNode->GetAttrValue( "StreamWidth", fStreamWidth );
|
||||
SetStreamWidth( fStreamWidth );
|
||||
|
||||
SetPercent( 0.5f );
|
||||
|
||||
ActorFrame::LoadFromNode( pNode );
|
||||
@@ -65,6 +63,12 @@ void MeterDisplay::SetPercent( float fPercent )
|
||||
m_sprTip->SetX( SCALE(fPercent, 0.f, 1.f, -m_fStreamWidth/2, m_fStreamWidth/2) );
|
||||
}
|
||||
|
||||
void MeterDisplay::SetStreamWidth( float fStreamWidth )
|
||||
{
|
||||
m_fStreamWidth = fStreamWidth;
|
||||
m_sprStream->SetZoomX( m_fStreamWidth / m_sprStream->GetUnzoomedWidth() );
|
||||
}
|
||||
|
||||
void SongMeterDisplay::Update( float fDeltaTime )
|
||||
{
|
||||
if( GAMESTATE->m_pCurSong )
|
||||
@@ -80,6 +84,23 @@ void SongMeterDisplay::Update( float fDeltaTime )
|
||||
MeterDisplay::Update( fDeltaTime );
|
||||
}
|
||||
|
||||
// lua start
|
||||
#include "LuaBinding.h"
|
||||
|
||||
class LunaMeterDisplay: public Luna<MeterDisplay>
|
||||
{
|
||||
public:
|
||||
static int SetStreamWidth( T* p, lua_State *L ) { p->SetStreamWidth(FArg(1)); return 0; }
|
||||
|
||||
LunaMeterDisplay()
|
||||
{
|
||||
ADD_METHOD( SetStreamWidth );
|
||||
}
|
||||
};
|
||||
|
||||
LUA_REGISTER_DERIVED_CLASS( MeterDisplay, ActorFrame )
|
||||
// lua end
|
||||
|
||||
/*
|
||||
* (c) 2003-2004 Chris Danford
|
||||
* All rights reserved.
|
||||
|
||||
@@ -17,10 +17,9 @@ public:
|
||||
|
||||
void SetPercent( float fPercent );
|
||||
void SetStreamWidth( float fStreamWidth );
|
||||
|
||||
|
||||
// Lua
|
||||
// HACK: not linking right now.
|
||||
// void PushSelf( lua_State *L );
|
||||
void PushSelf( lua_State *L );
|
||||
|
||||
private:
|
||||
float m_fStreamWidth;
|
||||
|
||||
@@ -155,15 +155,15 @@ void ModIconRow::SetFromGameState()
|
||||
continue; // skip
|
||||
|
||||
// search for a vacant spot
|
||||
for( int i=iPerferredCol; i<NUM_OPTION_ICONS; i++ )
|
||||
for( int j=iPerferredCol; j<NUM_OPTION_ICONS; j++ )
|
||||
{
|
||||
if( vsText[i] != "" )
|
||||
if( vsText[j] != "" )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
vsText[i] = sOption;
|
||||
vsText[j] = sOption;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ Model::Model()
|
||||
m_fDefaultAnimationRate = 1;
|
||||
m_fCurAnimationRate = 1;
|
||||
m_bLoop = true;
|
||||
m_bDrawCelShaded = false;
|
||||
m_pTempGeometry = NULL;
|
||||
}
|
||||
|
||||
@@ -288,18 +289,19 @@ bool Model::EarlyAbortDraw() const
|
||||
|
||||
void Model::DrawCelShaded()
|
||||
{
|
||||
// TODO: use shell shader for outline.
|
||||
this->SetZWrite( true );
|
||||
|
||||
// First pass: outline/shell
|
||||
// DISPLAY->SetCelShaded(1);
|
||||
// First pass: shell. We only want the backfaces for this.
|
||||
DISPLAY->SetCelShaded(1);
|
||||
DISPLAY->SetCullMode(CULL_FRONT);
|
||||
this->SetZWrite(false); // XXX: Why on earth isn't the culling working? -Colby
|
||||
this->Draw();
|
||||
|
||||
// Second pass: normal shading
|
||||
// DISPLAY->SetCelShaded(2);
|
||||
// this->Draw();
|
||||
// Second pass: cel shading
|
||||
DISPLAY->SetCelShaded(2);
|
||||
DISPLAY->SetCullMode(CULL_BACK);
|
||||
this->SetZWrite(true);
|
||||
this->Draw();
|
||||
|
||||
// DISPLAY->SetCelShaded(0)
|
||||
DISPLAY->SetCelShaded(0);
|
||||
}
|
||||
|
||||
void Model::DrawPrimitives()
|
||||
@@ -779,6 +781,7 @@ public:
|
||||
static int loop( T* p, lua_State *L ) { p->SetLoop(BArg(1)); return 0; }
|
||||
static int rate( T* p, lua_State *L ) { p->SetRate(FArg(1)); return 0; }
|
||||
static int GetNumStates( T* p, lua_State *L ) { lua_pushnumber( L, p->GetNumStates() ); return 1; }
|
||||
//static int CelShading( T* p, lua_State *L ) { p->SetCelShading(BArg(1)); return 0; }
|
||||
|
||||
LunaModel()
|
||||
{
|
||||
@@ -789,6 +792,7 @@ public:
|
||||
ADD_METHOD( rate );
|
||||
// sm-ssc adds:
|
||||
ADD_METHOD( GetNumStates );
|
||||
//ADD_METHOD( CelShading );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ public:
|
||||
virtual void DrawPrimitives();
|
||||
|
||||
void DrawCelShaded();
|
||||
void SetCelShading( bool bShading ) { m_bDrawCelShaded = bShading; }
|
||||
|
||||
virtual int GetNumStates() const;
|
||||
virtual void SetState( int iNewState );
|
||||
@@ -81,6 +82,7 @@ private:
|
||||
float m_fDefaultAnimationRate;
|
||||
float m_fCurAnimationRate;
|
||||
bool m_bLoop;
|
||||
bool m_bDrawCelShaded; // for Lua models
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -66,12 +66,9 @@ private:
|
||||
RageTexture* pTexture_,
|
||||
float fDelaySecs_,
|
||||
RageVector2 vTranslate_
|
||||
)
|
||||
{
|
||||
pTexture = pTexture_;
|
||||
fDelaySecs = fDelaySecs_;
|
||||
vTranslate = vTranslate_;
|
||||
}
|
||||
):
|
||||
pTexture(pTexture_), fDelaySecs(fDelaySecs_),
|
||||
vTranslate(vTranslate_) {}
|
||||
|
||||
RageTexture* pTexture;
|
||||
float fDelaySecs;
|
||||
|
||||
@@ -25,10 +25,13 @@
|
||||
static Preference<bool> g_bMoveRandomToEnd( "MoveRandomToEnd", 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()) );
|
||||
#define WHEEL_TEXT(s) THEME->GetString( "MusicWheel", ssprintf("%sText",s.c_str()) );
|
||||
#define CUSTOM_ITEM_WHEEL_TEXT(s) THEME->GetString( "MusicWheel", ssprintf("CustomItem%sText",s.c_str()) );
|
||||
|
||||
static RString SECTION_COLORS_NAME( size_t i ) { return ssprintf("SectionColor%d",int(i+1)); }
|
||||
static RString CHOICE_NAME( RString s ) { return ssprintf("Choice%s",s.c_str()); }
|
||||
static RString CUSTOM_WHEEL_ITEM_NAME( RString s ) { return ssprintf("CustomWheelItem%s",s.c_str()); }
|
||||
static RString CUSTOM_WHEEL_ITEM_COLOR( RString s ) { return ssprintf("%sColor",s.c_str()); }
|
||||
|
||||
AutoScreenMessage( SM_SongChanged ); // TODO: Replace this with a Message and MESSAGEMAN
|
||||
AutoScreenMessage( SM_SortOrderChanging );
|
||||
@@ -86,6 +89,12 @@ void MusicWheel::Load( RString sType )
|
||||
CHOICE .Load(sType,CHOICE_NAME,vsModeChoiceNames);
|
||||
SECTION_COLORS .Load(sType,SECTION_COLORS_NAME,NUM_SECTION_COLORS);
|
||||
|
||||
CUSTOM_WHEEL_ITEM_NAMES .Load(sType,"CustomWheelItemNames");
|
||||
vector<RString> vsCustomItemNames;
|
||||
split( CUSTOM_WHEEL_ITEM_NAMES, ",", vsCustomItemNames );
|
||||
CUSTOM_CHOICES.Load(sType,CUSTOM_WHEEL_ITEM_NAME,vsCustomItemNames);
|
||||
CUSTOM_CHOICE_COLORS.Load(sType,CUSTOM_WHEEL_ITEM_COLOR,vsCustomItemNames);
|
||||
|
||||
ROULETTE_COLOR .Load(sType,"RouletteColor");
|
||||
RANDOM_COLOR .Load(sType,"RandomColor");
|
||||
PORTAL_COLOR .Load(sType,"PortalColor");
|
||||
@@ -316,7 +325,7 @@ bool MusicWheel::SelectCourse( const Course *p )
|
||||
for( i=0; i<m_CurWheelItemData.size(); i++ )
|
||||
{
|
||||
if( GetCurWheelItemData(i)->m_pCourse == p )
|
||||
m_iSelection = i; // select it
|
||||
m_iSelection = i; // select it
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -324,7 +333,7 @@ bool MusicWheel::SelectCourse( const Course *p )
|
||||
|
||||
bool MusicWheel::SelectModeMenuItem()
|
||||
{
|
||||
/* Select the last-chosen option. */
|
||||
// Select the last-chosen option.
|
||||
ASSERT( GAMESTATE->m_SortOrder == SORT_MODE_MENU );
|
||||
const vector<MusicWheelItemData *> &from = m_WheelItemDatas[GAMESTATE->m_SortOrder];
|
||||
unsigned i;
|
||||
@@ -360,7 +369,7 @@ void MusicWheel::GetSongList( vector<Song*> &arraySongs, SortOrder so )
|
||||
SONGMAN->GetPreferredSortSongs( apAllSongs );
|
||||
break;
|
||||
case SORT_POPULARITY:
|
||||
SONGMAN->GetPopularSongs();
|
||||
apAllSongs = SONGMAN->GetPopularSongs();
|
||||
break;
|
||||
case SORT_GROUP:
|
||||
// if we're not using sections with a preferred song group, and there
|
||||
@@ -404,7 +413,7 @@ void MusicWheel::GetSongList( vector<Song*> &arraySongs, SortOrder so )
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Hide locked songs. If RANDOM_PICKS_LOCKED_SONGS, hide in Roulette
|
||||
/* Hide locked songs. If RANDOM_PICKS_LOCKED_SONGS, hide in Roulette
|
||||
* and Random, too. */
|
||||
if( (so!=SORT_ROULETTE || !RANDOM_PICKS_LOCKED_SONGS) && iLocked )
|
||||
continue;
|
||||
@@ -501,7 +510,6 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
{
|
||||
// Make an array of Song*, then sort them
|
||||
vector<Song*> arraySongs;
|
||||
|
||||
GetSongList( arraySongs, so );
|
||||
|
||||
bool bUseSections = true;
|
||||
@@ -513,11 +521,16 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
// obey order specified by the preferred sort list
|
||||
break;
|
||||
case SORT_ROULETTE:
|
||||
SongUtil::SortSongPointerArrayByStepsTypeAndMeter( arraySongs, GAMESTATE->m_pCurStyle->m_StepsType, Difficulty_Easy );
|
||||
{
|
||||
StepsType st;
|
||||
Difficulty dc;
|
||||
SongUtil::GetStepsTypeAndDifficultyFromSortOrder( SORT_EASY_METER, st, dc );
|
||||
SongUtil::SortSongPointerArrayByStepsTypeAndMeter( arraySongs, st, dc );
|
||||
if( (bool)PREFSMAN->m_bPreferredSortUsesGroups )
|
||||
stable_sort( arraySongs.begin(), arraySongs.end(), SongUtil::CompareSongPointersByGroup );
|
||||
bUseSections = false;
|
||||
break;
|
||||
}
|
||||
case SORT_GROUP:
|
||||
SongUtil::SortSongPointerArrayByGroupAndTitle( arraySongs );
|
||||
if(USE_SECTIONS_WITH_PREFERRED_GROUP)
|
||||
@@ -572,7 +585,6 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
ASSERT(0); // unhandled SortOrder
|
||||
}
|
||||
|
||||
|
||||
// Build an array of WheelItemDatas from the sorted list of Song*'s
|
||||
arrayWheelItemDatas.clear(); // clear out the previous wheel items
|
||||
arrayWheelItemDatas.reserve( arraySongs.size() );
|
||||
@@ -622,7 +634,6 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
if( sThisSection != sLastSection )
|
||||
{
|
||||
int iSectionCount = 0;
|
||||
|
||||
// Count songs in this section
|
||||
unsigned j;
|
||||
for( j=i; j < arraySongs.size(); j++ )
|
||||
@@ -651,7 +662,8 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
if( SHOW_ROULETTE )
|
||||
arrayWheelItemDatas.push_back( new MusicWheelItemData(TYPE_ROULETTE, NULL, "", NULL, ROULETTE_COLOR, 0) );
|
||||
|
||||
// Only add TYPE_PORTAL if there's at least one song on the list.
|
||||
// Only add TYPE_RANDOM and TYPE_PORTAL if there's at least
|
||||
// one song on the list.
|
||||
bool bFoundAnySong = false;
|
||||
for( unsigned i=0; !bFoundAnySong && i < arrayWheelItemDatas.size(); i++ )
|
||||
if( arrayWheelItemDatas[i]->m_Type == TYPE_SONG )
|
||||
@@ -662,6 +674,23 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
|
||||
if( SHOW_PORTAL && bFoundAnySong )
|
||||
arrayWheelItemDatas.push_back( new MusicWheelItemData(TYPE_PORTAL, NULL, "", NULL, PORTAL_COLOR, 0) );
|
||||
|
||||
// add custom wheel items
|
||||
vector<RString> vsNames;
|
||||
split( CUSTOM_WHEEL_ITEM_NAMES, ",", vsNames );
|
||||
for( unsigned i=0; i<vsNames.size(); ++i )
|
||||
{
|
||||
MusicWheelItemData wid( TYPE_CUSTOM, NULL, "", NULL, CUSTOM_CHOICE_COLORS.GetValue(vsNames[i]), 0 );
|
||||
wid.m_pAction = HiddenPtr<GameCommand>( new GameCommand );
|
||||
wid.m_pAction->m_sName = vsNames[i];
|
||||
wid.m_pAction->Load( i, ParseCommands(CUSTOM_CHOICES.GetValue(vsNames[i])) );
|
||||
wid.m_sLabel = CUSTOM_ITEM_WHEEL_TEXT( vsNames[i] );
|
||||
|
||||
if( !wid.m_pAction->IsPlayable() )
|
||||
continue;
|
||||
|
||||
arrayWheelItemDatas.push_back( new MusicWheelItemData(wid) );
|
||||
}
|
||||
}
|
||||
|
||||
if( GAMESTATE->IsAnExtraStageAndSelectionLocked() )
|
||||
@@ -808,10 +837,9 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
}
|
||||
}
|
||||
|
||||
// init crowns
|
||||
// Update the popularity and init icons.
|
||||
if( so == SORT_POPULARITY )
|
||||
{
|
||||
// init crown icons
|
||||
for( unsigned i=0; i< min(3u,arrayWheelItemDatas.size()); i++ )
|
||||
{
|
||||
MusicWheelItemData& WID = *arrayWheelItemDatas[i];
|
||||
@@ -819,6 +847,7 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
}
|
||||
}
|
||||
|
||||
// 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) );
|
||||
}
|
||||
@@ -1052,6 +1081,12 @@ bool MusicWheel::Select() // return true if this selection ends the screen
|
||||
ChangeSort( GAMESTATE->m_PreferredSortOrder );
|
||||
m_sLastModeMenuItem = GetCurWheelItemData(m_iSelection)->m_pAction->m_sName;
|
||||
return false;
|
||||
case TYPE_CUSTOM:
|
||||
GetCurWheelItemData(m_iSelection)->m_pAction->ApplyToAllPlayers();
|
||||
if( GetCurWheelItemData(m_iSelection)->m_pAction->m_sScreen != "" )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ public:
|
||||
// sm-ssc additions
|
||||
RString JumpToNextGroup();
|
||||
RString JumpToPrevGroup();
|
||||
const MusicWheelItemData *GetCurWheelItemData( int i ) { return (const MusicWheelItemData *) m_CurWheelItemData[i]; }
|
||||
|
||||
protected:
|
||||
MusicWheelItem *MakeItem();
|
||||
@@ -59,8 +60,7 @@ protected:
|
||||
|
||||
virtual void UpdateSwitch();
|
||||
|
||||
vector<MusicWheelItemData *> m_WheelItemDatas[NUM_SortOrder];
|
||||
const MusicWheelItemData *GetCurWheelItemData( int i ) { return (const MusicWheelItemData *) m_CurWheelItemData[i]; }
|
||||
vector<MusicWheelItemData *> m_WheelItemDatas[NUM_SortOrder]; // aliases into m_UnfilteredWheelItemDatas
|
||||
|
||||
RString m_sLastModeMenuItem;
|
||||
SortOrder m_SortOrder;
|
||||
@@ -92,6 +92,9 @@ protected:
|
||||
ThemeMetric<RageColor> RANDOM_COLOR;
|
||||
ThemeMetric<RageColor> PORTAL_COLOR;
|
||||
vector <int> m_viWheelPositions;
|
||||
ThemeMetric<RString> CUSTOM_WHEEL_ITEM_NAMES;
|
||||
ThemeMetricMap<RString> CUSTOM_CHOICES;
|
||||
ThemeMetricMap<RageColor> CUSTOM_CHOICE_COLORS;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,6 +29,7 @@ static const char *MusicWheelItemTypeNames[] = {
|
||||
"Mode",
|
||||
"Random",
|
||||
"Portal",
|
||||
"Custom",
|
||||
};
|
||||
XToString( MusicWheelItemType );
|
||||
|
||||
@@ -78,7 +79,7 @@ MusicWheelItem::MusicWheelItem( RString sType ):
|
||||
{
|
||||
m_pText[i] = NULL;
|
||||
|
||||
// Don't init text for Type_Song. It uses a TextBanner.
|
||||
// Don't init text for Type_Song. It uses a TextBanner.
|
||||
if( i == MusicWheelItemType_Song )
|
||||
continue;
|
||||
|
||||
@@ -104,7 +105,7 @@ MusicWheelItem::MusicWheelItem( RString sType ):
|
||||
ActorUtil::SetXY( m_WheelNotifyIcon, "MusicWheelItem" );
|
||||
m_WheelNotifyIcon.PlayCommand( "On" );
|
||||
this->AddChild( &m_WheelNotifyIcon );
|
||||
|
||||
|
||||
FOREACH_PlayerNumber( p )
|
||||
{
|
||||
m_pGradeDisplay[p].Load( THEME->GetPathG(sType,"grades") );
|
||||
@@ -256,6 +257,10 @@ void MusicWheelItem::LoadFromWheelItemData( const WheelItemBaseData *pData, int
|
||||
sDisplayName = THEME->GetString("MusicWheel","Portal");
|
||||
type = MusicWheelItemType_Portal;
|
||||
break;
|
||||
case TYPE_CUSTOM:
|
||||
sDisplayName = pWID->m_sLabel;
|
||||
type = MusicWheelItemType_Custom;
|
||||
break;
|
||||
}
|
||||
|
||||
m_sprColorPart[type]->SetVisible( true );
|
||||
@@ -286,10 +291,11 @@ void MusicWheelItem::LoadFromWheelItemData( const WheelItemBaseData *pData, int
|
||||
msg.SetParam( "Course", pWID->m_pCourse );
|
||||
msg.SetParam( "Index", iIndex );
|
||||
msg.SetParam( "HasFocus", bHasFocus );
|
||||
msg.SetParam( "SongGroup", pWID->m_sText );
|
||||
msg.SetParam( "Text", pWID->m_sText );
|
||||
msg.SetParam( "DrawIndex", iDrawIndex );
|
||||
msg.SetParam( "Type", MusicWheelItemTypeToString(type) );
|
||||
msg.SetParam( "Color", pWID->m_color );
|
||||
msg.SetParam( "Label", pWID->m_sLabel );
|
||||
|
||||
this->HandleMessage( msg );
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ enum MusicWheelItemType
|
||||
MusicWheelItemType_Mode,
|
||||
MusicWheelItemType_Random,
|
||||
MusicWheelItemType_Portal,
|
||||
MusicWheelItemType_Custom,
|
||||
NUM_MusicWheelItemType,
|
||||
MusicWheelItemType_Invalid,
|
||||
};
|
||||
|
||||
@@ -855,9 +855,9 @@ void NoteData::GetTapNoteRangeExclusive( int iTrack, int iStartRow, int iEndRow,
|
||||
--prev;
|
||||
if( prev->second.type == TapNote::hold_head )
|
||||
{
|
||||
int iStartRow = prev->first;
|
||||
int localStartRow = prev->first;
|
||||
const TapNote &tn = prev->second;
|
||||
if( iStartRow + tn.iDuration >= iEndRow )
|
||||
if( localStartRow + tn.iDuration >= iEndRow )
|
||||
end = prev;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,8 +250,8 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
|
||||
for( int t=0; t<out.GetNumTracks(); t++ )
|
||||
{
|
||||
NoteData::iterator begin = out.begin( t );
|
||||
NoteData::iterator end = out.end( t );
|
||||
while( begin != end )
|
||||
NoteData::iterator lEnd = out.end( t );
|
||||
while( begin != lEnd )
|
||||
{
|
||||
NoteData::iterator next = Increment( begin );
|
||||
const TapNote &tn = begin->second;
|
||||
@@ -679,12 +679,9 @@ int FindLongestOverlappingHoldNoteForAnyTrack( const NoteData &in, int iRow )
|
||||
int iMaxTailRow = -1;
|
||||
for( int t=0; t<in.GetNumTracks(); t++ )
|
||||
{
|
||||
for( int t=0; t<in.GetNumTracks(); t++ )
|
||||
{
|
||||
const TapNote &tn = in.GetTapNote( t, iRow );
|
||||
if( tn.type == TapNote::hold_head )
|
||||
iMaxTailRow = max( iMaxTailRow, iRow + tn.iDuration );
|
||||
}
|
||||
const TapNote &tn = in.GetTapNote( t, iRow );
|
||||
if( tn.type == TapNote::hold_head )
|
||||
iMaxTailRow = max( iMaxTailRow, iRow + tn.iDuration );
|
||||
}
|
||||
|
||||
return iMaxTailRow;
|
||||
@@ -2070,6 +2067,9 @@ const ValidRow g_ValidRows[] =
|
||||
{ StepsType_dance_double, { f,T,T,T,T,f,f,f } },
|
||||
{ StepsType_dance_double, { f,f,f,T,T,T,T,f } },
|
||||
{ StepsType_dance_double, { f,f,f,f,T,T,T,T } },
|
||||
{ StepsType_pump_double, { T,T,T,T,T,f,f,f,f,f } },
|
||||
{ StepsType_pump_double, { f,f,T,T,T,T,T,T,f,f } },
|
||||
{ StepsType_pump_double, { f,f,f,f,f,T,T,T,T,T } },
|
||||
};
|
||||
#undef T
|
||||
#undef f
|
||||
|
||||