Merge branch 'master' of https://github.com/stepmania/stepmania into MacOSX10.9.sdk
@@ -9,6 +9,9 @@ charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.txt]
|
||||
indent_style = space
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
|
||||
@@ -57,14 +57,17 @@ src/stamp-h1
|
||||
Docs/doxygen
|
||||
PBProject/build
|
||||
Xcode/build
|
||||
Xcode/*.xcodeproj/xcuserdata/
|
||||
*.xcodeproj/xcuserdata
|
||||
*.xcodeproj/project.xcworkspace
|
||||
src/build-*
|
||||
src/Release-*
|
||||
src/libtomcrypt/build-*
|
||||
src/libtomcrypt/Release-*
|
||||
src/libtomcrypt/Debug
|
||||
src/libtommath/build-*
|
||||
src/libtommath/Release-*
|
||||
src/libtommath/Debug
|
||||
src/*.old
|
||||
*/.deps
|
||||
*/.dirstamp
|
||||
@@ -127,4 +130,4 @@ bundle/ffmpeg/*/*.ver
|
||||
bundle/ffmpeg/*/*.def
|
||||
bundle/ffmpeg/*/*.orig.def
|
||||
bundle/ffmpeg/*/*.dll.a
|
||||
bundle/ffmpeg/*/*.lib
|
||||
bundle/ffmpeg/*/*.lib
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
language: c
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
irc: "chat.freenode.net#stepmania-devs"
|
||||
|
||||
before_script:
|
||||
- sudo apt-get install nasm
|
||||
- sudo apt-get install libmad0-dev
|
||||
- sudo apt-get install libgtk2.0-dev
|
||||
- sudo apt-get install binutils-dev
|
||||
- sudo apt-get install libasound-dev
|
||||
- sudo apt-get install libpulse-dev
|
||||
- sudo apt-get install libjack-dev
|
||||
- sudo apt-get install libc6-dev
|
||||
- sudo apt-get install libogg-dev
|
||||
- sudo apt-get install libvorbis-dev
|
||||
- sudo apt-get install libbz2-dev
|
||||
- sudo apt-get install zlib1g-dev
|
||||
- sudo apt-get install libjpeg8-dev
|
||||
- sudo apt-get install libpng12-dev
|
||||
- sudo apt-get install libxtst-dev libxrandr-dev
|
||||
- sudo apt-get install libglu1-mesa-dev
|
||||
- sudo apt-get install mesa-common-dev
|
||||
- sudo apt-get install libglew-dev
|
||||
|
||||
script:
|
||||
- ./autogen.sh
|
||||
- ./configure && make
|
||||
@@ -1,9 +1,12 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
local Color2 = color(Var "Color2");
|
||||
|
||||
-- Alternating files being played back at once
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
||||
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
||||
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
||||
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;rate,0.25) };
|
||||
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;rate,0.25) };
|
||||
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color2;rate,0.25) };
|
||||
LoadActor(Var "File2") .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color1;rate,0.25) };
|
||||
LoadActor(Var "File1") .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);cropto,SCREEN_WIDTH/2,SCREEN_HEIGHT/2;diffuse,Color2;rate,0.25) };
|
||||
};
|
||||
|
||||
return t
|
||||
return t
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
local Color2 = color(Var "Color2");
|
||||
local stretchBG = PREFSMAN:GetPreference("StretchBackgrounds")
|
||||
|
||||
local t = Def.ActorFrame {};
|
||||
|
||||
@@ -12,9 +11,9 @@ t[#t+1] = LoadActor(Var "File1") .. {
|
||||
|
||||
if Var("File2") ~= nil then
|
||||
t[#t+1] = LoadActor(Var("File2")) .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;scale_or_crop_background;diffuse,Color1;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
end;
|
||||
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
local Color2 = color(Var "Color2");
|
||||
local stretchBG = PREFSMAN:GetPreference("StretchBackgrounds")
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
Def.Sprite {
|
||||
OnCommand=function(self)
|
||||
self:LoadFromCurrentSongBackground()
|
||||
self:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y)
|
||||
if stretchBG then self:SetSize(SCREEN_WIDTH,SCREEN_HEIGHT)
|
||||
else self:scale_or_crop_background();
|
||||
end
|
||||
self:scale_or_crop_background();
|
||||
self:diffuse(Color1)
|
||||
self:effectclock("music")
|
||||
end;
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
local stretchBG = PREFSMAN:GetPreference("StretchBackgrounds")
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=function(self)
|
||||
self:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y)
|
||||
if stretchBG then self:SetSize(SCREEN_WIDTH,SCREEN_HEIGHT)
|
||||
else self:scale_or_crop_background();
|
||||
end
|
||||
self:scale_or_crop_background();
|
||||
self:diffuse(Color1)
|
||||
self:effectclock("music")
|
||||
end;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
local Color = color(Var "Color1");
|
||||
local Color1 = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
|
||||
@@ -874,7 +874,7 @@ sm-ssc v1.0 Release Candidate 1 | 20100627
|
||||
* [Screen] add GetScreenType() Lua binding.
|
||||
* howl's patch for fixing LowLevelWindow
|
||||
(stepmania4-fullscreen-focus-lost-and-restore-resolution2.patch)
|
||||
http://www.stepmania.com/forums/showthread.php?t=23693
|
||||
http://old.stepmania.com/forums/showthread.php?t=23693
|
||||
|
||||
20100608
|
||||
--------
|
||||
@@ -1564,7 +1564,7 @@ Theme-related additions/bugfixes aren't listed here, usually.
|
||||
--------
|
||||
* (smpackage) sm4svn r28243: "fix for FlushDirCache" [Chris Danford]
|
||||
* Fix Beginner Helper rest location [sy567]
|
||||
(see http://www.stepmania.com/forums/showpost.php?p=158721&postcount=12)
|
||||
(see http://old.stepmania.com/forums/showpost.php?p=158721&postcount=12)
|
||||
|
||||
20091211
|
||||
--------
|
||||
@@ -1596,7 +1596,7 @@ the gametype causes the DifficultyList/StepsDisplayList to not show anything.
|
||||
20091206
|
||||
--------
|
||||
Implement a patch to support modern versions of ffmpeg.
|
||||
(See http://www.stepmania.com/forums/showthread.php?t=21434 for more info.)
|
||||
(See http://old.stepmania.com/forums/showthread.php?t=21434 for more info.)
|
||||
|
||||
Petr Baudis (3):
|
||||
video.m4: Add libswscale checks.
|
||||
@@ -1681,7 +1681,7 @@ changes are from baseline StepMania 4 SVN, in order to keep compatibility.
|
||||
--------
|
||||
* [ArchHooks_Unix] Follow user's system language as default.
|
||||
[David Santamaría Rogado (howl)]
|
||||
See http://www.stepmania.com/forums/showthread.php?t=21471 for more info.
|
||||
See http://old.stepmania.com/forums/showthread.php?t=21471 for more info.
|
||||
|
||||
20091120
|
||||
--------
|
||||
@@ -1707,7 +1707,7 @@ changes are from baseline StepMania 4 SVN, in order to keep compatibility.
|
||||
--------
|
||||
* Prevent focus lost at Fullscreen on X11, fix windowed->fullscreen resolution
|
||||
changes so that they save [David Santamaría Rogado (howl)]
|
||||
(http://www.stepmania.com/forums/showthread.php?t=21430)
|
||||
(http://old.stepmania.com/forums/showthread.php?t=21430)
|
||||
|
||||
20091114
|
||||
--------
|
||||
@@ -1754,10 +1754,10 @@ changes are from baseline StepMania 4 SVN, in order to keep compatibility.
|
||||
* r28221: "allow overriding, like PRODUCT_ID" [Glenn Maynard]
|
||||
* r28222-28223: "adding support for pms files" [GRIM657]
|
||||
* The pulseaudio patch [David Santamaría Rogado (howl), Ondřej Hošek, Damien Thébault]
|
||||
(see http://www.stepmania.com/forums/showthread.php?t=21348)
|
||||
(see http://old.stepmania.com/forums/showthread.php?t=21348)
|
||||
* Greg Nadja's OpenGL/Windows patch
|
||||
* Load Splash.png instead of an .xpm [David Santamaría Rogado (howl)]
|
||||
(http://www.stepmania.com/forums/showpost.php?p=157340&postcount=3)
|
||||
(http://old.stepmania.com/forums/showpost.php?p=157340&postcount=3)
|
||||
|
||||
* sm-ssc Changes:
|
||||
* [ScreenSelectMusic.cpp] Add SelectMenuInputMessage, has params Player and
|
||||
|
||||
@@ -1,13 +1,212 @@
|
||||
StepMania 5 Changelog
|
||||
StepMania 5 Changelog
|
||||
________________________________________________________________________________
|
||||
The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes
|
||||
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
||||
________________________________________________________________________________
|
||||
|
||||
================================================================================
|
||||
StepMania current development
|
||||
StepMania 5.0 beta 4 | 20140930
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
To reduce the number of entries in this file, entries are dated to the Saturday after they occurred.
|
||||
|
||||
2014/09/27
|
||||
----------
|
||||
* [Preferences] DebounceCoinInput time pref added for machines that need a
|
||||
different debounce time for coin input.
|
||||
* [Preferences] DefaultFailtype preference reinstated to resolve default fail
|
||||
type problems.
|
||||
* [TimingData] TimingData::GetReturnsNumbers metric added to make TimingData
|
||||
functions return tables of numbers instead of strings.
|
||||
|
||||
2014/09/20
|
||||
----------
|
||||
* [ScreenOptionsCustomizeProfile] New screen added for setting profile stats.
|
||||
|
||||
2014/09/13
|
||||
----------
|
||||
* [Endless] Songs are repicked on each repeat of the course.
|
||||
* [GameState] GetCurrentStage logic fixed to correctly return Stage_Final in
|
||||
all cases where it should.
|
||||
* [JudgmentMessage] Tracks parameter replaced with Notes and Holds parameters.
|
||||
* [NumPadEntry] New customizable lua class for custom screens.
|
||||
* [ScreenHeartEntry] New screen added to default.
|
||||
* [TapNote] Class exposed to lua through JudgmentMessage with all data on the
|
||||
TapNote.
|
||||
|
||||
2014/09/06
|
||||
----------
|
||||
* Changed ES/OMES speed mod to 2x from 1.5x.
|
||||
* [ActorMultiVertex] GetTexture lua function added.
|
||||
* [BitmapText] max_dimension_use_zoom lua function added.
|
||||
* [Edit Mode] Swap Up/Down and Arbitrary Remap added to Alter menu.
|
||||
* [GameState] InsertCoin and InsertCredit lua functions added.
|
||||
* [PrefsManager] FastNoteRendering preference added.
|
||||
* [RageTexture] Reload lua function added.
|
||||
* [RageTexture?] "__screen__" added as special screenshot texture name.
|
||||
Causes a skip.
|
||||
* [Screen] SetNextScreenName lua function added.
|
||||
* [ScreenCredits] New ScreenCredits. Please update your theme if you applied
|
||||
theme changes to this screen.
|
||||
* [ScreenMapControllers] Massively changed to make it not suck. New elements,
|
||||
new metrics, new actions.
|
||||
* [WheelItemBase] IsLoaded lua function added.
|
||||
|
||||
2014/08/30
|
||||
----------
|
||||
* [ActorScroller] wrap parameter added for controlling looping behavior better.
|
||||
* Life difficulty matches StepMania 3.9's again.
|
||||
|
||||
2014/08/16
|
||||
----------
|
||||
* [ActorFrame] Internal diffuse and glow now apply to BitmapText children.
|
||||
* [GameState] SetCurrentPlayMode and SetCurrentStyle lua functions added.
|
||||
* [PrefsManager] BackgroundFitMode preference added to settle all problems
|
||||
with how backgrounds are stretched or fit.
|
||||
* [ScreenSetBGFit] New screen for presenting the BackgroundFitMode preference.
|
||||
See _fallback/BGAnimations/ScreenSetBGFitMode overlay.lua for documentation.
|
||||
* [ThemeManager] HasMetric/String now return false when the group name or
|
||||
metric name is an empty string.
|
||||
|
||||
2014/08/09
|
||||
----------
|
||||
* [GameManager] GetStylesForGame lua function added.
|
||||
* [LifeMeterBattery] CourseSongRewardLives metric added.
|
||||
* [LifeMeter] LifeType, DrainType, and BatteryLives moved to PlayerOptions so
|
||||
the players can have different settings.
|
||||
* [ScreenGameplay] LifeMeterChangedP1 message is no longer broadcast for for
|
||||
P2's lifemeter. Use LifeMeterChangedP2. "Life" and "StepsSecond" are passed
|
||||
in the params table for the message.
|
||||
|
||||
2014/08/02
|
||||
----------
|
||||
* [MusicWheel] Added GetSelectedSection lua function.
|
||||
|
||||
2014/07/26
|
||||
----------
|
||||
* [ActorScroller] Accidental "permanent loop" bug fixed.
|
||||
* [Common metrics] AfterThemeChangeScreen, AfterGameChangeScreen, and
|
||||
AfterGameAndThemeChangeScreen optional metrics added to Common section.
|
||||
* [GameManager] SetGame lua function added.
|
||||
* [Globals] OldStyleStringToDifficulty lua function added.
|
||||
* [PrefsManager] SavePreferences lua function added.
|
||||
ThreeKeyNavigation preference added.
|
||||
* [SoundManager] IsTimingDelayed lua function added.
|
||||
* [ThemeManager] SetTheme lua function added.
|
||||
* [ScreenHowToPlay] CharacterName metric works again.
|
||||
|
||||
2014/07/18
|
||||
----------
|
||||
* [BitmapText] LoadFont is now obsolete. Set the Font attribute of the
|
||||
BitmapText instead.
|
||||
* [ErrorReporting] New system that reports theme errors through dialogs and
|
||||
an on screen display. (Sorry guys, your themes are all full of errors, and
|
||||
you should fix them)
|
||||
* [LogDisplay] New actor class used by ErrorReporting, possibly useful more
|
||||
widely. See _fallback/Scripts/04 LogDisplay.lua for docs.
|
||||
|
||||
2014/07/05
|
||||
----------
|
||||
* [Actor] GetDestX/Y/Z lua functions added.
|
||||
* [Profile] Lua functions for calculating calories based on heart rate added.
|
||||
See ThemerDocs/calories.txt
|
||||
|
||||
2014/06/28
|
||||
----------
|
||||
* [ArrowEffects] New namespace of lua functions.
|
||||
* [Screen] AddInputCallback and RemoveInputCallback lua functions added.
|
||||
|
||||
2014/06/21
|
||||
----------
|
||||
* [Gameplay] CMods and MMods now automatically compensate for music rate.
|
||||
* [Globals] SaveScreenshot lua function added.
|
||||
* [ScreenPlayerOptions] ArbitrarySpeedMods system added.
|
||||
* [ScreenSelectMusic] Pad codes that set modifiers disabled.
|
||||
|
||||
2014/06/07
|
||||
----------
|
||||
* [ScreenSelectMusic] SelectMenuInput message is now always sent when Select
|
||||
is pressed.
|
||||
|
||||
2014/05/17
|
||||
----------
|
||||
* [GameState] StoreRankingName lua function added. Ranking names now allow
|
||||
lowercase.
|
||||
* [Profile] SetLastUsedHighScoreName and GetHighScoreListIfExists lua
|
||||
functions added.
|
||||
|
||||
2014/05/10
|
||||
----------
|
||||
* [Player] Tracks param added to JudgmentMessageCommand. (will change before
|
||||
beta 4)
|
||||
* [ScreenGameplay] Themable haste system added.
|
||||
GetTrueBPS lua function added.
|
||||
* [ThemeManager] GetMetricNamesInGroup and GetStringNamesInGroup lua functions
|
||||
added.
|
||||
|
||||
2014/05/03
|
||||
----------
|
||||
* [ActorFrame] GetChild and GetChildren modified, see Lua.xml.
|
||||
* [NoteSkinManager] GetMetric function added.
|
||||
* [PlayerOptions] Entirely new API for setting player options. Superior
|
||||
alternative to ApplyGameCommand.
|
||||
* [SongOptions] Entirely new API for setting song options. Same design as new
|
||||
PlayerOptions API.
|
||||
* [NoteField] NoteField Board can now use any AutoActor class instead of just
|
||||
Sprite/Sprite-derived ones.
|
||||
|
||||
2014/04/26
|
||||
----------
|
||||
* [Style] GetColumnInfo and GetColumnDrawOrder lua functions added.
|
||||
|
||||
2014/04/19
|
||||
----------
|
||||
* [ActorMultiVertex] New actor class added.
|
||||
* [ScreenGameplay] GetHasteRate lua function added. GiveUpSeconds metric added.
|
||||
* [SoundManager] StopMusic lua function added.
|
||||
|
||||
2014/04/05
|
||||
----------
|
||||
* [GameState] HaveProfileToLoad/Save and Load/SaveProfiles lua functions added.
|
||||
* [ScreenWithMenuElements] StartTransitioningScreen lua function added.
|
||||
|
||||
2014/03/22
|
||||
----------
|
||||
* [Player] HoldNoteScore_MissedHold added.
|
||||
|
||||
2014/03/05
|
||||
----------
|
||||
* [ScreenNetSelectBase] Fix colors when unicode characters are in chat box.
|
||||
|
||||
2014/03/08
|
||||
----------
|
||||
* [ActorScroller] DrawByZPosition fixed for looping ActorScrollers.
|
||||
* [Globals?] GetTimeSinceStart global lua function added.
|
||||
* [Player] FirstTrack parameter added to JudgmentMessageCommand. (will change
|
||||
before beta 4)
|
||||
|
||||
================================================================================
|
||||
StepMania 5.0 beta 3 | 20140224
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
2014/02/22
|
||||
----------
|
||||
* [Actor] texturetranslate lua function added.
|
||||
* [BitmapText] distort lua function added.
|
||||
* [ComboGraph] Added BodyHeight metric.
|
||||
* [GameState] JoinInput lua function added.
|
||||
* [PlayerOptions] "resetspeed" mod added.
|
||||
* [PlayerStageStats] GetComboList and GetLifeRecord lua functions added.
|
||||
* [Preferences] ComboContinuesBetweenSongs preference added.
|
||||
* [ScreenWithMenuElements] SetAllowLateJoin lua function added.
|
||||
* [SoundManager] loop and applyRate args added to PlayMusicPart lua function.
|
||||
* [Sprite] SetCustomPosCoords lua function added.
|
||||
* [Utils] XML backwards compatibility added.
|
||||
|
||||
2014/02/08
|
||||
----------
|
||||
* [Actor] Added heading, pitch, and roll lua functions.
|
||||
|
||||
2013/10/09
|
||||
----------
|
||||
* [CombinedLifeMeterTug] Added names and commands to Separator and Frame items.
|
||||
@@ -573,7 +772,7 @@ StepMania 5.0 alpha 1 | 20120108
|
||||
* [ScreenManager] Made AddScreenToTop take a second (optional) parameter for
|
||||
posting a ScreenMessage on screen pop. [AJ]
|
||||
* Only read certain tags during first load; makes song loading faster. [theDtTvB]
|
||||
|
||||
|
||||
2012/01/07
|
||||
----------
|
||||
* Fix Portable.ini not working on Mac OS X. [shakesoda]
|
||||
@@ -682,8 +881,8 @@ StepMania 5.0 alpha 1 | 20120108
|
||||
2011/11/15
|
||||
----------
|
||||
* [LifeMeterBar] Added the ForceLifeDifficultyOnExtraStage metric and
|
||||
the ExtraStageLifeDifficulty metric. Let the themer decide if extra stages
|
||||
should have their own life bar behavior. Note that this metric does NOT
|
||||
the ExtraStageLifeDifficulty metric. Let the themer decide if extra stages
|
||||
should have their own life bar behavior. Note that this metric does NOT
|
||||
change the lifebar to the battery style. [Wolfman2000/FSX]
|
||||
|
||||
2011/11/14
|
||||
@@ -1228,7 +1427,7 @@ StepMania 5.0 Preview 2 | 20110703
|
||||
2011/06/12
|
||||
----------
|
||||
* [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. [AJ]
|
||||
* [ScreenEdit] Restore the old PageUp/PageDown behavior, added Control +
|
||||
* [ScreenEdit] Restore the old PageUp/PageDown behavior, added Control +
|
||||
PageUp/PageDown to use recent time signature behavior. Laptop users, that
|
||||
includes you guys too: semicolon and apostrophe are still good. [Wolfman2000]
|
||||
|
||||
@@ -1367,7 +1566,7 @@ StepMania 5.0 Preview 1 | 20110529
|
||||
----------
|
||||
* [ScreenGameplay] Removed hardcoded commands for Debug (give up text) and
|
||||
replace them with DebugStartOnCommand, DebugBackOnCommand, and
|
||||
DebugTweenOffCommand. [AJ]
|
||||
DebugTweenOffCommand. [AJ]
|
||||
* Added #SPEEDS to the SSC format. This multiplies your scrolling speed during
|
||||
gameplay, not replaces it (see mod attacks for replacing). [Wolfman2000]
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
sm-ssc/SM5 Code Style Guidelines
|
||||
StepMania 5 Code Style Guidelines
|
||||
--------------------------------------------------------------------------------
|
||||
The sm-ssc/SM5 code style guidelines are as follows:
|
||||
The StepMania 5 code style guidelines are as follows:
|
||||
|
||||
1) Follow the current coding conventions set forth in the source code.
|
||||
This means use tabs. AJ prefers tabs have a width of 4. Visual Studio and web
|
||||
@@ -34,8 +34,9 @@ if( anotherCondition )
|
||||
lotsofstuff();
|
||||
}
|
||||
|
||||
Variable naming conventions seem to be Hungarian, with m_ being used for
|
||||
class member variables.
|
||||
Variable naming conventions are largely Hungarian, with m_ being used for
|
||||
class member variables. Some newer code is forgoing the use of Hungarian
|
||||
prefixes.
|
||||
|
||||
2) Remove any unnecessary whitespace. "Unnecessary" whitespace includes tabs
|
||||
at the end of } characters, tabs that lead nowhere, like this one:
|
||||
@@ -69,7 +70,7 @@ inclusion.)
|
||||
* in that instance. All new copyright notices should follow this style as well,
|
||||
* for consistency's sake.
|
||||
*/
|
||||
|
||||
|
||||
/* use of long comments for one line is discouraged (with exceptions) */
|
||||
// usually, it will will get cleaned up into this style, but there are exceptions:
|
||||
|
||||
@@ -91,4 +92,4 @@ void SomeFunction(size_t /*ACTUAL DATA TYPE*/)
|
||||
* Pre-existing comments are usually trimmed to meet the 80-column width if they
|
||||
* go way overboard. */
|
||||
|
||||
5) There are no other rules (yet).
|
||||
5) There are no other rules (yet).
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
sm-ssc has a few compile flags that are helpful to know, as well as ones
|
||||
inherited from StepMania.
|
||||
StepMania has a few compile flags that are helpful to know, as well as one
|
||||
inherited from sm-ssc that should be nuked.
|
||||
|
||||
================================================================================
|
||||
stepmania:
|
||||
================================================================================
|
||||
WITHOUT_NETWORKING
|
||||
Disables all networking stuff (SMO).
|
||||
Disables all networking stuff (e.g. StepMania Online).
|
||||
--------------------------------------------------------------------------------
|
||||
HAVE_VERSION_INFO
|
||||
If this isn't defined, passing in --version will only show the name of the
|
||||
current StepMania version, no build number or date.
|
||||
Please define HAVE_VERSION_INFO if you can when building StepMania.
|
||||
|
||||
================================================================================
|
||||
sm-ssc:
|
||||
================================================================================
|
||||
SSC_FUTURES
|
||||
{todo}
|
||||
--------------------------------------------------------------------------------
|
||||
HAVE_VERSION_INFO
|
||||
If this isn't defined, passing in --version will only show the name of the
|
||||
current sm-ssc version, no build number or date.
|
||||
Please define HAVE_VERSION_INFO if you can when building sm-ssc.
|
||||
A highly deprecated thing. Anything related to this flag should be removed.
|
||||
|
||||
@@ -14,4 +14,4 @@ Don't get burned out from nonstop development.
|
||||
accepted and integrated. Common sense, but a golden rule nevertheless.
|
||||
|
||||
4) Anyone who decides to theme during development is willing to accept that
|
||||
occasionally, changes to the default and/or fallback theme will break things.
|
||||
occasionally, changes to the default and/or fallback theme will break things.
|
||||
|
||||
@@ -8,7 +8,7 @@ This has nothing to do with the server versions (see below)
|
||||
(NETPROTOCOLVERSION in NetworkSyncManager.h)
|
||||
1: StepMania 3.9 (SMLan?)
|
||||
2: StepMania 3.95
|
||||
3: StepMania 4 alphas/sm-ssc v1.0 RC1-Final
|
||||
3: StepMania 4 alphas, sm-ssc v1.0-v1.2.5, StepMania 5
|
||||
|
||||
==Server Versions==
|
||||
1: SMLan (old)
|
||||
@@ -31,8 +31,8 @@ Commands C2S 012-001 and 012-001: when there is no password the 'password' field
|
||||
The default port is 8765/tcp, though this is actually assigned to Ultraseek HTTP
|
||||
by the IANA (see http://www.iana.org/assignments/port-numbers).
|
||||
|
||||
A sm-ssc version of a online server for StepMania will use the currently
|
||||
unassigned port 48040/tcp (and/or udp if the need arises).
|
||||
A modern/official online server for StepMania will use the currently unassigned
|
||||
port 48040/tcp (and/or udp if the need arises). (Port number subject to change.)
|
||||
|
||||
The protocol is packaged in "EzSockets Data Packets".
|
||||
|
||||
@@ -551,4 +551,4 @@ Payload:
|
||||
0x01 Max players
|
||||
NT Player1 name
|
||||
...
|
||||
NT Last player (PlayerN) name
|
||||
NT Last player (PlayerN) name
|
||||
|
||||
@@ -30,5 +30,5 @@ The Credentials section seems to be optional, but is useful to know about:
|
||||
from the web site to StepMania for things like in-game uploads (instead of going
|
||||
to stepmaniashare.com)"[1]
|
||||
__________________________________________________________
|
||||
[1] http://www.stepmania.com/forums/showthread.php?t=24203
|
||||
[2] http://www.stepmania.com/test.smxml
|
||||
[1] http://old.stepmania.com/forums/showthread.php?t=24203
|
||||
[2] http://old.stepmania.com/test.smxml
|
||||
|
||||
@@ -14,4 +14,4 @@ beat 453.72919 = 107.04103 seconds
|
||||
00:47.228: fDeltaBeat = (NextBPMSeg 0.790333 - abs(fBPS 0.750000)) + (nextStartRow 21576 - thisRow 21384)
|
||||
00:47.228: ==TimingData Delta as Beats==
|
||||
00:47.228: fDeltaBeat = 4.000000 (beat)
|
||||
00:47.228: fDeltaBeat = (NextBPMSeg 0.790333 - abs(fBPS 0.750000)) + (nextStartRow 21576 - thisRow 21384)
|
||||
00:47.228: fDeltaBeat = (NextBPMSeg 0.790333 - abs(fBPS 0.750000)) + (nextStartRow 21576 - thisRow 21384)
|
||||
|
||||
@@ -2,11 +2,8 @@
|
||||
|
||||
Version info displayed to the user.
|
||||
|
||||
These are the 'official' version designations:
|
||||
* "experimental: pre-release versions
|
||||
* "private beta v0.0": hmm, think about it for a second there.
|
||||
==Public versions below this line==
|
||||
* "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
|
||||
These are the 'official' version designations:
|
||||
* "v5.0 alpha #": Alpha versions (bug squashing, polishing until we reach beta)
|
||||
* "v5.0 beta #": Beta versions (bug squashing, _focus_ is on high priority bugs)
|
||||
* "v5.0 rc#": Release Candidates (if there are no problems, move on to final)
|
||||
* "v5.0.0": Final Releases
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
<Function name='GetDestFirstToDraw'/>
|
||||
<Function name='GetDestNumToDraw'/>
|
||||
<Function name='GetNumVertices'/>
|
||||
<Function name='GetTexture'/>
|
||||
<Function name='LoadTexture'/>
|
||||
<Function name='SetDrawState'/>
|
||||
<Function name='SetEffectMode'/>
|
||||
@@ -585,6 +586,7 @@
|
||||
<Function name='Stroke'/>
|
||||
<Function name='distort'/>
|
||||
<Function name='jitter'/>
|
||||
<Function name='max_dimension_use_zoom'/>
|
||||
<Function name='maxheight'/>
|
||||
<Function name='maxwidth'/>
|
||||
<Function name='rainbowscroll'/>
|
||||
@@ -724,6 +726,9 @@
|
||||
<Function name='GetFirstStepsTypeForGame'/>
|
||||
<Function name='IsGameEnabled'/>
|
||||
<Function name='StepsTypeToLocalizedString'/>
|
||||
<Function name='SetGame'/>
|
||||
<Function name='GetEnabledGames'/>
|
||||
<Function name='GetStylesForGame'/>
|
||||
</Class>
|
||||
<Class name='GameSoundManager'>
|
||||
<Function name='DimMusic'/>
|
||||
@@ -807,6 +812,8 @@
|
||||
<Function name='HasEarnedExtraStage'/>
|
||||
<Function name='HaveProfileToLoad'/>
|
||||
<Function name='HaveProfileToSave'/>
|
||||
<Function name='InsertCoin'/>
|
||||
<Function name='InsertCredit'/>
|
||||
<Function name='InStepEditor'/>
|
||||
<Function name='IsAnExtraStage'/>
|
||||
<Function name='IsAnyHumanPlayerUsingMemoryCard'/>
|
||||
@@ -834,8 +841,10 @@
|
||||
<Function name='SaveProfiles'/>
|
||||
<Function name='SetCharacter'/>
|
||||
<Function name='SetCurrentCourse'/>
|
||||
<Function name='SetCurrentPlayMode'/>
|
||||
<Function name='SetCurrentSong'/>
|
||||
<Function name='SetCurrentSteps'/>
|
||||
<Function name='SetCurrentStyle'/>
|
||||
<Function name='SetCurrentTrail'/>
|
||||
<Function name='SetFailTypeExplicitlySet'/>
|
||||
<Function name='SetJukeboxUsesModifiers'/>
|
||||
@@ -946,6 +955,7 @@
|
||||
</Class>
|
||||
<Class base='WheelBase' name='MusicWheel'>
|
||||
<Function name='ChangeSort'/>
|
||||
<Function name='GetSelectedSection'/>
|
||||
<Function name='IsRouletting'/>
|
||||
<Function name='SelectCourse'/>
|
||||
<Function name='SelectSong'/>
|
||||
@@ -995,98 +1005,101 @@
|
||||
<Function name='GetStepsQueueWrapped'/>
|
||||
</Class>
|
||||
<Class name='PlayerOptions'>
|
||||
<Function name='IsEasierForSongAndSteps'/>
|
||||
<Function name='IsEasierForCourseAndTrail'/>
|
||||
<Function name='TimeSpacing'/>
|
||||
<Function name='MaxScrollBPM'/>
|
||||
<Function name='ScrollSpeed'/>
|
||||
<Function name='ScrollBPM'/>
|
||||
<Function name='Boost'/>
|
||||
<Function name='Brake'/>
|
||||
<Function name='Wave'/>
|
||||
<Function name='Expand'/>
|
||||
<Function name='Boomerang'/>
|
||||
<Function name='Drunk'/>
|
||||
<Function name='Dizzy'/>
|
||||
<Function name='Confusion'/>
|
||||
<Function name='Mini'/>
|
||||
<Function name='Tiny'/>
|
||||
<Function name='Flip'/>
|
||||
<Function name='Invert'/>
|
||||
<Function name='Tornado'/>
|
||||
<Function name='Tipsy'/>
|
||||
<Function name='Bumpy'/>
|
||||
<Function name='Beat'/>
|
||||
<Function name='Xmode'/>
|
||||
<Function name='Twirl'/>
|
||||
<Function name='Roll'/>
|
||||
<Function name='Hidden'/>
|
||||
<Function name='HiddenOffset'/>
|
||||
<Function name='Sudden'/>
|
||||
<Function name='SuddenOffset'/>
|
||||
<Function name='Stealth'/>
|
||||
<Function name='Blink'/>
|
||||
<Function name='RandomVanish'/>
|
||||
<Function name='Reverse'/>
|
||||
<Function name='Split'/>
|
||||
<Function name='Alternate'/>
|
||||
<Function name='Cross'/>
|
||||
<Function name='Centered'/>
|
||||
<Function name='Dark'/>
|
||||
<Function name='Blind'/>
|
||||
<Function name='Cover'/>
|
||||
<Function name='RandAttack'/>
|
||||
<Function name='NoAttack'/>
|
||||
<Function name='PlayerAutoPlay'/>
|
||||
<Function name='Tilt'/>
|
||||
<Function name='Skew'/>
|
||||
<Function name='Passmark'/>
|
||||
<Function name='RandomSpeed'/>
|
||||
<Function name='TurnNone'/>
|
||||
<Function name='Mirror'/>
|
||||
<Function name='Backwards'/>
|
||||
<Function name='Left'/>
|
||||
<Function name='Right'/>
|
||||
<Function name='Shuffle'/>
|
||||
<Function name='SoftShuffle'/>
|
||||
<Function name='SuperShuffle'/>
|
||||
<Function name='NoHolds'/>
|
||||
<Function name='NoRolls'/>
|
||||
<Function name='NoMines'/>
|
||||
<Function name='Little'/>
|
||||
<Function name='Wide'/>
|
||||
<Function name='Big'/>
|
||||
<Function name='Quick'/>
|
||||
<Function name='BMRize'/>
|
||||
<Function name='Skippy'/>
|
||||
<Function name='Mines'/>
|
||||
<Function name='AttackMines'/>
|
||||
<Function name='Echo'/>
|
||||
<Function name='Stomp'/>
|
||||
<Function name='Planted'/>
|
||||
<Function name='Floored'/>
|
||||
<Function name='Twister'/>
|
||||
<Function name='HoldRolls'/>
|
||||
<Function name='NoJumps'/>
|
||||
<Function name='NoHands'/>
|
||||
<Function name='NoLifts'/>
|
||||
<Function name='NoFakes'/>
|
||||
<Function name='NoQuads'/>
|
||||
<Function name='NoStretch'/>
|
||||
<Function name='MuteOnError'/>
|
||||
<Function name='NoteSkin'/>
|
||||
<Function name='FailSetting'/>
|
||||
<Function name='Backwards'/>
|
||||
<Function name='BatteryLives'/>
|
||||
<Function name='Beat'/>
|
||||
<Function name='Big'/>
|
||||
<Function name='Blind'/>
|
||||
<Function name='Blink'/>
|
||||
<Function name='Boomerang'/>
|
||||
<Function name='Boost'/>
|
||||
<Function name='BMRize'/>
|
||||
<Function name='Brake'/>
|
||||
<Function name='Bumpy'/>
|
||||
<Function name='Centered'/>
|
||||
<Function name='CMod'/>
|
||||
<Function name='XMod'/>
|
||||
<Function name='MMod'/>
|
||||
<Function name='Overhead'/>
|
||||
<Function name='Incoming'/>
|
||||
<Function name='Space'/>
|
||||
<Function name='Hallway'/>
|
||||
<Function name='Confusion'/>
|
||||
<Function name='Cover'/>
|
||||
<Function name='Cross'/>
|
||||
<Function name='Dark'/>
|
||||
<Function name='Dizzy'/>
|
||||
<Function name='Distant'/>
|
||||
<Function name='UsingReverse'/>
|
||||
<Function name='DrainSetting'/>
|
||||
<Function name='Drunk'/>
|
||||
<Function name='Echo'/>
|
||||
<Function name='Expand'/>
|
||||
<Function name='FailSetting'/>
|
||||
<Function name='Flip'/>
|
||||
<Function name='Floored'/>
|
||||
<Function name='GetReversePercentForColumn'/>
|
||||
<Function name='GetStepAttacks'/>
|
||||
<Function name='IsEasierForSongAndSteps'/>
|
||||
<Function name='IsEasierForCourseAndTrail'/>
|
||||
<Function name='Incoming'/>
|
||||
<Function name='Hallway'/>
|
||||
<Function name='Hidden'/>
|
||||
<Function name='HiddenOffset'/>
|
||||
<Function name='HoldRolls'/>
|
||||
<Function name='Invert'/>
|
||||
<Function name='Left'/>
|
||||
<Function name='LifeSetting'/>
|
||||
<Function name='Little'/>
|
||||
<Function name='MaxScrollBPM'/>
|
||||
<Function name='Mines'/>
|
||||
<Function name='Mini'/>
|
||||
<Function name='Mirror'/>
|
||||
<Function name='MMod'/>
|
||||
<Function name='MuteOnError'/>
|
||||
<Function name='NoAttack'/>
|
||||
<Function name='NoFakes'/>
|
||||
<Function name='NoHands'/>
|
||||
<Function name='NoHolds'/>
|
||||
<Function name='NoJumps'/>
|
||||
<Function name='NoLifts'/>
|
||||
<Function name='NoMines'/>
|
||||
<Function name='NoQuads'/>
|
||||
<Function name='NoRolls'/>
|
||||
<Function name='NoStretch'/>
|
||||
<Function name='NoteSkin'/>
|
||||
<Function name='Overhead'/>
|
||||
<Function name='Passmark'/>
|
||||
<Function name='Planted'/>
|
||||
<Function name='PlayerAutoPlay'/>
|
||||
<Function name='Quick'/>
|
||||
<Function name='RandAttack'/>
|
||||
<Function name='RandomSpeed'/>
|
||||
<Function name='RandomVanish'/>
|
||||
<Function name='Reverse'/>
|
||||
<Function name='Right'/>
|
||||
<Function name='Roll'/>
|
||||
<Function name='ScrollBPM'/>
|
||||
<Function name='ScrollSpeed'/>
|
||||
<Function name='Shuffle'/>
|
||||
<Function name='Skew'/>
|
||||
<Function name='Skippy'/>
|
||||
<Function name='SoftShuffle'/>
|
||||
<Function name='Space'/>
|
||||
<Function name='Split'/>
|
||||
<Function name='Stealth'/>
|
||||
<Function name='Stomp'/>
|
||||
<Function name='Sudden'/>
|
||||
<Function name='SuddenOffset'/>
|
||||
<Function name='SuperShuffle'/>
|
||||
<Function name='TimeSpacing'/>
|
||||
<Function name='Tilt'/>
|
||||
<Function name='Tiny'/>
|
||||
<Function name='Tipsy'/>
|
||||
<Function name='Tornado'/>
|
||||
<Function name='TurnNone'/>
|
||||
<Function name='Twirl'/>
|
||||
<Function name='Twister'/>
|
||||
<Function name='UsingReverse'/>
|
||||
<Function name='Wave'/>
|
||||
<Function name='Wide'/>
|
||||
<Function name='XMod'/>
|
||||
<Function name='Xmode'/>
|
||||
</Class>
|
||||
<Class name='PlayerStageStats'>
|
||||
<Function name='FailPlayer'/>
|
||||
@@ -1288,6 +1301,7 @@
|
||||
<Function name='loop'/>
|
||||
<Function name='position'/>
|
||||
<Function name='rate'/>
|
||||
<Function name='Reload'/>
|
||||
</Class>
|
||||
<Class base='RageTexture' name='RageTextureRenderTarget'>
|
||||
<Function name='BeginRenderingTo'/>
|
||||
@@ -1307,6 +1321,7 @@
|
||||
<Function name='Metric'/>
|
||||
<Function name='PostScreenMessage'/>
|
||||
<Function name='RemoveInputCallback'/>
|
||||
<Function name='SetNextScreenName'/>
|
||||
<Function name='String'/>
|
||||
<Function name='lockinput'/>
|
||||
</Class>
|
||||
@@ -1509,10 +1524,7 @@
|
||||
<Function name='AssistClap'/>
|
||||
<Function name='AssistMetronome'/>
|
||||
<Function name='AutosyncSetting'/>
|
||||
<Function name='BatteryLives'/>
|
||||
<Function name='DrainSetting'/>
|
||||
<Function name='Haste'/>
|
||||
<Function name='LifeSetting'/>
|
||||
<Function name='MusicRate'/>
|
||||
<Function name='RandomBGOnly'/>
|
||||
<Function name='SaveReplay'/>
|
||||
@@ -1630,6 +1642,33 @@
|
||||
<Function name='LockedDifficulty'/>
|
||||
<Function name='NeedsZoomOutWith2Players'/>
|
||||
</Class>
|
||||
<Class name='TapNote'>
|
||||
<Function name='GetTapNoteType'/>
|
||||
<Function name='GetTapNoteSubType'/>
|
||||
<Function name='GetTapNoteSource'/>
|
||||
<Function name='GetTapNoteResult'/>
|
||||
<Function name='GetPlayerNumber'/>
|
||||
<Function name='GetAttackModifiers'/>
|
||||
<Function name='GetAttackDuration'/>
|
||||
<Function name='GetKeysoundIndex'/>
|
||||
<Function name='GetHoldDuration'/>
|
||||
<Function name='GetHoldNoteResult'/>
|
||||
</Class>
|
||||
<Class name='TapNoteResult'>
|
||||
<Function name='GetTapNoteScore'/>
|
||||
<Function name='GetTapNoteOffset'/>
|
||||
<Function name='GetHidden'/>
|
||||
</Class>
|
||||
<Class name='HoldNoteResult'>
|
||||
<Function name='GetHoldNoteScore'/>
|
||||
<Function name='GetLife'/>
|
||||
<Function name='GetOverlappedTime'/>
|
||||
<Function name='GetLastHeldBeat'/>
|
||||
<Function name='GetCheckpointsHit'/>
|
||||
<Function name='GetCheckpointsMissed'/>
|
||||
<Function name='GetHeld'/>
|
||||
<Function name='GetActive'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='TextBanner'>
|
||||
<Function name='Load'/>
|
||||
<Function name='SetFromSong'/>
|
||||
@@ -1661,6 +1700,7 @@
|
||||
<Function name='IsThemeSelectable'/>
|
||||
<Function name='ReloadMetrics'/>
|
||||
<Function name='RunLuaScripts'/>
|
||||
<Function name='SetTheme'/>
|
||||
</Class>
|
||||
<Class name='TimingData'>
|
||||
<Function name='GetActualBPM'/>
|
||||
@@ -1763,6 +1803,7 @@
|
||||
<Function name='GetColor'/>
|
||||
<Function name='GetText'/>
|
||||
<Function name='GetType'/>
|
||||
<Function name='IsLoaded'/>
|
||||
</Class>
|
||||
<Class base='ActorFrame' name='WorkoutGraph'>
|
||||
<Function name='SetFromCurrentWorkout'/>
|
||||
@@ -2401,6 +2442,25 @@
|
||||
<EnumValue name=''TapNoteScoreJudgeType_MinimumScore'' value='0'/>
|
||||
<EnumValue name=''TapNoteScoreJudgeType_LastScore'' value='1'/>
|
||||
</Enum>
|
||||
<Enum name='TapNoteType'>
|
||||
<EnumValue name=''TapNoteType_Empty'' value='0'/>
|
||||
<EnumValue name=''TapNoteType_Tap'' value='1'/>
|
||||
<EnumValue name=''TapNoteType_HoldHead'' value='2'/>
|
||||
<EnumValue name=''TapNoteType_HoldTail'' value='3'/>
|
||||
<EnumValue name=''TapNoteType_Mine'' value='4'/>
|
||||
<EnumValue name=''TapNoteType_Lift'' value='5'/>
|
||||
<EnumValue name=''TapNoteType_Attack'' value='6'/>
|
||||
<EnumValue name=''TapNoteType_AutoKeysound'' value='7'/>
|
||||
<EnumValue name=''TapNoteType_Fake'' value='8'/>
|
||||
</Enum>
|
||||
<Enum name='TapNoteSubType'>
|
||||
<EnumValue name=''TapNoteSubType_Hold'' value='0'/>
|
||||
<EnumValue name=''TapNoteSubType_Roll'' value='1'/>
|
||||
</Enum>
|
||||
<Enum name='TapNoteSource'>
|
||||
<EnumValue name=''TapNoteSource_Original'' value='0'/>
|
||||
<EnumValue name=''TapNoteSource_Addition'' value='1'/>
|
||||
</Enum>
|
||||
<Enum name='TextGlowMode'>
|
||||
<EnumValue name=''TextGlowMode_Inner'' value='0'/>
|
||||
<EnumValue name=''TextGlowMode_Stroke'' value='1'/>
|
||||
@@ -2490,5 +2550,5 @@
|
||||
<Constant name='top' value=''VertAlign_Top''/>
|
||||
</Constants>
|
||||
<Version>StepMania v5.0 beta 3</Version>
|
||||
<Date>2014-06-27</Date>
|
||||
<Date>2014-09-15</Date>
|
||||
</Lua>
|
||||
|
||||
@@ -31,6 +31,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='Alpha' theme='_fallback' return='color' arguments='color c, float percent'>
|
||||
[02 Colors.lua] Returns a <code>color</code> with the specified alpha.
|
||||
</Function>
|
||||
<Function name='ArbitrarySpeedMods' theme='_fallback' return='LuaOptionRow' arguments=''>
|
||||
[03 CustomSpeedMods.lua]
|
||||
</Function>
|
||||
<Function name='AreStagePlayerModsForced' theme='_fallback' return='bool' arguments=''>
|
||||
[02 StageMods.lua]
|
||||
</Function>
|
||||
@@ -450,7 +453,7 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='Saturation' theme='_fallback' return='color' arguments='color c, float percent'>
|
||||
[02 Colors.lua] Modifies the saturation of the specified color
|
||||
</Function>
|
||||
<Function name='SaveScreenshot' return= 'bool, string' arguments='PlayerNumber pn, bool compress, bool sign, string prefix, string suffix'>
|
||||
<Function name='SaveScreenshot' return='bool, string' arguments='PlayerNumber pn, bool compress, bool sign, string prefix, string suffix'>
|
||||
Saves a screenshot. If pn is nil, saves to the machine's Screenshots dir, otherwise saves to the profile's Screenshots dir. Saves as jpg if compress is true, or png if compress is false. The screenshot is signed if sign is true. prefix and suffix are optional strings to add to the beginning and end of the filename.<br/>
|
||||
Returns success and full path of the resulting screenshot.
|
||||
</Function>
|
||||
@@ -645,56 +648,56 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='Update' return='void' arguments=''>
|
||||
Updates ArrowEffects, which sets current values for Tornado, Invert, and Beat.
|
||||
</Function>
|
||||
<Function name='GetYOffset' return='float fYOffset' arguments='PlayerState ps, int iCol, float fNoteBeat'>
|
||||
<Function name='GetYOffset' return='float' arguments='PlayerState ps, int iCol, float fNoteBeat'>
|
||||
Returns the Y Offset of a note in column <code>iCol</code> at beat <code>fNoteBeat</code> for the provided PlayerState. Y Offset is affected by Speed mods and Accel mods, and impacts most other arrow effects.
|
||||
</Function>
|
||||
<Function name='GetYPos' return='float fYPos' arguments='PlayerState ps, int iCol, float fYOffset, float fYReverseOffsetPixels'>
|
||||
<Function name='GetYPos' return='float' arguments='PlayerState ps, int iCol, float fYOffset, float fYReverseOffsetPixels'>
|
||||
Returns the Y position of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.<br/>
|
||||
<code>fYReverseOffsetPixels</code> is the separation between targets with and without reverse. This argument is optional and will pull defaults from the metrics for <code>[Player]</code>
|
||||
</Function>
|
||||
<Function name='GetYOffsetFromYPos' return='float fYOffset' arguments='PlayerState ps, int iCol, float fYPos, float fYReverseOffsetPixels'>
|
||||
<Function name='GetYOffsetFromYPos' return='float' arguments='PlayerState ps, int iCol, float fYPos, float fYReverseOffsetPixels'>
|
||||
Returns the Y offset of a note in column <code>iCol</code> with a Y position of <code>fYPos</code> for the provided PlayerState.<br/>
|
||||
<code>fYReverseOffsetPixels</code> is the separation between targets with and without reverse. This argument is optional and will pull defaults from the metrics for <code>[Player]</code>
|
||||
</Function>
|
||||
<Function name='GetXPos' return='float fXPos' arguments='PlayerState ps, int iCol, float fYOffset'>
|
||||
<Function name='GetXPos' return='float' arguments='PlayerState ps, int iCol, float fYOffset'>
|
||||
Returns the X position of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='GetZPos' return='float fZPos' arguments='PlayerState ps, int iCol, float fYOffset'>
|
||||
<Function name='GetZPos' return='float' arguments='PlayerState ps, int iCol, float fYOffset'>
|
||||
Returns the Z position of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='GetRotationX' return='float fRotationX' arguments='PlayerState ps, float fYOffset'>
|
||||
<Function name='GetRotationX' return='float' arguments='PlayerState ps, float fYOffset'>
|
||||
Returns the X rotation of a note with a Y offset of <code>fYOffset</code> for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='GetRotationY' return='float fRotationY' arguments='PlayerState ps, float fYOffset'>
|
||||
<Function name='GetRotationY' return='float' arguments='PlayerState ps, float fYOffset'>
|
||||
Returns the Y rotation of a note with a Y offset of <code>fYOffset</code> for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='GetRotationZ' return='float fRotationZ' arguments='PlayerState ps, float fNoteBeat, bool bIsHoldHead'>
|
||||
<Function name='GetRotationZ' return='float' arguments='PlayerState ps, float fNoteBeat, bool bIsHoldHead'>
|
||||
Returns the Z rotation of a note at beat <code>fNoteBeat</code> for the provided PlayerState.<br/>
|
||||
<code>bIsHoldHead</code> is an optional argument which defaults to false. If true, this function will return <code>0</code> if the [ArrowEffects] metric <code>DizzyHoldHeads</code> is false.
|
||||
</Function>
|
||||
<Function name='ReceptorGetRotationZ' return='float fRotationZ' arguments='PlayerState ps'>
|
||||
<Function name='ReceptorGetRotationZ' return='float' arguments='PlayerState ps'>
|
||||
Returns the Z rotation of the receptors for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='GetAlpha' return='float fAlpha' arguments='PlayerState ps, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar'>
|
||||
<Function name='GetAlpha' return='float' arguments='PlayerState ps, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar'>
|
||||
Returns the Alpha of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState.<br/>
|
||||
<code>fPercentFadeToFail</code> is optional and defaults to -1.<br/>
|
||||
<code>fYReverseOffsetPixels</code> is the separation between targets with and without reverse. This argument is optional and will pull defaults from the metrics for <code>[Player]</code><br/>
|
||||
<code>fDrawDistanceBeforeTargetsPixels</code> is optional and will pull defaults from the <code>[Player]</code> metric <code>DrawDistanceBeforeTargetsPixels</code><br/>
|
||||
<code>fFadeInPercentOfDrawFar</code> is optional and will pull defaults from the <code>[NoteField]</code> metric <code>FadeBeforeTargetsPercent</code><br/>
|
||||
</Function>
|
||||
<Function name='GetGlow' return='float fGlow' arguments='PlayerState ps, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar'>
|
||||
<Function name='GetGlow' return='float' arguments='PlayerState ps, int iCol, float fYOffset, float fPercentFadeToFail, float fYReverseOffsetPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar'>
|
||||
Returns the Glow of a note in column <code>iCol</code> with a Y offset of <code>fYOffset</code> for the provided PlayerState. The arguments are the same as for GetAlpha.
|
||||
</Function>
|
||||
<Function name='GetBrightness' return='float fBrightness' arguments='PlayerState ps, float fNoteBeat'>
|
||||
<Function name='GetBrightness' return='float' arguments='PlayerState ps, float fNoteBeat'>
|
||||
Returns the brightness of a note at beat <code>fNoteBeat</code> for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='NeedZBuffer' return='bool bNeedZBuffer' arguments='PlayerState ps'>
|
||||
<Function name='NeedZBuffer' return='bool' arguments='PlayerState ps'>
|
||||
Returns true if any arrow effects for the provided PlayerState require the z buffer.
|
||||
</Function>
|
||||
<Function name='GetZoom' return='float fZoom' arguments='PlayerState ps'>
|
||||
<Function name='GetZoom' return='float' arguments='PlayerState ps'>
|
||||
Returns the zoom of a note for the provided PlayerState.
|
||||
</Function>
|
||||
<Function name='GetFrameWidthScale' return='float fFameWidthScale' arguments='PlayerState ps, float fYOffset, fOverlappedTime'>
|
||||
<Function name='GetFrameWidthScale' return='float' arguments='PlayerState ps, float fYOffset, fOverlappedTime'>
|
||||
Returns the FrameWidthScale of a hold part with a Y offset of <code>fYOffset</code> for the provided PlayerState.<br/> <code>fOverlappedTime</code> is optional and will default to 0.
|
||||
</Function>
|
||||
</Namespace>
|
||||
@@ -752,7 +755,7 @@ save yourself some time, copy this for undocumented things:
|
||||
Tries to read the file at <code>sPath</code>. If successful, it returns the file's contents.
|
||||
If unsuccessful, it returns two values: <code>nil</code> and <code>"error"</code>.
|
||||
</Function>
|
||||
<Function name='ReportScriptError' return='' arguments= 'string error, string error_type'>
|
||||
<Function name='ReportScriptError' return='void' arguments='string error, string error_type'>
|
||||
Reports the error through the error reporting system. error_type is the type used for the dialog that is presented, a dialog will not appear for a type the user has chosen to ignore.<br/>
|
||||
error is optional an defaults to "Script error occurred.". error_type is optional and defaults to "LUA_ERROR".
|
||||
</Function>
|
||||
@@ -1535,6 +1538,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetCurrNumToDraw' return='int' arguments='void'>
|
||||
Get the NumToDraw of the current tween state.
|
||||
</Function>
|
||||
<Function name='GetTexture' return='RageTexture' arguments=''>
|
||||
Returns the ActorMultiVertex's texture.
|
||||
</Function>
|
||||
<Function name='SetEffectMode' return='void' arguments='EffectMode em'>
|
||||
Sets the <Link class='ENUM' function='EffectMode'>EffectMode</Link> of the ActorMultiVertex.
|
||||
</Function>
|
||||
@@ -1572,6 +1578,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetNumItems' return='int' arguments=''>
|
||||
Returns the number of items in the ActorScroller.
|
||||
</Function>
|
||||
<Function name='GetSecondsPauseBetweenItems' return='float' arguments=''>
|
||||
Returns the number of seconds the scroller pauses between items.
|
||||
</Function>
|
||||
<Function name='GetSecondsToDestination' renamed='true' return='float' arguments=''>
|
||||
Returns the number of seconds until the scroller reaches its destination.
|
||||
</Function>
|
||||
@@ -1772,6 +1781,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='jitter' return='void' arguments='bool bJitter'>
|
||||
If <code>bJitter</code> is <code>true</code>, move each character of the string around by a small random amount.
|
||||
</Function>
|
||||
<Function name='max_dimension_use_zoom' return='void' arguments='bool use_zoom'>
|
||||
If use_zoom is true, this BitmapText will use the zoom that has been applied to it when calculating to change its base zoom from maxheight or maxwidth.
|
||||
</Function>
|
||||
<Function name='maxheight' return='void' arguments='float fHeight'>
|
||||
Set the maximum height of the unzoomed text to <code>fHeight</code>. If <code>fHeight</code> is <code>0</code>, then there is no maximum height.
|
||||
</Function>
|
||||
@@ -2180,6 +2192,18 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='StepsTypeToLocalizedString' return='string' arguments='StepsType st'>
|
||||
Return the localized string representation of <code>st</code>.
|
||||
</Function>
|
||||
<Function name='GetEnabledGames' return='{string}'>
|
||||
Returns a table of all selectable games.
|
||||
</Function>
|
||||
<Function name='GetStylesForGame' return='{style}' arguments='string game'>
|
||||
Returns a table of all the styles for the that exist for <code>game</code>.
|
||||
</Function>
|
||||
<Function name='SetGame' return='void' arguments='string Game, string Theme' >
|
||||
Sets the current game to <code>Game</code>. The second argument is optional, and if provided will determine which theme is loaded when the game changes. If the second argument is not provided, the default theme from the preferences for the new game type will be loaded.<br />
|
||||
If only the game changes, the screen specified by the Common::AfterGameChangeScreen metric will be loaded.<br />
|
||||
If the game and the theme both change, the screen specified by the Common::AfterGameAndThemeChangeScreen metric will be loaded.<br />
|
||||
The Common::InitialScreen metric will be used if the appropriate metric for the change is blank or invalid.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='GameSoundManager'>
|
||||
<Function name='DimMusic' return='void' arguments='float fVolume, float fDuration'>
|
||||
@@ -2460,6 +2484,13 @@ save yourself some time, copy this for undocumented things:
|
||||
editing portion. If in recording or playing mode, this will return
|
||||
<code>false</code>.
|
||||
</Function>
|
||||
<Function name='InsertCoin' return='void' arguments='int iCoins'>
|
||||
Inserts <code>iCoins</code> number of coins. <code>iCoins</code> can be negative or positive.
|
||||
</Function>
|
||||
<Function name='InsertCredit' return='void' arguments=''>
|
||||
Inserts one credit. To deduct a credit, pass a negative integer representing the number
|
||||
of coins per credit to <Link class='GameState' function='InsertCoin'>InsertCoin</Link>.
|
||||
</Function>
|
||||
<Function name='IsAnExtraStage' return='bool' arguments=''>
|
||||
Returns <code>true</code> if this is an extra stage.
|
||||
</Function>
|
||||
@@ -2538,12 +2569,18 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='SetCurrentCourse' return='void' arguments='Course course'>
|
||||
Sets the current Course to <code>course</code>.
|
||||
</Function>
|
||||
<Function name='SetCurrentPlayMode' return='void' arguments='PlayMode pm'>
|
||||
Sets the current PlayMode to <code>pm</code>.
|
||||
</Function>
|
||||
<Function name='SetCurrentSong' return='void' arguments='Song song'>
|
||||
Sets the current Song to <code>song</code>.
|
||||
</Function>
|
||||
<Function name='SetCurrentSteps' return='void' arguments='PlayerNumber pn, Steps steps'>
|
||||
Sets Player <code>pn</code>'s current Steps to <code>steps</code>.
|
||||
</Function>
|
||||
<Function name='SetCurrentStyle' return='void' arguments='Style style or string sStyle'>
|
||||
Sets current Style to the provided style. Either a style object or a style string can be provided. If current steps for either player are not valid in the new style, they will be cleared.
|
||||
</Function>
|
||||
<Function name='SetCurrentTrail' return='void' arguments='Trail trail'>
|
||||
Sets the current Trail to <code>trail</code>.
|
||||
</Function>
|
||||
@@ -2822,6 +2859,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='ChangeSort' return='bool' arguments='SortOrder so'>
|
||||
Changes the sort order of the wheel. Returns <code>true</code> if the order was changed.
|
||||
</Function>
|
||||
<Function name='GetSelectedSection' return='string' arguments=''>
|
||||
Returns the name of the currently selected section.
|
||||
</Function>
|
||||
<Function name='IsRouletting' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the MusicWheel is currently handling Roulette selection.
|
||||
</Function>
|
||||
@@ -2962,117 +3002,101 @@ save yourself some time, copy this for undocumented things:
|
||||
Enum type options are almost identical to bool type. They take and return an enum value.<br />
|
||||
For brevity, the functions are only given a description if the option requires careful handling or does not follow the float or bool interfaces.<br />
|
||||
</Description>
|
||||
<Function name='Alternate' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='AttackMines' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='BatteryLives' return='int' arguments='int num'> </Function>
|
||||
<Function name='Backwards' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Beat' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Big' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Blink' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Blind' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='BMRize' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Boomerang' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Boost' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Brake' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Bumpy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Centered' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='CMod' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player has a CMod set, returns the value of that CMod and its associated approach speed. Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets the CMod to the value and disables any XMod or MMod that is set.<br />
|
||||
If the optional second argument is passed, sets the speed at which the transition occurs.
|
||||
</Function>
|
||||
<Function name='Confusion' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Cover' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Cross' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Dark' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Dizzy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Distant' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Distant (zero skew and positive tilt), returns the value of tilt and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to value and skew to zero.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='DrainSetting' return= 'DrainType' arguments='DrainType type'> </Function>
|
||||
<Function name='Drunk' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Echo' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Expand' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='FailSetting' return='FailType' arguments='FailType'>
|
||||
Sets the <Link class='ENUM' function='FailType' /> for the player, if the optional argument is provided. Returns the <Link class='ENUM' function='FailType' /> that was previously set.
|
||||
</Function>
|
||||
<Function name='Flip' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Floored' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='GetStepAttacks' return='bool' argument=''>
|
||||
Returns true if step attacks or random attacks are enabled.
|
||||
</Function>
|
||||
<Function name='IsEasierForCourseAndTrail' return='bool' arguments='Course c, Trail t'>
|
||||
Returns <code>true</code> if the current PlayerOptions makes the current Course/Trail easier.
|
||||
</Function>
|
||||
<Function name='IsEasierForSongAndSteps' return='bool' arguments='Song so, Steps st'>
|
||||
Returns <code>true</code> if the current PlayerOptions makes the current Song/Steps easier.
|
||||
</Function>
|
||||
<Function name='TimeSpacing' return='float, float' arguments='float value, float approach_speed'>
|
||||
TimeSpacing is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It controls whether the speed mod is in X mode or C mode. It should only be set to 0 or 1, and is only a float value to allow tweening between the two states.
|
||||
<Function name='Hallway' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Hallway (zero skew and negative tilt), returns the value of tilt and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to negative value and skew to zero.<br />
|
||||
Pass in a positive value for the familiar meaning of Hallway.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='Hidden' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='HiddenOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='HoldRolls' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Incoming' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Incoming ((positive skew and negative tilt) or (negative skew and positive tilt)), returns the value of skew and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to negative value and skew to value.<br />
|
||||
Pass in a positive value for the familiar meaning of Incoming.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='Invert' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Left' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='LifeSetting' return='LifeType' arguments='LifeType type'> </Function>
|
||||
<Function name='Little' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='MaxScrollBPM' return='float, float' arguments='float value, float approach_speed'>
|
||||
MaxScrollBPM is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It is the setting for the MMod.<br />
|
||||
MMods are not tweenable or settable on ScreenGameplay. Use XMods if you need such an effect.
|
||||
</Function>
|
||||
<Function name='ScrollSpeed' return='float, float' arguments='float value, float approach_speed'>
|
||||
ScrollSpeed is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It is the setting for the XMod.
|
||||
</Function>
|
||||
<Function name='ScrollBPM' return='float, float' arguments='float value, float approach_speed'>
|
||||
ScrollBPM is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It is the setting for the CMod.
|
||||
</Function>
|
||||
<Function name='Boost' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Brake' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Wave' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Expand' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Boomerang' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Drunk' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Dizzy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Confusion' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Mini' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Tiny' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Flip' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Invert' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Tornado' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Tipsy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Bumpy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Beat' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Xmode' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Twirl' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Roll' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Hidden' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='HiddenOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Sudden' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='SuddenOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Stealth' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Blink' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='RandomVanish' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Reverse' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Split' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Alternate' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Cross' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Centered' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Dark' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Blind' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Cover' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='RandAttack' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='NoAttack' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='PlayerAutoPlay' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Tilt' return='float, float' arguments='float value, float approach_speed'>
|
||||
Tilt is one of the mods for controlling the perspective. Use Overhead, Distant, Incoming, Space, Distant, or Hallway for controlling the perspective in the old way.<br />
|
||||
Tilt tilts the note field forward and back.
|
||||
</Function>
|
||||
<Function name='Skew' return='float, float' arguments='float value, float approach_speed'>
|
||||
Skew is one of the mods for controlling the perspective. Use Overhead, Distant, Incoming, Space, Distant, or Hallway for controlling the perspective in the old way.<br />
|
||||
Skew moves the vanishing point for the note field away from the center of the screen.<br />
|
||||
Skew has no effect in single mode if Center1Player is true.<br />
|
||||
Skew has no effect in double mode.<br />
|
||||
</Function>
|
||||
<Function name='Passmark' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='RandomSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='TurnNone' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Mirror' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Backwards' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Left' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Right' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Shuffle' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='SoftShuffle' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='SuperShuffle' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoHolds' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoRolls' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoMines' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Little' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Wide' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Big' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Quick' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='BMRize' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Skippy' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Mines' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='AttackMines' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Echo' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Stomp' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Planted' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Floored' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Twister' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='HoldRolls' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Mini' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Mirror' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='MMod' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player has a MMod set, returns the value of that MMod and its associated approach speed. Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets the MMod to the value and disables any CMod or XMod that is set.<br />
|
||||
If the optional second argument is passed, sets the speed at which the transition occurs.<br />
|
||||
MMods are not tweenable or settable on ScreenGameplay. Use XMods if you need such an effect.
|
||||
</Function>
|
||||
<Function name='MuteOnError' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoAttack' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='NoFakes' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoHolds' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoJumps' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoHands' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoLifts' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoFakes' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoQuads' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoStretch' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='MuteOnError' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='UsingReverse' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the player is using reverse. (equivalent to <code>GetReverse() == 1.0</code>)
|
||||
</Function>
|
||||
<Function name='NoMines' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoRolls' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='NoteSkin' return='string, bool' arguments='string name'>
|
||||
Sets the NoteSkin to the named noteskin, unless name is nil or the noteskin does not exist. Returns the name of the previous noteskin and whether the set attempt succeeded.<br />
|
||||
Changing the noteskin during a song is not supported.<br />
|
||||
@@ -3080,58 +3104,77 @@ save yourself some time, copy this for undocumented things:
|
||||
note_name= options:NoteSkin() -- Sets note_name to the player's current noteskin.<br />
|
||||
prev_note_name, succeeded= options:NoteSkin("cel") -- Sets prev_note_name to the noteskin the player had set, changes the current noteskin to "cel", sets succeeded to true if the the "cel" noteskin exists.<br />
|
||||
</Function>
|
||||
<Function name='FailSetting' return='FailType' arguments='FailType'>
|
||||
Sets the <Link class='ENUM' function='FailType' /> for the player, if the optional argument is provided. Returns the <Link class='ENUM' function='FailType' /> that was previously set.
|
||||
<Function name='Overhead' return='bool' arguments='bool'>
|
||||
If the player is using Overhead (0 tilt, 0 skew), returns true.<br />
|
||||
If true is passed, sets the tilt and skew to 0.
|
||||
</Function>
|
||||
<Function name='CMod' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player has a CMod set, returns the value of that CMod and its associated approach speed. Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets the CMod to the value and disables any XMod or MMod that is set.<br />
|
||||
If the optional second argument is passed, sets the speed at which the transition occurs.
|
||||
</Function>
|
||||
<Function name='XMod' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player has a XMod set, returns the value of that XMod and its associated approach speed. Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets the XMod to the value and disables any CMod or MMod that is set.<br />
|
||||
If the optional second argument is passed, sets the speed at which the transition occurs.
|
||||
</Function>
|
||||
<Function name='MMod' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player has a MMod set, returns the value of that MMod and its associated approach speed. Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets the MMod to the value and disables any CMod or XMod that is set.<br />
|
||||
If the optional second argument is passed, sets the speed at which the transition occurs.<br />
|
||||
MMods are not tweenable or settable on ScreenGameplay. Use XMods if you need such an effect.
|
||||
</Function>
|
||||
<Function name='Overhead' return='bool' arguments='bool'>
|
||||
If the player is using Overhead (0 tilt, 0 skew), returns true.<br />
|
||||
If true is passed, sets the tilt and skew to 0.
|
||||
</Function>
|
||||
<Function name='Incoming' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Incoming ((positive skew and negative tilt) or (negative skew and positive tilt)), returns the value of skew and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to negative value and skew to value.<br />
|
||||
Pass in a positive value for the familiar meaning of Incoming.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='Space' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Space ((positive skew and positive tilt) or (negative skew and negative tilt)), returns the value of skew and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to value and skew to value.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='Hallway' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Hallway (zero skew and negative tilt), returns the value of tilt and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to negative value and skew to zero.<br />
|
||||
Pass in a positive value for the familiar meaning of Hallway.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='Distant' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Distant (zero skew and positive tilt), returns the value of tilt and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to value and skew to zero.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='GetStepAttacks' return='bool' argument=''>
|
||||
Returns true if step attacks or random attacks are enabled.
|
||||
</Function>
|
||||
<Function name='Passmark' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Planted' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='PlayerAutoPlay' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Quick' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='RandAttack' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='RandomSpeed' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='RandomVanish' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Reverse' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Right' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Roll' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='ScrollBPM' return='float, float' arguments='float value, float approach_speed'>
|
||||
ScrollBPM is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It is the setting for the CMod.
|
||||
</Function>
|
||||
<Function name='ScrollSpeed' return='float, float' arguments='float value, float approach_speed'>
|
||||
ScrollSpeed is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It is the setting for the XMod.
|
||||
</Function>
|
||||
<Function name='Shuffle' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Skew' return='float, float' arguments='float value, float approach_speed'>
|
||||
Skew is one of the mods for controlling the perspective. Use Overhead, Distant, Incoming, Space, Distant, or Hallway for controlling the perspective in the old way.<br />
|
||||
Skew moves the vanishing point for the note field away from the center of the screen.<br />
|
||||
Skew has no effect in single mode if Center1Player is true.<br />
|
||||
Skew has no effect in double mode.<br />
|
||||
</Function>
|
||||
<Function name='Skippy' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='SoftShuffle' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Space' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player is using Space ((positive skew and positive tilt) or (negative skew and negative tilt)), returns the value of skew and its approach_speed.<br />
|
||||
Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets tilt to value and skew to value.<br />
|
||||
If the optional second argument is passed, sets the approach_speed for skew and tilt to it.
|
||||
</Function>
|
||||
<Function name='Split' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Stealth' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Stomp' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Sudden' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='SuddenOffset' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='SuperShuffle' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='TimeSpacing' return='float, float' arguments='float value, float approach_speed'>
|
||||
TimeSpacing is one of the variables for controlling the speed mod.<br />
|
||||
Use CMod, XMod, or MMod to set the speed mod unless you have a good reason not to.<br />
|
||||
It controls whether the speed mod is in X mode or C mode. It should only be set to 0 or 1, and is only a float value to allow tweening between the two states.
|
||||
</Function>
|
||||
<Function name='Tilt' return='float, float' arguments='float value, float approach_speed'>
|
||||
Tilt is one of the mods for controlling the perspective. Use Overhead, Distant, Incoming, Space, Distant, or Hallway for controlling the perspective in the old way.<br />
|
||||
Tilt tilts the note field forward and back.
|
||||
</Function>
|
||||
<Function name='Tiny' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Tipsy' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Tornado' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='TurnNone' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='Twirl' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Twister' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='UsingReverse' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the player is using reverse. (equivalent to <code>GetReverse() == 1.0</code>)
|
||||
</Function>
|
||||
<Function name='Wave' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
<Function name='Wide' return='bool' arguments='bool value'> </Function>
|
||||
<Function name='XMod' return='float, float' arguments='float value, float approach_speed'>
|
||||
If the player has a XMod set, returns the value of that XMod and its associated approach speed. Returns nil otherwise.<br />
|
||||
If the optional first argument is passed, sets the XMod to the value and disables any CMod or MMod that is set.<br />
|
||||
If the optional second argument is passed, sets the speed at which the transition occurs.
|
||||
</Function>
|
||||
<Function name='Xmode' return='float, float' arguments='float value, float approach_speed'> </Function>
|
||||
</Class>
|
||||
<Class name='PlayerStageStats'>
|
||||
<Function name='FailPlayer' return='bool' arguments=''>
|
||||
@@ -3182,6 +3225,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetGrade' return='Grade' arguments=''>
|
||||
Returns the player's grade.
|
||||
</Function>
|
||||
<Function name='GetHighScore' return='HighScore' arguments=''>
|
||||
Returns the player's HighScore.
|
||||
</Function>
|
||||
<Function name='GetHoldNoteScores' return='int' arguments='HoldNoteScore hns'>
|
||||
Returns the number of judgments for a specified HoldNoteScore.
|
||||
</Function>
|
||||
@@ -3580,7 +3626,7 @@ save yourself some time, copy this for undocumented things:
|
||||
Return the width of the display.
|
||||
</Function>
|
||||
<Function name='GetFPS' return='int' arguments=''>
|
||||
Return the FPS.
|
||||
Return the number of frames per second.
|
||||
</Function>
|
||||
<Function name='GetVPF' return='int' arguments=''>
|
||||
Return the VPF.
|
||||
@@ -3676,6 +3722,9 @@ save yourself some time, copy this for undocumented things:
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='RageTexture'>
|
||||
<Function name='GetNumFrames' return='int' arguments=''>
|
||||
Returns the number of frames in this texture.
|
||||
</Function>
|
||||
<Function name='GetTextureCoordRect' return='{float}' arguments=''>
|
||||
Return the texture coordinate rectangle as <code>{left, top, right, bottom}</code>.
|
||||
</Function>
|
||||
@@ -3688,6 +3737,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='rate' return='void' arguments='float fRate'>
|
||||
Sets the animation or movie playback rate to <code>fRate</code>.
|
||||
</Function>
|
||||
<Function name='Reload' return='void' arguments=''>
|
||||
Reloads the texture.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='RollingNumbers'>
|
||||
<Function name='Load' return='void' arguments='string sGroupName'>
|
||||
@@ -3743,6 +3795,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='RemoveInputCallback' return='void' arguments='function callback'>
|
||||
This removes the callback from the list.
|
||||
</Function>
|
||||
<Function name='SetNextScreenName' return='void' arguments='string name'>
|
||||
Sets the NextScreen value to name.
|
||||
</Function>
|
||||
<Function name='String' theme='_fallback' return='string' arguments='string sName'>
|
||||
[02 Other.lua] Gets a string from the current Screen in the current language.
|
||||
</Function>
|
||||
@@ -3952,6 +4007,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='Cancel' return='void' arguments=''>
|
||||
Tells the screen to go to the previous screen.
|
||||
</Function>
|
||||
<Function name='IsTransitioning' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the screen is currently transitioning.
|
||||
</Function>
|
||||
<Function name='StartTransitioningScreen' return='void' arguments='string sScreenMsg'>
|
||||
Tells the screen to go to play its Out transition, and then posts the ScreenMessage <code>sScreenMsg</code>. To go to the next screen, use "SM_GoToNextScreen" as the argument.
|
||||
</Function>
|
||||
@@ -4041,6 +4099,9 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetSongFilePath' return='string' arguments=''>
|
||||
Returns the songfile path.
|
||||
</Function>
|
||||
<Function name='GetStageCost' theme='_fallback' return='int' arguments=''>
|
||||
[02 Other.lua] Returns the number of stages this song costs.
|
||||
</Function>
|
||||
<Function name='GetStepsByStepsType' return='{Steps}' arguments='StepsType st'>
|
||||
Returns a table of Steps that have StepsType <code>st</code>.
|
||||
</Function>
|
||||
@@ -4267,14 +4328,8 @@ save yourself some time, copy this for undocumented things:
|
||||
<Description>
|
||||
See the description for PlayerOptions. The functions follow the same design.
|
||||
</Description>
|
||||
<Function name='LifeSetting' return='LifeType' arguments='LifeType type'>
|
||||
</Function>
|
||||
<Function name='DrainSetting' return= 'DrainType' arguments='DrainType type'>
|
||||
</Function>
|
||||
<Function name='AutosyncSetting' return='AutosyncType' arguments='AutosyncType type'>
|
||||
</Function>
|
||||
<Function name='BatteryLives' return='int' arguments='int num'>
|
||||
</Function>
|
||||
<Function name='AssistClap' return='bool' arguments='bool b'>
|
||||
</Function>
|
||||
<Function name='AssistMetronome' return='bool' arguments='bool b'>
|
||||
@@ -4578,7 +4633,7 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetStyleType' return='StyleType' arguments=''>
|
||||
Returns the StyleType for this Style.
|
||||
</Function>
|
||||
<Function name='GetColumnInfo' return='{Track= int, XOffset= int, Name= string}' arguments='int column'>
|
||||
<Function name='GetColumnInfo' return='{int, int, string}' arguments='int column'>
|
||||
Returns a table containing the Track, XOffset, and Name of the column.
|
||||
</Function>
|
||||
<Function name='GetColumnDrawOrder' return='int' arguments='int column'>
|
||||
@@ -4591,6 +4646,75 @@ save yourself some time, copy this for undocumented things:
|
||||
Returns <code>true</code> if the Style needs to be zoomed out with two players.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='TapNote'>
|
||||
<Function name='GetTapNoteType' return='TapNoteType' arguments=''>
|
||||
Returns the <Link class='TapNoteType' /> of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetTapNoteSubType' return='TapNoteSubType' arguments=''>
|
||||
Returns the <Link class='TapNoteSubType' /> of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetTapNoteSource' return='TapNoteSource' arguments=''>
|
||||
Returns the <Link class='TapNoteSource' /> of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetTapNoteResult' return='TapNoteResult' arguments=''>
|
||||
Returns the <Link class='TapNoteResult' /> of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetPlayerNumber' return='PlayerNumber' arguments=''>
|
||||
Returns the <Link class='PlayerNumber' /> of the Tap Note. Relevant for routine steps.
|
||||
</Function>
|
||||
<Function name='GetAttackModifiers' return='string' arguments=''>
|
||||
Returns the Attack Modifiers of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetAttackDuration' return='float' arguments=''>
|
||||
Returns the Attack Duration of the Tap Note in seconds.
|
||||
</Function>
|
||||
<Function name='GetKeysoundIndex' return='int' arguments=''>
|
||||
Returns the Keysound Index of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetHoldDuration' return='float' arguments=''>
|
||||
Returns the Hold Duration of the Tap Note in beats.
|
||||
</Function>
|
||||
<Function name='GetHoldNoteResult' return='HoldNoteResult' arguments=''>
|
||||
Returns the <Link class='HoldNoteResult' /> of the Tap Note.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='TapNoteResult'>
|
||||
<Function name='GetTapNoteScore' return='TapNoteScore' arguments=''>
|
||||
Returns the <Link class='TapNoteScore' /> of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetTapNoteOffset' return='float' arguments=''>
|
||||
Returns the TapNotOffset of the Tap Note.
|
||||
</Function>
|
||||
<Function name='GetHidden' return='bool' arguments=''>
|
||||
Returns true if the Tap Note was judged with a result that would stop it from drawing.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='HoldNoteResult'>
|
||||
<Function name='GetHoldNoteScore'>
|
||||
Returns the <Link class='HoldNoteScore' /> of the Hold Note.
|
||||
</Function>
|
||||
<Function name='GetLife' return='float' arguments=''>
|
||||
Returns the life of the Hold Note.
|
||||
</Function>
|
||||
<Function name='GetOverlappedTime' return='float' arguments=''>
|
||||
Returns the amount of time the hold has overlapped the target.
|
||||
</Function>
|
||||
<Function name='GetLastHeldBeat' return='float' arguments=''>
|
||||
Returns the last beat the Hold Note was held.
|
||||
</Function>
|
||||
<Function name='GetCheckpointsHit' return='int' arguments=''>
|
||||
Returns the number of checkpoints hit.
|
||||
</Function>
|
||||
<Function name='GetCheckpointsMissed' return='int' arguments=''>
|
||||
Returns the number of checkpoints missed.
|
||||
</Function>
|
||||
<Function name='GetHeld' return='bool' arguments=''>
|
||||
Returns true if the note was initiated and is being held.
|
||||
</Function>
|
||||
<Function name='GetActive' return='bool' arguments=''>
|
||||
Returns true if the note was initiated.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='TextBanner'>
|
||||
<Function name='Load' return='void' arguments='string sMetricsGroup'>
|
||||
Loads the TextBanner from the specified metrics group.
|
||||
@@ -4678,8 +4802,29 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='RunLuaScripts' return='void' arguments='string sMask'>
|
||||
|
||||
</Function>
|
||||
<Function name='SetTheme' return='void' arguments='string theme'>
|
||||
Changes the current theme.<br />
|
||||
After the theme changes, the screen specified by the Common::AfterThemeChangeScreen metric will be loaded.<br />
|
||||
The Common::InitialScreen metric will be used if Common::AfterThemeChangeScreen is blank or invalid.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='TimingData'>
|
||||
<Description>
|
||||
GetBPMsAndTimes, GetStops, GetDelays, GetLabels, GetWarps, GetCombos, GetTimeSignatures, GetTickcounts, GetFakes, GetScrolls, and GetSpeeds all have two different modes.<br />
|
||||
If the metric TimingData:GetReturnsNumbers is false (the default), they return tables of strings. The strings are numbers separated by '='.<br />
|
||||
If the metric TimingData:GetReturnsNumbers is true, they return tables of tables, and the inner tables contain numbers as described for each function.<br />
|
||||
The first form is kept around and is the default for compatibility with older themes. The advantage of the second form is that you no longer need to have a bit of code in your theme to transform the string into a table of numbers before you can use it.<br />
|
||||
Example:<br />
|
||||
local bpmsand= timing_data:GetBPMsAndTimes()<br />
|
||||
for i, s in ipairs(bpmsand) do<br />
|
||||
local sand= split("=", s)<br />
|
||||
bpmsand[i]= {tonumber(sand[1]), tonumber(sand[2])}<br />
|
||||
end<br />
|
||||
-- do something that looks at all the bpms and times. <br />
|
||||
Becomes:<br />
|
||||
local bpmsand= timing_data:GetBPMsAndTimes()<br />
|
||||
-- do something that looks at all the bpms and times. <br />
|
||||
</Description>
|
||||
<Function name='GetActualBPM' return='{float}' arguments=''>
|
||||
Returns the minimum and maximum BPM of the song in a table (in that order).
|
||||
</Function>
|
||||
@@ -4689,44 +4834,44 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetBPMAtBeat' return='float' arguments='float fBeat'>
|
||||
Returns the BPM at <code>fBeat</code>.
|
||||
</Function>
|
||||
<Function name='GetBPMs' return='{string}' arguments=''>
|
||||
Returns a table of the BPMs as strings.
|
||||
<Function name='GetBPMs' return='{float}' arguments=''>
|
||||
Returns a table of the BPMs as floats.
|
||||
</Function>
|
||||
<Function name='GetBPMsAndTimes' return='{string}' arguments=''>
|
||||
Returns a table of the BPMs and the times they happen as strings with the format "<code>beat=BPM</code>".
|
||||
<Function name='GetBPMsAndTimes' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the BPMs and the times they happen as tables. The first value is the beat. The second value is the bpm.
|
||||
</Function>
|
||||
<Function name='GetElapsedTimeFromBeat' return='float' arguments='float fBeat'>
|
||||
Returns the elapsed time from <code>fBeat</code>.
|
||||
</Function>
|
||||
<Function name='GetStops' return='{string}' arguments=''>
|
||||
Returns a table of the Stops and the times they happen as strings with the format "<code>beat=stop seconds</code>".
|
||||
<Function name='GetStops' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Stops and the times they happen as tables. The first value is the beat. The second value is the length.
|
||||
</Function>
|
||||
<Function name='GetDelays' return='{string}' arguments=''>
|
||||
Returns a table of the Delays and the times they happen as strings with the format "<code>beat=stop seconds</code>".
|
||||
<Function name='GetDelays' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Delays and the times they happen as tables. The first value is the beat. The second value is the length.
|
||||
</Function>
|
||||
<Function name='GetLabels' return='{string}' arguments=''>
|
||||
Returns a table of the Labels and the times they happen as strings with the format "<code>beat=label name</code>."
|
||||
<Function name='GetLabels' return='{{float, string}}' arguments=''>
|
||||
Returns a table of the Labels and the times they happen as tables. The first value is the beat. The second value is the label.
|
||||
</Function>
|
||||
<Function name='GetWarps' return='{string}' arguments=''>
|
||||
Returns a table of the Warps and the times they happen as strings with the format "<code>beat=number of beats warped over</code>."
|
||||
<Function name='GetWarps' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Warps and the times they happen as tables. The first value is the beat. The second value is the number of beats to warp over.
|
||||
</Function>
|
||||
<Function name='GetCombos' return='{string}' arguments=''>
|
||||
Returns a table of the Combos and the times they happen as strings with the format "<code>beat=combo value</code>."
|
||||
<Function name='GetCombos' return='{{float, float, float}}' arguments=''>
|
||||
Returns a table of the Combos and the times they happen as tables. The first value is the beat. The second value is the combo. The third value is the miss combo.
|
||||
</Function>
|
||||
<Function name='GetTimeSignatures' return='{string}' arguments=''>
|
||||
Returns a table of the Time Signatures and the times they happen as strings with the format "<code>beat=beats per measure (numerator)=denominator</code>."
|
||||
<Function name='GetTimeSignatures' return='{{float, float, float}}' arguments=''>
|
||||
Returns a table of the Time Signatures and the times they happen as tables. The first value is the beat. The second value is the numerator. The third value is the denominator.
|
||||
</Function>
|
||||
<Function name='GetTickcounts' return='{string}' arguments=''>
|
||||
Returns a table of the Tickcountss and the times they happen as strings with the format "<code>beat=number of ticks per beat</code>."
|
||||
<Function name='GetTickcounts' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Tickcounts and the times they happen as tables. The first value is the beat. The second value is the number of ticks per beat.
|
||||
</Function>
|
||||
<Function name='GetFakes' return='{string}' arguments=''>
|
||||
Returns a table of the Fakes and the times they happen as strings with the format "<code>beat=number of beats to not judge</code>."
|
||||
<Function name='GetFakes' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Fakes and the times they happen as tables. The first value is the beat. The second value is the number of beats to not judge.
|
||||
</Function>
|
||||
<Function name='GetScrolls' return='{string}' arguments=''>
|
||||
Returns a table of the Scrolls and the times they happen as strings with the format "<code>beat=scroll rate ratio</code>."
|
||||
<Function name='GetScrolls' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Scrolls and the times they happen as tables. The first value is the beat. The second value is the scroll rate ratio.
|
||||
</Function>
|
||||
<Function name='GetSpeeds' return='{string}' arguments=''>
|
||||
Returns a table of the Speeds and the times they happen as strings with the format "<code>beat=scroll rate ratio=length of time to fully activate=unit of activation (0 for beats, 1 for seconds)</code>."
|
||||
<Function name='GetSpeeds' return='{{float, float}}' arguments=''>
|
||||
Returns a table of the Speeds and the times they happen as tables. The first value is the beat. The second value is the scroll rate ratio. The third value is the length of time to fully activate. The fourth value is the unit of activation (0 for beats, 1 for seconds).
|
||||
</Function>
|
||||
<Function name='HasBPMChanges' return='bool' arguments=''>
|
||||
Returns <code>true</code> if the TimingData contains BPM changes.
|
||||
@@ -4954,6 +5099,10 @@ save yourself some time, copy this for undocumented things:
|
||||
<Function name='GetType' return='WheelItemDataType' arguments=''>
|
||||
Returns the type of this wheel item.
|
||||
</Function>
|
||||
<Function name='IsLoaded' return='bool' arguments=''>
|
||||
Returns whether the wheel item has been loaded yet. If this function returns false, calling any other WheelItemBase function will result in an error. <br />
|
||||
A specific case where this is known to happen is commands that trigger on CurrentSongChanged because the music wheel clears the current song before it finishes loading if the current song is longer than the number of stages remaining.
|
||||
</Function>
|
||||
</Class>
|
||||
<Class name='WorkoutGraph'>
|
||||
<Function name='SetFromCurrentWorkout' return='void' arguments=''>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Used by Pocket DDR (http://www.stepmania.com/forums/showthread.php?t=6621).
|
||||
Used by Pocket DDR (http://old.stepmania.com/forums/showthread.php?t=6621).
|
||||
Basically a compressed version of a .SM that includes the banner and background
|
||||
in the file as well.
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
-- A simple ActorFrame example with a couple Actor children and attributes.
|
||||
-- An ActorFrame is used to contain other actors, giving them a common origin
|
||||
-- and organizing them.
|
||||
|
||||
Def.ActorFrame{
|
||||
Name= "Simple frame",
|
||||
-- Amount to multiply the delta time by when updating.
|
||||
UpdateRate= 2,
|
||||
|
||||
-- The angular width of the field of view used to render children.
|
||||
-- This will ruin your frame rate, do not use. -1 means no effect.
|
||||
--FOV= -1,
|
||||
-- The position of the vanishing point used for the FOV rendering.
|
||||
--VanishX= _screen.cx,
|
||||
--VanishY= _screen.cy,
|
||||
|
||||
-- Whether to apply lighting. Incomplete implementation, do not use.
|
||||
--Lighting= true,
|
||||
-- Different color values used when lighting is applied.
|
||||
--AmbientColor= ".75,.75,.75",
|
||||
--DiffuseColor= "0,0,.25",
|
||||
--SpecularColor= ".25,0,0",
|
||||
|
||||
-- A couple children, just to have something to list later.
|
||||
Def.Actor{Name= "Simple child"},
|
||||
Def.Actor{Name= "Other child"},
|
||||
|
||||
InitCommand= function(self)
|
||||
local children= self:GetChildren()
|
||||
for name, child in pairs(children) do
|
||||
Trace("Has child " .. name)
|
||||
end
|
||||
end
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
-- A simple ActorScroller example with a couple of BitmapText children.
|
||||
-- ActorScrollers are used to create scrolling displays of other Actors.
|
||||
|
||||
Def.ActorScroller{
|
||||
-- (float) Number of items to have visible at one time.
|
||||
-- ScrollThroughAllItems divides this value by 2.
|
||||
NumItemsToDraw=14, -- Default value is 7 if this parameter is omitted.
|
||||
|
||||
-- (float) The number of seconds to show each item.
|
||||
SecondsPerItem=1, -- Default value is 1 if this parameter is omitted.
|
||||
|
||||
-- Transforms the ActorScroller's children. Usually used for scrolling.
|
||||
-- The most important part of an ActorScroller.
|
||||
-- This example spaces each item out 32 pixels vertically.
|
||||
|
||||
-- "offset" represents the offset from the center of the scroller.
|
||||
TransformFunction=function(self,offset,itemIndex,numItems)
|
||||
self:y(32*offset)
|
||||
end,
|
||||
|
||||
-- (int) "1 == one evaluation per position"
|
||||
-- default value is 1 if this parameter is omitted.
|
||||
--Subdivisions=1,
|
||||
|
||||
-- (bool) A built-in mask for hiding elements. Disabled by default.
|
||||
--UseMask=false,
|
||||
|
||||
-- (float) Set the width and height of the mask. Only used if UseMask is true.
|
||||
-- Defaults for both are 0.
|
||||
--MaskWidth=0,
|
||||
--MaskHeight=0,
|
||||
|
||||
-- children (items to scroll)
|
||||
-- CAVEAT: BitmapTexts have to be wrapped in ActorFrames in order to be colored.
|
||||
-- This is a long standing issue (ITG? ITG2?)
|
||||
Def.ActorFrame{
|
||||
Def.BitmapText{
|
||||
Name="ScrollItem1",
|
||||
Font="Common Normal",
|
||||
Text="Scroll Item 1",
|
||||
InitCommand=cmd(diffuse,color("#FF0000")),
|
||||
},
|
||||
},
|
||||
Def.ActorFrame{
|
||||
Def.BitmapText{
|
||||
Name="ScrollItem2",
|
||||
Font="Common Normal",
|
||||
Text="Scroll Item 2",
|
||||
InitCommand=cmd(glow,color("#00FF0088")),
|
||||
},
|
||||
},
|
||||
Def.BitmapText{
|
||||
Name="ScrollItem3",
|
||||
Font="Common Normal",
|
||||
Text="Scroll Item 3",
|
||||
InitCommand=cmd(bob;effectmagnitude,8,0,4),
|
||||
},
|
||||
|
||||
-- Scroller commands
|
||||
InitCommand=cmd(Center),
|
||||
OnCommand=cmd(scrollwithpadding,8,8),
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
-- This example describes everything you need to do in your theme to allow the
|
||||
-- player to enter their heart rate for calorie calculation.
|
||||
|
||||
-- First, the metrics you'll need to add to metrics.ini.
|
||||
-- [ScreenHeartEntry]
|
||||
-- # The HeartEntryEnabled metric must be set to true so the branching logic
|
||||
-- # will know that your theme supports the screen.
|
||||
-- HeartEntryEnabled=true
|
||||
-- # ScreenHeartEntry uses ScreenWithMenuElements as its fallback, so the
|
||||
-- # metrics in the ScreenWithMenuElements section will also apply to it.
|
||||
|
||||
-- Now for the body of the screen. The things discussed here will have to go
|
||||
-- in BGAnimations/ScreenHeartEntry overlay.lua
|
||||
|
||||
-- The positions the numpads for entering the heart rate will be placed at.
|
||||
local heart_xs= {
|
||||
[PLAYER_1]= SCREEN_CENTER_X * 0.625,
|
||||
[PLAYER_2]= SCREEN_CENTER_X * 1.375,
|
||||
}
|
||||
|
||||
-- heart_entries is a table that will be used to store the numpads that the
|
||||
-- players will use.
|
||||
local heart_entries= {}
|
||||
-- Note that a numpad is only created for a player if that player is enabled
|
||||
-- and they have the flag set in their profile to enable heart rate entry.
|
||||
for i, pn in ipairs(GAMESTATE:GetEnabledPlayers()) do
|
||||
local profile= PROFILEMAN:GetProfile(pn)
|
||||
if profile and profile:GetIgnoreStepCountCalories() then
|
||||
-- This is probably the part you'll want to configure the most, the
|
||||
-- numpads. _fallback/Scripts/04 NumPadEntry.lua discusses configuring a
|
||||
-- numpad in detail.
|
||||
heart_entries[pn]= new_numpad_entry{
|
||||
Name= pn .. "_heart_entry",
|
||||
InitCommand= cmd(xy, heart_xs[pn], SCREEN_CENTER_Y+48),
|
||||
-- Settings for value are optional, but you will probably want to
|
||||
-- change them, so they are provided in this example.
|
||||
-- If a simple colored BitmapText isn't what you want for displaying
|
||||
-- the value being entered, read _fallback/Scripts/04 NumPadEntry.lua.
|
||||
value_pos= {0, -48},
|
||||
value_font= "Common Normal",
|
||||
value_color= PlayerColor(pn),
|
||||
-- Optional prompt settings.
|
||||
prompt_pos= {0, -72},
|
||||
prompt_font= "Common Normal",
|
||||
prompt_color= Color.White,
|
||||
prompt_text= THEME:GetString("ScreenHeartEntry", "Heart Rate"),
|
||||
-- Optional button settings.
|
||||
button_positions= {
|
||||
{-30, -24}, {0, -24}, {30, -24},
|
||||
{-30, 0}, {0, 0}, {30, 0},
|
||||
{-30, 24}, {0, 24}, {30, 24},
|
||||
{-30, 48}, {0, 48}, {30, 48}
|
||||
},
|
||||
button_font= "Common Normal",
|
||||
button_color= Color.White,
|
||||
-- Cursor settings. You probably want something more than a quad for
|
||||
-- the cursor, so this example includes the command the cursor needs
|
||||
-- to support to do its job.
|
||||
cursor= Def.Quad{
|
||||
InitCommand= function(self)
|
||||
self:SetWidth(16)
|
||||
self:SetHeight(28)
|
||||
self:diffuse(PlayerDarkColor(pn))
|
||||
end,
|
||||
-- MoveCommand is used to move the cursor to a button.
|
||||
MoveCommand= function(self, param)
|
||||
-- param contains the position to move to.
|
||||
self:stoptweening()
|
||||
self:decelerate(0.15)
|
||||
self:xy(param[1], param[2])
|
||||
end,
|
||||
-- FitCommand is used to change the size of the cursor to fit the
|
||||
-- button after it has been moved.
|
||||
FitCommand= function(self, param)
|
||||
-- param is the actor for the button.
|
||||
-- Note that this does not use stoptweening or finishtweening.
|
||||
-- This is because it is executed with playcommand immediately
|
||||
-- after MoveCommand, and thus the state changes it makes combine
|
||||
-- with the actor state at the end of MoveCommand.
|
||||
self:SetWidth(param:GetWidth())
|
||||
end
|
||||
},
|
||||
-- cursor_draw controls whether the cursor is above or below the
|
||||
-- buttons.
|
||||
cursor_draw= "first", -- stick it under the buttons.
|
||||
-- Don't let the player enter a silly value.
|
||||
max_value= 300,
|
||||
-- Automatically move the cursor to the done button when the player has
|
||||
-- entered three digits.
|
||||
auto_done_value= 100,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
-- This function is the input callback. It handles button presses from the
|
||||
-- player, passing them to the numpad so the player can enter their heart
|
||||
-- rate, and detecting when the player is done.
|
||||
-- See the AddInputCallback function for the Screen class in Lua.xml for a
|
||||
-- full description of the event argument.
|
||||
local function input(event)
|
||||
local pn= event.PlayerNumber
|
||||
-- If the PlayerNumber isn't set, the button isn't mapped. Ignore it.
|
||||
if not pn then return end
|
||||
-- If it's a release, ignore it.
|
||||
if event.type == "InputEventType_Release" then return end
|
||||
-- If the player doesn't have a heart_entry, ignore it.
|
||||
if not heart_entries[pn] then return end
|
||||
-- Pass the input to the heart_entry for the player. It will handle moving
|
||||
-- the cursor. If it returns true, the player is done.
|
||||
local done= heart_entries[pn]:handle_input(event.GameButton)
|
||||
if done then
|
||||
-- Play a sound for the player so they know the value was entered.
|
||||
SOUND:PlayOnce(THEME:GetPathS("Common", "Start"))
|
||||
-- Check whether all players that need to enter their heart rate are done.
|
||||
local all_done= true
|
||||
for pn, entry in pairs(heart_entries) do
|
||||
if not entry.done then all_done= false break end
|
||||
end
|
||||
if all_done then
|
||||
-- If the players are done, add the calories to their profiles.
|
||||
for pn, entry in pairs(heart_entries) do
|
||||
local profile= PROFILEMAN:GetProfile(pn)
|
||||
if profile and profile:GetIgnoreStepCountCalories() then
|
||||
-- calories is the value you might want to store off in a global
|
||||
-- variable to display on evaluation.
|
||||
local calories= profile:CalculateCaloriesFromHeartRate(
|
||||
entry.value, GAMESTATE:GetLastGameplayDuration())
|
||||
profile:AddCaloriesToDailyTotal(calories)
|
||||
end
|
||||
end
|
||||
-- Since all players are done, transition to the next screen.
|
||||
SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_GoToNextScreen")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- A simple timer that the player can watch while counting their pulse.
|
||||
-- The menu timer isn't used because it has undesired side effects.
|
||||
-- timer_text will be set to the BitmapText used to display the time. This
|
||||
-- way, the BitmapText doesn't have to be fetched with GetChild every frame.
|
||||
local timer_text
|
||||
-- This is an update function for an ActorFrame. It will run every frame.
|
||||
local function timer_update(self)
|
||||
local time= math.floor((self:GetSecsIntoEffect() % 60) * 10) / 10
|
||||
if time < 10 then
|
||||
timer_text:settext(("0%.1f"):format(time))
|
||||
else
|
||||
timer_text:settext(("%.1f"):format(time))
|
||||
end
|
||||
end
|
||||
|
||||
-- args contains the actors that will be in the ActorFrame for this screen.
|
||||
local args= {
|
||||
Def.ActorFrame{
|
||||
Name= "timer",
|
||||
InitCommand= function(self)
|
||||
-- Set the effectperiod so the timer can show an elapsed time.
|
||||
self:effectperiod(2^16)
|
||||
-- Set timer_text so GetChild doesn't need to be called every frame.
|
||||
timer_text= self:GetChild("timer_text")
|
||||
-- Set the update function so the timer will be updated.
|
||||
self:SetUpdateFunction(timer_update)
|
||||
end,
|
||||
OnCommand= function(self)
|
||||
-- Add the input callback so input will be handled.
|
||||
SCREENMAN:GetTopScreen():AddInputCallback(input)
|
||||
end,
|
||||
-- The BitmapText used to display the elapsed time.
|
||||
Def.BitmapText{
|
||||
Name= "timer_text", Font= "Common Normal", Text= "00.0",
|
||||
InitCommand= cmd(xy, SCREEN_CENTER_X, SCREEN_CENTER_Y-80; diffuse, Color.White),
|
||||
OnCommand= cmd(strokecolor,Color.Outline),
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
-- The actors for the heart_entries are added in a loop so that only the ones
|
||||
-- that will be used will exist.
|
||||
for pn, entry in pairs(heart_entries) do
|
||||
args[#args+1]= entry:create_actors()
|
||||
end
|
||||
|
||||
return Def.ActorFrame(args)
|
||||
@@ -0,0 +1,134 @@
|
||||
-- This is the example for how to theme ScreenMapControllers, the Config
|
||||
-- Key/Joy Mappings screen.
|
||||
|
||||
-- The contents of this file will actually be in several sections, each
|
||||
-- intended to be placed in its own file.
|
||||
-- Sections will be seperated by lines of dashes to make the separation clear.
|
||||
-- The first line inside the dashes will have the name of the file to copy the
|
||||
-- section to.
|
||||
-- The rest of the area inside the dashes will discuss general aspects of the
|
||||
-- section being discussed.
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- metrics.ini - the metrics you might want to set
|
||||
-- See the ScreenMapControllers section of _fallback/metrics.ini
|
||||
----------------------------------------------------------------
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- overlay, underlay, decorations, transitions
|
||||
-- ScreenMapControllers supports the standard layers and transitions:
|
||||
-- Layers: overlay, underlay, decorations
|
||||
-- Transitions: in, out, cancel
|
||||
-- Details of creating the layers and transitions for a screen are covered in
|
||||
-- ScreenWithLayersAndTransitions.lua.
|
||||
-- Previous versions of ScreenMapControllers had the warning in the overlay.
|
||||
-- The warning has been moved to Graphics/ScreenMapControllers warning.lua. If
|
||||
-- you have previously made a theme, update your theme to match the new
|
||||
-- convention.
|
||||
----------------------------------------------------------------
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- Graphics/ScreenMapControllers warning.lua
|
||||
-- The warning that is displayed when entering the screen.
|
||||
-- The _fallback warning uses the WarningHeader and WarningText strings from
|
||||
-- en.ini. If all you want to do is change the text, add those entries to your
|
||||
-- en.ini.
|
||||
-- The actor returned by your lua file must handle TweenOn and TweenOff commands.
|
||||
-- TweenOn will occur when the screen starts.
|
||||
-- TweenOff will occur when the warning is dismissed.
|
||||
-- Here is a simple actor that dims the screen and displays the text.
|
||||
----------------------------------------------------------------
|
||||
return Def.ActorFrame{
|
||||
InitCommand=cmd(xy, SCREEN_CENTER_X, SCREEN_CENTER_Y),
|
||||
Def.Quad{
|
||||
TweenOnCommand=cmd(zoomto, SCREEN_WIDTH, SCREEN_HEIGHT; diffuse, Color.Black),
|
||||
TweenOffCommand=cmd(linear, 0.5; diffusealpha, 0),
|
||||
},
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
Text=ScreenString("WarningHeader"),
|
||||
TweenOnCommand=cmd(y,-80;diffuse,Color.Red),
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0),
|
||||
|
||||
},
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
Text=ScreenString("WarningText"),
|
||||
TweenOnCommand=cmd(y,10;wrapwidthpixels,SCREEN_WIDTH-48),
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0),
|
||||
},
|
||||
}
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- Graphics/ScreenMapControllers action.lua
|
||||
-- The fallback actor that is used when there isn't a specific actor for an
|
||||
-- action. At a minimum, this should display the name of the action, in order
|
||||
-- to correctly handle the possibility of actions being added in the future.
|
||||
-- _fallback's version accomplishes this by being a BitmapText and fetching the
|
||||
-- text from en.ini.
|
||||
----------------------------------------------------------------
|
||||
return Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
InitCommand= cmd(x, SCREEN_CENTER_X; zoom, .75; diffuse, color("#808080")),
|
||||
OnCommand= function(self)
|
||||
self:diffusealpha(0)
|
||||
self:decelerate(0.5)
|
||||
self:diffusealpha(1)
|
||||
-- This code is in the OnCommand because the screen sets the name of this
|
||||
-- actor after loading it. If this code was in the InitCommand, it would
|
||||
-- not work because the name is blank at that point.
|
||||
-- fancy effect: Look at the name (which is set by the screen) to set text
|
||||
-- The name is concatenated with "Action" so that the strings used will be
|
||||
-- unique, next to each other in the language file, and clear in usage.
|
||||
self:settext(
|
||||
THEME:GetString("ScreenMapControllers", "Action" .. self:GetName()))
|
||||
end,
|
||||
OffCommand=cmd(stoptweening;accelerate,0.3;diffusealpha,0;queuecommand,"Hide"),
|
||||
HideCommand=cmd(visible,false),
|
||||
GainFocusCommand=cmd(diffuseshift;effectcolor2,color("#808080");effectcolor1,color("#FFFFFF")),
|
||||
LoseFocusCommand=cmd(stopeffect),
|
||||
}
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- Graphics/ScreenMapControllers <action name>.lua
|
||||
-- Every action can have its own special actor which will be used if it exists.
|
||||
-- Replace "<action name>" with the lowercase name of the action you are making
|
||||
-- an actor for and create the actor you want for that action.
|
||||
-- As of this writing, action names are:
|
||||
-- "clear", "reload", "save", "setlist", "exit"
|
||||
-- Creating actors is discussed in Examples/anatomy_of_an_actor.lua, so an
|
||||
-- example is not provided here.
|
||||
----------------------------------------------------------------
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- Graphics/ScreenMapControllers nosetlistprompt.lua
|
||||
-- This is the actor that is displayed when the player attempts to use the
|
||||
-- SetList (or "Assign List") action without anything in the list.
|
||||
-- It should tell the player that the list is empty and how to add things to
|
||||
-- the list.
|
||||
-- It must handle TweenOn and TweenOff commands.
|
||||
-- TweenOn occurs when the player tries to perform the action and fails.
|
||||
-- TweenOff occurs when the prompt is dismissed.
|
||||
-- _fallback's does this by dimming the screen with a quad and using a
|
||||
-- BitmapText to display the string from the language file.
|
||||
-- Note the use of stoptweening in TweenOn and TweenOff. This is to prevent
|
||||
-- the player from overflowing the tween stack by mashing.
|
||||
----------------------------------------------------------------
|
||||
return Def.ActorFrame{
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y),
|
||||
Def.Quad{
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color.Black;diffusealpha,0),
|
||||
TweenOnCommand=cmd(stoptweening;diffusealpha,1;linear,0.5;diffusealpha,0.8),
|
||||
TweenOffCommand=cmd(stoptweening;linear,0.5;diffusealpha,0),
|
||||
},
|
||||
Def.ActorFrame{
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
Text=ScreenString("NoSetListPrompt"),
|
||||
InitCommand=cmd(y,10;wrapwidthpixels,SCREEN_WIDTH-48;diffusealpha,0),
|
||||
TweenOnCommand=cmd(stoptweening;diffusealpha,0;sleep,0.5125;linear,0.125;diffusealpha,1),
|
||||
TweenOffCommand=cmd(stoptweening;linear,0.5;diffusealpha,0),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
-- This screen file returns an ActorFrame with two actors.
|
||||
|
||||
-- A screen file must return an ActorFrame.
|
||||
-- All actors on the screen must be inside this ActorFrame.
|
||||
return Def.ActorFrame{
|
||||
-- An actor is added to a frame by calling a function that returns an actor.
|
||||
-- Most of the functions for creating actors are in the Def table.
|
||||
|
||||
-- All of the functions in the Def table take a table with the parameters
|
||||
-- to construct the actor.
|
||||
|
||||
-- For convenience, Lua makes the parentheses normally used when calling a
|
||||
-- function optional when that function's sole argument is a table.
|
||||
-- "foo({...})" and "foo{...}" are equivalent in lua.
|
||||
|
||||
-- Quad is a very simple actor, a colored rectangle.
|
||||
Def.Quad{
|
||||
-- The parameters for an actor are set through entries in a table.
|
||||
-- This is just a simple example, so it only sets the required parts.
|
||||
|
||||
-- Every actor should have a name.
|
||||
-- The name can be used to find the actor later.
|
||||
-- If you don't set the name, the actor will have a blank name.
|
||||
-- The name should be unique within the ActorFrame the actor is inside.
|
||||
-- See the entries for ActorFrame:GetChild and ActorFrame:GetChildren in
|
||||
-- Lua.xml for details on what happens when two actors in the same
|
||||
-- ActorFrame have the same name.
|
||||
-- Actors that are inside different ActorFrames can have the same name
|
||||
-- without causing any problems.
|
||||
Name= "example",
|
||||
|
||||
-- The InitCommand for an actor should initialize any parts of the actor
|
||||
-- that should be set before the first time it draws.
|
||||
-- If you don't set the InitCommand, the actor will be in its default
|
||||
-- state. Details of the default state of an actor can be found in the
|
||||
-- example for that actor.
|
||||
InitCommand= function(self)
|
||||
-- The details of these functions can be found in Lua.xml.
|
||||
-- Position, size, and color should be initialized for a quad.
|
||||
self:xy(SCREEN_CENTER_X, SCREEN_CENTER_Y)
|
||||
self:setsize(20, 20)
|
||||
self:diffuse(color("1,1,1,1"))
|
||||
end,
|
||||
},
|
||||
-- The contents of an ActorFrame are entries in a table, so we separate
|
||||
-- them with commas.
|
||||
Def.Quad{
|
||||
-- This quad is almost identical to the previous one, so there is nothing
|
||||
-- new here to explain.
|
||||
Name= "example2",
|
||||
InitCommand= function(self)
|
||||
self:xy(SCREEN_CENTER_X, SCREEN_CENTER_Y-40)
|
||||
self:setsize(20, 20)
|
||||
self:diffuse(color("0,0,1,1"))
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
# This file gives a bit of basic information about the theme.
|
||||
[ThemeInfo]
|
||||
DisplayName=One Screen Example Theme
|
||||
Author=Kyzentun
|
||||
@@ -0,0 +1,19 @@
|
||||
# This metrics.ini declares a single screen and makes it the first (and only) screen in the theme.
|
||||
|
||||
# Metrics are organized into groups.
|
||||
# The next line is a group name. All the lines after it until the next group name will set metrics in this group.
|
||||
[Common]
|
||||
# The Common group is used for setting common metrics. See _fallback/metrics.ini for a list of all things that can be set in the Common group.
|
||||
# Since this is a simple example, it only sets the initial screen.
|
||||
InitialScreen="ScreenSimpleExample"
|
||||
|
||||
# Every screen in a theme must have a group declared for it.
|
||||
[ScreenSimpleExample]
|
||||
# Since ScreenSimpleExample does not exist in _fallback, the fallback group and class for it must be specified.
|
||||
# ScreenWithMenuElements is the simplest screen you will want to use, it has practically nothing on it.
|
||||
Class="ScreenWithMenuElements"
|
||||
# Setting the Fallback metric for a group means that whenever a metric is not found in the group, the group named by the Fallback metric will be searched.
|
||||
# This means that everything set in the ScreenWithMenuElements group is also set in the ScreenSimpleExample group.
|
||||
Fallback="ScreenWithMenuElements"
|
||||
|
||||
# That's all. Other metrics could be set, but this is a minimal example.
|
||||
@@ -0,0 +1,11 @@
|
||||
This is the "One Screen Example Theme".
|
||||
It's a very minimal theme with a single screen showing two rectangles and the decorations that ScreenWithMenuElements has built in by default.
|
||||
You can try it out by copying it into the Themes folder.
|
||||
|
||||
Since this theme only has one screen, and no code to handle transitions or a normal method of accessing the options, in order to change to another theme you'll have to access the options menu by pressing the service key, which is mapped to Scroll Lock by default.
|
||||
|
||||
|
||||
Parts of this theme:
|
||||
metrics.ini
|
||||
ThemeInfo.ini
|
||||
BGAnimations/ScreenSimpleExample overlay.lua
|
||||
@@ -18,13 +18,18 @@
|
||||
-- The function "FooMods" returns a table containing all the information the
|
||||
-- option row handler needs to build the option row.
|
||||
function FooMods()
|
||||
return {
|
||||
return {
|
||||
-- A string with the name of the row. This name will be localized using
|
||||
-- the entry in the "OptionTitles" section of the language file.
|
||||
Name= "Foo",
|
||||
Name= "Foo",
|
||||
|
||||
-- A boolean that controls whether this row goes to the "next row"
|
||||
-- element when NavigationMode for the screen is "toggle" and the
|
||||
-- ArcadeOptionsNavigation preference is 1.
|
||||
GoToFirstOnStart= false,
|
||||
|
||||
-- A boolean controlling whether the choice affects all players.
|
||||
OneChoiceForAllPlayers= false,
|
||||
OneChoiceForAllPlayers= false,
|
||||
|
||||
-- A boolean controlling whether SaveSelections is called after every
|
||||
-- change. If this is true, SaveSelections will be called every time
|
||||
@@ -35,12 +40,12 @@ function FooMods()
|
||||
-- "ShowOneInRow" shows only the choice with focus is shown.
|
||||
-- "ShowOneInRow" is forced if there are enough choices that they would go
|
||||
-- off screen.
|
||||
LayoutType= "ShowAllInRow",
|
||||
LayoutType= "ShowAllInRow",
|
||||
|
||||
-- A SelectType enum value. "SelectOne" allows only one choice to be
|
||||
-- selected. "SelectMultiple" allows multiple to be selected.
|
||||
-- "SelectNone" allows none to be selected.
|
||||
SelectType= "SelectMultiple",
|
||||
SelectType= "SelectMultiple",
|
||||
|
||||
-- Optional function. If non-nil, this function must return a table of
|
||||
-- PlayerNumbers that are allowed to use the row.
|
||||
@@ -56,7 +61,7 @@ function FooMods()
|
||||
|
||||
-- A table of strings that are the names of choices. Choice names are not
|
||||
-- localized.
|
||||
Choices= {"a", "b", "c", "d"},
|
||||
Choices= {"a", "b", "c", "d"},
|
||||
|
||||
-- Optional table. If non-nil, this table must contain a list of messages
|
||||
-- this row should listen for. If one of the messages is recieved, the
|
||||
@@ -68,31 +73,31 @@ function FooMods()
|
||||
-- on the row the player has selected.
|
||||
-- self is the table returned by the original function used to create the
|
||||
-- option row. (the table being created right now).
|
||||
-- list is a table of bools, all initially false. Set them to true to
|
||||
-- list is a table of bools, all initially false. Set them to true to
|
||||
-- indicate which options are on.
|
||||
-- pn is the PlayerNumber of the player the selections are for.
|
||||
LoadSelections= function(self, list, pn)
|
||||
LoadSelections= function(self, list, pn)
|
||||
Trace("FooMods:LoadSelections(" .. pn .. ")")
|
||||
for i, choice in ipairs(self.Choices) do
|
||||
for i, choice in ipairs(self.Choices) do
|
||||
-- Randomly set some to true just for an example.
|
||||
if math.random(0, 1) == 1 then
|
||||
Trace(choice .. " (" .. i .. ")" .. " set to true.")
|
||||
list[i]= true
|
||||
end
|
||||
end
|
||||
end,
|
||||
end
|
||||
end,
|
||||
|
||||
-- SaveSelections should examine the list of what the player has selected
|
||||
-- and apply the appropriate modifiers to the player.
|
||||
-- Same args as LoadSelections.
|
||||
SaveSelections= function(self, list, pn)
|
||||
SaveSelections= function(self, list, pn)
|
||||
Trace("FooMods:SaveSelections(" .. pn .. ")")
|
||||
for i, choice in ipairs(self.Choices) do
|
||||
if list[i] then
|
||||
for i, choice in ipairs(self.Choices) do
|
||||
if list[i] then
|
||||
Trace(choice .. " (" .. i .. ")" .. " set to true.")
|
||||
end
|
||||
end
|
||||
end,
|
||||
end
|
||||
end,
|
||||
|
||||
-- Optional function. If non-nil, this function must take 3 parameters
|
||||
-- (self, pn, choice), and return a bool. It is called when a player
|
||||
@@ -137,5 +142,5 @@ function FooMods()
|
||||
end
|
||||
return change >= 2
|
||||
end
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
-- How actor creation works:
|
||||
-- Actors are created from tables.
|
||||
-- The elements in the table are used to set various attributes of the actor
|
||||
-- or commands that the actor can execute.
|
||||
-- Unless stated otherwise, assume that all elements are optional, few
|
||||
-- attributes or commands are required.
|
||||
-- Different Actor types have different attributes that can be set.
|
||||
-- Any element with a name that ends in "Command" must be a function and can
|
||||
-- later be executed by using the playcommand or queuecommand functions on
|
||||
-- that actor.
|
||||
-- Any element with a name that ends in "MessageCommand" must be a function
|
||||
-- and will be executed whenever that message is broadcast.
|
||||
-- The functions used for commands and messages are automatically passed a
|
||||
-- "self" parameter, which is the actor. Message functions are also passed
|
||||
-- a params table containing parameters that were broadcast with the
|
||||
-- message. playcommand can be used to pass a parameters table to the
|
||||
-- command, but queuecommand cannot.
|
||||
-- For ActorFrame and actors that inherit from it, array elements of the
|
||||
-- table are added as children.
|
||||
-- Any element in the table that is not recognized as an attribute, command,
|
||||
-- or child is discarded.
|
||||
|
||||
-- Some actors also fetch metrics from metrics.ini to control some aspect.
|
||||
-- Metrics loaded will be listed in entries for individual actor types.
|
||||
-- There are some helper functions like LoadActor and LoadFont, which are
|
||||
-- documented in Docs/Luadoc/lua.xml.
|
||||
|
||||
-- This is a simple actor with no visual aspect and basic commands.
|
||||
Def.Actor{
|
||||
-- Attributes:
|
||||
-- You should always supply a name for an actor. The name is used when
|
||||
-- finding the actor with GetChild.
|
||||
Name= "simple",
|
||||
|
||||
-- The base rotation and zoom. X, Y, and Z are all settable, though only
|
||||
-- X is listed in this example. Rotation is in degrees.
|
||||
BaseRotationX= 15,
|
||||
BaseZoomX= .5,
|
||||
|
||||
-- The Init command is run for every actor after all the attributes are set
|
||||
-- and all children have been loaded.
|
||||
-- It's important to note that the Init command runs during screen
|
||||
-- creation, before the screen has changed. If you use
|
||||
-- SCREENMAN:GetTopScreen() in the Init command, you will not get the
|
||||
-- screen that is being created because it isn't finished being created.
|
||||
InitCommand= function(self)
|
||||
Trace("Init command running for " .. self:GetName())
|
||||
end,
|
||||
-- The On command runs after screen creation has finished.
|
||||
OnCommand= function(self)
|
||||
Trace("On command running for " .. self:GetName())
|
||||
-- Queue the Exa command to execute when all tweening has finished.
|
||||
self:queuecommand("Exa")
|
||||
end,
|
||||
ExaCommand= function(self)
|
||||
Trace("Exa command running for " .. self:GetName())
|
||||
-- Execute the Tera command right now.
|
||||
self:playcommand("Tera", {foo= 1, bar= 2})
|
||||
end,
|
||||
TeraCommand= function(self, params)
|
||||
Trace("Tera command running for " .. self:GetName() .. ": " .. params.foo .. ", " .. params.bar)
|
||||
-- Broadcast a message that will execute the Giga command for every actor
|
||||
-- that has it.
|
||||
MESSAGEMAN:Broadcast("Giga", {foo= 1, bar= 2})
|
||||
end,
|
||||
GigaMessageCommand= function(self, params)
|
||||
Trace("Giga command running for " .. self:GetName() .. ": " .. params.foo .. ", " .. params.bar)
|
||||
end
|
||||
}
|
||||
|
||||
-- It is important to note that the things in Def are functions and you are
|
||||
-- passing them a table when you use them. "Def.Actor{}", "Def.Actor({})",
|
||||
-- and "local foo= {} Def.Actor(foo)" are all equivalent in effect, but
|
||||
-- some forms make is easier to write well organized code.
|
||||
@@ -1,5 +1,20 @@
|
||||
-- how to connect to a server with the new ScreenTextEntry Lua bindings
|
||||
-- (this is the base code; I'll come up with a full tutorial later.)
|
||||
|
||||
-- possible text entry settings:
|
||||
local teSettings = {
|
||||
SendOnPop = "", -- ScreenMessage to send on pop (optional, "SM_None" if omitted)
|
||||
Question = "", -- The question to display
|
||||
InitialAnswer = "", -- Initial answer text
|
||||
MaxInputLength = 0, -- Maximum amount of characters
|
||||
Password = false, -- Mask character input (optional)
|
||||
Validate = nil, -- Validation function; function(answer, errorOut), must return boolean, string.
|
||||
OnOK = nil, -- On OK; function(answer)
|
||||
OnCancel = nil, -- On Cancel; function()
|
||||
ValidateAppend = nil, -- Validate appending a character; function(answer,append), must return boolean
|
||||
FormatAnswerForDisplay = nil -- Format answer for display; function(answer), must return string
|
||||
};
|
||||
|
||||
SCREENMAN:AddNewScreenToTop("ScreenTextEntry");
|
||||
local serverSettings = {
|
||||
Question = "Connect to server:",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[sm-ssc v1.0 public beta 2 | last update 2010/apr 11]
|
||||
This is a list of all the known Actor classes in sm-ssc. You can use these by
|
||||
[SM5 public nightly build | last update 2014/aug 04]
|
||||
This is a list of all the known Actor classes in SM5. You can use these by
|
||||
prefixing "Def." on the end of the name (e.g. Def.PaneDisplay).
|
||||
|
||||
Actor
|
||||
@@ -9,6 +9,7 @@ ActorMultiTexture
|
||||
ActorMultiVertex
|
||||
ActorProxy
|
||||
ActorScroller
|
||||
ActorSound
|
||||
Banner
|
||||
BGAnimation
|
||||
BitmapText
|
||||
|
||||
@@ -6,6 +6,7 @@ The first system simply uses the weight of the player and adds a small amount fo
|
||||
The second system uses age, gender, weight, heart rate, and song duration to calculate the amount used during a song. This requires a theme to support it, and the relevant parts of Editable.ini to be set for the profile.
|
||||
|
||||
Editable.ini fields:
|
||||
The default theme provides a profile editing screen for setting these fields in Stepmania without needing to edit Editable.ini by hand.
|
||||
BirthYear, -- defaults to 1995
|
||||
IgnoreStepCountCalories, -- Must be set to 1 to use the second system.
|
||||
IsMale, -- Defaults to 1. Set to 0 for females.
|
||||
@@ -29,22 +30,9 @@ CalculateCaloriesFromHeartRate()
|
||||
|
||||
Intended usage:
|
||||
A theme that supports heart rate calorie calculation should take the following steps:
|
||||
1. Create a new screen that the player will be able to use to enter their heart rate. It shall be called "ScreenHeartEntry" in this list, though a theme can name it anything.
|
||||
2. During ScreenGameplay, track the amount of time that the player is hitting steps for. This duration must be in seconds.
|
||||
3. When proceeding from ScreenGameplay:
|
||||
3a. Check whether GetIgnoreStepCountCalories returns true for either player's profile.
|
||||
3b. If it returns true for either player, go to ScreenHeartEntry instead of ScreenEvaluationNormal.
|
||||
3c. This means changing the NextScreen metric for ScreenGameplay to use a function that checks the profiles and returns the correct screen.
|
||||
4. On ScreenHeartEntry:
|
||||
4a. Provide a timer that the players can watch while measuring their pulse.
|
||||
4b. Provide a way for the players to enter their heart rate in beats per minute.
|
||||
4c. When a player enters their heart rate, use Profile:CalculateCaloriesFromHeartRate().
|
||||
4d. Do not add calories to a profile if Profile:IgnoreStepCountCalories() returns false for that profile.
|
||||
4e. Pass the heart rate and the duration from ScreenGameplay to Profile:CalculateCaloriesFromHeartRate() and store its return value.
|
||||
4f. Pass the return value of Profile:CalculateCaloriesFromHeartRate() to Profile:AddCaloriesToDailyTotal() to add them to the total for that player's profile.
|
||||
4g. When all active players have finished entering their heart rate, proceed to ScreenEvaluationNormal.
|
||||
5. This concludes the special steps required for theme support of heart rate calorie calculation.
|
||||
1. Create ScreenHeartEntry as described in Themerdocs/Examples/Example_Screens/ScreenHeartEntry.lua. _fallback's branching logic will take care of checking whether the screen should be used.
|
||||
|
||||
Side notes:
|
||||
CalculateCaloriesFromHeartRate and AddCaloriesToDailyTotal are separate functions so that a theme can display or use the calorie amount in other ways easily.
|
||||
If IgnoreStepCountCalories is true for a profile, but the theme in use does not provide support using the steps listed above, that profile will not accumulate calories.
|
||||
Note that calories will not accumulate during gameplay for a profile that has IgnoreStepCountCalories set to true. PlayerStageStats:GetCaloriesBurned() will also return 0 for that player. You'll have to store the value returned by CalculateCaloriesFromHeartRate in a global variable if you want to display it later on ScreenEvaluation.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SM4 Font .ini values
|
||||
StepMania 5 Font .ini values
|
||||
|
||||
[common]
|
||||
CapitalsOnly - If set to 1, lowercase letters are drawn with uppercase letters instead.
|
||||
|
||||
@@ -1,34 +1,12 @@
|
||||
Recommended Practices when theming for sm-ssc
|
||||
---------------------------------------------
|
||||
1) Use the --theme= command line parameter to switch between themes quickly.
|
||||
Recommended Practices when theming for StepMania
|
||||
------------------------------------------------
|
||||
1) Use the --theme= command line parameter to load StepMania with a specific theme.
|
||||
This way, you don't have to deal with the theme switch and all the possible
|
||||
nonsense errors that might come up (due to you having a different amount of
|
||||
song group colors, timer warning states, etc.), and you can quickly switch
|
||||
themes if you work on many of them at once.
|
||||
|
||||
2) If you want to create a theme that targets both regular StepMania 4 and
|
||||
sm-ssc, there are a few precautions to take care of.
|
||||
|
||||
2a) First, decide if you want to develop it on sm-ssc first or SM4 first. It is
|
||||
usually easier to deal with making the theme in normal SM4 and using _portKit-SM4
|
||||
to get the theme running up in sm-ssc.
|
||||
|
||||
If you do decide to make the theme for sm-ssc first, be prepared to fill in a lot
|
||||
of files that sm-ssc _fallback makes empty for you, as the metrics, graphics, and
|
||||
BGAnimations from SM4's default theme will be loaded instead of sm-ssc's _fallback.
|
||||
|
||||
2b) sm-ssc's _fallback theme defines a variable, SSC, like so:
|
||||
[code]SSC = (ProductID() == "sm-ssc");[/code]
|
||||
This will return true if it's sm-ssc, or false if it's SM4.
|
||||
You should define this in a script (00 themeInfo.lua is a good place), so that
|
||||
SM4 will be able to recognize it.
|
||||
|
||||
With this "SSC guard" in place, you can now wrap things in "if SSC then"
|
||||
statements if they won't work on SM4. You can also provide alternatives if the
|
||||
player isn't using sm-ssc, since sometimes SM4 will have an approximation or
|
||||
alternate way to get the data.
|
||||
|
||||
3) When dealing with frame size errors or theme code errors, don't just hide the
|
||||
2) When dealing with frame size errors or theme code errors, don't just hide the
|
||||
dialog and pretend they don't exist. Good themers fix these problems instead of
|
||||
releasing the theme and saying "oh, just play it in fullscreen mode".
|
||||
|
||||
@@ -36,15 +14,15 @@ If you have hidden the error dialogs, you'll need to modify Preferences.ini.
|
||||
Find the IgnoredDialogs= line and remove everything after the = sign. You will
|
||||
now recieve the error messages in windowed mode again.
|
||||
|
||||
4) While this is a SSC-specific practice, having a themeInfo file set up in
|
||||
your theme's Scripts directory is a good way to store information about the
|
||||
theme (e.g. version number, date, product code, etc.)
|
||||
3) While this is not required, having a themeInfo file set up in your theme's
|
||||
Scripts directory is a good way to store information about the theme (e.g.
|
||||
version number, date, product code, etc.)
|
||||
|
||||
An example of a themeInfo script:
|
||||
[code]
|
||||
themeInfo = {
|
||||
Name = "your theme's name",
|
||||
Name = "Theme Name",
|
||||
Version = "v1.0", -- typically a float or string. floats are easier to compare.
|
||||
Date = "20100426 1115",
|
||||
Date = "20140914 1902",
|
||||
};
|
||||
[/code]
|
||||
@@ -1,5 +1,5 @@
|
||||
StepMania 5 Beginner's Guide
|
||||
Written and edited by the spinal shark collective
|
||||
Written and edited by the StepMania team
|
||||
--------------------------------------------------------------------------------
|
||||
Table of Contents
|
||||
1 Introduction
|
||||
@@ -8,6 +8,7 @@ Table of Contents
|
||||
2.1.1 Notable StepMania Versions
|
||||
2.1.2 StepMania Components
|
||||
2.2 StepMania Configuration
|
||||
2.2.0 Configuring Keys
|
||||
2.2.1 Frequently Asked Questions that can be
|
||||
Solved by Changing the Configuration
|
||||
2.3. Installing Content
|
||||
@@ -15,6 +16,8 @@ Table of Contents
|
||||
2.3.2 Installing Noteskins/New Gametypes
|
||||
2.3.3 Installing Themes
|
||||
3. StepMania 5
|
||||
3.1 Frequently Asked Questions about StepMania 5
|
||||
4. Reporting problems
|
||||
================================================================================
|
||||
Chapter 1: Introduction
|
||||
================================================================================
|
||||
@@ -28,11 +31,9 @@ skip ahead to Chapter 3: StepMania 5. Otherwise, read on.
|
||||
Chapter 2: StepMania
|
||||
================================================================================
|
||||
StepMania is an open-source rhythm game/engine, used by many projects, both
|
||||
commercial and free. It is the software from which sm-ssc is derived, and as
|
||||
a result, must be learned before using sm-ssc if you're not already familiar
|
||||
with how it works.
|
||||
commercial and free.
|
||||
|
||||
Some of the things an average sm-ssc user is expected to know includes the
|
||||
Some of the things an average StepMania 5 user is expected to know include the
|
||||
meanings/"proper names" of certain things, as well as how to install content
|
||||
and configure the program to suit your playing style.
|
||||
|
||||
@@ -51,10 +52,13 @@ Knowing the versions of StepMania is helpful, as it will help you deduce what
|
||||
you can and can not install. (Most songs are version-agnostic, though the
|
||||
background animations may not be. Themes, Noteskins, etc. are tied to
|
||||
specific versions.)
|
||||
StepMania 5.0 is the only version actively supported by the StepMania developers.
|
||||
All older versions have various problems and/or limitations that make them too
|
||||
burdensome to continue supporting.
|
||||
|
||||
* StepMania 3.9
|
||||
StepMania 3.9 is currently considered the stable version of StepMania. It dates
|
||||
back to 2005, and is the version for which the bulk of content is produced.
|
||||
StepMania 3.9 is the previous stable version of StepMania. It dates back to
|
||||
2005, and is the version for which the bulk of content is produced.
|
||||
|
||||
* StepMania 3.9 Plus/StepMania 3.9 Plus Redux
|
||||
3.9 Plus/Redux is a fork of StepMania 3.9 that adds features from
|
||||
@@ -76,10 +80,31 @@ up until January 2008, when the last build that could be categorized as "CVS"
|
||||
was released.
|
||||
|
||||
* StepMania 4.0 SVN/alpha
|
||||
The current development version of StepMania. This is the version that sm-ssc
|
||||
is forked off of. If you wish to port something to sm-ssc, it had better work
|
||||
for this version first, unless you like working hard to port the theme past
|
||||
various generations and default theme assumptions.
|
||||
A development version of StepMania. This is the version that sm-ssc was forked
|
||||
off of. This version is no longer supported and should not be used.
|
||||
|
||||
* StepMania 4.0 Beta
|
||||
Various betas were released for StepMania 4. They are no longer supported, had
|
||||
various problems, and should not be used.
|
||||
|
||||
* sm-ssc
|
||||
sm-ssc was originally created to provide more theming functionality, as well as
|
||||
keep the Lua-based StepMania alive (at that point in time, there were plans to
|
||||
release a version of StepMania based on the old CVS codebase, circa ITG PC).
|
||||
It eventually became StepMania 5.
|
||||
|
||||
* StepMania 5.0 beta 3
|
||||
The previous beta release of StepMania 5. Includes many features from sm-ssc
|
||||
and StepMania 4.0 as well as many new features. Any content that works in beta
|
||||
3 will work in future releases in StepMania 5 (caveat: Many themes made for
|
||||
beta 3 are full of mistakes, they will not work in beta 4)
|
||||
|
||||
* StepMania 5.0 beta 4
|
||||
The current beta release of StepMania 5. This version has many additional
|
||||
theming features and bug/crash fixes.
|
||||
If you wish to port something to StepMania 5, or make a theme for StepMania 5,
|
||||
it had better work for this version, because it will report your theme
|
||||
mistakes to you on screen.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
2.1.2: StepMania Components
|
||||
@@ -111,9 +136,9 @@ you may see in StepMania communities and online.
|
||||
decide to quit. Like Nonstop courses, they have a normal lifebar as well.
|
||||
--------------------------------------------------------------------------------
|
||||
* Event Mode
|
||||
Typically used during events, this disables the concept of stages and lets you
|
||||
play songs until you decide to stop. It is quite useful in Home Mode, and this
|
||||
guide recommends you enable it.
|
||||
Designed to be used during events, this disables the concept of "stages per
|
||||
game" and lets you play songs until you decide to stop. It is quite useful in
|
||||
Home Mode, and this guide recommends you enable it.
|
||||
|
||||
* Gametypes
|
||||
Gametypes are the different game modes StepMania can play. They generally
|
||||
@@ -142,6 +167,8 @@ you may see in StepMania communities and online.
|
||||
* Themes
|
||||
Themes are skins for StepMania. They change the look and feel, and in post-3.9
|
||||
versions, can also change elements of gameplay (scoring, grading) as well.
|
||||
StepMania 5.0 adds many features to extend the limits of what a theme can
|
||||
change.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
2.2: StepMania Configuration
|
||||
@@ -151,7 +178,14 @@ Learning how to properly configure StepMania can save you headaches.
|
||||
|
||||
Most themes will have the Options menu in plain sight on the Title Menu.
|
||||
From there, it depends on which version of StepMania you have, as the options
|
||||
menus were re-shuffled around for the StepMania 4 alphas.
|
||||
menus were re-shuffled around for the StepMania 4 alphas and later versions.
|
||||
This is also known as the Service Options menu. In all versions on
|
||||
StepMania 5, this can be reached by pressing the Scroll Lock key at any time.
|
||||
The key set as the "Operator" key in Config Key/Joy Mappings will also bring
|
||||
up the Service Options menu. Some people also call this the "service button".
|
||||
Note that in StepMania 5, the theme can control what options appear on this
|
||||
screen. The information below applies only to the default theme and themes
|
||||
that choose to present the same options.
|
||||
|
||||
The typical StepMania 3.9 Options Menu:
|
||||
* Appearance Options
|
||||
@@ -180,9 +214,71 @@ The StepMania 4.0 alpha 4 Options Menu:
|
||||
* Profiles
|
||||
* Reload Songs/Courses
|
||||
|
||||
sm-ssc changes this up again, making the "Options" item on the Title Menu go
|
||||
sm-ssc changed this up again, making the "Options" item on the Title Menu go
|
||||
to System Direction (mostly-used options), leaving the normal options menu to
|
||||
the Scroll Lock key. Blame Midiman. :)
|
||||
|
||||
The StepMania 5.0 beta 4 Options Menu:
|
||||
* Calibrate Audio Sync
|
||||
* Select Game
|
||||
* Config Key/Joy Mappings
|
||||
* Test Input
|
||||
* Input Options
|
||||
* Reload Songs/Courses
|
||||
* Arcade Options
|
||||
* Appearance Options
|
||||
* Set BG Fit Mode
|
||||
* Graphics/Sound Options
|
||||
* Profiles
|
||||
* Network Options
|
||||
* UI Options
|
||||
* Advanced Options
|
||||
* Stepmania Credits
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
2.2.0: Configuring Keys
|
||||
--------------------------------------------------------------------------------
|
||||
Controller mappings in StepMania are configured in the Config Key/Joy Mappings
|
||||
screen. To reach it, hit the Operator key (Scroll Lock) and select Config Key/Joy
|
||||
Mappings from the menu.
|
||||
|
||||
The first thing you will see will be a warning telling you not to unmap important
|
||||
keys, such as the arrow keys and the enter key. This is because those keys are
|
||||
necessary for navigating the menus, and unmapping them will leave you unable to
|
||||
navigate the menus. If you accidentally unmap one of the important keys, you can
|
||||
reset your key configuration to the default by using the "Clear To Default" action.
|
||||
The warning will be dismissable after 2.5 seconds and will dismiss itself after 5
|
||||
seconds. (time controlled by theme) After the warning disappears, you will see
|
||||
the current keybindings, arranged into columns.
|
||||
|
||||
Each player has their own three columns. "Primary" and "Secondary" are the two
|
||||
columns you can configure. "Default" is the column you cannot configure.
|
||||
|
||||
The key your cursor is currently on will be flashing between black and white.
|
||||
(or whatever the theme set it to do)
|
||||
|
||||
To set an individual key, move your cursor to the slot you want to set and hit
|
||||
Enter. The next key you hit will be set in that slot.
|
||||
|
||||
To set multiple keys in order, and save time going back and forth between the pad
|
||||
and the keyboard, move your cursor to a slot and hit 'm'. This marks the slot,
|
||||
adding it to a list. Hitting 'm' again will remove it from the list. When you have
|
||||
marked all the slots you want to set, select the "Assign List" option. The screen
|
||||
will then automatically move through the list of slots in the order they appear
|
||||
on the screen, setting each one as you press the button for it.
|
||||
|
||||
("Assign List" requires you to mark the keys you want because having preset lists
|
||||
for you to pick from for every game type and the common combinations of what people
|
||||
will want to set in one go would be more work than it's worth.)
|
||||
|
||||
Any changes you make will only be saved when you choose "Save To Disk".
|
||||
You can reload the settings from the disk with "Reload From Disk".
|
||||
|
||||
If you try to leave the screen after changing a key without saving, you will be
|
||||
prompted to save. Choosing "Yes" will save the settings to the disk and leave the
|
||||
screen. Choosing "No" will reload the settings from the disk, undoing your change,
|
||||
and leave the screen. Choosing "Cancel" will do neither, leaving you on the screen.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
2.2.1: Frequently Asked Questions that can be Solved by Changing the Configuration
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -194,12 +290,14 @@ A: Where you go depends on the version of StepMania you use.
|
||||
[3.9] Machine Options
|
||||
[4.0 alphas] Advanced Options
|
||||
It will be the first option on each.
|
||||
[5.0] UI Options, third option from the top.
|
||||
|
||||
Q: How do I play forever, without game overs?
|
||||
A: Turn on Event Mode. Where you go depends on the version of StepMania you use.
|
||||
|
||||
[3.9] Coin Options
|
||||
[4.0 alphas] Advanced Options, a bit down the page.
|
||||
[5.0] Arcade Options, bottom of the page.
|
||||
|
||||
Q: What the heck is this thing that says "Toasty" and how do I get rid of it?
|
||||
A: It's a reference to Mortal Kombat 2, where Dan Forden would pop out from
|
||||
@@ -212,6 +310,7 @@ As for turning it off, turn Easter Eggs off.
|
||||
It appears in different locations between StepMania versions:
|
||||
[3.9] Gameplay Options
|
||||
[4.0 alphas] Advanced Options, a bit down the page.
|
||||
[5.0] Advanced Options, 8th option from the top.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
2.3: Installing Content
|
||||
@@ -222,36 +321,44 @@ completely, as you have other things to do.
|
||||
|
||||
Before we touch on the specifics, there are a few skills you should learn.
|
||||
|
||||
* Mac Users of StepMania 4.0
|
||||
Most of the game content is packaged in a file called StepMania.smzip. This has
|
||||
the pros of not cluttering things up, but the con is that people don't know
|
||||
where to put things.
|
||||
Previous versions of StepMania had instructions to install things in the main
|
||||
StepMania folder. This caused problems with UAC on Windows and went against
|
||||
convention on Linux and OS X. Because of those problems, installing content in
|
||||
the main StepMania folder is no longer the correct thing to do.
|
||||
|
||||
Wherever you have StepMania installed, make the following folders:
|
||||
The correct place to install content on StepMania 5 is the User Data folder.
|
||||
The exact location is different for each platform.
|
||||
Windows: %APPDATA%/StepMania 5.0/
|
||||
Linux: ~/.stepmania-5.0/
|
||||
OS X: ~/Library/Application Support/StepMania 5/
|
||||
Wherever you see the name "User Data folder", this is the folder it refers to.
|
||||
OS X additionally has ~/Library/Preferences/StepMania 5/ for storing preferences.
|
||||
|
||||
Inside the User Data folder you can install content by placing it in the following folders:
|
||||
* Songs
|
||||
* Themes
|
||||
* Noteskins
|
||||
* NoteSkins
|
||||
(and the various gametype folders, which are optional. You need at least one
|
||||
non-lights gametype in order to play.)
|
||||
* Noteskins/dance
|
||||
* Noteskins/pump
|
||||
* Noteskins/para
|
||||
* Noteskins/techno
|
||||
* Noteskins/beat
|
||||
* Noteskins/popn
|
||||
* Noteskins/ez2
|
||||
* NoteSkins/dance
|
||||
* NoteSkins/pump
|
||||
* NoteSkins/para
|
||||
* NoteSkins/techno
|
||||
* NoteSkins/beat
|
||||
* NoteSkins/popn
|
||||
* NoteSkins/ez2
|
||||
* Announcers
|
||||
(but at this point, no SM4 announcers have been released)
|
||||
(finding announcers made for SM5 is an exercise left for the reader)
|
||||
* Packages
|
||||
(optional, but recommended)
|
||||
|
||||
and then you can follow the rest of this guide.
|
||||
If one of the folders listed above does not exist, do not worry. You only need
|
||||
to create a folder if you need to install a piece of content that belongs in it.
|
||||
|
||||
* Not on Windows and want to deal with .smzip files?
|
||||
There are multiple ways to deal this.
|
||||
1) Put the SMZip file in the Packages folder.
|
||||
2) Rename the file to have an extension of .zip and extract in the root
|
||||
StepMania folder.
|
||||
User Data folder.
|
||||
3) Pass the smzip's filename to StepMania on the command line/terminal.
|
||||
Dragging and dropping the .smzip may or may not work; we have not tested it.
|
||||
Also, this may or may not exist in your version of StepMania.
|
||||
@@ -266,7 +373,7 @@ For .smzip files, the section "Not on Windows and want to deal with .smzip
|
||||
files?" details all possible ways of installing .smzip files, but the most
|
||||
common ways are as follows:
|
||||
|
||||
1) For operating systems with a filetype handler (Windows), you can double
|
||||
1) For operating systems with a filetype handler (Windows and OS X), you can double
|
||||
click on the .smzip file and the StepMania tools will handle it.
|
||||
2) Putting the .smzip file in the Packages folder, where it will be automatically
|
||||
read by StepMania.
|
||||
@@ -304,7 +411,7 @@ of a pack that exhibits this behavior.)
|
||||
|
||||
Overall, the setup should look something like this:
|
||||
|
||||
StepMania\
|
||||
User Data folder\
|
||||
Songs\
|
||||
Song Group 1\
|
||||
Song Group 2\
|
||||
@@ -323,7 +430,7 @@ NoteSkins change the appearance of the arrows. They are also linked with getting
|
||||
other gametypes supported in StepMania.
|
||||
|
||||
The noteskin installation process looks something like this:
|
||||
StepMania\
|
||||
User Data folder\
|
||||
NoteSkins\
|
||||
(gametype)\
|
||||
(noteskin for gametype)\
|
||||
@@ -346,7 +453,7 @@ kb7 (6 or 7 keys depending on when you try to use it)
|
||||
Depending on if the theme is packaged in a SMZip or not, you have a few options.
|
||||
|
||||
If it is in a .smzip, you can put it in the Packages directory:
|
||||
StepMania/
|
||||
User Data folder/
|
||||
Packages/
|
||||
MyTheme.smzip
|
||||
and StepMania will automatically read it.
|
||||
@@ -354,27 +461,129 @@ On Windows, you can double click on the .smzip file to install it in your user
|
||||
packages directory. THIS IS NOT RECOMMENDED BECAUSE IT CAUSES CONFUSION.
|
||||
|
||||
Since .smzip files are really .zip files, you could also extract them in the
|
||||
StepMania root folder.
|
||||
User Data folder.
|
||||
|
||||
If the themer has not packaged the theme in a .smzip, then you have to look
|
||||
inside the archive to see how the directory layout looks.
|
||||
1) Themes folder
|
||||
If it has a themes folder when you open it up, extract in the StepMania root
|
||||
If it has a themes folder when you open it up, extract in the User Data
|
||||
folder, like you would a .smzip file.
|
||||
2) Theme name as a folder
|
||||
This one will have to be extracted in the Themes directory. You will get a
|
||||
new folder with the files.
|
||||
3) A bunch of folders + metrics.ini
|
||||
The themer was lazy; you're going to have to make a folder in the Themes
|
||||
directory and extract the theme in there.
|
||||
directory and extract the theme in there. Then go tell the themer that they're a bad person.
|
||||
|
||||
When in doubt, read any documentation that comes with the theme for proper
|
||||
installation instructions.
|
||||
|
||||
Do not attempt to use any theme made for a StepMania version older than StepMania 5.
|
||||
It will not work at all. Only use a theme made for StepMania 5 beta 1, or beta 2
|
||||
if you are a themer and you are working on that theme to make it work with
|
||||
StepMania 5 beta 4.
|
||||
|
||||
================================================================================
|
||||
Chapter 3: StepMania 5
|
||||
================================================================================
|
||||
The modern StepMania 5 originally began life as sm-ssc, a fork of StepMania 4
|
||||
alpha 5 (later renamed to StepMania 5 after the reboot of SM4). sm-ssc was a fork
|
||||
focused on adding features for theming, but also tried to make the process of
|
||||
dealing with StepMania a little easier.
|
||||
dealing with StepMania a little easier.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
3.1: Frequently Asked Questions about StepMania 5
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Q: How do I keep my background videos/images from being stretched/distorted?
|
||||
A: StepMania 5 has a preference for this, the "Set BG Fit Mode" option on the
|
||||
Service Options screen.
|
||||
Each column on that screen is a possible setting for the preference.
|
||||
Each column shows how a background with each of the 3 most common aspect ratios
|
||||
will look with that setting. The green rectangle in each example shows where the
|
||||
edge of the screen will cut off the background, and area not covered by the
|
||||
background will be black. Themes that change the contents of the Service Options
|
||||
menu might not have Set BG Fit Mode in the Service Options menu, so it is
|
||||
recommended to change to the default theme to set this option if you do not see
|
||||
it in the Service Options menu for the theme you are using.
|
||||
|
||||
Q: I'm a themer, how do I change the way ScreenSetBGFit looks?
|
||||
A: First, make sure your metrics allow it to be accessed. If your theme sets the
|
||||
LineNames metric in the ScreenOptionsService section, add "BGFit" to that metric.
|
||||
|
||||
Second, open Themes/_fallback/BGAnimations/ScreenSetBGFit overlay.lua and read
|
||||
everything in there.
|
||||
|
||||
Third, create the screen in your theme using the knowledge gained from step two.
|
||||
|
||||
Q: I run multiple versions of StepMania and I don't want to copy all my songs to the new install location.
|
||||
A: Close stepmania. Look in your User Data folder for Save/Preferences.ini.
|
||||
On OS X Save/ will actually be under ~/Library/Preferences/StepMania 5/.
|
||||
Open that file in a text editor. Add the full path to your Songs folder to the
|
||||
"AdditionalSongFolders" setting. If the folder your songs are in is anywhere
|
||||
under Program Files or anywhere else that UAC interferes with, you will probably
|
||||
have problems when editing simfiles.
|
||||
|
||||
Q: I have thousands of scores in StepMania 3.9, how can I copy them to StepMania 5?
|
||||
A: Create a new profile in StepMania 5. The profile's folder will be
|
||||
"User Data folder/Save/LocalProfiles/000000/" (000000 is the first profile created,
|
||||
if the new profile is the second profile, the folder name will be 000001, and so forth).
|
||||
Place your Stats.xml from StepMania 3.9 into the folder for the new profile,
|
||||
replacing any Stats.xml that is currently there.
|
||||
|
||||
Q: I have some scores in one profile and some other scores in another profile, how do I merge them?
|
||||
A: Hopefully, this feature will be added soon.
|
||||
|
||||
Q: I want to make a theme, why do I have to learn Lua? Isn't making a theme just making graphics?
|
||||
A: Themes are far more powerful in StepMania 5 than in previous versions.
|
||||
Themes are more than just image files and can change every part of interacting
|
||||
with StepMania. With this power comes the requirement of knowing how to use it.
|
||||
If the thought of learning Lua and using it as a language frightens you, spend
|
||||
more time reading the documentation and asking questions so you can learn to
|
||||
understand how to use it.
|
||||
|
||||
================================================================================
|
||||
Chapter 4: Reporting Problems
|
||||
================================================================================
|
||||
http://www.stepmania.com/forums/ is the official StepMania forum.
|
||||
Use this for asking questions and generally posting about StepMania.
|
||||
Please search the forums for threads that cover your question before making a
|
||||
new thread.
|
||||
|
||||
https://github.com/stepmania/stepmania/issues is the bug tracker list.
|
||||
Use this only for reporting problems or requesting features.
|
||||
Please search the list before reporting a new issue.
|
||||
|
||||
#stepmania-devs on irc.freenode.net is the IRC channel where the devs hang out.
|
||||
Use this to chat with the devs and discuss StepMania related things.
|
||||
|
||||
When reporting issues on the bug tracker:
|
||||
1: Make the title of your issue short and informative.
|
||||
"Crash report" is a bad title because it doesn't contain any context.
|
||||
"Crash while juggling kittens" is a good title because it shows vaguely where the
|
||||
problem is.
|
||||
|
||||
2: Include explicit steps for reproducing your problem.
|
||||
If you can't explain how you encountered the problem, we can't fix it.
|
||||
|
||||
3: If you have new information to add to an existing issue, please comment on
|
||||
that issue with the information you have.
|
||||
|
||||
4: Developers have limited time, issues will not be fixed or responded to
|
||||
immediately. Responses may take a week or two, so be patient and be prepared to
|
||||
go through a couple requests for more information.
|
||||
|
||||
5: It is important to include the name of the theme you are using with any issue
|
||||
report. If the problem is not an outright crash and cannot be reproduced in the
|
||||
default theme, it is likely a problem with the theme and should be reported to
|
||||
the author of that theme. The main StepMania issue tracker is not the place to
|
||||
report problems with any theme other than the default theme.
|
||||
|
||||
Requesting features on the bug tracker:
|
||||
If you are a themer requesting a new theme API feature, be prepared to describe
|
||||
very explicitly what you want. Same as for reporting bugs, be prepared to wait.
|
||||
Spending time in the developer IRC channel discussing issues can help a lot.
|
||||
|
||||
If you are a skilled programmer, implementing the feature and submitting a pull
|
||||
request is a good way to get it added to StepMania 5. See github's instructions
|
||||
on forking a repository and submitting a pull request.
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
[Redistributables]
|
||||
You may have to download the Visual C++ Redistritable Packages in order to
|
||||
run the game. The link is available here:
|
||||
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=30679
|
||||
|
||||
[Using Google Chrome?]
|
||||
If you are using Google Chrome as your primary web browser, you will have to perform some extra steps to get stepmania:// URI handling to work:
|
||||
|
||||
Find your user data
|
||||
Windows XP: C:\Documents and Settings\<USERNAME>\Local Settings\Application Data\Google\Chrome\User Data
|
||||
Windows Vista/7: C:\Users\<USERNAME>\AppData\Local\Google\Chrome\User Data
|
||||
|
||||
Add your protocol to the 'Local State' file under the 'protocol_handler' section, as such:
|
||||
"protocol_handler": {
|
||||
"excluded_schemes": {
|
||||
...
|
||||
"stepmania": false,
|
||||
...
|
||||
}
|
||||
@@ -89,7 +89,7 @@ Macgravel
|
||||
|
||||
hanubeki (@803832, formerly sy567)
|
||||
* Small beginner helper fix
|
||||
(http://www.stepmania.com/forums/showpost.php?p=158721&postcount=12)
|
||||
(http://old.stepmania.com/forums/showpost.php?p=158721&postcount=12)
|
||||
* Lots of code changes from hanubeki-modified-sm-ssc:
|
||||
http://code.google.com/r/hanubeki-modified-sm-ssc/
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
lots of license documentation for something sm-ssc uses? it goes in here.
|
||||
lots of license documentation for something StepMania uses? it goes in here.
|
||||
@@ -90,7 +90,7 @@ r111 | 20091122 10:21:30
|
||||
------------------------
|
||||
* [ArchHooks_Unix] Follow user's system language as default.
|
||||
[David Santamaría Rogado (howl)]
|
||||
See http://www.stepmania.com/forums/showthread.php?t=21471 for more info.
|
||||
See http://old.stepmania.com/forums/showthread.php?t=21471 for more info.
|
||||
|
||||
r110 | 20091120 14:03:17
|
||||
------------------------
|
||||
@@ -119,7 +119,7 @@ r106 | 20091115 21:33:28
|
||||
------------------------
|
||||
* Prevent focus lost at Fullscreen on X11, fix windowed->fullscreen resolution
|
||||
changes so that they save [David Santamaría Rogado (howl)]
|
||||
(http://www.stepmania.com/forums/showthread.php?t=21430)
|
||||
(http://old.stepmania.com/forums/showthread.php?t=21430)
|
||||
|
||||
r105 | 20091114 15:07:58
|
||||
------------------------
|
||||
@@ -153,7 +153,7 @@ r102 | 20091111 04:00:46
|
||||
r101 | 20091109 19:33:55
|
||||
------------------------
|
||||
* Implemented David Santamaría Rogado (howl)'s patch for loading Splash.png instead of an .xpm
|
||||
(http://www.stepmania.com/forums/showpost.php?p=157340&postcount=3)
|
||||
(http://old.stepmania.com/forums/showpost.php?p=157340&postcount=3)
|
||||
|
||||
r089-100 | 20091103 01:45:01 - 20091109 04:01:31
|
||||
------------------------------------------------
|
||||
@@ -176,7 +176,7 @@ Okay let's just say it's r089 to r100 and call it a week.
|
||||
* r28221: "allow overriding, like PRODUCT_ID" [Glenn Maynard]
|
||||
* r28222-28223: "adding support for pms files" [GRIM657]
|
||||
* The pulseaudio patch [David Santamaría Rogado (howl), OndÅ™ej HoÅ¡ek, Damien Thébault]
|
||||
(see http://www.stepmania.com/forums/showthread.php?t=21348)
|
||||
(see http://old.stepmania.com/forums/showthread.php?t=21348)
|
||||
* Greg Nadja's OpenGL/Windows patch
|
||||
|
||||
* sm-ssc Changes:
|
||||
@@ -784,7 +784,7 @@ r1136 | 20091115 20:43:48
|
||||
[Modified /sm-ssc3/src/arch/LowLevelWindow/LowLevelWindowX11.cpp]
|
||||
-------------------------
|
||||
howl did it
|
||||
http://www.stepmania.com/forums/showthread.php?p=157603#post157603
|
||||
http://old.stepmania.com/forums/showthread.php?p=157603#post157603
|
||||
|
||||
r1137 | 20091115 21:05:36
|
||||
[Modified /sm-ssc3/src/arch/LowLevelWindow/LowLevelWindowX11.cpp]
|
||||
|
||||
@@ -6,7 +6,8 @@ ACLOCAL_AMFLAGS = -I autoconf/m4
|
||||
## Black magic (read: sed) for getting the product ID as defined in code, not by the autotools.
|
||||
## Quotes are making vim's highlighting of this even worse, so just escape everything,
|
||||
## including the escapes. Make it lowercase to match ArchHooks::MountInitialFileSystems().
|
||||
productID := $(shell sed -nr /define\\s+PRODUCT_ID_BARE/\{s/.*define\\s+PRODUCT_ID_BARE\\s+\(.+\)/\\1/\;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/\;p\;q\} $(srcdir)/src/ProductInfo.h)
|
||||
## Replace space with - so package build tools won't choke on the installation directory.
|
||||
productID := $(shell sed -nr /define\\s+PRODUCT_ID_BARE/\{s/.*define\\s+PRODUCT_ID_BARE\\s+\(.+\)/\\1/\;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ\ /abcdefghijklmnopqrstuvwxyz-/\;p\;q\} $(srcdir)/src/ProductInfo.h)
|
||||
|
||||
installFiles = src/stepmania
|
||||
if HAVE_GTK
|
||||
@@ -26,14 +27,14 @@ dist-hook: SMData
|
||||
cp -r -t "$(distdir)" $(installFiles)
|
||||
|
||||
install-exec-hook:
|
||||
mkdir -p "$(prefix)/$(productID)"
|
||||
$(INSTALL) $(installFiles) "$(prefix)/$(productID)"
|
||||
mkdir -p "$(DESTDIR)$(prefix)/$(productID)"
|
||||
$(INSTALL) $(installFiles) "$(DESTDIR)$(prefix)/$(productID)"
|
||||
|
||||
install-data-local:
|
||||
cp -r -t "$(prefix)/$(productID)" $(installData)
|
||||
mkdir -p "$(prefix)/$(productID)/Songs"
|
||||
mkdir -p "$(DESTDIR)$(prefix)/$(productID)/Songs"
|
||||
cp -r -t "$(DESTDIR)$(prefix)/$(productID)" $(installData)
|
||||
|
||||
uninstall-hook:
|
||||
rm -f "$(prefix)/$(productID)/stepmania"
|
||||
rm -f "$(prefix)/$(productID)/GtkModule.so"
|
||||
rm -f "$(DESTDIR)$(prefix)/$(productID)/stepmania"
|
||||
rm -f "$(DESTDIR)$(prefix)/$(productID)/GtkModule.so"
|
||||
# todo: properly remove data
|
||||
|
||||
@@ -3,6 +3,8 @@ StepMania
|
||||
|
||||
Advanced cross-platform rhythm game for home and arcade use.
|
||||
|
||||
[](https://travis-ci.org/stepmania/stepmania)
|
||||
|
||||
Source is all MIT Licensed, songs are CC-NC, builds with MAD or GPL-licensed FFMPEG codecs are GPL.
|
||||
|
||||
* Website: http://www.stepmania.com/
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
Scoring={}
|
||||
|
||||
setmetatable(Scoring,{__index=function() return function() Warn("Lua scoring unimplemented") end end})
|
||||
setmetatable(Scoring,{__index=function() return function() lua.ReportScriptError("Lua scoring unimplemented") end end})
|
||||
|
||||
@@ -1,153 +1,49 @@
|
||||
local function Fooled()
|
||||
local phrases = {
|
||||
"hornswaggled",
|
||||
"bamboozled",
|
||||
"hoodwinked",
|
||||
"swindled",
|
||||
"duped",
|
||||
"hoaxed",
|
||||
"fleeced",
|
||||
"shafted",
|
||||
"caboodled",
|
||||
"beguiled",
|
||||
"finagled",
|
||||
"two-timed",
|
||||
"suckered",
|
||||
"flimflammed"
|
||||
}
|
||||
return phrases[math.random(#phrases)]
|
||||
end
|
||||
-- To add a section to the credits, use the following:
|
||||
-- local theme_credits= {
|
||||
-- name= "Theme Credits", -- the name of your section
|
||||
-- "Me", -- The people you want to list in your section.
|
||||
-- "Myself",
|
||||
-- "My other self",
|
||||
-- {logo= "pro_dude", name= "Pro self"}, -- Someone who has a logo image.
|
||||
-- -- This logo image would be "Graphics/CreditsLogo pro_dude.png".
|
||||
-- }
|
||||
-- StepManiaCredits.AddSection(theme_credits)
|
||||
--
|
||||
-- If you want to add your section after an existing section, use the following:
|
||||
-- StepManiaCredits.AddSection(theme_credits, 7)
|
||||
--
|
||||
-- Or position can be the name of a section to insert after:
|
||||
-- StepManiaCredits.AddSection(theme_credits, "Special Thanks")
|
||||
--
|
||||
-- Or if you want to add your section before a section:
|
||||
-- StepManiaCredits.AddSection(theme_credits, "Special Thanks", true)
|
||||
|
||||
local ssc = {
|
||||
"AJ Kelly as freem",
|
||||
"Jonathan Payne (Midiman)",
|
||||
"Colby Klein (shakesoda)",
|
||||
}
|
||||
|
||||
local sm_ssc = {
|
||||
"Jason Felds (wolfman2000)", -- Timing Segments, Split Timing, optimization
|
||||
"Thai Pangsakulyanont (theDtTvB)", -- BMS, Split Timing, optimization
|
||||
"Alberto Ramos (Daisuke Master)",
|
||||
"Jack Walstrom (FSX)",
|
||||
}
|
||||
|
||||
local stepmania = {
|
||||
"Chris Danford",
|
||||
"Glenn Maynard",
|
||||
"Steve Checkoway",
|
||||
-- and various other contributors
|
||||
}
|
||||
|
||||
local oitg = {
|
||||
"infamouspat",
|
||||
"Mark Cannon (vyhd)",
|
||||
}
|
||||
|
||||
local contrib = {
|
||||
"Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator
|
||||
"A.C/@waiei", -- custom scoring fixes + Hybrid scoring
|
||||
"cerbo", -- lua bindings and other fun stuff
|
||||
"cesarmades", -- pump/cmd* noteskins
|
||||
"Chris Eldridge (kurisu)", -- dance-threepanel stepstype support
|
||||
"Christophe Goulet-LeBlanc (Kommisar)", -- songs
|
||||
"corec", -- various fixes
|
||||
"galopin", -- piu PlayStation2 usb mat support
|
||||
"gholms", -- automake 1.11 support
|
||||
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
|
||||
"Kaox", -- pump/default noteskin
|
||||
"NitroX72", -- pump/frame noteskin
|
||||
"Petriform", -- default theme music
|
||||
"桜為小鳩/Sakurana-Kobato (@sakuraponila)", -- custom scoring fixes
|
||||
"Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes
|
||||
"hanubeki (@803832)", -- beginner helper fix, among various other things
|
||||
"v1toko", -- x-mode from StepNXA
|
||||
"Alfred Sorenson", -- new lua bindings
|
||||
}
|
||||
|
||||
local translators = {
|
||||
"John Reactor (Polish)",
|
||||
"DHalens (Spanish)",
|
||||
"@Niler_jp (Japanese)",
|
||||
"Deamon007 (Dutch)"
|
||||
}
|
||||
|
||||
local thanks = {
|
||||
"A Pseudonymous Coder", -- support
|
||||
"Bill Shillito (DM Ashura)", -- Music (not yet though)
|
||||
"cpubasic13", -- testing (a lot)
|
||||
"Dreamwoods",
|
||||
"Jason Bolt (LightningXCE)",
|
||||
"Jousway", -- Noteskins
|
||||
"Luizsan", -- creator of Delta theme
|
||||
"Matt1360", -- Automake magic + oitg bro
|
||||
"Renard",
|
||||
"Ryan McKanna (Plaguefox)",
|
||||
"Sta Kousin", --help with Japanese bug reports
|
||||
}
|
||||
|
||||
local shoutout = {
|
||||
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
|
||||
"Mojang AB", -- minecraft forever -freem
|
||||
"Wolfire Games", -- piles of inspiration
|
||||
"NAKET Coder",
|
||||
"Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits
|
||||
--Image(), -- we should have some logos probably to look super pro
|
||||
"#KBO",
|
||||
"Celestia Radio", -- LOVE AND TOLERANCE
|
||||
"You showed us... your ultimate dance",
|
||||
}
|
||||
|
||||
local copyright = {
|
||||
"StepMania is released under the terms of the MIT license.",
|
||||
"If you paid for the program you've been " .. Fooled() .. ".",
|
||||
"All content is the sole property of their respectful owners."
|
||||
}
|
||||
|
||||
local sections = {
|
||||
{ "the spinal shark collective (project lead)", ssc },
|
||||
{ "sm-ssc Team", sm_ssc },
|
||||
{ "StepMania Team", stepmania },
|
||||
{ "OpenITG Team", oitg },
|
||||
{ "Translators", translators },
|
||||
{ "Other Contributors", contrib },
|
||||
{ "Special Thanks", thanks },
|
||||
{ "Shoutouts", shoutout },
|
||||
{ "Copyright", copyright },
|
||||
}
|
||||
|
||||
-- To add people or sections modify the above.
|
||||
-- StepManiaCredits is defined in _fallback/Scripts/04 CreditsHelpers.lua.
|
||||
|
||||
local lineOn = cmd(zoom,0.875;strokecolor,color("#444444");shadowcolor,color("#444444");shadowlength,3)
|
||||
local sectionOn = cmd(diffuse,color("#88DDFF");strokecolor,color("#446688");shadowcolor,color("#446688");shadowlength,3)
|
||||
local item_padding_start = 4;
|
||||
local line_height= 30
|
||||
-- Tell the credits table the line height so it can use it for logo sizing.
|
||||
StepManiaCredits.SetLineHeight(line_height)
|
||||
|
||||
local creditScroller = Def.ActorScroller {
|
||||
SecondsPerItem = 0.5;
|
||||
NumItemsToDraw = 40;
|
||||
TransformFunction = function( self, offset, itemIndex, numItems)
|
||||
self:y(30*offset)
|
||||
self:y(line_height*offset)
|
||||
end;
|
||||
OnCommand = cmd(scrollwithpadding,item_padding_start,15);
|
||||
}
|
||||
|
||||
local function AddLine( text, command )
|
||||
local text = Def.ActorFrame{
|
||||
LoadFont("Common normal")..{
|
||||
Text = text or "";
|
||||
OnCommand = command or lineOn;
|
||||
}
|
||||
}
|
||||
table.insert( creditScroller, text )
|
||||
end
|
||||
|
||||
-- Add sections with padding.
|
||||
for section in ivalues(sections) do
|
||||
AddLine( section[1], sectionOn )
|
||||
for name in ivalues(section[2]) do
|
||||
AddLine( name )
|
||||
for section in ivalues(StepManiaCredits.Get()) do
|
||||
StepManiaCredits.AddLineToScroller(creditScroller, section.name, sectionOn)
|
||||
for name in ivalues(section) do
|
||||
StepManiaCredits.AddLineToScroller(creditScroller, name)
|
||||
end
|
||||
AddLine()
|
||||
AddLine()
|
||||
StepManiaCredits.AddLineToScroller(creditScroller)
|
||||
StepManiaCredits.AddLineToScroller(creditScroller)
|
||||
end
|
||||
|
||||
creditScroller.BeginCommand=function(self)
|
||||
@@ -158,4 +54,4 @@ return Def.ActorFrame{
|
||||
creditScroller..{
|
||||
InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64),
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,18 +24,18 @@ t[#t+1] = Def.ActorFrame {
|
||||
LoadFont("Common Normal") .. {
|
||||
Text=ProductID();
|
||||
InitCommand=cmd(y,-20;zoom,0.75);
|
||||
OnCommand=cmd(diffuse,color("0,0,0,1");strokecolor,color("#f7941d"));
|
||||
OnCommand=cmd(diffuse,color("0,0,0,1"));
|
||||
};
|
||||
LoadFont("Common Normal") .. {
|
||||
Text=THEME:GetThemeDisplayName();
|
||||
OnCommand=cmd(diffuse,color("0,0,0,1");strokecolor,color("#f7941d"));
|
||||
OnCommand=cmd(diffuse,color("0,0,0,1"));
|
||||
};
|
||||
LoadFont("Common Normal") .. {
|
||||
Text="Created by " .. THEME:GetThemeAuthor();
|
||||
InitCommand=cmd(y,24;zoom,0.75);
|
||||
OnCommand=cmd(diffuse,color("0,0,0,1");strokecolor,color("#f7941d"));
|
||||
OnCommand=cmd(diffuse,color("0,0,0,1"));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
return t
|
||||
return t
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
local waitTime = 7.5
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y);
|
||||
OnCommand=cmd(queuecommand,"TweenOn";sleep,waitTime;queuecommand,"TweenOff");
|
||||
}
|
||||
t[#t+1] = Def.Quad {
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color.Black);
|
||||
TweenOnCommand=cmd(diffusealpha,1;linear,0.5;diffusealpha,0.8);
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0);
|
||||
};
|
||||
t[#t+1] = Def.ActorFrame {
|
||||
LoadFont("Common Normal") .. {
|
||||
Text=ScreenString("WarningHeader");
|
||||
InitCommand=cmd(y,-70;diffuse,Color.Red);
|
||||
TweenOnCommand=cmd(diffusealpha,0;zoomx,2;zoomy,0;sleep,0.5;smooth,0.25;zoom,1;diffusealpha,1);
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0);
|
||||
};
|
||||
LoadFont("Common Normal") .. {
|
||||
Text=ScreenString("WarningText");
|
||||
InitCommand=cmd(y,10;wrapwidthpixels,SCREEN_WIDTH-48);
|
||||
TweenOnCommand=cmd(diffusealpha,0;sleep,0.5125;linear,0.125;diffusealpha,1);
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0);
|
||||
};
|
||||
};
|
||||
|
||||
return t
|
||||
@@ -26,13 +26,13 @@ t[#t+1] = Def.ActorFrame {
|
||||
--
|
||||
t[#t+1] = Def.Actor {
|
||||
MenuTimerExpiredMessageCommand = function(self, param)
|
||||
for pn in ivalues(Players) do
|
||||
for pn in ivalues(PlayerNumber) do
|
||||
SCREENMAN:GetTopScreen():Finish(pn);
|
||||
end
|
||||
end;
|
||||
CodeMessageCommand=function(self,param)
|
||||
if param.Name == "Enter" then
|
||||
SCREENMAN:GetTopScreen():Finish(pn);
|
||||
SCREENMAN:GetTopScreen():Finish(param.PlayerNumber);
|
||||
end
|
||||
end
|
||||
};
|
||||
|
||||
@@ -0,0 +1,366 @@
|
||||
-- Pester Kyzentun for an explanation if you need to customize this screen.
|
||||
-- Also, this might be rewritten to us a proper customizable lua menu system
|
||||
-- in the future.
|
||||
|
||||
-- Copy this file into your theme, then modify as needed to suit your theme.
|
||||
-- Each of the things on this list has a comment marking it, so you can
|
||||
-- quickly find it by searching.
|
||||
-- Things you will want to change:
|
||||
-- 1. The Numpad
|
||||
-- 2. The Cursor
|
||||
-- 3. The Menu Items
|
||||
-- 4. The Menu Values
|
||||
-- 4.1 The L/R indicators
|
||||
-- 5. The Menu Fader
|
||||
|
||||
local profile= GAMESTATE:GetEditLocalProfile()
|
||||
|
||||
-- 1. The Numpad
|
||||
-- This is what sets up how the numpad looks. See Scripts/04 NumPadEntry.lua
|
||||
-- for a full description of how to customize a NumPad.
|
||||
-- Note that if you provide a custom prompt actor for the NumPad, it must
|
||||
-- have a SetCommand because the NumPad is used any time the player needs to
|
||||
-- enter a number, and the prompt is updated by running its SetCommand.
|
||||
local number_entry= new_numpad_entry{
|
||||
Name= "number_entry",
|
||||
InitCommand= cmd(diffusealpha, 0; xy, _screen.cx*1.5, _screen.cy),
|
||||
value_color= PlayerColor(PLAYER_1),
|
||||
cursor_draw= "first",
|
||||
cursor_color= PlayerDarkColor(PLAYER_1),
|
||||
}
|
||||
|
||||
local function calc_list_pos(value, list)
|
||||
for i, entry in ipairs(list) do
|
||||
if entry.setting == value then
|
||||
return i
|
||||
end
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
local function item_value_to_text(item, value)
|
||||
if item.item_type == "bool" then
|
||||
if value then
|
||||
value= THEME:GetString("ScreenOptionsCustomizeProfile", item.true_text)
|
||||
else
|
||||
value= THEME:GetString("ScreenOptionsCustomizeProfile", item.false_text)
|
||||
end
|
||||
elseif item.item_type == "list" then
|
||||
local pos= calc_list_pos(value, item.list)
|
||||
return item.list[pos].display_name
|
||||
end
|
||||
return value
|
||||
end
|
||||
|
||||
local char_list= {}
|
||||
do
|
||||
local all_chars= CHARMAN:GetAllCharacters()
|
||||
for i, char in ipairs(char_list) do
|
||||
char_list[#char_list+1]= {
|
||||
setting= char:GetCharacterID(), display_name= char:GetDisplayName()}
|
||||
end
|
||||
end
|
||||
|
||||
local menu_items= {
|
||||
{name= "weight", get= "GetWeightPounds", set= "SetWeightPounds",
|
||||
item_type= "number", auto_done= 100},
|
||||
{name= "voomax", get= "GetVoomax", set= "SetVoomax", item_type= "number",
|
||||
auto_done= 10},
|
||||
{name= "birth_year", get= "GetBirthYear", set= "SetBirthYear",
|
||||
item_type= "number", auto_done= 1000},
|
||||
{name= "calorie_calc", get= "GetIgnoreStepCountCalories",
|
||||
set= "SetIgnoreStepCountCalories", item_type= "bool",
|
||||
true_text= "use_heart", false_text= "use_steps"},
|
||||
{name= "gender", get= "GetIsMale", set= "SetIsMale", item_type= "bool",
|
||||
true_text= "male", false_text= "female"},
|
||||
}
|
||||
if #char_list > 0 then
|
||||
menu_items[#menu_items+1]= {
|
||||
name= "character", get= "GetCharacter", set= "SetCharacter",
|
||||
item_type= "list", list= char_list}
|
||||
end
|
||||
menu_items[#menu_items+1]= {name= "exit", item_type= "exit"}
|
||||
|
||||
local menu_cursor
|
||||
local menu_pos= 1
|
||||
local menu_start= 72
|
||||
local menu_x= 32
|
||||
local value_x= 300
|
||||
local fader
|
||||
local cursor_on_menu= "main"
|
||||
local menu_item_actors= {}
|
||||
local menu_values= {}
|
||||
local list_pos= 0
|
||||
local active_list= {}
|
||||
local left_showing= false
|
||||
local right_showing= false
|
||||
|
||||
local function fade_actor_to(actor, alf)
|
||||
actor:stoptweening()
|
||||
actor:linear(.2)
|
||||
actor:diffusealpha(alf)
|
||||
end
|
||||
|
||||
local function update_menu_cursor()
|
||||
local item= menu_item_actors[menu_pos]
|
||||
menu_cursor:playcommand("Move", {item:GetX(), item:GetY()})
|
||||
menu_cursor:playcommand("Fit", item)
|
||||
end
|
||||
|
||||
local function update_list_cursor()
|
||||
local valactor= menu_values[menu_pos]
|
||||
valactor:playcommand("Set", {active_list[list_pos].display_name})
|
||||
if list_pos > 1 then
|
||||
if not left_showing then
|
||||
valactor:playcommand("ShowLeft")
|
||||
left_showing= true
|
||||
end
|
||||
else
|
||||
if left_showing then
|
||||
valactor:playcommand("HideLeft")
|
||||
left_showing= false
|
||||
end
|
||||
end
|
||||
if list_pos < #active_list then
|
||||
if not right_showing then
|
||||
valactor:playcommand("ShowRight")
|
||||
right_showing= true
|
||||
end
|
||||
else
|
||||
if right_showing then
|
||||
valactor:playcommand("HideRight")
|
||||
right_showing= false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function input(event)
|
||||
local pn= event.PlayerNumber
|
||||
if not pn then return false end
|
||||
if event.type == "InputEventType_Release" then return false end
|
||||
local button= event.GameButton
|
||||
if cursor_on_menu == "main" then
|
||||
if button == "Start" then
|
||||
local item= menu_items[menu_pos]
|
||||
if item.item_type == "bool" then
|
||||
local value= not profile[item.get](profile)
|
||||
menu_values[menu_pos]:playcommand(
|
||||
"Set", {item_value_to_text(item, value)})
|
||||
profile[item.set](profile, value)
|
||||
elseif item.item_type == "number" then
|
||||
fade_actor_to(fader, .8)
|
||||
fade_actor_to(number_entry.container, 1)
|
||||
number_entry.value= profile[item.get](profile)
|
||||
number_entry.value_actor:playcommand("Set", {number_entry.value})
|
||||
number_entry.auto_done_value= item.auto_done
|
||||
number_entry.max_value= item.max
|
||||
number_entry:update_cursor(number_entry.cursor_start)
|
||||
number_entry.prompt_actor:playcommand(
|
||||
"Set", {THEME:GetString("ScreenOptionsCustomizeProfile", item.name)})
|
||||
cursor_on_menu= "numpad"
|
||||
elseif item.item_type == "list" then
|
||||
cursor_on_menu= "list"
|
||||
active_list= menu_items[menu_pos].list
|
||||
list_pos= calc_list_pos(
|
||||
profile[menu_items[menu_pos].get](profile), active_list)
|
||||
update_list_cursor()
|
||||
elseif item.item_type == "exit" then
|
||||
local profile_id= GAMESTATE:GetEditLocalProfileID()
|
||||
PROFILEMAN:SaveLocalProfile(profile_id)
|
||||
SCREENMAN:GetTopScreen():StartTransitioningScreen("SM_GoToNextScreen")
|
||||
SOUND:PlayOnce(THEME:GetPathS("Common", "Start"))
|
||||
end
|
||||
else
|
||||
if button == "MenuLeft" or button == "MenuUp" then
|
||||
if menu_pos > 1 then menu_pos= menu_pos - 1 end
|
||||
update_menu_cursor()
|
||||
elseif button == "MenuRight" or button == "MenuDown" then
|
||||
if menu_pos < #menu_items then menu_pos= menu_pos + 1 end
|
||||
update_menu_cursor()
|
||||
end
|
||||
end
|
||||
elseif cursor_on_menu == "numpad" then
|
||||
local done= number_entry:handle_input(button)
|
||||
if done then
|
||||
local item= menu_items[menu_pos]
|
||||
profile[item.set](profile, number_entry.value)
|
||||
menu_values[menu_pos]:playcommand(
|
||||
"Set", {item_value_to_text(item, number_entry.value)})
|
||||
fade_actor_to(fader, 0)
|
||||
fade_actor_to(number_entry.container, 0)
|
||||
cursor_on_menu= "main"
|
||||
end
|
||||
elseif cursor_on_menu == "list" then
|
||||
if button == "MenuLeft" or button == "MenuUp" then
|
||||
if list_pos > 1 then list_pos= list_pos - 1 end
|
||||
update_list_cursor()
|
||||
menu_values[menu_pos]:playcommand("PressLeft")
|
||||
elseif button == "MenuRight" or button == "MenuDown" then
|
||||
if list_pos < #active_list then list_pos= list_pos + 1 end
|
||||
update_list_cursor()
|
||||
menu_values[menu_pos]:playcommand("PressRight")
|
||||
elseif button == "Start" then
|
||||
profile[menu_items[menu_pos].set](profile, active_list[list_pos].setting)
|
||||
local valactor= menu_values[menu_pos]
|
||||
left_showing= false
|
||||
right_showing= false
|
||||
valactor:playcommand("HideLeft")
|
||||
valactor:playcommand("HideRight")
|
||||
cursor_on_menu= "main"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local args= {
|
||||
Def.Actor{
|
||||
OnCommand= function(self)
|
||||
update_menu_cursor()
|
||||
SCREENMAN:GetTopScreen():AddInputCallback(input)
|
||||
end
|
||||
},
|
||||
-- 2. The Cursor
|
||||
-- This is the cursor on the main portion of the menu.
|
||||
-- It needs to have Move and Fit commands for when it's moved to a new
|
||||
-- item on the list.
|
||||
Def.Quad{
|
||||
Name= "menu_cursor", InitCommand= function(self)
|
||||
menu_cursor= self
|
||||
self:horizalign(left)
|
||||
self:setsize(0, 24)
|
||||
self:diffuse(PlayerColor(PLAYER_1))
|
||||
self:xy(menu_x - 10, menu_start)
|
||||
end,
|
||||
-- params contains the position to move to.
|
||||
-- The -10 to x position is to give a bit of cursor on the left.
|
||||
MoveCommand= function(self, params)
|
||||
self:stoptweening()
|
||||
self:linear(.1)
|
||||
self:xy(params[1] - 10, params[2])
|
||||
end,
|
||||
-- param is the actor to fit around.
|
||||
-- The +20 to width is to give a bit of cursor on each side.
|
||||
FitCommand= function(self, param)
|
||||
self:SetWidth(param:GetWidth() + 20)
|
||||
end
|
||||
},
|
||||
}
|
||||
|
||||
-- Note that the "character" item in the menu only shows up if there are
|
||||
-- characters to choose from. You might want to adjust positioning for that.
|
||||
for i, item in ipairs(menu_items) do
|
||||
local item_y= menu_start + ((i-1) * 24)
|
||||
-- 3. The Menu Items
|
||||
-- This creates the actor that will be used to show each item on the menu.
|
||||
args[#args+1]= Def.BitmapText{
|
||||
Name= "menu_" .. item.name, Font= "Common Normal",
|
||||
Text= THEME:GetString("ScreenOptionsCustomizeProfile", item.name),
|
||||
InitCommand= function(self)
|
||||
-- Note that the item adds itself to the list menu_item_actors. This
|
||||
-- is so that when the cursor is moved, the appropriate item can be
|
||||
-- easily fetched for positioning and sizing the cursor.
|
||||
-- Note the ActorFrames have a width of 1 unless you set it, so when
|
||||
-- you change this from an BitmapText to a ActorFrame, you will have
|
||||
-- to make the FitCommand of your cursor look at the children.
|
||||
menu_item_actors[i]= self
|
||||
self:xy(menu_x, item_y)
|
||||
self:diffuse(Color.White)
|
||||
self:horizalign(left)
|
||||
end
|
||||
}
|
||||
if item.get then
|
||||
local value_text= item_value_to_text(item, profile[item.get](profile))
|
||||
-- 4. The Menu Values
|
||||
-- Each of the values needs to have a SetCommand so it can be updated
|
||||
-- when the player changes it.
|
||||
-- And ActorFrame is used because values for list items need to have
|
||||
-- left/right indicators for when the player is making a choice.
|
||||
local value_args= {
|
||||
Name= "value_" .. item.name,
|
||||
InitCommand= function(self)
|
||||
-- Note that the ActorFrame is being added to the list menu_values
|
||||
-- so it can be easily fetched and updated when the value changes.
|
||||
menu_values[i]= self
|
||||
self:xy(value_x, menu_start + ((i-1) * 24))
|
||||
end,
|
||||
Def.BitmapText{
|
||||
Name= "val", Font= "Common Normal", Text= value_text,
|
||||
InitCommand= function(self)
|
||||
self:diffuse(Color.White)
|
||||
self:horizalign(left)
|
||||
end,
|
||||
SetCommand= function(self, param)
|
||||
self:settext(param[1])
|
||||
end,
|
||||
}
|
||||
}
|
||||
if item.item_type == "list" then
|
||||
-- 4.1 The L/R indicators
|
||||
-- The L/R indicators are there to tell the player when there is a
|
||||
-- choice to the left or right of the choice they are on.
|
||||
-- Note that they are placed inside the ActorFrame for the value, so
|
||||
-- when commands are played on the ActorFrame, they are played for the
|
||||
-- indicators too.
|
||||
-- The commands are ShowLeft, HideLeft, PressLeft, and the same for
|
||||
-- Right.
|
||||
-- Note that the right indicator has a SetCommand so it sees when the
|
||||
-- value changes and checks the new width to position itself.
|
||||
-- Show/Hide is only played when the indicator changes state.
|
||||
-- Command execution order: Set, Show/Hide (if change occurred), Press
|
||||
value_args[#value_args+1]= Def.ActorMultiVertex{
|
||||
InitCommand= function(self)
|
||||
self:SetVertices{
|
||||
{{-5, 0, 0}, Color.White}, {{0, -10, 0}, Color.White},
|
||||
{{0, 10, 0}, Color.White}}
|
||||
self:SetDrawState{Mode= "DrawMode_Triangles"}
|
||||
self:x(-8)
|
||||
self:visible(false)
|
||||
self:playcommand("Set", {value_text})
|
||||
end,
|
||||
ShowLeftCommand= cmd(visible, true),
|
||||
HideLeftCommand= cmd(visible, false),
|
||||
PressLeftCommand= cmd(stoptweening; linear, .2; zoom, 2; linear, .2;
|
||||
zoom, 1),
|
||||
}
|
||||
value_args[#value_args+1]= Def.ActorMultiVertex{
|
||||
InitCommand= function(self)
|
||||
self:SetVertices{
|
||||
{{5, 0, 0}, Color.White}, {{0, -10, 0}, Color.White},
|
||||
{{0, 10, 0}, Color.White}}
|
||||
self:SetDrawState{Mode= "DrawMode_Triangles"}
|
||||
self:visible(false)
|
||||
end,
|
||||
SetCommand= function(self)
|
||||
local valw= self:GetParent():GetChild("val"):GetWidth()
|
||||
self:x(valw+8)
|
||||
end,
|
||||
ShowRightCommand= cmd(visible, true),
|
||||
HideRightCommand= cmd(visible, false),
|
||||
PressRightCommand= cmd(stoptweening; linear, .2; zoom, 2; linear, .2;
|
||||
zoom, 1),
|
||||
}
|
||||
end
|
||||
args[#args+1]= Def.ActorFrame(value_args)
|
||||
end
|
||||
end
|
||||
|
||||
-- 5. The Menu Fader
|
||||
-- This is just something to tell the player that the menu is no longer
|
||||
-- active because they are interacting with the numpad.
|
||||
-- Default is to just fade this in over the top of the menu. If you want
|
||||
-- something different, change the places in the input function that call
|
||||
-- fade_actor_to to do what you want with the fader.
|
||||
args[#args+1]= Def.Quad{
|
||||
Name= "fader", InitCommand= function(self)
|
||||
fader= self
|
||||
self:setsize(270, #menu_items * 24)
|
||||
self:horizalign(left)
|
||||
self:vertalign(top)
|
||||
self:xy(menu_x-10, menu_start-12)
|
||||
self:diffuse(Color.Black)
|
||||
self:diffusealpha(0)
|
||||
end
|
||||
}
|
||||
|
||||
args[#args+1]= number_entry:create_actors()
|
||||
|
||||
return Def.ActorFrame(args)
|
||||
@@ -0,0 +1,149 @@
|
||||
-- General layout: There is one choice for each possible background fitting
|
||||
-- mode. Each choice will have three examples showing how backgrounds of
|
||||
-- common aspect ratios will be stretched or clipped by that fitting mode.
|
||||
|
||||
-- fit_choices will be used later to tell the actor that controls input what
|
||||
-- actors to use for each choice.
|
||||
local fit_choices= {}
|
||||
-- actors will contain all the actors on the screen.
|
||||
local actors= {}
|
||||
-- width_per_choice is how much of the screen width will be used to separate
|
||||
-- each choice
|
||||
local width_per_choice= _screen.w / #BackgroundFitMode
|
||||
-- xstart is the x position of the first choice. It starts at
|
||||
-- width_per_choice / 2 because that's the x coordinate of the center of the
|
||||
-- first choice.
|
||||
local xstart= width_per_choice / 2
|
||||
-- mini_screen_w and mini_screen_h are the size of the miniature screen used
|
||||
-- in the examples.
|
||||
local mini_screen_w= _screen.w * .1
|
||||
local mini_screen_h= _screen.h * .1
|
||||
|
||||
-- This function returns a BitmapText that will be used to label each example
|
||||
-- in each choice.
|
||||
-- w and h are the width and height of the aspect ratio, passed in so they
|
||||
-- can be displayed to be read.
|
||||
function BGFitNormalExampleText(w, h)
|
||||
return Def.BitmapText{
|
||||
-- To use a different font for the text, change the Font field.
|
||||
Name= "example_label", Font= "Common Normal",
|
||||
-- The "BG" part of the text is fetched with THEME:GetString so that it
|
||||
-- can be translated.
|
||||
Text= w .. ":" .. h .. " " .. THEME:GetString("ScreenSetBGFit", "BG"),
|
||||
InitCommand= function(self)
|
||||
-- This positions the text underneath its corresponding example.
|
||||
self:y(mini_screen_h * .5 + 9)
|
||||
self:zoom(.375)
|
||||
end,
|
||||
OnCommand=cmd(shadowlength,1)
|
||||
}
|
||||
end
|
||||
|
||||
-- This loop goes through all the array elements of the BackgroundFitMode
|
||||
-- table and creates a choice actor for each one. The BackgroundFitMode
|
||||
-- table contains an entry for each background fitting mode.
|
||||
for i, mode in ipairs(BackgroundFitMode) do
|
||||
actors[#actors+1]= Def.ActorFrame{
|
||||
Name= mode, InitCommand= function(self)
|
||||
-- This adds the actor to fit_choices so it can be used by the input
|
||||
-- controller.
|
||||
fit_choices[i]= self
|
||||
-- This positions the choice on the screen. Choices are placed in a
|
||||
-- row across the center of the screen, evenly spaced.
|
||||
self:xy(xstart + ((i-1) * width_per_choice), _screen.cy)
|
||||
end,
|
||||
Def.BitmapText{
|
||||
-- This actor is a label for the choice, so the player knows the name
|
||||
-- of their choice.
|
||||
Name= "mode_label", Font= "Common Normal",
|
||||
Text= THEME:GetString("ScreenSetBGFit", ToEnumShortString(mode)),
|
||||
InitCommand= function(self)
|
||||
-- Position the label above the topmost example.
|
||||
self:y(mini_screen_h * -2.5)
|
||||
self:zoom(.75)
|
||||
end,
|
||||
OnCommand=cmd(diffusebottomedge,color("0.875,0.875,0.875");shadowlength,1)
|
||||
},
|
||||
-- BGFitChoiceExample is a function that creates an example to show how
|
||||
-- a bg with a given aspect ratio is affected by the fitting mode for
|
||||
-- this choice. It takes a number of parameters that control how the
|
||||
-- example is created.
|
||||
-- The simplest way to modify it to suit your theme is to just change
|
||||
-- the png files and the two colors.
|
||||
BGFitChoiceExample{
|
||||
-- exname is the name of the image in Graphics that will be used as an
|
||||
-- example bg to show distortion/cropping. "16_12_example.png" means
|
||||
-- that "Graphics/ScreenSetBGFit 16_12_example.png" will be loaded.
|
||||
exname= "16_12_example.png",
|
||||
-- x and y are the position this example will be placed at.
|
||||
-- x is 0 because the x positioning was handled above, when the choice
|
||||
-- this example is part of was positioned.
|
||||
-- This is the first example of 3, so y is set to position it above
|
||||
-- the other two.
|
||||
x= 0, y= mini_screen_h * -1.5,
|
||||
-- mini_screen_w and mini_screen_h are the size of the miniature screen
|
||||
-- the example will draw.
|
||||
mini_screen_w= mini_screen_w, mini_screen_h= mini_screen_h,
|
||||
-- example_function is the background fitting function for the mode
|
||||
-- that will be set by this choice. bg_fit_functions is a table
|
||||
-- that contains a function for each mode, so we set example_function
|
||||
-- to the element of bg_fit_functions that has the same name as the
|
||||
-- mode this choice is for.
|
||||
example_function= bg_fit_functions[mode],
|
||||
-- example_label is an actor that will be used to label this example,
|
||||
-- so the player knows what size of bg is shown in this example.
|
||||
example_label= BGFitNormalExampleText(16, 12),
|
||||
-- sbg_color is the color of the quad representing the screen in the
|
||||
-- example. sbg_color is the color of the outline representing the
|
||||
-- screen in the example.
|
||||
-- The quad is visible behind the example bg, so it's seen around the
|
||||
-- edges when the example doesn't fill the miniature screen.
|
||||
-- The outline is drawn over everything else so the player can see what
|
||||
-- part of the example bg will be cut off.
|
||||
sbg_color= color("0,0,0,1"), soutline_color= color("#39b54a")},
|
||||
-- The parameters passed to the other examples have the same meaning as
|
||||
-- above.
|
||||
BGFitChoiceExample{
|
||||
exname= "16_10_example.png", x= 0, y= 0,
|
||||
mini_screen_w= mini_screen_w, mini_screen_h= mini_screen_h,
|
||||
example_function= bg_fit_functions[mode],
|
||||
example_label= BGFitNormalExampleText(16, 10),
|
||||
sbg_color= color("0,0,0,1"), soutline_color= color("#39b54a")},
|
||||
BGFitChoiceExample{
|
||||
exname= "16_9_example.png", x= 0, y= mini_screen_h * 1.5,
|
||||
mini_screen_w= mini_screen_w, mini_screen_h= mini_screen_h,
|
||||
example_function= bg_fit_functions[mode],
|
||||
example_label= BGFitNormalExampleText(16, 9),
|
||||
sbg_color= color("0,0,0,1"), soutline_color= color("#39b54a")},
|
||||
}
|
||||
end
|
||||
|
||||
-- LoseFocus and GainFocus will be used on each choice to show which one
|
||||
-- is currently selected.
|
||||
local function LoseFocus(self)
|
||||
-- We use stoptweening so that the player can't overflow the tween buffer
|
||||
-- through repeated rapid input. Using stoptweening means that the actor
|
||||
-- will stop at its current state and start tweening towards the new state
|
||||
-- we are about to add to the tween stack.
|
||||
-- If finishtweening was used, there would be jerking from the actor
|
||||
-- suddenly reaching the end tween state.
|
||||
self:stoptweening()
|
||||
-- .25 seconds is a fine time for changing zoom size.
|
||||
self:smooth(.125)
|
||||
-- Unfocused choices are normal size.
|
||||
self:zoom(1)
|
||||
end
|
||||
|
||||
local function GainFocus(self)
|
||||
self:stoptweening()
|
||||
self:smooth(.125)
|
||||
-- The choice with focus is 1.5 size.
|
||||
self:zoom(1.25)
|
||||
end
|
||||
|
||||
-- BGFitInputActor returns the actor that will handle input from the player
|
||||
-- and apply their choice to the preference. We pass it fit_choices so that
|
||||
-- it has the choice actors so it can show the player which once they have
|
||||
-- selected.
|
||||
actors[#actors+1]= BGFitInputActor(fit_choices, LoseFocus, GainFocus)
|
||||
return Def.ActorFrame(actors)
|
||||
@@ -53,6 +53,4 @@ local log_args= {
|
||||
Font= "Common Error",
|
||||
}
|
||||
|
||||
Trace("Loaded error layer.")
|
||||
|
||||
return Def.LogDisplay(log_args)
|
||||
|
||||
@@ -36,7 +36,8 @@ end;
|
||||
OnCommand=cmd(diffuse,PlayerColor(PlayerNumber);fadebottom,1);
|
||||
};
|
||||
};
|
||||
t[#t+1] = LoadFont("Common","Normal") .. {
|
||||
t[#t+1] = Def.BitmapText{
|
||||
Font="Common Normal";
|
||||
Name = "PlayerText";
|
||||
InitCommand=cmd(x,-60;maxwidth,80/0.5;zoom,0.5;queuecommand,"On");
|
||||
OnCommand=cmd(playcommand,"Set");
|
||||
@@ -70,7 +71,8 @@ t[#t+1] = Def.ActorFrame {
|
||||
OnCommand=cmd(finishtweening;diffusealpha,0.85;);
|
||||
OffCommand=cmd(sleep,3;linear,0.5;diffusealpha,0;);
|
||||
};
|
||||
LoadFont("Common","Normal") .. {
|
||||
Def.BitmapText{
|
||||
Font="Common Normal";
|
||||
Name="Text";
|
||||
InitCommand=cmd(maxwidth,750;horizalign,left;vertalign,top;y,SCREEN_TOP+10;x,SCREEN_LEFT+10;shadowlength,1;diffusealpha,0;);
|
||||
OnCommand=cmd(finishtweening;diffusealpha,1;zoom,0.5);
|
||||
|
||||
@@ -3,12 +3,12 @@ return Def.ActorFrame {
|
||||
-- InitCommand=cmd(LoadGameController,
|
||||
--};
|
||||
Def.DeviceList {
|
||||
Font="Common normal";
|
||||
Font="Common Normal",
|
||||
InitCommand=cmd(x,SCREEN_LEFT+20;y,SCREEN_TOP+80;zoom,0.8;halign,0);
|
||||
};
|
||||
|
||||
Def.InputList {
|
||||
Font="Common normal";
|
||||
Font="Common Normal",
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X-250;y,SCREEN_CENTER_Y;zoom,1;halign,0;vertspacing,8);
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1 +1 @@
|
||||
_open sans Bold 24px
|
||||
_roboto black Bold 24px
|
||||
@@ -1 +1 @@
|
||||
_open sans book 24px
|
||||
Common Normal
|
||||
@@ -0,0 +1 @@
|
||||
_open sans semibold 24px
|
||||
@@ -1 +1 @@
|
||||
_open sans book 24px
|
||||
_open sans semibold 24px
|
||||
@@ -0,0 +1 @@
|
||||
Common Bold
|
||||
@@ -0,0 +1 @@
|
||||
Common Normal
|
||||
@@ -0,0 +1 @@
|
||||
Common Normal
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 37 KiB |
@@ -1,352 +0,0 @@
|
||||
[common]
|
||||
Baseline=27
|
||||
Top=10
|
||||
LineSpacing=33
|
||||
DrawExtraPixelsLeft=2
|
||||
DrawExtraPixelsRight=0
|
||||
AdvanceExtraPixels=0
|
||||
|
||||
[main]
|
||||
Line 0= !"#$%&'()*+,-.
|
||||
Line 1=/0123456789:;<=
|
||||
Line 2=>?@ABCDEFGHIJKL
|
||||
Line 3=MNOPQRSTUVWXYZ[
|
||||
Line 4=\]^_`abcdefghij
|
||||
Line 5=klmnopqrstuvwxy
|
||||
Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š
|
||||
Line 7=‹ŒŽ‘’“”•–—˜™š›œ
|
||||
Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬
|
||||
Line 9=®¯°±²³´µ¶·¸¹º»
|
||||
Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ
|
||||
Line 11=ËÌÍÎÏÐÑÒÓÔÕÖרÙ
|
||||
Line 12=ÚÛÜÝÞßàáâãäåæçè
|
||||
Line 13=éêëìíîïðñòóôõö÷
|
||||
Line 14=øùúûüýþÿ
|
||||
|
||||
0=6
|
||||
1=7
|
||||
2=11
|
||||
3=16
|
||||
4=14
|
||||
5=22
|
||||
6=18
|
||||
7=6
|
||||
8=8
|
||||
9=8
|
||||
10=13
|
||||
11=14
|
||||
12=7
|
||||
13=8
|
||||
14=7
|
||||
15=10
|
||||
16=14
|
||||
17=14
|
||||
18=14
|
||||
19=14
|
||||
20=14
|
||||
21=14
|
||||
22=14
|
||||
23=14
|
||||
24=14
|
||||
25=14
|
||||
26=7
|
||||
27=7
|
||||
28=14
|
||||
29=14
|
||||
30=14
|
||||
31=11
|
||||
32=22
|
||||
33=17
|
||||
34=16
|
||||
35=15
|
||||
36=18
|
||||
37=13
|
||||
38=13
|
||||
39=17
|
||||
40=18
|
||||
41=8
|
||||
42=8
|
||||
43=16
|
||||
44=14
|
||||
45=23
|
||||
46=20
|
||||
47=19
|
||||
48=15
|
||||
49=19
|
||||
50=16
|
||||
51=13
|
||||
52=14
|
||||
53=18
|
||||
54=16
|
||||
55=23
|
||||
56=16
|
||||
57=15
|
||||
58=14
|
||||
59=8
|
||||
60=10
|
||||
61=8
|
||||
62=13
|
||||
63=10
|
||||
64=15
|
||||
65=14
|
||||
66=15
|
||||
67=12
|
||||
68=15
|
||||
69=14
|
||||
70=9
|
||||
71=14
|
||||
72=16
|
||||
73=7
|
||||
74=7
|
||||
75=15
|
||||
76=7
|
||||
77=24
|
||||
78=16
|
||||
79=15
|
||||
80=15
|
||||
81=15
|
||||
82=11
|
||||
83=12
|
||||
84=10
|
||||
85=16
|
||||
86=14
|
||||
87=21
|
||||
88=14
|
||||
89=14
|
||||
90=12
|
||||
91=9
|
||||
92=13
|
||||
93=9
|
||||
94=14
|
||||
95=14
|
||||
96=7
|
||||
97=14
|
||||
98=12
|
||||
99=21
|
||||
100=12
|
||||
101=13
|
||||
102=15
|
||||
103=31
|
||||
104=13
|
||||
105=9
|
||||
106=23
|
||||
107=14
|
||||
108=5
|
||||
109=5
|
||||
110=11
|
||||
111=11
|
||||
112=9
|
||||
113=12
|
||||
114=24
|
||||
115=15
|
||||
116=18
|
||||
117=12
|
||||
118=9
|
||||
119=23
|
||||
120=12
|
||||
121=15
|
||||
122=6
|
||||
123=7
|
||||
124=14
|
||||
125=14
|
||||
126=14
|
||||
127=14
|
||||
128=13
|
||||
129=12
|
||||
130=15
|
||||
131=20
|
||||
132=9
|
||||
133=15
|
||||
134=14
|
||||
135=8
|
||||
136=20
|
||||
137=12
|
||||
138=10
|
||||
139=14
|
||||
140=9
|
||||
141=9
|
||||
142=15
|
||||
143=16
|
||||
144=16
|
||||
145=7
|
||||
146=5
|
||||
147=9
|
||||
148=9
|
||||
149=15
|
||||
150=21
|
||||
151=21
|
||||
152=21
|
||||
153=11
|
||||
154=17
|
||||
155=17
|
||||
156=17
|
||||
157=17
|
||||
158=17
|
||||
159=17
|
||||
160=23
|
||||
161=15
|
||||
162=13
|
||||
163=13
|
||||
164=13
|
||||
165=13
|
||||
166=8
|
||||
167=8
|
||||
168=8
|
||||
169=8
|
||||
170=18
|
||||
171=20
|
||||
172=19
|
||||
173=19
|
||||
174=19
|
||||
175=19
|
||||
176=19
|
||||
177=14
|
||||
178=19
|
||||
179=18
|
||||
180=18
|
||||
181=18
|
||||
182=18
|
||||
183=15
|
||||
184=15
|
||||
185=17
|
||||
186=14
|
||||
187=14
|
||||
188=14
|
||||
189=14
|
||||
190=14
|
||||
191=14
|
||||
192=22
|
||||
193=12
|
||||
194=14
|
||||
195=14
|
||||
196=14
|
||||
197=14
|
||||
198=7
|
||||
199=7
|
||||
200=7
|
||||
201=7
|
||||
202=15
|
||||
203=16
|
||||
204=15
|
||||
205=15
|
||||
206=15
|
||||
207=15
|
||||
208=15
|
||||
209=14
|
||||
210=15
|
||||
211=16
|
||||
212=16
|
||||
213=16
|
||||
214=16
|
||||
215=14
|
||||
216=15
|
||||
217=14
|
||||
|
||||
[alt]
|
||||
Line 0= Ą˘Ł¤ĽŚ§¨Š
|
||||
Line 1=ŞŤŹŽŻ°ą˛ł
|
||||
Line 2=´ľśˇ¸šşťź˝
|
||||
Line 3=žżŔÁÂĂÄĹĆÇ
|
||||
Line 4=ČÉĘËĚÍÎĎĐŃ
|
||||
Line 5=ŇÓÔŐÖ×ŘŮÚŰ
|
||||
Line 6=ÜÝŢßŕáâăäĺ
|
||||
Line 7=ćçčéęëěíîď
|
||||
Line 8=đńňóôőö÷řů
|
||||
Line 9=úűüýţ˙
|
||||
|
||||
0=6
|
||||
1=17
|
||||
2=15
|
||||
3=14
|
||||
4=14
|
||||
5=14
|
||||
6=13
|
||||
7=12
|
||||
8=15
|
||||
9=13
|
||||
10=13
|
||||
11=14
|
||||
12=14
|
||||
13=8
|
||||
14=14
|
||||
15=14
|
||||
16=10
|
||||
17=14
|
||||
18=5
|
||||
19=8
|
||||
20=15
|
||||
21=7
|
||||
22=12
|
||||
23=15
|
||||
24=5
|
||||
25=12
|
||||
26=12
|
||||
27=10
|
||||
28=12
|
||||
29=14
|
||||
30=12
|
||||
31=12
|
||||
32=16
|
||||
33=17
|
||||
34=17
|
||||
35=17
|
||||
36=17
|
||||
37=14
|
||||
38=15
|
||||
39=15
|
||||
40=15
|
||||
41=13
|
||||
42=13
|
||||
43=13
|
||||
44=13
|
||||
45=8
|
||||
46=8
|
||||
47=18
|
||||
48=18
|
||||
49=20
|
||||
50=20
|
||||
51=19
|
||||
52=19
|
||||
53=19
|
||||
54=19
|
||||
55=14
|
||||
56=16
|
||||
57=18
|
||||
58=18
|
||||
59=18
|
||||
60=18
|
||||
61=15
|
||||
62=14
|
||||
63=17
|
||||
64=11
|
||||
65=14
|
||||
66=14
|
||||
67=14
|
||||
68=14
|
||||
69=7
|
||||
70=12
|
||||
71=12
|
||||
72=12
|
||||
73=14
|
||||
74=14
|
||||
75=14
|
||||
76=14
|
||||
77=7
|
||||
78=7
|
||||
79=15
|
||||
80=16
|
||||
81=16
|
||||
82=16
|
||||
83=15
|
||||
84=15
|
||||
85=15
|
||||
86=15
|
||||
87=14
|
||||
88=11
|
||||
89=16
|
||||
90=16
|
||||
91=16
|
||||
92=16
|
||||
93=14
|
||||
94=10
|
||||
95=7
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 36 KiB |
@@ -1,352 +0,0 @@
|
||||
[common]
|
||||
Baseline=27
|
||||
Top=10
|
||||
LineSpacing=33
|
||||
DrawExtraPixelsLeft=2
|
||||
DrawExtraPixelsRight=2
|
||||
AdvanceExtraPixels=0
|
||||
|
||||
[main]
|
||||
Line 0= !"#$%&'()*+,-.
|
||||
Line 1=/0123456789:;<=
|
||||
Line 2=>?@ABCDEFGHIJKL
|
||||
Line 3=MNOPQRSTUVWXYZ[
|
||||
Line 4=\]^_`abcdefghij
|
||||
Line 5=klmnopqrstuvwxy
|
||||
Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š
|
||||
Line 7=‹ŒŽ‘’“”•–—˜™š›œ
|
||||
Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬
|
||||
Line 9=®¯°±²³´µ¶·¸¹º»
|
||||
Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ
|
||||
Line 11=ËÌÍÎÏÐÑÒÓÔÕÖרÙ
|
||||
Line 12=ÚÛÜÝÞßàáâãäåæçè
|
||||
Line 13=éêëìíîïðñòóôõö÷
|
||||
Line 14=øùúûüýþÿ
|
||||
|
||||
0=6
|
||||
1=6
|
||||
2=10
|
||||
3=16
|
||||
4=14
|
||||
5=20
|
||||
6=18
|
||||
7=5
|
||||
8=7
|
||||
9=7
|
||||
10=13
|
||||
11=14
|
||||
12=6
|
||||
13=8
|
||||
14=6
|
||||
15=9
|
||||
16=14
|
||||
17=14
|
||||
18=14
|
||||
19=14
|
||||
20=14
|
||||
21=14
|
||||
22=14
|
||||
23=14
|
||||
24=14
|
||||
25=14
|
||||
26=6
|
||||
27=6
|
||||
28=14
|
||||
29=14
|
||||
30=14
|
||||
31=10
|
||||
32=22
|
||||
33=15
|
||||
34=16
|
||||
35=15
|
||||
36=17
|
||||
37=13
|
||||
38=12
|
||||
39=17
|
||||
40=18
|
||||
41=7
|
||||
42=6
|
||||
43=15
|
||||
44=12
|
||||
45=22
|
||||
46=18
|
||||
47=19
|
||||
48=14
|
||||
49=19
|
||||
50=15
|
||||
51=13
|
||||
52=13
|
||||
53=17
|
||||
54=14
|
||||
55=22
|
||||
56=14
|
||||
57=13
|
||||
58=14
|
||||
59=8
|
||||
60=9
|
||||
61=8
|
||||
62=13
|
||||
63=11
|
||||
64=14
|
||||
65=13
|
||||
66=15
|
||||
67=11
|
||||
68=15
|
||||
69=13
|
||||
70=8
|
||||
71=13
|
||||
72=15
|
||||
73=6
|
||||
74=6
|
||||
75=13
|
||||
76=6
|
||||
77=22
|
||||
78=15
|
||||
79=14
|
||||
80=15
|
||||
81=15
|
||||
82=10
|
||||
83=11
|
||||
84=8
|
||||
85=15
|
||||
86=12
|
||||
87=19
|
||||
88=13
|
||||
89=12
|
||||
90=11
|
||||
91=9
|
||||
92=13
|
||||
93=9
|
||||
94=14
|
||||
95=14
|
||||
96=6
|
||||
97=14
|
||||
98=10
|
||||
99=19
|
||||
100=12
|
||||
101=12
|
||||
102=14
|
||||
103=29
|
||||
104=13
|
||||
105=7
|
||||
106=22
|
||||
107=14
|
||||
108=4
|
||||
109=4
|
||||
110=8
|
||||
111=8
|
||||
112=9
|
||||
113=12
|
||||
114=24
|
||||
115=14
|
||||
116=19
|
||||
117=11
|
||||
118=7
|
||||
119=23
|
||||
120=11
|
||||
121=13
|
||||
122=6
|
||||
123=6
|
||||
124=14
|
||||
125=14
|
||||
126=14
|
||||
127=14
|
||||
128=13
|
||||
129=12
|
||||
130=14
|
||||
131=20
|
||||
132=8
|
||||
133=12
|
||||
134=14
|
||||
135=8
|
||||
136=20
|
||||
137=12
|
||||
138=10
|
||||
139=14
|
||||
140=8
|
||||
141=8
|
||||
142=14
|
||||
143=15
|
||||
144=16
|
||||
145=6
|
||||
146=5
|
||||
147=8
|
||||
148=9
|
||||
149=12
|
||||
150=19
|
||||
151=19
|
||||
152=19
|
||||
153=10
|
||||
154=15
|
||||
155=15
|
||||
156=15
|
||||
157=15
|
||||
158=15
|
||||
159=15
|
||||
160=21
|
||||
161=15
|
||||
162=13
|
||||
163=13
|
||||
164=13
|
||||
165=13
|
||||
166=7
|
||||
167=7
|
||||
168=7
|
||||
169=7
|
||||
170=17
|
||||
171=18
|
||||
172=19
|
||||
173=19
|
||||
174=19
|
||||
175=19
|
||||
176=19
|
||||
177=14
|
||||
178=19
|
||||
179=17
|
||||
180=17
|
||||
181=17
|
||||
182=17
|
||||
183=13
|
||||
184=15
|
||||
185=15
|
||||
186=13
|
||||
187=13
|
||||
188=13
|
||||
189=13
|
||||
190=13
|
||||
191=13
|
||||
192=21
|
||||
193=11
|
||||
194=13
|
||||
195=13
|
||||
196=13
|
||||
197=13
|
||||
198=6
|
||||
199=6
|
||||
200=6
|
||||
201=6
|
||||
202=14
|
||||
203=15
|
||||
204=14
|
||||
205=14
|
||||
206=14
|
||||
207=14
|
||||
208=14
|
||||
209=14
|
||||
210=14
|
||||
211=15
|
||||
212=15
|
||||
213=15
|
||||
214=15
|
||||
215=12
|
||||
216=15
|
||||
217=12
|
||||
|
||||
[alt]
|
||||
Line 0= Ą˘Ł¤ĽŚ§¨Š
|
||||
Line 1=ŞŤŹŽŻ°ą˛ł
|
||||
Line 2=´ľśˇ¸šşťź˝
|
||||
Line 3=žżŔÁÂĂÄĹĆÇ
|
||||
Line 4=ČÉĘËĚÍÎĎĐŃ
|
||||
Line 5=ŇÓÔŐÖ×ŘŮÚŰ
|
||||
Line 6=ÜÝŢßŕáâăäĺ
|
||||
Line 7=ćçčéęëěíîď
|
||||
Line 8=đńňóôőö÷řů
|
||||
Line 9=úűüýţ˙
|
||||
|
||||
0=6
|
||||
1=15
|
||||
2=14
|
||||
3=13
|
||||
4=14
|
||||
5=12
|
||||
6=13
|
||||
7=12
|
||||
8=14
|
||||
9=13
|
||||
10=13
|
||||
11=13
|
||||
12=14
|
||||
13=8
|
||||
14=14
|
||||
15=14
|
||||
16=10
|
||||
17=13
|
||||
18=5
|
||||
19=6
|
||||
20=14
|
||||
21=6
|
||||
22=11
|
||||
23=14
|
||||
24=5
|
||||
25=11
|
||||
26=11
|
||||
27=8
|
||||
28=11
|
||||
29=14
|
||||
30=11
|
||||
31=11
|
||||
32=15
|
||||
33=15
|
||||
34=15
|
||||
35=15
|
||||
36=15
|
||||
37=12
|
||||
38=15
|
||||
39=15
|
||||
40=15
|
||||
41=13
|
||||
42=13
|
||||
43=13
|
||||
44=13
|
||||
45=7
|
||||
46=7
|
||||
47=17
|
||||
48=17
|
||||
49=18
|
||||
50=18
|
||||
51=19
|
||||
52=19
|
||||
53=19
|
||||
54=19
|
||||
55=14
|
||||
56=15
|
||||
57=17
|
||||
58=17
|
||||
59=17
|
||||
60=17
|
||||
61=13
|
||||
62=13
|
||||
63=15
|
||||
64=10
|
||||
65=13
|
||||
66=13
|
||||
67=13
|
||||
68=13
|
||||
69=6
|
||||
70=11
|
||||
71=11
|
||||
72=11
|
||||
73=13
|
||||
74=13
|
||||
75=13
|
||||
76=13
|
||||
77=6
|
||||
78=6
|
||||
79=15
|
||||
80=15
|
||||
81=15
|
||||
82=15
|
||||
83=14
|
||||
84=14
|
||||
85=14
|
||||
86=14
|
||||
87=14
|
||||
88=10
|
||||
89=15
|
||||
90=15
|
||||
91=15
|
||||
92=15
|
||||
93=12
|
||||
94=8
|
||||
95=6
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 34 KiB |
@@ -0,0 +1,352 @@
|
||||
[common]
|
||||
Baseline=26
|
||||
Top=9
|
||||
LineSpacing=32
|
||||
DrawExtraPixelsLeft=2
|
||||
DrawExtraPixelsRight=0
|
||||
AdvanceExtraPixels=0
|
||||
|
||||
[main]
|
||||
Line 0= !"#$%&'()*+,-.
|
||||
Line 1=/0123456789:;<=
|
||||
Line 2=>?@ABCDEFGHIJKL
|
||||
Line 3=MNOPQRSTUVWXYZ[
|
||||
Line 4=\]^_`abcdefghij
|
||||
Line 5=klmnopqrstuvwxy
|
||||
Line 6=z{|}~€‚ƒ„…†‡ˆ‰Š
|
||||
Line 7=‹ŒŽ‘’“”•–—˜™š›œ
|
||||
Line 8=žŸ ¡¢£¤¥¦§¨©ª«¬
|
||||
Line 9=®¯°±²³´µ¶·¸¹º»
|
||||
Line 10=¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ
|
||||
Line 11=ËÌÍÎÏÐÑÒÓÔÕÖרÙ
|
||||
Line 12=ÚÛÜÝÞßàáâãäåæçè
|
||||
Line 13=éêëìíîïðñòóôõö÷
|
||||
Line 14=øùúûüýþÿ
|
||||
|
||||
0=6
|
||||
1=7
|
||||
2=8
|
||||
3=14
|
||||
4=14
|
||||
5=18
|
||||
6=16
|
||||
7=4
|
||||
8=9
|
||||
9=9
|
||||
10=11
|
||||
11=13
|
||||
12=6
|
||||
13=11
|
||||
14=7
|
||||
15=8
|
||||
16=14
|
||||
17=14
|
||||
18=14
|
||||
19=14
|
||||
20=14
|
||||
21=14
|
||||
22=14
|
||||
23=14
|
||||
24=14
|
||||
25=14
|
||||
26=7
|
||||
27=7
|
||||
28=12
|
||||
29=14
|
||||
30=12
|
||||
31=12
|
||||
32=21
|
||||
33=15
|
||||
34=15
|
||||
35=15
|
||||
36=16
|
||||
37=14
|
||||
38=14
|
||||
39=16
|
||||
40=17
|
||||
41=7
|
||||
42=14
|
||||
43=16
|
||||
44=13
|
||||
45=21
|
||||
46=17
|
||||
47=16
|
||||
48=16
|
||||
49=17
|
||||
50=16
|
||||
51=15
|
||||
52=14
|
||||
53=17
|
||||
54=15
|
||||
55=21
|
||||
56=15
|
||||
57=15
|
||||
58=14
|
||||
59=7
|
||||
60=10
|
||||
61=7
|
||||
62=11
|
||||
63=11
|
||||
64=8
|
||||
65=13
|
||||
66=13
|
||||
67=12
|
||||
68=13
|
||||
69=13
|
||||
70=9
|
||||
71=13
|
||||
72=13
|
||||
73=7
|
||||
74=6
|
||||
75=13
|
||||
76=7
|
||||
77=21
|
||||
78=13
|
||||
79=13
|
||||
80=13
|
||||
81=13
|
||||
82=9
|
||||
83=12
|
||||
84=9
|
||||
85=13
|
||||
86=12
|
||||
87=17
|
||||
88=12
|
||||
89=12
|
||||
90=12
|
||||
91=8
|
||||
92=6
|
||||
93=8
|
||||
94=15
|
||||
95=13
|
||||
96=5
|
||||
97=9
|
||||
98=9
|
||||
99=19
|
||||
100=13
|
||||
101=14
|
||||
102=12
|
||||
103=23
|
||||
104=15
|
||||
105=8
|
||||
106=23
|
||||
107=14
|
||||
108=5
|
||||
109=5
|
||||
110=9
|
||||
111=9
|
||||
112=9
|
||||
113=17
|
||||
114=20
|
||||
115=12
|
||||
116=15
|
||||
117=12
|
||||
118=7
|
||||
119=22
|
||||
120=12
|
||||
121=15
|
||||
122=6
|
||||
123=7
|
||||
124=14
|
||||
125=14
|
||||
126=16
|
||||
127=15
|
||||
128=6
|
||||
129=15
|
||||
130=13
|
||||
131=19
|
||||
132=11
|
||||
133=12
|
||||
134=13
|
||||
135=11
|
||||
136=19
|
||||
137=12
|
||||
138=10
|
||||
139=13
|
||||
140=10
|
||||
141=10
|
||||
142=9
|
||||
143=15
|
||||
144=13
|
||||
145=8
|
||||
146=7
|
||||
147=7
|
||||
148=11
|
||||
149=12
|
||||
150=17
|
||||
151=17
|
||||
152=20
|
||||
153=12
|
||||
154=15
|
||||
155=15
|
||||
156=15
|
||||
157=15
|
||||
158=15
|
||||
159=15
|
||||
160=23
|
||||
161=15
|
||||
162=14
|
||||
163=14
|
||||
164=14
|
||||
165=14
|
||||
166=7
|
||||
167=7
|
||||
168=7
|
||||
169=7
|
||||
170=16
|
||||
171=17
|
||||
172=16
|
||||
173=16
|
||||
174=16
|
||||
175=16
|
||||
176=16
|
||||
177=13
|
||||
178=17
|
||||
179=17
|
||||
180=17
|
||||
181=17
|
||||
182=17
|
||||
183=15
|
||||
184=15
|
||||
185=16
|
||||
186=13
|
||||
187=13
|
||||
188=13
|
||||
189=13
|
||||
190=13
|
||||
191=13
|
||||
192=20
|
||||
193=12
|
||||
194=13
|
||||
195=13
|
||||
196=13
|
||||
197=13
|
||||
198=7
|
||||
199=7
|
||||
200=7
|
||||
201=7
|
||||
202=14
|
||||
203=13
|
||||
204=13
|
||||
205=13
|
||||
206=13
|
||||
207=13
|
||||
208=13
|
||||
209=14
|
||||
210=14
|
||||
211=13
|
||||
212=13
|
||||
213=13
|
||||
214=13
|
||||
215=12
|
||||
216=13
|
||||
217=12
|
||||
|
||||
[alt]
|
||||
Line 0= Ą˘Ł¤ĽŚ§¨Š
|
||||
Line 1=ŞŤŹŽŻ°ą˛ł
|
||||
Line 2=´ľśˇ¸šşťź˝
|
||||
Line 3=žżŔÁÂĂÄĹĆÇ
|
||||
Line 4=ČÉĘËĚÍÎĎĐŃ
|
||||
Line 5=ŇÓÔŐÖ×ŘŮÚŰ
|
||||
Line 6=ÜÝŢßŕáâăäĺ
|
||||
Line 7=ćçčéęëěíîď
|
||||
Line 8=đńňóôőö÷řů
|
||||
Line 9=úűüýţ˙
|
||||
|
||||
0=6
|
||||
1=15
|
||||
2=11
|
||||
3=12
|
||||
4=16
|
||||
5=13
|
||||
6=15
|
||||
7=15
|
||||
8=13
|
||||
9=15
|
||||
10=15
|
||||
11=14
|
||||
12=14
|
||||
13=11
|
||||
14=14
|
||||
15=14
|
||||
16=10
|
||||
17=13
|
||||
18=8
|
||||
19=7
|
||||
20=9
|
||||
21=8
|
||||
22=12
|
||||
23=12
|
||||
24=7
|
||||
25=12
|
||||
26=12
|
||||
27=9
|
||||
28=12
|
||||
29=11
|
||||
30=12
|
||||
31=12
|
||||
32=16
|
||||
33=15
|
||||
34=15
|
||||
35=15
|
||||
36=15
|
||||
37=13
|
||||
38=15
|
||||
39=15
|
||||
40=15
|
||||
41=14
|
||||
42=14
|
||||
43=14
|
||||
44=14
|
||||
45=7
|
||||
46=7
|
||||
47=16
|
||||
48=16
|
||||
49=17
|
||||
50=17
|
||||
51=16
|
||||
52=16
|
||||
53=16
|
||||
54=16
|
||||
55=13
|
||||
56=16
|
||||
57=17
|
||||
58=17
|
||||
59=17
|
||||
60=17
|
||||
61=15
|
||||
62=14
|
||||
63=16
|
||||
64=9
|
||||
65=13
|
||||
66=13
|
||||
67=13
|
||||
68=13
|
||||
69=7
|
||||
70=12
|
||||
71=12
|
||||
72=12
|
||||
73=13
|
||||
74=13
|
||||
75=13
|
||||
76=13
|
||||
77=7
|
||||
78=7
|
||||
79=15
|
||||
80=14
|
||||
81=13
|
||||
82=13
|
||||
83=13
|
||||
84=13
|
||||
85=13
|
||||
86=13
|
||||
87=14
|
||||
88=9
|
||||
89=13
|
||||
90=13
|
||||
91=13
|
||||
92=13
|
||||
93=12
|
||||
94=9
|
||||
95=8
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,100 @@
|
||||
local t = Def.ActorFrame {
|
||||
InitCommand=cmd(runcommandsonleaves,cmd(ztest,true));
|
||||
};
|
||||
|
||||
t[#t+1] = LoadActor("frame") .. {
|
||||
InitCommand=cmd(diffusealpha,0.1;);
|
||||
};
|
||||
|
||||
|
||||
t[#t+1] = Def.TextBanner {
|
||||
InitCommand=cmd(x,-196;y,0;Load,"TextBannerHighScores");
|
||||
SetCommand=function(self, params)
|
||||
if params.Song then
|
||||
self:SetFromSong( params.Song );
|
||||
self:diffuse( SONGMAN:GetSongColor(params.Song) );
|
||||
else
|
||||
self:SetFromString( params.Course:GetTitle() );
|
||||
self:diffuse( SONGMAN:GetCourseColor(params.Course) );
|
||||
end
|
||||
end;
|
||||
};
|
||||
|
||||
local NumColumns = THEME:GetMetric(Var "LoadingScreen", "NumColumns");
|
||||
|
||||
local c;
|
||||
local Scores = Def.ActorFrame {
|
||||
InitCommand = function(self)
|
||||
c = self:GetChildren();
|
||||
end;
|
||||
};
|
||||
t[#t+1] = Scores;
|
||||
|
||||
for idx=1,NumColumns do
|
||||
local x_pos = -60 + 80 * (idx-1);
|
||||
Scores[#Scores+1] = LoadFont(Var "LoadingScreen","Name") .. {
|
||||
Name = idx .. "Name";
|
||||
InitCommand=cmd(x,x_pos;y,6;shadowlengthx,0;shadowlengthy,2;shadowcolor,color("#000000");maxwidth,68;);
|
||||
};
|
||||
Scores[#Scores+1] = LoadFont(Var "LoadingScreen","Score") .. {
|
||||
Name = idx .. "Score";
|
||||
InitCommand=cmd(x,x_pos;y,-10;shadowlengthx,0;shadowlengthy,2;shadowcolor,color("#000000");maxwidth,68;);
|
||||
};
|
||||
Scores[#Scores+1] = LoadActor("filled") .. {
|
||||
Name = idx .. "Filled";
|
||||
InitCommand=cmd(x,x_pos;);
|
||||
};
|
||||
Scores[#Scores+1] = LoadActor("empty") .. {
|
||||
Name = idx .. "Empty";
|
||||
InitCommand=cmd(x,x_pos;);
|
||||
};
|
||||
|
||||
end
|
||||
|
||||
local sNoScoreName = THEME:GetMetric("Common", "NoScoreName");
|
||||
|
||||
Scores.SetCommand=function(self, params)
|
||||
local pProfile = PROFILEMAN:GetMachineProfile();
|
||||
|
||||
for name, child in pairs(c) do
|
||||
child:visible(false);
|
||||
end
|
||||
for idx=1,NumColumns do
|
||||
c[idx .. "Empty"]:visible(true);
|
||||
end
|
||||
|
||||
local Current = params.Song or params.Course;
|
||||
if Current then
|
||||
for idx, CurrentItem in pairs(params.Entries) do
|
||||
if CurrentItem then
|
||||
local hsl = pProfile:GetHighScoreList(Current, CurrentItem);
|
||||
local hs = hsl and hsl:GetHighScores();
|
||||
--[[Warn( tostring(CurrentItem:GetStepsType()) .. ", " ..
|
||||
tostring(CurrentItem:GetDifficulty()) .. ": " ..
|
||||
tostring(hsl) .. ", " ..
|
||||
tostring(#hs) );]]
|
||||
local name = c[idx .. "Name"];
|
||||
local score = c[idx .. "Score"];
|
||||
local filled = c[idx .. "Filled"];
|
||||
local empty = c[idx .. "Empty"];
|
||||
|
||||
--assert( c[sNameType], sNameType );
|
||||
--assert( c[sScoreType], sScoreType );
|
||||
|
||||
name:visible( true );
|
||||
score:visible( true );
|
||||
filled:visible( true );
|
||||
empty:visible( false );
|
||||
if hs and #hs > 0 then
|
||||
name:settext( hs[1]:GetName() );
|
||||
score:settext( FormatPercentScore( hs[1]:GetPercentDP() ) );
|
||||
else
|
||||
name:settext( sNoScoreName );
|
||||
score:settext( FormatPercentScore( 0 ) );
|
||||
end
|
||||
end
|
||||
end;
|
||||
end
|
||||
end;
|
||||
|
||||
return t;
|
||||
|
After Width: | Height: | Size: 628 B |
|
After Width: | Height: | Size: 721 B |
|
After Width: | Height: | Size: 3.6 KiB |
@@ -0,0 +1,16 @@
|
||||
return Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
InitCommand= cmd(x, SCREEN_CENTER_X; zoom, .75, 0; diffuse, color("#808080")),
|
||||
OnCommand= function(self)
|
||||
self:diffusealpha(0)
|
||||
self:decelerate(0.5)
|
||||
self:diffusealpha(1)
|
||||
-- fancy effect: Look at the name (which is set by the screen) to set text
|
||||
self:settext(
|
||||
THEME:GetString("ScreenMapControllers", "Action" .. self:GetName()))
|
||||
end,
|
||||
OffCommand=cmd(stoptweening;accelerate,0.3;diffusealpha,0;queuecommand,"Hide"),
|
||||
HideCommand=cmd(visible,false),
|
||||
GainFocusCommand=cmd(diffuseshift;effectcolor2,color("#808080");effectcolor1,color("#FFFFFF")),
|
||||
LoseFocusCommand=cmd(stopeffect),
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
return LoadFont("Common Normal") .. {
|
||||
Text="Exit";
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;zoom,0.75;shadowlength,0;diffuse,color("#808080"));
|
||||
OnCommand=cmd(diffusealpha,0;decelerate,0.5;diffusealpha,1);
|
||||
OffCommand=cmd(stoptweening;accelerate,0.3;diffusealpha,0;queuecommand,"Hide");
|
||||
HideCommand=cmd(visible,false);
|
||||
|
||||
GainFocusCommand=cmd(diffuseshift;effectcolor2,color("#808080");effectcolor1,color("#FFFFFF"));
|
||||
LoseFocusCommand=cmd(stopeffect);
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
return Def.ActorFrame{
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y),
|
||||
Def.Quad{
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color.Black;diffusealpha,0),
|
||||
TweenOnCommand=cmd(stoptweening;diffusealpha,1;linear,0.5;diffusealpha,0.8),
|
||||
TweenOffCommand=cmd(stoptweening;linear,0.5;diffusealpha,0),
|
||||
},
|
||||
Def.ActorFrame{
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
Text=ScreenString("NoSetListPrompt"),
|
||||
InitCommand=cmd(y,10;wrapwidthpixels,SCREEN_WIDTH-48;diffusealpha,0),
|
||||
TweenOnCommand=cmd(stoptweening;diffusealpha,0;sleep,0.5125;linear,0.125;diffusealpha,1),
|
||||
TweenOffCommand=cmd(stoptweening;linear,0.5;diffusealpha,0),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
return Def.ActorFrame{
|
||||
InitCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y),
|
||||
Def.Quad{
|
||||
InitCommand=cmd(zoomto,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,Color.Black),
|
||||
TweenOnCommand=cmd(diffusealpha,1;linear,0.5;diffusealpha,0.8),
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0),
|
||||
},
|
||||
Def.ActorFrame{
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
Text=ScreenString("WarningHeader"),
|
||||
InitCommand=cmd(y,-80;diffuse,Color.Red),
|
||||
TweenOnCommand=cmd(diffusealpha,0;zoomx,2;zoomy,0;sleep,0.5;smooth,0.25;zoom,1;diffusealpha,1),
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0),
|
||||
},
|
||||
Def.BitmapText{
|
||||
Font="Common Normal",
|
||||
Text=ScreenString("WarningText"),
|
||||
InitCommand=cmd(y,10;wrapwidthpixels,SCREEN_WIDTH-48),
|
||||
TweenOnCommand=cmd(diffusealpha,0;sleep,0.5125;linear,0.125;diffusealpha,1),
|
||||
TweenOffCommand=cmd(linear,0.5;diffusealpha,0),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
After Width: | Height: | Size: 160 B |
|
After Width: | Height: | Size: 160 B |
|
After Width: | Height: | Size: 160 B |
@@ -345,6 +345,7 @@ AutogenGroupCourses=Show group Nonstop and Endless courses that were created by
|
||||
AutogenSteps=Automatically generate steps from other game types.
|
||||
BGBrightness=Controls how bright the background will appear. Turn this setting down if you have a hard time seeing the notes.
|
||||
Background=Change options that control the backgrounds that play during gameplay.
|
||||
BackgroundFitMode=Change the way backgrounds are scaled to fit the screen.
|
||||
BarDrain=BarDrain
|
||||
BatLives=BatLives
|
||||
Bookkeeping=Check coin drop statistics.
|
||||
@@ -391,6 +392,7 @@ Exit=
|
||||
Fail=Fail
|
||||
FastLoad=If enabled, don't check songs for changes on load.
|
||||
FastLoadAdditionalSongs=If enabled, don't check songs for changes to Additional Songs on load.
|
||||
FastNoteRendering=If enabled, the z buffer is not cleared after every note. This causes 3d noteskins to collide, but substantially improves performance in gameplay.
|
||||
Fill Machine Stats=
|
||||
Game=Change the current game type with this option.
|
||||
GetRankingName=Determines if name entry should never be shown, always be shown, or shown when the course is listed on the high scores screen.
|
||||
@@ -456,6 +458,7 @@ Scoreboard=Enables scoreboard
|
||||
ScoringType=Defines which scoring method to use.
|
||||
ScreenFilter=Screen Filter
|
||||
Scroll=Scroll
|
||||
Set BG Fit Mode=Set background fitting mode.
|
||||
Select Group=Toggle Songs in this Group.
|
||||
Select Profile=Choose a profile
|
||||
Server=Start Local Server
|
||||
@@ -489,6 +492,7 @@ Test Input=Test the responsiveness of connected joysticks.
|
||||
Test Lights=Test the responsiveness of connected lights.
|
||||
TextureColorDepth=Choose the color depth of textures. 32 bit textures use more memory, but look nicer.
|
||||
Theme=Choose from this list of installed theme packs.
|
||||
ThreeKeyNavigation=&oq;Five Key&oq;: L/R/D/U menu buttons and Start. &oq;Three Key&oq;: L/R menu buttons and Start.
|
||||
TimingWindowScale=Increase this value to cause your steps to be judged more strictly (i.e. shrink the timing window).
|
||||
Toggle Song=Toggle Song
|
||||
Turn=Turn
|
||||
@@ -594,6 +598,7 @@ AllGroups=All Groups
|
||||
Alternate=Alternate
|
||||
Always=Always
|
||||
Animations=Animations
|
||||
Arbitrary Remap Columns=Arbitrarily Remap
|
||||
Arcade Style=Arcade Style
|
||||
Ask=Ask
|
||||
AttackMines=AttackMines
|
||||
@@ -635,6 +640,8 @@ Connect=Connect...
|
||||
Copy Left To Right=Copy Left To Right
|
||||
Copy Right To Left=Copy Right To Left
|
||||
Courses Only=Courses Only
|
||||
CoverDistort=Cover Distort
|
||||
CoverPreserve=Cover Preserve
|
||||
Create New=Create New
|
||||
Cross=Cross
|
||||
Custom=Custom
|
||||
@@ -652,7 +659,7 @@ Double for 1 Credit=Double for 1 Credit
|
||||
Drunk=Drunk
|
||||
Dynamic Random=Dynamic Random
|
||||
Echo=Echo
|
||||
End of Song=End of Song
|
||||
EndOfSong=End of Song
|
||||
FailAtEnd=Fail at end
|
||||
EffectSpeed=Speed
|
||||
EffectPitch=Pitch
|
||||
@@ -663,6 +670,11 @@ Expand 2->3=Expand 2->3
|
||||
Expand 2x=Expand 2x
|
||||
Expand 3->4=Expand 3->4
|
||||
Fast=Fast
|
||||
FastNoteRendering=Fast Note Rendering
|
||||
FitInside=Fit Inside
|
||||
FitInsideAvoidLetter=Avoid Letter
|
||||
FitInsideAvoidPillar=Avoid Pillar
|
||||
Five Key Menu=Five Key
|
||||
Flat=Flat
|
||||
Flip=Flip
|
||||
Floored=Floored
|
||||
@@ -702,6 +714,7 @@ Mirror=Mirror
|
||||
N/A=N/A
|
||||
Native Language=Native Language
|
||||
Never=Never
|
||||
NextRow=&nextrow;
|
||||
New=New
|
||||
NewEdit=-New Edit-
|
||||
No=No
|
||||
@@ -781,9 +794,11 @@ SuddenOffset=Sudden Offset
|
||||
SuperShuffle=Cement Mixer
|
||||
SoftShuffle=Soft Shuffle
|
||||
Swap Sides=Swap Sides
|
||||
Swap Up/Down=Swap Up/Down
|
||||
Sync Machine=Sync Machine
|
||||
Sync Song=Sync Song
|
||||
Sync Tempo=Sync Tempo
|
||||
Three Key Menu=Three Key
|
||||
Tiny=Tiny
|
||||
Tipsy=Tipsy
|
||||
Title Only=Title Only
|
||||
@@ -846,6 +861,7 @@ AutogenGroupCourses=Autogen Group Courses
|
||||
AutogenSteps=Autogen Steps
|
||||
BGBrightness=Brightness
|
||||
Background=Background
|
||||
BackgroundFitMode=BG Fit Mode
|
||||
BarDrain=Bar Drain
|
||||
BatLives=Bat Lives
|
||||
Base Difficulty=Base Difficulty
|
||||
@@ -905,6 +921,7 @@ DisplayResolution=Display Resolution
|
||||
Duration seconds=Duration seconds
|
||||
EasterEggs=Easter Eggs
|
||||
Edit Songs/Steps=Edit Songs/Steps
|
||||
FastNoteRendering=Fast Note Rendering
|
||||
Genre=Genre
|
||||
Practice Songs/Steps=Practice Songs/Steps
|
||||
Edit Courses=Edit Courses
|
||||
@@ -1070,6 +1087,7 @@ Secret=Secret
|
||||
Secs Remaining=Seconds Remaining
|
||||
Server=Server
|
||||
Servers=Servers
|
||||
Set BG Fit Mode=Set BG Fit Mode
|
||||
Set P1=Set P1
|
||||
Set P2=Set P2
|
||||
Set modifiers=Set modifiers
|
||||
@@ -1119,6 +1137,7 @@ Test Input=Test Input
|
||||
Test Lights=Test Lights
|
||||
TextureColorDepth=Texture Color
|
||||
Theme=Theme
|
||||
ThreeKeyNavigation=Menu Navigation
|
||||
TimingWindowScale=Judge Difficulty
|
||||
Transform=Transform
|
||||
Transfer Edits to USB=Transfer Edits to USB
|
||||
@@ -1344,6 +1363,7 @@ or=or
|
||||
Zoom In Camera=Zoom In Camera
|
||||
|
||||
[ScreenEdit]
|
||||
'%s' is not a track id.='%s' is not a track id.
|
||||
Adding New Attack=Enter the new modifier for this attack.\nThe length can be adjusted later.\nLeave it blank to cancel.
|
||||
Adding New Mod=Please enter the new modifier for this attack.\n\nLeave it blank to cancel.
|
||||
Edit Existing Mod=Please adjust the present modifier below.\n\nLeave it blank to erase the mod.
|
||||
@@ -1387,6 +1407,8 @@ Enter a new preview start.=Enter when the music sample starts.
|
||||
Enter a new preview length.=Enter how long the music sample lasts.
|
||||
Enter a new min BPM.=Enter the minimum displayed BPM.
|
||||
Enter a new max BPM.=Enter the maximum displayed BPM.
|
||||
Enter the new track mapping.=Enter the new track mapping.
|
||||
Entry %d, '%d', is out of range 1 to %d.=Entry %d, '%d', is out of range 1 to %d.
|
||||
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\nN and M keys:\n swap tap notes\nCtrl + N/M:\n swap cycled segment\nCtrl + ,/.:\n cycle segments\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: Set area\n marker\nT key: Switch Timing\nEnter: Area Menu\nA Key: Alter Menu\nEscape: Main Menu\nF4: Timing Menu\nF1: Show help\n
|
||||
@@ -1399,6 +1421,7 @@ The change has been reverted.=The change has been reverted.
|
||||
This change creates more than %d notes in a measure.=This change creates more than %d notes in a measure.
|
||||
This change creates notes past the end of the music and is not allowed.=This change creates notes past the end of the music and is not allowed.
|
||||
This will destroy all unsaved changes.=This will destroy all unsaved changes.
|
||||
Too many tracks specified.=Too many tracks specified.
|
||||
Undo=Undo
|
||||
You must be in Song Timing Mode to edit BG Changes.=You must be in Song Timing Mode to edit BG Changes.
|
||||
You must have an area selected to enter the Alter Menu.=You must have an area selected to enter the Alter Menu.
|
||||
@@ -1508,15 +1531,23 @@ Warning=Warning
|
||||
BodyText=The StepMania program source code is licensed under a permissive open-source license.\n\nThe StepMania name and logos are protected by Trademark law.\n\nThe StepMania default theme SOUNDS ARE SEPARATELY OWNED BY THE AUTHORS. ALL OTHER THEME COMPONENTS ARE LICENSED UNDER THE STEPMANIA LICENSE.\n\nSee license.txt for details.
|
||||
|
||||
[ScreenMapControllers]
|
||||
ActionClear=Clear To Default
|
||||
ActionReload=Reload From Disk
|
||||
ActionSave=Save To Disk
|
||||
ActionSetList=Assign List
|
||||
ActionExit=Exit
|
||||
Default=Default
|
||||
HeaderText=Map Controllers
|
||||
InvalidButton=That key can not be mapped.
|
||||
KeyName=Key Name
|
||||
NoSetListPrompt=No entries in the list to set. Add entries to the list by hitting 'm' when the cursor is on them.
|
||||
%s slots=%s slots
|
||||
Primary=Primary
|
||||
SavePrompt=Save settings before exiting?
|
||||
Secondary=Secondary
|
||||
WarningHeader=WARNING!
|
||||
WarningText=Please ensure that you do not overwrite any important keymappings, such as:\n&MENULEFT; LEFT &MENURIGHT; RIGHT &MENUUP; UP &MENUDOWN; DOWN &START; START &BACK; BACK or &SELECT; SELECT. Do not apply keymappings that you do not know the function of or unmap important keys!
|
||||
|
||||
[ScreenMapControllers2]
|
||||
Add Mapping=Add Mapping
|
||||
|
||||
[ScreenNetRoom]
|
||||
Enter a description for the room:=Enter a description for the room:
|
||||
Enter a password for the room (blank, no password):=Enter a password for the room (blank, no password):
|
||||
@@ -1587,6 +1618,20 @@ Are you sure you want to delete the profile '%s'?=Are you sure you want to delet
|
||||
Enter a name for the profile.=Enter a name for the profile.
|
||||
NewProfileDefaultName=New
|
||||
|
||||
[ScreenOptionsCustomizeProfile]
|
||||
HeaderText=Edit Profile
|
||||
weight=Weight (lbs)
|
||||
voomax=VO2Max
|
||||
birth_year=Birth Year
|
||||
gender=Gender
|
||||
calorie_calc=Calorie Calculation
|
||||
character=Character
|
||||
exit=Exit
|
||||
use_heart=Use Heart Rate
|
||||
use_steps=Use Step Count
|
||||
male=Male
|
||||
female=Female
|
||||
|
||||
[ScreenOptionsMaster]
|
||||
Exit=Exit
|
||||
|
||||
@@ -1603,6 +1648,14 @@ size ???=size ???
|
||||
HeaderText=Options
|
||||
HeaderSubText=You can configure the game here
|
||||
|
||||
[ScreenSetBGFit]
|
||||
CoverDistort=Distort
|
||||
CoverPreserve=Preserve
|
||||
FitInside=Fit
|
||||
FitInsideAvoidLetter=Avoid Letter
|
||||
FitInsideAvoidPillar=Avoid Pillar
|
||||
BG=BG
|
||||
|
||||
[ScreenPackages]
|
||||
DL @ %d KB/s=DL @ %d KB/s
|
||||
Download cancelled.=Download cancelled.
|
||||
@@ -1621,6 +1674,16 @@ No=NO
|
||||
Yes=YES
|
||||
Cancel=CANCEL
|
||||
|
||||
[ScreenHighScores]
|
||||
HeaderText=High Scores
|
||||
HeaderSubText=Who's the top dog?
|
||||
|
||||
[ScreenHeartEntry]
|
||||
HeaderText=Check Your Pulse!
|
||||
|
||||
[ScreenContinue]
|
||||
HelpText=&START; Advance Timer
|
||||
|
||||
[ScreenRanking]
|
||||
|
||||
[ScreenSMOnlineLogin]
|
||||
@@ -1888,10 +1951,47 @@ dance-solo=solo
|
||||
dance-threepanel=3panel
|
||||
dance-routine=routine
|
||||
lights-cabinet=Lights
|
||||
# SSC
|
||||
#
|
||||
Dance_Single=Single
|
||||
Dance_Double=Double
|
||||
Dance_Couple=Couple
|
||||
Dance_Solo=Solo
|
||||
Dance_Routine=Routine
|
||||
Dance_Threepanel=3 Panels
|
||||
Pump_Single=Single
|
||||
Pump_Double=Double
|
||||
Pump_Halfdouble=Half-Double
|
||||
Pump_Couple=Couple
|
||||
Pump_Routine=Routine
|
||||
Kb7_Single=KB7
|
||||
Ez2_Single=Single
|
||||
Ez2_Double=Double
|
||||
Ez2_Real=Real
|
||||
Para_Single=Single
|
||||
Ds3ddx_Single=Single
|
||||
Bm_Single5=5 Keys
|
||||
Bm_Double5=10 Keys
|
||||
Bm_Single7=7 Keys
|
||||
Bm_Double7=14 Keys
|
||||
Maniax_Single=Single
|
||||
Maniax_Double=Double
|
||||
Techno_Single4=Single 4
|
||||
Techno_Single5=Single 5
|
||||
Techno_Single8=Single 8
|
||||
Techno_Double4=Double 4
|
||||
Techno_Double5=Double 5
|
||||
Techno_Double8=Double 8
|
||||
Pnm_Five=5 Button
|
||||
Pnm_Nine=9 Button
|
||||
Guitar_Five=5 Frets
|
||||
Karaoke=Karaoke
|
||||
Lights_Cabinet=Lights
|
||||
|
||||
[StyleType]
|
||||
StyleType_OnePlayerOneSide=1 Player
|
||||
StyleType_TwoPlayersTwoSides=2 Players - Versus
|
||||
StyleType_OnePlayerTwoSides=1 Player
|
||||
StyleType_TwoPlayersSharedSides=2 Players - Cooperative
|
||||
|
||||
[TapNoteScore]
|
||||
AvoidMine=Avoid Mine
|
||||
|
||||
@@ -151,8 +151,45 @@ function Actor:FullScreen()
|
||||
self:stretchto( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT )
|
||||
end
|
||||
|
||||
bg_fit_functions= {
|
||||
BackgroundFitMode_CoverDistort= function(self, width, height)
|
||||
local xscale= width / self:GetWidth()
|
||||
local yscale= height / self:GetHeight()
|
||||
self:zoomx(xscale)
|
||||
self:zoomy(yscale)
|
||||
end,
|
||||
BackgroundFitMode_CoverPreserve= function(self, width, height)
|
||||
local xscale= width / self:GetWidth()
|
||||
local yscale= height / self:GetHeight()
|
||||
self:zoom(math.max(xscale, yscale))
|
||||
end,
|
||||
BackgroundFitMode_FitInside= function(self, width, height)
|
||||
local xscale= width / self:GetWidth()
|
||||
local yscale= height / self:GetHeight()
|
||||
self:zoom(math.min(xscale, yscale))
|
||||
end,
|
||||
BackgroundFitMode_FitInsideAvoidLetter= function(self, width, height)
|
||||
local yscale= height / self:GetHeight()
|
||||
self:zoom(yscale)
|
||||
end,
|
||||
BackgroundFitMode_FitInsideAvoidPillar= function(self, width, height)
|
||||
local xscale= width / self:GetWidth()
|
||||
self:zoom(xscale)
|
||||
end
|
||||
}
|
||||
|
||||
function Actor:scale_or_crop_background_no_move()
|
||||
local fit_mode= PREFSMAN:GetPreference("BackgroundFitMode")
|
||||
if bg_fit_functions[fit_mode] then
|
||||
bg_fit_functions[fit_mode](self, SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||
else
|
||||
self:scaletocover(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||
end
|
||||
end
|
||||
|
||||
function Actor:scale_or_crop_background()
|
||||
self:scaletocover(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
|
||||
self:scale_or_crop_background_no_move()
|
||||
self:xy(SCREEN_CENTER_X, SCREEN_CENTER_Y)
|
||||
end
|
||||
|
||||
function Actor:CenterX() self:x(SCREEN_CENTER_X) end
|
||||
@@ -371,7 +408,7 @@ DrawOrder = {
|
||||
|
||||
-- deprecated aliases:
|
||||
function Actor:hidden(bHide)
|
||||
Warn("hidden is deprecated, use visible instead. (used on ".. self:GetName() ..")")
|
||||
lua.ReportScriptError("hidden is deprecated, use visible instead. (used on ".. self:GetName() ..")")
|
||||
self:visible(not bHide)
|
||||
end
|
||||
|
||||
|
||||
@@ -26,6 +26,14 @@ function SelectMusicOrCourse()
|
||||
end
|
||||
end
|
||||
|
||||
function GameOverOrContinue()
|
||||
if THEME:GetMetric("ScreenContinue", "ContinueEnabled") then
|
||||
return "ScreenContinue"
|
||||
else
|
||||
return "ScreenGameOver"
|
||||
end
|
||||
end
|
||||
|
||||
-- functions used for Routine mode
|
||||
function IsRoutine()
|
||||
return GAMESTATE:GetCurrentStyle() and GAMESTATE:GetCurrentStyle():GetStyleType() == "StyleType_TwoPlayersSharedSides"
|
||||
@@ -42,7 +50,7 @@ Branch = {
|
||||
end,
|
||||
NoiseTrigger = function()
|
||||
local hour = Hour()
|
||||
return hour > 3 and hour < 6 and "ScreenNoise" or "ScreenInit"
|
||||
return hour > 3 and hour < 6 and "ScreenNoise" or "ScreenHighScores"
|
||||
end,
|
||||
TitleMenu = function()
|
||||
-- home mode is the most assumed use of sm-ssc.
|
||||
@@ -59,6 +67,13 @@ Branch = {
|
||||
return "ScreenTitleJoin"
|
||||
end
|
||||
end,
|
||||
AfterTitleMenu = function()
|
||||
if PREFSMAN:GetPreference("ShowCaution") then
|
||||
return "ScreenCaution"
|
||||
else
|
||||
return Branch.StartGame()
|
||||
end
|
||||
end,
|
||||
StartGame = function()
|
||||
-- Check to see if there are 0 songs installed. Also make sure to check
|
||||
-- that the additional song count is also 0, because there is
|
||||
@@ -119,9 +134,13 @@ Branch = {
|
||||
if GAMESTATE:IsEventMode() then
|
||||
return SelectMusicOrCourse()
|
||||
elseif STATSMAN:GetCurStageStats():AllFailed() then
|
||||
return "ScreenGameOver"
|
||||
return GameOverOrContinue()
|
||||
elseif GAMESTATE:GetSmallestNumStagesLeftForAnyHumanPlayer() == 0 then
|
||||
return "ScreenEvaluationSummary"
|
||||
if not GAMESTATE:IsCourseMode() then
|
||||
return "ScreenEvaluationSummary"
|
||||
else
|
||||
return GameOverOrContinue()
|
||||
end
|
||||
else
|
||||
return SelectMusicOrCourse()
|
||||
end
|
||||
@@ -171,8 +190,7 @@ Branch = {
|
||||
GameplayScreen = function()
|
||||
return IsRoutine() and "ScreenGameplayShared" or "ScreenGameplay"
|
||||
end,
|
||||
AfterGameplay = function()
|
||||
-- pick an evaluation screen based on settings.
|
||||
EvaluationScreen= function()
|
||||
if IsNetSMOnline() then
|
||||
return "ScreenNetEvaluation"
|
||||
else
|
||||
@@ -180,6 +198,27 @@ Branch = {
|
||||
return "ScreenEvaluationNormal"
|
||||
end
|
||||
end,
|
||||
AfterGameplay = function()
|
||||
-- pick an evaluation screen based on settings.
|
||||
if THEME:GetMetric("ScreenHeartEntry", "HeartEntryEnabled") then
|
||||
local go_to_heart= false
|
||||
for i, pn in ipairs(GAMESTATE:GetEnabledPlayers()) do
|
||||
local profile= PROFILEMAN:GetProfile(pn)
|
||||
if profile and profile:GetIgnoreStepCountCalories() then
|
||||
go_to_heart= true
|
||||
end
|
||||
end
|
||||
if go_to_heart then
|
||||
return "ScreenHeartEntry"
|
||||
end
|
||||
return Branch.EvaluationScreen()
|
||||
else
|
||||
return Branch.EvaluationScreen()
|
||||
end
|
||||
end,
|
||||
AfterHeartEntry= function()
|
||||
return Branch.EvaluationScreen()
|
||||
end,
|
||||
AfterEvaluation = function()
|
||||
if GAMESTATE:IsCourseMode() then
|
||||
return "ScreenProfileSave"
|
||||
@@ -211,8 +250,19 @@ Branch = {
|
||||
return IsNetConnected() and "ScreenTitleMenu" or "ScreenTitleMenu"
|
||||
end,
|
||||
AfterSaveSummary = function()
|
||||
return "ScreenGameOver"
|
||||
return GameOverOrContinue()
|
||||
-- [[ Enable when Finished ]]
|
||||
-- return GAMESTATE:AnyPlayerHasRankingFeats() and "ScreenNameEntryTraditional" or "ScreenGameOver"
|
||||
end,
|
||||
AfterContinue = function()
|
||||
if GAMESTATE:GetNumPlayersEnabled() == 0 then
|
||||
return "ScreenGameOver"
|
||||
end
|
||||
|
||||
if STATSMAN:GetStagesPlayed() == 0 then
|
||||
return "ScreenSelectStyle"
|
||||
end
|
||||
|
||||
return "ScreenProfileLoad"
|
||||
end
|
||||
}
|
||||
|
||||
@@ -47,8 +47,12 @@ setmetatable(Color, { __call = function(self, c) return self[c] end })
|
||||
|
||||
GameColor = {
|
||||
PlayerColors = {
|
||||
PLAYER_1 = color("#ef403d"),
|
||||
PLAYER_2 = color("#0089cf"),
|
||||
PLAYER_1 = color("#ed5565"),
|
||||
PLAYER_2 = color("#5d9cec"),
|
||||
},
|
||||
PlayerDarkColors = {
|
||||
PLAYER_1 = color("#da4453"),
|
||||
PLAYER_2 = color("#4a89dc"),
|
||||
},
|
||||
Difficulty = {
|
||||
--[[ These are for 'Custom' Difficulty Ranks. It can be very useful
|
||||
@@ -126,17 +130,22 @@ function ColorDarkTone(c)
|
||||
end
|
||||
|
||||
function PlayerColor( pn )
|
||||
if pn == PLAYER_1 then return color("#ef403d") end -- pink-red
|
||||
if pn == PLAYER_2 then return color("#0089cf") end -- sea-blue
|
||||
return color("1,1,1,1")
|
||||
end
|
||||
function PlayerScoreColor( pn )
|
||||
if pn == PLAYER_1 then return color("#ef403d") end -- pink-red
|
||||
if pn == PLAYER_2 then return color("#0089cf") end -- sea-blue
|
||||
if pn == PLAYER_1 then return GameColor.PlayerColors["PLAYER_1"] end
|
||||
if pn == PLAYER_2 then return GameColor.PlayerColors["PLAYER_2"] end
|
||||
return color("1,1,1,1")
|
||||
end
|
||||
|
||||
function CustomDifficultyToColor( sCustomDifficulty )
|
||||
function PlayerScoreColor( pn )
|
||||
return PlayerColor( pn );
|
||||
end
|
||||
|
||||
function PlayerDarkColor( pn )
|
||||
if pn == PLAYER_1 then return GameColor.PlayerDarkColors["PLAYER_1"] end
|
||||
if pn == PLAYER_2 then return GameColor.PlayerDarkColors["PLAYER_2"] end
|
||||
return color("1,1,1,1")
|
||||
end
|
||||
|
||||
function CustomDifficultyToColor( sCustomDifficulty )
|
||||
return GameColor.Difficulty[sCustomDifficulty]
|
||||
end
|
||||
|
||||
@@ -402,4 +411,4 @@ function Alpha(color,percent)
|
||||
end;
|
||||
c.Alpha = percent;
|
||||
return HSVToColor(c);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -133,6 +133,14 @@ function Song:GetStageCost()
|
||||
return self:IsMarathon() and 3 or self:IsLong() and 2 or 1
|
||||
end
|
||||
|
||||
function OptionsNavigationMode()
|
||||
if PREFSMAN:GetPreference("ThreeKeyNavigation") then
|
||||
return "toggle"
|
||||
else
|
||||
return "normal"
|
||||
end
|
||||
end
|
||||
|
||||
-- (c) 2005 Chris Danford
|
||||
-- All rights reserved.
|
||||
--
|
||||
|
||||
@@ -10,28 +10,6 @@ function AreStageSongModsForced()
|
||||
return GAMESTATE:IsAnExtraStage() or bOni or bBattle or bRave
|
||||
end
|
||||
|
||||
local default_fail_applied= {}
|
||||
|
||||
function ResetDefaultFail()
|
||||
default_fail_applied= {}
|
||||
end
|
||||
|
||||
function SetFail()
|
||||
local sFail = ""
|
||||
if GetGamePref("DefaultFail") then
|
||||
sFail = string.format("FailType_%s", GetGamePref("DefaultFail"))
|
||||
else
|
||||
sFail = "FailType_Off"
|
||||
end
|
||||
for pn in ivalues(GAMESTATE:GetHumanPlayers()) do
|
||||
if not default_fail_applied[pn] then
|
||||
GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Preferred"):FailSetting(sFail)
|
||||
default_fail_applied[pn]= true
|
||||
MESSAGEMAN:Broadcast( "PlayerOptionsChanged", {PlayerNumber = pn} )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ScreenSelectMusic:setupmusicstagemods()
|
||||
Trace( "setupmusicstagemods" )
|
||||
local pm = GAMESTATE:GetPlayMode()
|
||||
|
||||
@@ -82,16 +82,17 @@ ThemePrefs =
|
||||
-- If we don't have IniFile, we can't read/write from/to disk
|
||||
if not IniFile then Warn( GetString("IniFileMissing") ) end
|
||||
|
||||
Trace( ("ThemePrefs.Init(prefs, %s)"):format(tostring(bLoadFromDisk)) )
|
||||
-- Trace( ("ThemePrefs.Init(prefs, %s)"):format(tostring(bLoadFromDisk)) )
|
||||
if bLoadFromDisk then
|
||||
Trace( "ThemePrefs.Init: loading from disk" )
|
||||
if not ThemePrefs.Load() then return false end
|
||||
end
|
||||
|
||||
Trace( "ThemePrefs.Init: not loading from disk" )
|
||||
-- Trace( "ThemePrefs.Init: not loading from disk" )
|
||||
|
||||
-- create the section if it doesn't exist
|
||||
local section = GetThemeName()
|
||||
-- Trace( ("ThemePrefs.Init: Theme name is \"%s\""):format(section) )
|
||||
PrefsTable[section] = PrefsTable[section] and PrefsTable[section] or { }
|
||||
|
||||
--Trace( "Using section " .. section )
|
||||
@@ -104,7 +105,7 @@ ThemePrefs =
|
||||
end
|
||||
end
|
||||
|
||||
--PrintTable( PrefsTable[section] )
|
||||
-- PrintTable( PrefsTable[section] )
|
||||
end,
|
||||
|
||||
Load = function()
|
||||
@@ -114,7 +115,7 @@ ThemePrefs =
|
||||
end,
|
||||
|
||||
Save = function()
|
||||
Trace( "ThemePrefs.Save" )
|
||||
-- Trace( "ThemePrefs.Save" )
|
||||
if not IniFile then return false end
|
||||
if not NeedsSaved then return end
|
||||
NeedsSaved = false
|
||||
|
||||
@@ -210,6 +210,11 @@ function IsFreePlay()
|
||||
return IsArcade() and (GAMESTATE:GetCoinMode() == 'CoinMode_Free') or false
|
||||
end
|
||||
|
||||
function IsCourse()
|
||||
local pm = GAMESTATE:GetPlayMode();
|
||||
return pm == "PlayMode_Nonstop" or "PlayMode_Oni" or "PlayMode_Endless"
|
||||
end
|
||||
|
||||
function ArgsIfPlayerJoinedOrNil(arg1,arg2)
|
||||
if arg1==nil then arg1=arg2
|
||||
elseif arg2==nil then arg2=arg1 end
|
||||
@@ -429,10 +434,12 @@ function convert_text_to_indented_lines(text, indent, width, text_zoom)
|
||||
if sub_lines > 0 then
|
||||
indent_mult= 2
|
||||
end
|
||||
local usable_width= width - (indent * indent_mult)
|
||||
if text:GetWidth() * text_zoom > usable_width * 2 then
|
||||
-- On larger resolutions, the font can be squished a bit to fit more on a line.
|
||||
local resolution_width_mult= math.max(1, DISPLAY:GetDisplayHeight() / 720)
|
||||
local usable_width= (width - (indent * indent_mult)) * resolution_width_mult
|
||||
if text:GetWidth() * text_zoom > usable_width then
|
||||
clipped= true
|
||||
width_clip_text(text, usable_width * 2)
|
||||
width_clip_text(text, usable_width)
|
||||
end
|
||||
indented_lines[#indented_lines+1]= {
|
||||
indent_mult, text:GetText()}
|
||||
|
||||
@@ -439,21 +439,23 @@ function ArbitrarySpeedMods()
|
||||
NumPlayers= 0 -- for ease when adjusting for the status elements.
|
||||
}
|
||||
for i, pn in ipairs(GAMESTATE:GetEnabledPlayers()) do
|
||||
local poptions= GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Preferred")
|
||||
local speed= nil
|
||||
local mode= nil
|
||||
if poptions:MaxScrollBPM() > 0 then
|
||||
mode= "m"
|
||||
speed= math.round(poptions:MaxScrollBPM())
|
||||
elseif poptions:TimeSpacing() > 0 then
|
||||
mode= "C"
|
||||
speed= math.round(poptions:ScrollBPM())
|
||||
else
|
||||
mode= "x"
|
||||
speed= math.round(poptions:ScrollSpeed() * 100)
|
||||
if GAMESTATE:IsHumanPlayer(pn) then
|
||||
local poptions= GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Preferred")
|
||||
local speed= nil
|
||||
local mode= nil
|
||||
if poptions:MaxScrollBPM() > 0 then
|
||||
mode= "m"
|
||||
speed= math.round(poptions:MaxScrollBPM())
|
||||
elseif poptions:TimeSpacing() > 0 then
|
||||
mode= "C"
|
||||
speed= math.round(poptions:ScrollBPM())
|
||||
else
|
||||
mode= "x"
|
||||
speed= math.round(poptions:ScrollSpeed() * 100)
|
||||
end
|
||||
ret.CurValues[pn]= {mode= mode, speed= speed}
|
||||
ret.NumPlayers= ret.NumPlayers + 1
|
||||
end
|
||||
ret.CurValues[pn]= {mode= mode, speed= speed}
|
||||
ret.NumPlayers= ret.NumPlayers + 1
|
||||
end
|
||||
ret:GenChoices()
|
||||
return ret
|
||||
|
||||
@@ -153,6 +153,10 @@ function FailCombo()
|
||||
return ComboThresholds["default"].Fail
|
||||
end
|
||||
|
||||
function TwoPartSelection()
|
||||
return GAMESTATE:GetCurrentGame():GetName() == "pump" and true or false
|
||||
end
|
||||
|
||||
local RoutineSkins = {
|
||||
dance = { P1 = "midi-routine-p1", P2 = "midi-routine-p2" },
|
||||
pump = { P1 = "cmd-routine-p1", P2 = "cmd-routine-p2" },
|
||||
|
||||