Screenshots
Quick Start
Add the compiled XnaGameConsole dll as a reference and initialize the GameConsole:GameConsole console = new GameConsole(this, spriteBatch); // where `this` is your `Game` class
By default, the console is opened with the ` (OemTilde key) but this, amongst other settings, can be changed via the Options property.
You can then add commands and customize the console.
Features
- Add your own commands
- Customizable Options
- Clipboard Support
- External Writing
- Command Auto-Complete
- Command History
Source and Downloads
You can checkout a copy of the source at the Google Code page: http://code.google.com/p/xnagameconsole/The compiled dll of XNAGameConsole can also be downloaded from here: http://code.google.com/p/xnagameconsole/downloads/list
Notes
Clipboard Support
The console supports pasting via CTRL+V but this requires the game to be running in a Single Threaded Apartment.
To do this, add the STAThread attribute to the entry point of your game:
static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { using (Game1 game = new Game1()) { game.Run(); } } }
Adding Commands
There are currently 2 ways how to add custom commands to the console:
1. Using IConsoleCommand
Console commands can be built via the IConsoleCommand interface.
The following is an example of a command:
class MovePlayerCommand:IConsoleCommand { public string Name { get { return "move"; } } public string Description { get { return "Moves the player"; } } private Player player; public MovePlayerCommand(Player player) { this.player = player; } public string Execute(string[] arguments) { var newPosition = new Vector2(float.Parse(arguments[0]), float.Parse(arguments[1])); player.Position = newPosition; return "Moved player to " + newPosition; } }
Such a command can then be added to the console like such:
console.AddCommand(new MovePlayerCommand(player));
2. Via a Func<string, string>
Commands can also be added without using IConsoleCommand, like the following:
console.AddCommand("rotRad", a => { var angle = float.Parse(a[0]); player.Angle = angle; return String.Format("Rotated the player to {0} radians", angle); }, "Rotates the player");The advantage of adding a command like this is that in the Func<> you have access to the variables outside the closure.
Writing to the Console
You can dynamically write to the console via the WriteLine method:
console.WriteLine("Writing from the code");
Console Options
The console can be customized with a number of options. These options can be accessed through the GameConsoleOptions class.
To set the initial options, instantiate a new GameConsoleOptions class, set your desired options and pass it through one of the GameConsole's overloaded constructors:
GameConsoleOptions options = new GameConsoleOptions { FontColor = Color.Crimson, Prompt = ">", BackgroundColor = Color.DarkGreen }; GameConsole console = new GameConsole(this, spriteBatch, options);
The options can also be changed dynamically through the Options property of GameConsole:
console.Options.Height = 200;
The following are the current available options:
ToggleKey (Microsoft.Xna.Framework.Input.Keys)
Gets or sets the key that is used to show / hide the console
Default: Keys.OemTilde
BackgroundColor (Microsoft.Xna.Framework.Graphics.Color)
Gets or sets the color for the background of the console
Default: new Color(0, 0, 0, 125)
FontColor (Microsoft.Xna.Framework.Graphics.Color)
Sets the same specified color for all of the following properties:
- BufferColor
- PastCommandColor
- PastCommandOutputColor
- PromptColor
- CursorColor
Default: Color.White
BufferColor (Microsoft.Xna.Framework.Graphics.Color)
Gets or sets the color of the text in the buffer
Default: Color.White
PastCommandColor (Microsoft.Xna.Framework.Graphics.Color)
Gets or sets the color of the past commands
Default: Color.White
PastCommandOutputColor (Microsoft.Xna.Framework.Graphics.Color)
Gets or sets the color of the past command outputs
Default: Color.White
PromptColor (Microsoft.Xna.Framework.Graphics.Color)
Gets or sets the color of the prompt
Default: Color.White
CursorColor (Microsoft.Xna.Framework.Graphics.Color)
Gets or sets the color of the cursor
Default: Color.White
AnimationSpeed (float)
Gets or sets the speed by which the console opens/closes
Default: 1
CursorBlinkSpeed (float)
Gets or sets the speed by which the cursor blinks
Default: 0.5f
Height (int)
Gets or sets the height of the console, in pixels
Default: 300
Prompt (string)
Gets or sets the prompt
Default: $
Cursor (char)
Gets or sets the cursor display character
Default: _
Padding (int)
Gets or sets the padding, in pixels, between the border of the console and the inner text
Default: 30
Margin (int)
Gets or sets the margin, in pixels, between the left and right side of the screen to the console border
Default: 30
OpenOnWrite (bool)
Gets or sets a boolean value that indicates whether to open the console, if it's closed, when writing to the console
Default: true
Font (Microsoft.Xna.Framework.Graphics.SpriteFont)
Gets or sets the font that is used in the console
Default: Consolas, Regular, 11pt