# Try out this example by copying these metrics into your metrics.ini.

# Some elements will require entries to be added to the language file.  Read Examples/LanguageFile.ini for instructions on adding entries to a language file.

# Setting InitialScreen in the Common section just makes the theme start up in this screen.
# This is only done for ease of seeing this example in action, and is not part of making an options screen.
[Common]
InitialScreen="ScreenOptionsExample"

# The screen must have a metrics section with its name.
[ScreenOptionsExample]
# The Fallback metric for the screen should be "ScreenOptionsMaster", to pull in necessary fallback metrics from that section.
Fallback="ScreenOptionsMaster"

# The ForceAllPlayers metric will force join all players if set.
# This example sets it because the example runs when players would not otherwise be joined.
# An options screen that is meant to set song options between song select and gameplay should not set ForceAllPlayers to true.
ForceAllPlayers=true

# NavigationMode controls how the cursor is used to navigate the screen.
# If it's not set by the theme, it defaults to the setting in Preferences.ini.
# "toggle" sets navigation to the preferred toggle style mode.  In toggle mode, all options on all rows are treated as on/off toggled options.
# "menu" sets navigation to the menu style mode.  In menu mode, each should have only a single option which sets a new screen when chosen.
# This example does not set NavigationMode because the default is what it wants.
# NavigationMode=

# InputMode sets the input mode.  This controls whether the players have separate cursors.
# "individual" means the players' cursors can be separated and move to different options.
# "together" means both players control the same cursor.
InputMode="individual"

# LineNames sets the names of the rows on the screen.
# Names are separated by commas and can be anything that doesn't contain a comma.
# Each name will be appended to "Line" to find the metric that defines that line.  So a line name of "a" will be defined by the metric "Linea".
LineNames="a,b,c,d,e,f,g,h,j,k,l,m,n"

# Each line is defined by a metric that sets its type and arguments for that type.
# This example is going to include a simple example of each type.
# The types of option rows are:  "list", "lua", "conf", "stepstype", "steps", "gamecommand".

# The "list" row type takes a single argument:  The subtype, or the metric that defines the elements of the list.
# The subtypes of list are:  "NoteSkins", "Steps", "StepsLocked", "Characters", "Styles", "Groups", "Difficulties", "SongsInCurrentSongGroup".
# If the subtype is not one of the above, it is the name of the metric that defines the list.

# This list example will create a list defined by a metric.
# A list that is defined by a metric requires entries in the language file for the option title and the option explanation.
# "list,Examples" requires an "Examples" entry in the "OptionTitles" and "OptionExplanations" sections of the language file.
# When looking for the metric that defines the list, the ScreenOptionsMaster section is searched.  See the ScreenOptionsMaster section of this file for an explanation of the body of the list.
Linea="list,Examples"

# The other list subtypes construct lists of GameCommands that execute specific actions.

# The "NoteSkins" subtype constructs a list out of all noteskins available.
Lineb="list,NoteSkins"

# The "Steps" subtype constructs a list out of the playable steps for the current song or course.  Because this is an example screen and there is no current song set, no steps are in the list when this screen is used.
Linec="list,Steps"
# The "StepsLocked" subtype is identical to the "Steps" subtype, but forces all players to make the same choice.
Lined="list,StepsLocked"

# The "Characters" subtype constructs a list out of the selectable dancers.
Linee="list,Characters"

# The "Styles" subtype constructs a list ouf of all styles for the current game type.
Linef="list,Styles"

# The "Groups" subtype constructs a list out of all the song groups.
Lineg="list,Groups"

# The "Difficulties" subtype constructs a list of the difficulties in the "DifficultiesToShow" metric from the "Common" section.
Lineh="list,Difficulties"

# The "SongsInCurrentSongGroup" subtype
# This option row type is not actually usable because it requires language file entries for every song, which is impractical.
#Linei="list,SongsInCurrentSongGroup"

# This is the end of the list subtype examples.

# The "lua" row type takes a single argument, a chunk of lua to run which must return a table defining the row.  Full explanation of the lua option row type can be found in Examples/OptionRowHandlerLua.lua.
# This example uses the "ArbitrarySpeedMods()" function just because I like it.
Linej="lua,ArbitrarySpeedMods()"

# The "steps" row type creates choices for the different charts for the current song.  It takes a single argument, "EditSteps" or "EditSourceSteps".  Its purpose is currently unknown.
Linek="steps,EditSteps"

# The "stepstype" row type is related to the "steps" row type.  It takes a single argument, "EditStepsType" or "EditSourceStepsType".  Its purpose is also unknown.
Linel="stepstype,EditStepsType"

# The "conf" row type constructs a row for changing a conf option.  conf options are the options in Preferences.ini and the argument is the name of the option to edit.
Linem="conf,AllowW1"

# The "gamecommand" row type constructs a row with a single choice from a GameCommand and applies that GameCommand when the choice is chosen.
# Everything after the "gamecommand;" part of the row command is used to construct the GameCommand.
# Full documention on GameCommands can be found in gamecommands.txt.
# This example just makes a GameCommand that does nothing, but has a name.
Linen="gamecommand;name,ExampleCommand"


[ScreenOptionsMaster]
# The main metric defining the list is a command that sets the number of elements and some flags.  All flags are optional, and most commonly will not be used.
# The number of elements must come first.
# Flags are separated by semicolons.
# Arguments to flags are separated by commas.
# Flags are:
#   "together":  Any choice chosen is applied to both players.
#   "selectmultiple":  Multiple choices on the row can be chosen.
#   "selectone":  One choice on the row can be chosen.
#   "selectnone":  No choice on the row can be chosen.
#     selectmultiple, selectone, and selectnone are mutually exclusive.  If more than one is set, only the last one applies.
#   "showoneinrow":  Only show one choice in the row.
#   "default":  Sets the default choice.  Takes one argument, the number of the choice.  "default,2" makes the second choice the default.
#   "reloadrowmessages":  Sets the messages that will cause the row to be reloaded.  Arguments are the messages.
#   "enabledforplayers":  Sets which players are allowed to use the row.  Arguments are numbers.
#   "exportonchange":  Sets whether the option is exported every time it changes.
#   "broadcastonexport":  Sets the messages that are broadcast when the row is exported.  Arguments are the messages.
# Example line using all flags:
#Examples="4;together;selectmultiple;showoneinrow;default,3;reloadrowmessages,ExampleReload;enabledforplayers,1,2;exportonchange;broadcastonexport,ExampleExport"
Examples="4"

# Each choice in the list is defined by a metric.  The name of the metric is the name of the list with a comma and the id of the choice.
# So the first choice in our "Examples" list is defined by the metric "Examples,1".
# The metric defining a choice is a GameCommand.  Full explanation of GameCommands is beyond the scope of this example.  This example will only use the "name" part of a GameCommand.  See gamecommands.txt for full documentation on GameCommands.
# The "name" part of a GameCommand sets the name for that GameCommand.  There must be an entry for this name in the "OptionNames" section of the language file.
# A list also needs a Default entry, a command to apply if the none of the choices are selected.  It can be empty, and it does not need a name.
ExamplesDefault=""
Examples,1="name,Ex1"
Examples,2="name,Ex2"
Examples,3="name,Ex3"
Examples,4="name,Ex4"
