diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt
index a878fe9750..be0fddad4d 100644
--- a/Docs/Changelog_sm5.txt
+++ b/Docs/Changelog_sm5.txt
@@ -5,11 +5,20 @@ 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.
@@ -17,11 +26,13 @@ To reduce the number of entries in this file, entries are dated to the Saturday
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.
+* [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.
+* [TapNote] Class exposed to lua through JudgmentMessage with all data on the
+ TapNote.
2014/09/06
----------
@@ -32,10 +43,13 @@ To reduce the number of entries in this file, entries are dated to the Saturday
* [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.
+* [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.
+* [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
@@ -47,9 +61,12 @@ To reduce the number of entries in this file, entries are dated to the Saturday
----------
* [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.
+* [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
----------
@@ -68,25 +85,31 @@ To reduce the number of entries in this file, entries are dated to the Saturday
2014/07/26
----------
* [ActorScroller] Accidental "permanent loop" bug fixed.
-* [Common metrics] AfterThemeChangeScreen, AfterGameChangeScreen, and AfterGameAndThemeChangeScreen optional metrics added to Common section.
+* [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.
+ 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.
+* [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
+* [Profile] Lua functions for calculating calories based on heart rate added.
+ See ThemerDocs/calories.txt
2014/06/28
----------
@@ -102,27 +125,35 @@ To reduce the number of entries in this file, entries are dated to the Saturday
2014/06/07
----------
-* [ScreenSelectMusic] SelectMenuInput message is now always sent when Select is pressed.
+* [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.
+* [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)
+* [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.
+ 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.
+* [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
----------
@@ -151,7 +182,8 @@ To reduce the number of entries in this file, entries are dated to the Saturday
----------
* [ActorScroller] DrawByZPosition fixed for looping ActorScrollers.
* [Globals?] GetTimeSinceStart global lua function added.
-* [Player] FirstTrack parameter added to JudgmentMessageCommand. (will change before beta 4)
+* [Player] FirstTrack parameter added to JudgmentMessageCommand. (will change
+ before beta 4)
================================================================================
StepMania 5.0 beta 3 | 20140224
diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml
index dae8fac50c..56e03b147b 100644
--- a/Docs/Luadoc/Lua.xml
+++ b/Docs/Luadoc/Lua.xml
@@ -2550,5 +2550,5 @@
StepMania v5.0 beta 3
- 2014-06-27
+ 2014-09-15
diff --git a/Docs/Themerdocs/Examples/Example_Screens/ScreenHeartEntry.lua b/Docs/Themerdocs/Examples/Example_Screens/ScreenHeartEntry.lua
new file mode 100644
index 0000000000..b6b4e87bf3
--- /dev/null
+++ b/Docs/Themerdocs/Examples/Example_Screens/ScreenHeartEntry.lua
@@ -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)
diff --git a/Docs/Themerdocs/calories.txt b/Docs/Themerdocs/calories.txt
index bea235fdfb..de90d75f6d 100644
--- a/Docs/Themerdocs/calories.txt
+++ b/Docs/Themerdocs/calories.txt
@@ -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.
diff --git a/Docs/Userdocs/sm5_beginner.txt b/Docs/Userdocs/sm5_beginner.txt
index 24c31d8535..bd60f3183a 100644
--- a/Docs/Userdocs/sm5_beginner.txt
+++ b/Docs/Userdocs/sm5_beginner.txt
@@ -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.
\ No newline at end of file
+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.
diff --git a/Program/Texture Font Generator.exe b/Program/Texture Font Generator.exe
new file mode 100644
index 0000000000..0e79fa826d
Binary files /dev/null and b/Program/Texture Font Generator.exe differ
diff --git a/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua b/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua
index 0e638d6afe..e1c916da2b 100644
--- a/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua
+++ b/Themes/_fallback/BGAnimations/ScreenSystemLayer overlay/default.lua
@@ -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);
diff --git a/Themes/_fallback/Scripts/04 NumPadEntry.lua b/Themes/_fallback/Scripts/04 NumPadEntry.lua
index 1f52c416d7..63a792b083 100644
--- a/Themes/_fallback/Scripts/04 NumPadEntry.lua
+++ b/Themes/_fallback/Scripts/04 NumPadEntry.lua
@@ -183,6 +183,8 @@
-- -- is a table of x, y, and optional z. Unused if you pass in a custom
-- -- value actor.
-- value_pos= {0, -48},
+-- -- Optional. The font to use for the default value actor.
+-- value_font= "Common Normal",
-- -- Optional. The color for the default value text. Unused if you pass
-- -- in a custom value actor. Default is White.
-- value_color= Color.White,
diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini
index 6fefcbd0ea..80822b09eb 100644
--- a/Themes/_fallback/metrics.ini
+++ b/Themes/_fallback/metrics.ini
@@ -1847,7 +1847,7 @@ ChoiceContinue="screen,ScreenContinue;text,Continue?"
ChoiceOnline="screen,ScreenNetworkOptions;text,Play Online"
ChoiceGameSelect="screen,ScreenSelectGame;text,Select Game"
ChoiceJukebox="screen,ScreenJukeboxMenu;text,Jukebox"
-ChoiceReportBug="urlnoexit,http://ssc.ajworld.net/sm-ssc/bugtracker/;text,Report Bug"
+ChoiceReportBug="urlnoexit,https://github.com/stepmania/stepmania/issues;text,Report Bug"
ChoiceIRC="urlnoexit,http://chat.mibbit.com/?server=chat.freenode.net&channel=%23stepmania-devs&nick=StepMania_player;text,Chat on IRC"
ChoiceSandbox="screen,ScreenTest;text,Sandbox"
#
@@ -3656,6 +3656,31 @@ DisqualifiedP2Y=
DisqualifiedP2OnCommand=visible,false
DisqualifiedP2OffCommand=
#
+SmallBanner1X=SCREEN_CENTER_X
+SmallBanner1Y=SCREEN_TOP-128
+SmallBanner1OnCommand=visible,false
+SmallBanner1OffCommand=
+SmallBanner2X=SCREEN_CENTER_X
+SmallBanner2Y=SCREEN_TOP-128
+SmallBanner2OnCommand=visible,false
+SmallBanner2OffCommand=
+SmallBanner3X=SCREEN_CENTER_X
+SmallBanner3Y=SCREEN_TOP-128
+SmallBanner3OnCommand=visible,false
+SmallBanner3OffCommand=
+SmallBanner4X=SCREEN_CENTER_X
+SmallBanner4Y=SCREEN_TOP-128
+SmallBanner4OnCommand=visible,false
+SmallBanner4OffCommand=
+SmallBanner5X=SCREEN_CENTER_X
+SmallBanner5Y=SCREEN_TOP-128
+SmallBanner5OnCommand=visible,false
+SmallBanner5OffCommand=
+SmallBanner6X=SCREEN_CENTER_X
+SmallBanner6Y=SCREEN_TOP-128
+SmallBanner6OnCommand=visible,false
+SmallBanner6OffCommand=
+#
DetailLineFormat="%3d/%3d"
#
@@ -4690,3 +4715,10 @@ NullCountString=""
[TimingData]
GetReturnsNumbers=false
+
+# Apparently these are still used. Let it be known that they're severely deprecated.
+[DancingCharacters]
+2DCharacterXP1=SCREEN_WIDTH*0.25
+2DCharacterYP1=SCREEN_HEIGHT*0.5
+2DCharacterXP2=SCREEN_WIDTH*0.75
+2DCharacterYP2=SCREEN_HEIGHT*0.5
diff --git a/Themes/default/Graphics/StepsDisplay autogen/default.lua b/Themes/default/Graphics/StepsDisplay autogen/default.lua
index 59ebf66c45..f876d08158 100644
--- a/Themes/default/Graphics/StepsDisplay autogen/default.lua
+++ b/Themes/default/Graphics/StepsDisplay autogen/default.lua
@@ -8,7 +8,8 @@ t[#t+1] = Def.Quad {
InitCommand=cmd(zoomto,40,20;diffuse,Color.Black;
diffusealpha,0.5;fadeleft,0.25;faderight,0.25);
};
-t[#t+1] = LoadFont("Common","Normal") .. {
+t[#t+1] = Def.BitmapText {
+ Font="Common Normal";
Text="AG";
InitCommand=cmd(shadowlength,1;zoom,0.875);
};
diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini
index 5aea4613b6..1ca22b3422 100644
--- a/Themes/default/metrics.ini
+++ b/Themes/default/metrics.ini
@@ -2076,7 +2076,7 @@ SmallBanner6OffCommand=
[ScreenContinue]
ShowHeader=false
ShowFooter=false
-ContinueEnabled=true
+ContinueEnabled=false
#
TimerSeconds=20
TimerMetricsGroup="MenuTimerContinue"
diff --git a/src/archutils/Win32/DebugInfoHunt.cpp b/src/archutils/Win32/DebugInfoHunt.cpp
index b05a1f098e..afb0e62b20 100644
--- a/src/archutils/Win32/DebugInfoHunt.cpp
+++ b/src/archutils/Win32/DebugInfoHunt.cpp
@@ -240,6 +240,7 @@ static void GetWindowsVersionDebugInfo()
*/
}
else if(ovi.dwMajorVersion == 6 && ovi.dwMinorVersion == 1)
+ {
Ver += "Win7";
// todo: make this check work
/*
@@ -248,6 +249,18 @@ static void GetWindowsVersionDebugInfo()
else
Ver += "WinServer2008 R2";
*/
+ }
+ else if(ovi.dwMajorVersion == 6 && ovi.dwMinorVersion == 2)
+ {
+ Ver += "Win8";
+ // todo: make this check work
+ /*
+ if(ovi.wProductType == VER_NT_WORKSTATION)
+ Ver += "Win7";
+ else
+ Ver += "WinServer2008 R2";
+ */
+ }
else
Ver += "unknown NT-based";
} else Ver += "???";
diff --git a/stepmania.nsi b/stepmania.nsi
index f3bf3acb33..293f612668 100644
--- a/stepmania.nsi
+++ b/stepmania.nsi
@@ -474,6 +474,7 @@ Section "Main Section" SecMain
File "Docs\Changelog_SSCformat.txt"
File "Docs\CommandLineArgs.txt"
File "Docs\CourseFormat.txt"
+ File "Docs\Userdocs\sm5_beginner.txt"
File /r /x CVS /x .svn "Docs\license-ext"
File /r /x CVS /x .svn "Docs\Luadoc"
File /r /x CVS /x .svn "Docs\Themerdocs"