diff --git a/axios/Axios_settings.cs b/axios/Axios_settings.cs index 003fd61..3c0bdce 100644 --- a/axios/Axios_settings.cs +++ b/axios/Axios_settings.cs @@ -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 --git a/axios/Engine/AxiosCommandConsole.cs b/axios/Engine/AxiosCommandConsole.cs index 8447878..193e76b 100644 --- a/axios/Engine/AxiosCommandConsole.cs +++ b/axios/Engine/AxiosCommandConsole.cs @@ -20,27 +20,40 @@ using Microsoft.Xna.Framework; 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 System.Text; using Microsoft.Xna.Framework.Graphics; namespace Axios.Engine { - class AxiosCommandConsole + public class AxiosCommandConsole { + public bool Active = false; public AxiosCommandConsole(AxiosGameScreen gameScreen) { diff --git a/axios/Engine/AxiosGameScreen.cs b/axios/Engine/AxiosGameScreen.cs index 6c31a84..71fa375 100644 --- a/axios/Engine/AxiosGameScreen.cs +++ b/axios/Engine/AxiosGameScreen.cs @@ -43,6 +43,14 @@ namespace Axios.Engine AxiosCommandConsole _console = null; + protected bool AllowKeyboardWhileConsoleIsActive = false; + + public AxiosCommandConsole Console + { + get { return _console; } + private set { _console = value; } + } + public AxiosGameScreen() : base() { @@ -110,6 +118,7 @@ namespace Axios.Engine _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 @@ namespace Axios.Engine 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 @@ namespace Axios.Engine 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 @@ namespace Axios.Engine //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 }