axiosengine/axios/Engine/AxiosCommandConsole.cs
Nathan Adams 01748bc5f8 Fixing axios log flag detection
Adding dispose methods to AxiosFile objects
Adding extended log to AxiosLog
Fixing issue in CommandConsole where the first line would not be displayed
Adding commands to commandconsole
2015-01-02 20:14:38 -06:00

106 lines
3.5 KiB
C#

#if WINDOWS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using XNACC.Console;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework;
using Axios.Engine.Log;
using Axios.Engine.Data;
/*
* The empty AxiosCommandConsole is so that when you use the comamnd console
* in your game you don't need #if WINDOWS/#endif precompiler - when you attempt
* to use it on WP7/Xbox 360 it just won't do anything.
*
* Perhaps one day we should develop a customized console that doesn't require keyboard input
* to still allow debugging on WP7/Xbox 360
* -- Nathan Adams [adamsna@datanethost.net] - 5/26/2012
*/
namespace Axios.Engine
{
public class AxiosCommandConsole : CommandConsoleBase
{
public AxiosGameScreen GameScreen;
protected List<string> RestrictedCommands = new List<string>();
public bool KeepRunning = false;
public AxiosCommandConsole(AxiosGameScreen gameScreen)
: base(gameScreen.ScreenManager.Game)
{
GameScreen = gameScreen;
Keyboard = gameScreen.ScreenManager.InputState;
}
public AxiosCommandConsole(AxiosGameScreen gameScreen, SpriteFont font)
: base(gameScreen.ScreenManager.Game, font)
{
GameScreen = gameScreen;
Keyboard = gameScreen.ScreenManager.InputState;
}
protected void LoadDefault()
{
FadeColor = Color.White * 0.5f;
Texture2D tmp = new Texture2D(GraphicsDevice, 1, 1);
tmp.SetData<Color>(new Color[] { Color.Black });
FadeImage = tmp;
}
private void ShowAxiosLog()
{
AddOutputToLog("============");
foreach (string l in AxiosLog.Instance.GetLogList())
AddOutputToLog(l);
AddOutputToLog("============");
}
public void ToggleCamera()
{
AddOutputToLog("Camera user control was: " + ((GameScreen.EnableCameraControl) ? "Disabled" : "Enabled"));
GameScreen.EnableCameraControl = !GameScreen.EnableCameraControl;
}
public override void InitializeCustomCommands()
{
AddCommand(new CmdObject("axioslog", "Displays the current Axios Log", input => { ShowAxiosLog(); }));
AddCommand(new CmdObject("tcc", "Toggles user camera control", input => { ToggleCamera(); }));
AddCommand(new CmdObject("axiosloglevel", "Outputs axios log level", input => { AddOutputToLog(Settings.Loglevel.ToString()); }));
AddCommand(new CmdObject("saveaxiosextlog", "Saves Axios Engine extended log (any log events)", input => { AxiosLog.Instance.writeExtendedLog(); }));
base.InitializeCustomCommands();
}
public override void LoadContent(ContentManager content)
{
base.LoadContent(content);
foreach (string cmd in RestrictedCommands)
{
if (ms_commands.Keys.Contains(cmd))
ms_commands.Remove(cmd);
}
}
protected override void LoadContent()
{
if (Font == null)
Font = Game.Content.Load<SpriteFont>("Console");
base.LoadContent();
}
protected override void UnloadContent()
{
base.UnloadContent();
//ms_commands.Remove("axioslog");
}
}
}
#else
#endif