GameCommands are constructed from subcommands separated by semicolons.
Subcommands are constructed from a command name and its arguments, separated by commas.
Each command takes its arguments and interprets them to set a property of the GameCommand.

Most of the things that can be done through GameCommands can be done better through other means.  GameCommand is kept around for compatibility with older versions and because ScreenOptionsMaster based screens often don't have the ability to use the better ways of doing things for their choices.

Example command:
"name,Example;screen,ScreenInit"
This example creates a GameCommand with the name "Example" and its screen property set to "ScreenInit".

When a GameCommand is applied, its properties are used to change things about the game.

The various properties that can be set for a GameCommand are listed below, with their effects when applied.

"announcer"
Sets the name of the announcer.  The argument must be the name of the directoory of the announcer.

"applydefaultoptions"
Applies the default options to the player.  No argument.

"clearcredits"
Clears any credits that have been inserted.  No argument.

"course"
Sets the current course to the argument.

"difficulty"
Sets the difficulty property of this GameCommand.
Acceptable args are:
Beginner, Easy, Medium, Hard, Challenge, Edit

"fademusic"
Must have 2 args:  The volume to fade out to and the seconds to spread the fade over.

"goalcalories"
Sets the calorie goal of the player.

"goaltype"
Sets the goal type of the player.  Types are:  Calories, Time, None.

"insertcredit"
Inserts a credit.  No arguments.

"lua"
Sets a lua function to be run when this GameCommand is applied.

"mod"
Sets a modifier to be applied to the player(s).

"name"
Sets the name of this GameCommand.  For GameCommands used in option rows as choices, this is used to set the text that is shown on screen for the choice.

"playmode"
The "playmode" game command controls what mode of play the game is in.  This is a choice between the normal play mode and the various course or battle modes.  The noral effects of the different playmodes are described in playmods.txt, though a theme can check the current playmode and do anything it pleases with that information.
Acceptable args are:
Regular, Nonstop, Oni, Endless, Battle, Rave

"preparescreen"
Prepares the screen named by the argument when the command is applied.  PrepareScreen takes time and blocks graphics, so this should not be used for screens that load a lot of data.

"profileid"
Sets the default local profile ID of the player.

"screen"
Sets the screen that will be transitioned to when this GameCommand is applied.

"setenv"
Arguments are "key,value" pairs of environment variables to be set.  Only capable of setting string values.

"setpref"
Must have 2 args:  The preference and the value to set it to.  Preferences are listed in Preferences.ini.

"song"
Sets the current song.  The argument should be of the form "Group/SongName".

"songgroup"
Sets the preferred song group.  Does not immediately change the group on the music wheel, but the preferred group is the group that will be open when ScreenSelectMusic starts.

"sort"
Sets the sort order.  Does not immediately change the sort on the music wheel, but the sort is the sort that will be used when ScreenSelectMusic starts.
Sort names are:
Preferred, Group, Title, BPM, Popularity, TopGrades, Artist, Genre, BeginnerMeter, EasyMeter, MediumMeter, HardMeter, ChallengeMeter, DoubleBeginnerMeter, DoubleEasyMeter, DoubleMediumMeter, DoubleHardMeter, DoubleChallengeMeter, ModeMenu, AllCourses, Nonstop, Oni, Endless, Length, Roulette, Recent.

"sound"
Plays the sound at the path once.

"stagemod"
Sets a modifier to be applied to the stagemods.

"steps"
Sets the current steps to the steps at the specified difficulty for the current song.  Emits an error if the song or the style is not already set when the GameCommand is parsed.

"stopmusic"
Stops the music that is currently playing.  No argument.

"style"
The "style" command is used to set the style of the game.  The style of the game controls how many pads/players are used.  Acceptable args depend on the game type.
For dance:  single, versus, double, couple, solo, couple-edit, threepanel, routine
For pump:  single, versus, halfdouble, double, couple, couple-edit, routine
For kb7:  single, versus
For ez2:  single, real, versus, versusReal, double
For para:  single, versus
For ds3ddx:  single
For beat:  single5, versus5, double5, single7, versus7, double7
For maniax:  single, versus, double
For techno:  single4, single5, single8, versus4, versus5, versus8, double4, double5, double8
For popn:  popn-five, popn-nine
For lights:  cabinet

"text"
Sets the text property of the GameCommand.  This is an alternative to the name field used by some screens.

"trail"
Sets the current trail to the trail at the specified difficulty for the current course.  Emits an error if the course or the style is not already set when the GameCommand is parsed.

"url"
Exits the game and launches a browser to visit the url.

"urlnoexit"
Launches a browser to visit the url.

"weight"
Sets the weight of the player.
