Example #1
0
        private void AsyncLoad()
        {
            try
            {
                UpdateLoadMsg("Loading Paths");
                Data.Paths.Init();

                UpdateLoadMsg("Loading Textures");
                TextureManager.Init();

                UpdateLoadMsg("Loading Game Data");
                Data.GameData.Init();
                UpdateLoadMsg("Loading Audio");
                AudioManager.Init();
                Logs.Logger.LogInfo(AudioManager.GetALInfo());

                UpdateLoadMsg("Starting...");
            }
            catch (Exception ex)
            {
                Logs.Logger.LogError(ex);
            }

            GameLoaded = GameLoadState.PostLoading;
        }
Example #2
0
        /// <summary>Load resources here.</summary>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            TextureManager.InitBase();

            // Bind Input (refactor)
            input = new Logic.Gameplay.Input();

            KeyDown    += input.HandleKeyDown;
            MouseWheel += input.HandleMouseWheel;
            MouseDown  += input.HandleMouseDown;
            MouseMove  += input.HandleMouseMove;
            KeyUp      += input.HandleKeyUp;
            MouseUp    += input.HandleMouseUp;

            input.AreHandleBinded = true;

            GameLoaded = GameLoadState.Loading;

            Thread thread = new Thread(() => {
                AsyncLoad();
            });

            thread.IsBackground = true;
            thread.Start();
        }
Example #3
0
        /// <summary>Load resources here.</summary>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            Graphics.TextureManager.InitBase();

            GameLoaded = GameLoadState.Loading;

            Thread thread = new Thread(() => {
                AsyncLoad();
            });

            thread.IsBackground = true;
            thread.Start();
        }
Example #4
0
        /// <summary>
        /// Called when it is time to render the next frame. Add your rendering code here.
        /// </summary>
        /// <param name="e">Contains timing information.</param>
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
            if (GameLoaded < GameLoadState.Loaded)
            {
                //Clear color AND stencil buffer
                GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);

                TextureManager.TextureProgram.SetTextureColor(Color4.White);
                //Move to rendering point
                TextureManager.TextureProgram.SetModelView(Matrix4.Identity);
                TextureManager.TextureProgram.UpdateModelView();

                lock (lockObj)
                    TextureManager.SingleFont.RenderText(TextureManager.SCREEN_WIDTH / 2, TextureManager.SCREEN_HEIGHT / 2,
                                                         loadMessage, null, AtlasSheet.SpriteVOrigin.Center, AtlasSheet.SpriteHOrigin.Center, 0);

                SwapBuffers();
            }
            else if (GameLoaded == GameLoadState.Loaded)
            {
                try
                {
                    //Clear color AND stencil buffer
                    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);

                    TextureManager.TextureProgram.SetTextureColor(Color4.White);
                    //Move to rendering point
                    TextureManager.TextureProgram.SetModelView(Matrix4.Identity);
                    TextureManager.TextureProgram.UpdateModelView();

                    Logic.Display.Screen.Draw((int)Math.Round(RenderFrequency));
                    //Update screen
                    SwapBuffers();
                    errorCount--;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Logs.Logger.LogError(ex);
                    errorCount += 2;
                }

                if (errorCount > 10)
                {
                    GameLoaded = GameLoadState.Errored;
                }
            }
            else if (GameLoaded == GameLoadState.Errored)
            {
                //Clear color AND stencil buffer
                GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);

                TextureManager.TextureProgram.SetTextureColor(Color4.White);
                //Move to rendering point
                TextureManager.TextureProgram.SetModelView(Matrix4.Identity);
                TextureManager.TextureProgram.UpdateModelView();

                lock (lockObj)
                    TextureManager.SingleFont.RenderText(TextureManager.SCREEN_WIDTH / 2, TextureManager.SCREEN_HEIGHT / 2,
                                                         "The program has encountered too many errors and needs to close.\nView the Error Logs for more details.",
                                                         null, AtlasSheet.SpriteVOrigin.Center, AtlasSheet.SpriteHOrigin.Center, 12);

                SwapBuffers();
            }
        }
