diff -r 3190762571e2dba6cca751b0282e4831b59089ca -r 2f35487eb9ecb98dd87d0271ff1b875afb6369a2 axios/Axios_settings.cs --- a/axios/Axios_settings.cs Sat May 26 19:20:04 2012 -0500 +++ b/axios/Axios_settings.cs Sat May 26 22:53:55 2012 -0500 @@ -92,6 +92,7 @@ * - Changing AxiosTitleFile.GetStream() to return Stream instead of FileStream * - Changing IAxiosFile.GetStream() to return Stream instead of FileStream * - Adding support for XNACC + * - Fixed a bug where cleanup actions were being performed in Deactivate instead of Unload in AxiosGameScreen * */ #endregion diff -r 3190762571e2dba6cca751b0282e4831b59089ca -r 2f35487eb9ecb98dd87d0271ff1b875afb6369a2 axios/Engine/AxiosCommandConsole.cs --- a/axios/Engine/AxiosCommandConsole.cs Sat May 26 19:20:04 2012 -0500 +++ b/axios/Engine/AxiosCommandConsole.cs Sat May 26 22:53:55 2012 -0500 @@ -20,27 +20,40 @@ namespace Axios.Engine { - class AxiosCommandConsole : CommandConsoleBase + public class AxiosCommandConsole : CommandConsoleBase { + //private AxiosGameScreen _gameScreen; 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 override void LoadContent() + protected void LoadDefault() { FadeColor = Color.White * 0.5f; Texture2D tmp = new Texture2D(GraphicsDevice, 1, 1); tmp.SetData(new Color[] { Color.Black }); FadeImage = tmp; + } + + public override void LoadContent(ContentManager content) + { + base.LoadContent(content); + } + protected override void LoadContent() + { + if (Font == null) + Font = Game.Content.Load("Console"); base.LoadContent(); } } @@ -53,8 +66,9 @@ using Microsoft.Xna.Framework.Graphics; namespace Axios.Engine { - class AxiosCommandConsole + public class AxiosCommandConsole { + public bool Active = false; public AxiosCommandConsole(AxiosGameScreen gameScreen) { diff -r 3190762571e2dba6cca751b0282e4831b59089ca -r 2f35487eb9ecb98dd87d0271ff1b875afb6369a2 axios/Engine/AxiosGameScreen.cs --- a/axios/Engine/AxiosGameScreen.cs Sat May 26 19:20:04 2012 -0500 +++ b/axios/Engine/AxiosGameScreen.cs Sat May 26 22:53:55 2012 -0500 @@ -43,6 +43,14 @@ AxiosCommandConsole _console = null; + protected bool AllowKeyboardWhileConsoleIsActive = false; + + public AxiosCommandConsole Console + { + get { return _console; } + private set { _console = value; } + } + public AxiosGameScreen() : base() { @@ -110,6 +118,7 @@ _console = (AxiosCommandConsole)obj; #if WINDOWS ScreenManager.Game.Components.Add(_console); + _console.LoadContent(ScreenManager.Game.Content); #endif } if (obj is AxiosGameObject || obj is AxiosUIObject || obj is AxiosTimer) @@ -230,7 +239,7 @@ public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen) { base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen); - + if (this._objectstoremove.Count > 0) { List list = this._objectstoremove.ToList(); @@ -379,17 +388,21 @@ public override void HandleInput(GameTime gameTime, InputState input) { - base.HandleInput(gameTime, input); + if ((AllowKeyboardWhileConsoleIsActive && _console.Active) || !_console.Active) + { + base.HandleInput(gameTime, input); - foreach (AxiosGameObject g in _gameObjects.ToList()) - g.HandleInput(this, input, gameTime); + foreach (AxiosGameObject g in _gameObjects.ToList()) + g.HandleInput(this, input, gameTime); - foreach (AxiosUIObject g in _uiobjects.ToList()) - g.HandleInput(this, input, gameTime); + foreach (AxiosUIObject g in _uiobjects.ToList()) + g.HandleInput(this, input, gameTime); + } } - public override void Deactivate() + public override void Unload() { + //System.Diagnostics.Debugger.Break(); base.Deactivate(); AxiosLog.Instance.AddLine("Memory usage before cleanup: " + GC.GetTotalMemory(true).ToString(), LoggingFlag.DEBUG); foreach (AxiosGameObject g in _gameObjects) @@ -409,6 +422,13 @@ //AxiosIsolatedFile f = new AxiosIsolatedFile("log.log"); //f.WriteData(AxiosLog.Instance.GetLog(), FileMode.Append); //CleanUp(); +#if WINDOWS + if (_console != null) + { + ScreenManager.Game.Components.Remove(_console); + _console.Dispose(); + } +#endif }