Exemple #1
0
        public EngineStatus Free()
        {
            Critical.NoThrow(() => Engine.I.FS.Dispose());
            Critical.NoThrow(() => Engine.I.Log.End());                             // todo: check this
            int collectWaiting = I.Core.RM.CollectWaiting(x => true);

            return(collectWaiting == 0
                                            ? (EngineStatus.Free)
                                            : (EngineStatus.FreeWithMemoryLeaks));
        }
Exemple #2
0
        internal static void Free()
        {
            Critical.NoThrow(() => _user.Core.Log.Info("--- Application shutting down ---"));
            EngineStatus[] status = new EngineStatus[5];

            status[4] = Proxy.Game.Free();
            status[1] = Proxy.Physics.Free();
            status[2] = Proxy.Scripting.Free();
            status[3] = Proxy.Render.Free();
            status[0] = Proxy.Core.Free();

            Critical.NoThrow(() => Memory.Collect(false));
        }
Exemple #3
0
        static void EngineFailed(string allText, string title)
        {
#if !DEBUG
            MiniDump.Write();
#endif
            MessageBox.Show(
                allText,
                title,
                MessageBoxButtons.OK,
                MessageBoxIcon.Error
                );
            Critical.NoThrow(() =>
            {
                GameAPI.I.Core.Log.Error("--- " + title);
                GameAPI.I.Core.Log.Error(allText);
                GameAPI.I.Core.Log.End();
            });
        }
Exemple #4
0
        internal static EngineStatus Initialize()
        {
            EngineStatus[] status = new EngineStatus[5];

            status[0] = Proxy.Core.Initialize();
            status[4] = Proxy.Game.Initialize();
            status[1] = Proxy.Physics.Initialize();
            status[2] = Proxy.Scripting.Initialize();  // todo: order??
            status[3] = Proxy.Render.Initialize();

            _user.Initialize();

            if (!status.Any(s => s == EngineStatus.CriticalFailed))
            {
                GameAPI.I.Core.Log.Info("[Game] All systems were loaded.");
                return(EngineStatus.ReadyToUse);
            }

            Critical.NoThrow(() => _user.Core.Log.Error("Application Initialization failed!"));

            return(EngineStatus.Failed);
        }