Example #5
0
        /// <summary>
        /// Called when it is time to setup the next frame. Add you game logic here.
        /// </summary>
        /// <param name="e">Contains timing information for framerate independent logic.</param>
        protected override void OnUpdateFrame(FrameEventArgs e)
        {
            base.OnUpdateFrame(e);

            if (Editors.MainPanel.GameNeedWait)
            {
                Editors.MainPanel.GameWaiting = true;

                while (Editors.MainPanel.GameNeedWait)
                {
                    Thread.Sleep(100);
                }

                Editors.MainPanel.GameWaiting = false;
            }

            if (GameLoaded == GameLoadState.Closing)
            {
                Close();
            }
            else if (GameLoaded == GameLoadState.PostLoading)
            {
                GameLoaded = GameLoadState.Finalizing;
            }
            else if (GameLoaded == GameLoadState.Finalizing)
            {
                TextureManager.PostInit();

                Logic.Gameplay.MenuManager.Init();
                Logic.Gameplay.Processor.Init();
                Logic.Display.Screen.Init();
                Logic.Gameplay.Processor.Restart();
                Logic.Display.Screen.ProcessTaskQueue(true);

                GameLoaded = GameLoadState.Loaded;
                while (!Editors.MainPanel.EditorLoaded)
                {
                    Thread.Sleep(100);
                }
            }
            else if (GameLoaded == GameLoadState.Loaded)
            {
                try
                {
                    TextureManager.Update();

                    RenderTime elapsedTime = new RenderTime((int)(e.Time * TextureManager.FPS_CAP * 1000));

                    //set this frame's input
                    Logic.Gameplay.Input input = new Logic.Gameplay.Input();
                    Logic.Gameplay.Processor.SetFrameInput(input, elapsedTime, (int)Math.Round(UpdateFrequency));

                    Logic.Display.Screen.Process(elapsedTime);
                    errorCount--;
                }
                catch (Exception ex)
                {
                    Logs.Logger.LogError(ex);
                    errorCount += 2;
                }
            }
        }
Example #6
0
        void AsyncLoad()
        {
            try
            {
                UpdateLoadMsg("Loading Paths");
                Data.Paths.Init();

                UpdateLoadMsg("Loading Textures");
                Graphics.TextureManager.Init();

                UpdateLoadMsg("Loading Game Data");
                Data.GameData.Init();
                UpdateLoadMsg("Loading Audio");
                AudioManager.Init();
                Logs.Logger.LogInfo(AudioManager.GetALInfo());

                UpdateLoadMsg("Starting...");
            }
            catch (Exception ex)
            {
                Logs.Logger.LogError(ex);
            }

            GameLoaded = GameLoadState.PostLoading;
        }
Example #7
0
        /// <summary>
        /// Called when it is time to setup the next frame. Add you game logic here.
        /// </summary>
        /// <param name="e">Contains timing information for framerate independent logic.</param>
        protected override void OnUpdateFrame(FrameEventArgs e)
        {
            base.OnUpdateFrame(e);

            if (Editors.MainPanel.GameNeedWait)
            {
                Editors.MainPanel.GameWaiting = true;

                while (Editors.MainPanel.GameNeedWait)
                    Thread.Sleep(100);

                Editors.MainPanel.GameWaiting = false;
            }

            if (GameLoaded == GameLoadState.Closing)
                Close();
            else if (GameLoaded == GameLoadState.PostLoading)
                GameLoaded = GameLoadState.Finalizing;
            else if (GameLoaded == GameLoadState.Finalizing)
            {
                Graphics.TextureManager.PostInit();

                Logic.Gameplay.MenuManager.Init();
                Logic.Gameplay.Processor.Init();
                Logic.Display.Screen.Init();
                Logic.Gameplay.Processor.Restart();
                Logic.Display.Screen.ProcessTaskQueue(true);

                GameLoaded = GameLoadState.Loaded;
                while (!Editors.MainPanel.EditorLoaded)
                {
                    Thread.Sleep(100);
                }
            }
            else if (GameLoaded == GameLoadState.Loaded)
            {
                try
                {
                    Graphics.TextureManager.Update();

                    RenderTime elapsedTime = new RenderTime((int)(e.Time * Graphics.TextureManager.FPS_CAP * 1000));

                    //set this frame's input
                    Logic.Gameplay.Input input = new Logic.Gameplay.Input(Keyboard, Mouse);
                    Logic.Gameplay.Processor.SetFrameInput(input, elapsedTime, (int)Math.Round(UpdateFrequency));

                    Logic.Display.Screen.Process(elapsedTime);
                    errorCount--;
                }
                catch (Exception ex)
                {
                    Logs.Logger.LogError(ex);
                    errorCount += 2;
                }
            }
        }
