<library name="Game">
	<description></description>
	<namespace name="Game">
		<enum name="KeyboardKey">
			<description>Enum representing keys on a standard US keyboard.</description>
			<value name="A" />
			<value name="ALT" />
			<value name="APOSTROPHE" />
			<value name="B" />
			<value name="BACKSLASH" />
			<value name="BACKSPACE" />
			<value name="BACKTICK" />
			<value name="C" />
			<value name="CAPS_LOCK" />
			<value name="CLOSE_BRACKET" />
			<value name="COMMA" />
			<value name="CONTEXT_MENU" />
			<value name="CTRL" />
			<value name="D" />
			<value name="DELETE" />
			<value name="DOWN" />
			<value name="E" />
			<value name="END" />
			<value name="ENTER" />
			<value name="EQUALS" />
			<value name="ESCAPE" />
			<value name="F" />
			<value name="F1" />
			<value name="F2" />
			<value name="F3" />
			<value name="F4" />
			<value name="F5" />
			<value name="F6" />
			<value name="F7" />
			<value name="F8" />
			<value name="F9" />
			<value name="F10" />
			<value name="F11" />
			<value name="F12" />
			<value name="G" />
			<value name="H" />
			<value name="HOME" />
			<value name="HYPHEN" />
			<value name="I" />
			<value name="INSERT" />
			<value name="J" />
			<value name="K" />
			<value name="L" />
			<value name="LEFT" />
			<value name="M" />
			<value name="N" />
			<value name="NUM_0" />
			<value name="NUM_1" />
			<value name="NUM_2" />
			<value name="NUM_3" />
			<value name="NUM_4" />
			<value name="NUM_5" />
			<value name="NUM_6" />
			<value name="NUM_7" />
			<value name="NUM_8" />
			<value name="NUM_9" />
			<value name="NUM_LOCK" />
			<value name="O" />
			<value name="OPEN_BRACKET" />
			<value name="OS_COMMAND" />
			<value name="P" />
			<value name="PAGE_DOWN" />
			<value name="PAGE_UP" />
			<value name="PAUSE" />
			<value name="PERIOD" />
			<value name="PRINT_SCREEN" />
			<value name="Q" />
			<value name="R" />
			<value name="RIGHT" />
			<value name="S" />
			<value name="SCROLL_LOCK" />
			<value name="SEMICOLON" />
			<value name="SHIFT" />
			<value name="SLASH" />
			<value name="SPACE" />
			<value name="T" />
			<value name="TAB" />
			<value name="U" />
			<value name="UP" />
			<value name="V" />
			<value name="W" />
			<value name="X" />
			<value name="Y" />
			<value name="Z" />
		</enum>

		<enum name="EventQuitType" description="Enum for specifically describing how a quit event was generated.">
			<value name="ALT_F4" description="Quit event type for when user presses Alt + F4."/>
			<value name="CLOSE_BUTTON" description="Quit event when user presses the close button in the window chrome."/>
			<value name="BACK_BUTTON" description="Quit event when user presses the hardware back button."/>
		</enum>

		<enum name="EventButton" description="Enum for describing the button on mouse-based events.">
			<value name="LEFT" description="Mouse left button."/>
			<value name="RIGHT" description="Mouse right button."/>
		</enum>

		<enum name="EventType" description="Describes the type of the event.">
			<value name="QUIT" description="Type of an event fired when the user attempts to close the program. This type is associated with the Game.QuitEvent class."/>
			<value name="KEY_DOWN" description="Type of an event for when the user presses a key on the keyboard. This type is associated with the Game.KeyEvent class."/>
			<value name="KEY_UP" description="Type of an event for when the user releases a key on the keyboard. This type is associated with the Game.KeyEvent class."/>
			<value name="MOUSE_LEFT_DOWN" description="Type of an event for when the user presses the left mouse button. This type is associated with the Game.MouseClickEvent class."/>
			<value name="MOUSE_LEFT_UP" description="Type of an event for when the user releases the left mouse button. This type is associated with the Game.MouseClickEvent class."/>
			<value name="MOUSE_RIGHT_DOWN" description="Type of an event for when the user presses the right mouse button. This type is associated with the Game.MouseClickEvent class."/>
			<value name="MOUSE_RIGHT_UP" description="Type of an event for when the user releases the right mouse button. This type is associated with the Game.MouseClickEvent class."/>
			<value name="MOUSE_MOVE" description="Type of an event for when the mouse moves. This type is associated with the Game.MouseMoveEvent class."/>
			<value name="MOUSE_SCROLL" description="Type of an event for when the mouse wheel is scrolled. This type is associated with the Game.MouseScrollEvent class."/>
			<value name="GAMEPAD_HARDWARE" description="Type of an event when a gamepad button or axis' state has been modified."/>
			<value name="GAMEPAD" description="Type of an event when a gamepad button or axis that has been configured has been modified."/>
		</enum>

		<class name="GameWindow">
			<description>
				Represents the game window or the browser frame or mobile screen.
				Manages the size of the screen, frame rate, and user input.
				For drawing graphical information to the screen, see the Graphics2D library.
			</description>

			<function name="(constructor)">
				<arg name="title" type="string" description="The title to appear in the window (if supported by the platform). Certain platforms require a name before the VM has a chance to run (such as the setting the title of the HTML host page or the name of a mobile app. For these, use the title field in the build file."/>
				<arg name="fps" type="float" description="The desired frames per second for the game."/>
				<arg name="width" type="int" description="Logical width of the window."/>
				<arg name="height" type="int" description="Logical height of the window."/>
				<arg name="screenWidth" type="int" description="Actual width of the window. The image will be stretched to fit this size." optional="true"/>
				<arg name="screenHeight" type="int" description="Actual height of the window. The image will be stretched to fit this size." optional="true"/>
				<description>
					Instantiates a new game window.
					For most platforms this will open a window or initialize the rendering surface (e.g. JavaScript's canvas).
					Furthermore, the screenWidth and screenHeight parameters may be ignored in platforms that don't have a notion of a dynamically sized window (such as mobile with a fixed-size strings).
					Creation of the window will also automatically show the window (i.e. there are no .show() or .hide() methods).
				</description>
			</function>

			<function name="clockTick">
				<description>
					Indicates that the frame has ended. 
					This will cause the program to pause for an amount of time to maintain the frame rate.
				</description>
			</function>

			<function name="pumpEvents">
				<description>
					Returns a list of events that have occurred since the last time pumpEvents was invoked.
				</description>
				<returns type="list-of-Event" description="Returns a list of events"/>
			</function>

			<function name="setTitle">
				<arg name="title" type="string" description="the new title of the window"/>
				<description>
					Sets the title of the window to a new string, if possible.
				</description>
			</function>
		</class>

		<class name="Event">
			<description>Base abstract class of all game events. See the more specific class for more useful information.</description>
			<field name="type" type="Game.EventType" description="Indicates which specific type of event this is."/>
		</class>

		<class name="QuitEvent">
			<description>Event that gets fired when a quit attempt has occured, such clicking the close button or pressing Alt+F4.</description>
			<field name="quitType" type="Game.EventQuitType" description="Enum value describing how this quit event was invoked."/>
		</class>

		<class name="KeyEvent">
			<description>Event that gets fired when a keyboard key is pressed or released.</description>
			<field name="key" type="Game.KeyboardKey" description="The key that is pressed."/>
			<field name="down" type="boolean" description="True if the key was pressed down."/>
		</class>

		<class name="MouseEvent">
			<description>Event that gets fired when a mouse event occurs. This is an abstract base class for other more specific mouse events.</description>
			<field name="x" type="int" description="X coordinate for the mouse event."/>
			<field name="y" type="int" description="Y coordinate for the mouse event."/>
		</class>

		<class name="MouseClickEvent">
			<description>Event that gets fired when a mouse button is pressed or released.</description>
			<field name="button" type="Game.EventButton" description="The mouse button that was pressed or released."/>
			<field name="down" type="boolean" description="True if the mouse was pressed down. False if it is released."/>
		</class>

		<class name="MouseMoveEvent">
			<description>Event that gets fired when the mouse moves. Does not have any special fields since the X and Y values are in the base class.</description>
		</class>

		<class name="MouseScrollEvent">
			<description>Event that gets fired when the scroll wheel is scrolled.</description>
			<field name="amount" type="float" description="The amount that was scrolled."/>
		</class>

	</namespace>
</library>