Example #8
0
        /// <summary>
        /// Called when it is time to render the next frame. Add your rendering code here.
        /// </summary>
        /// <param name="e">Contains timing information.</param>
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
            if (GameLoaded < GameLoadState.Loaded)
            {
                //Clear color AND stencil buffer
                GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);

                Graphics.TextureManager.TextureProgram.SetTextureColor(Color4.White);
                //Move to rendering point
                Graphics.TextureManager.TextureProgram.SetModelView(Matrix4.Identity);
                Graphics.TextureManager.TextureProgram.UpdateModelView();

                lock (lockObj)
                    Graphics.TextureManager.SingleFont.RenderText(TextureManager.SCREEN_WIDTH / 2, TextureManager.SCREEN_HEIGHT / 2,
                        loadMessage, null, Graphics.AtlasSheet.SpriteVOrigin.Center, Graphics.AtlasSheet.SpriteHOrigin.Center, 0);

                SwapBuffers();
            }
            else if (GameLoaded == GameLoadState.Loaded)
            {
                try
                {

                    //Clear color AND stencil buffer
                    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);

                    Graphics.TextureManager.TextureProgram.SetTextureColor(Color4.White);
                    //Move to rendering point
                    Graphics.TextureManager.TextureProgram.SetModelView(Matrix4.Identity);
                    Graphics.TextureManager.TextureProgram.UpdateModelView();

                    Logic.Display.Screen.Draw((int)Math.Round(RenderFrequency));
                    //Update screen
                    SwapBuffers();
                    errorCount--;
                }
                catch (Exception ex)
                {
                    Logs.Logger.LogError(ex);
                    errorCount += 2;
                }

                if (errorCount > 10)
                    GameLoaded = GameLoadState.Errored;
            }
            else if (GameLoaded == GameLoadState.Errored)
            {
                //Clear color AND stencil buffer
                GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.StencilBufferBit);

                Graphics.TextureManager.TextureProgram.SetTextureColor(Color4.White);
                //Move to rendering point
                Graphics.TextureManager.TextureProgram.SetModelView(Matrix4.Identity);
                Graphics.TextureManager.TextureProgram.UpdateModelView();

                lock (lockObj)
                    Graphics.TextureManager.SingleFont.RenderText(TextureManager.SCREEN_WIDTH / 2, TextureManager.SCREEN_HEIGHT / 2,
                        "The program has encountered too many errors and needs to close.\nView the Error Logs for more details.",
                        null, Graphics.AtlasSheet.SpriteVOrigin.Center, Graphics.AtlasSheet.SpriteHOrigin.Center, 12);

                SwapBuffers();
            }
        }
Example #9
0
        /// <summary>Load resources here.</summary>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            Graphics.TextureManager.InitBase();

            GameLoaded = GameLoadState.Loading;

            Thread thread = new Thread(() => {
                AsyncLoad();
            });
            thread.IsBackground = true;
            thread.Start();
        }
 /// <summary>
 /// Event called from GameModel when the game loading state has changed.
 /// </summary>
 private void OnLoadStateChange(GameLoadState loadState) => EvaluateLoadState();