Exemple #1
0
        public StreamWriter Dump(StreamWriter w, int indent)
        {
            // Write the components.
            w.AppendIndent(indent).Write("ComponentCount = ");
            w.Write(_componentIds.Count);
            w.AppendIndent(indent).Write("Components = {");
            foreach (var component in Components)
            {
                w.AppendIndent(indent + 1).Write(component.GetType());
                w.Write(" = ");
                w.Dump(component, indent + 1);
            }
            w.AppendIndent(indent).Write("}");

            // Write systems.
            w.AppendIndent(indent).Write("SystemCount (excluding IDrawingSystems) = ");
            w.Write(_systems.Count(Packetizable.IsPacketizable));
            w.AppendIndent(indent).Write("Systems = {");
            for (int i = 0, j = _systems.Count; i < j; ++i)
            {
                if (!Packetizable.IsPacketizable(_systems[i]))
                {
                    continue;
                }
                w.AppendIndent(indent + 1).Write(_systems[i].GetType());
                w.Write(" = ");
                w.Dump(_systems[i], indent + 1);
            }
            w.AppendIndent(indent).Write("}");

            return(w);
        }
Exemple #2
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        private static void Main(string[] args)
        {
            Packetizable.AddValueTypeOverloads(typeof(Engine.Math.PacketExtensions));
#if FARMATH
            Packetizable.AddValueTypeOverloads(typeof(Engine.FarMath.PacketExtensions));
#endif
            Packetizable.AddValueTypeOverloads(typeof(XnaExtensions.PacketExtensions));

            using (var game = new TestRunner())
            {
                game.Run();
            }
        }
Exemple #3
0
        private Program()
        {
            // Some window settings.
            Window.Title   = "Space. The Game. Seriously.";
            IsMouseVisible = true;

            // XNA's fixed time step implementation doesn't suit us, to be gentle.
            // So we let it be dynamic and adjust for it as necessary, leading
            // to almost no desynchronizations at all! Yay!
            IsFixedTimeStep = false;

            // We use this to dispose game components that are disposable and
            // were removed from the list of active components. We don't want
            // to dispose them during an update loop, because they will still
            // be updated if they had not been updated before the removal,
            // leading to object disposed exceptions.
            Components.ComponentRemoved += (sender, e) => _pendingComponents.Add(e.GameComponent);

            // Load settings. Save on exit.
            Settings.Load(SettingsFile);
            Exiting += (sender, e) =>
            {
                Logger.Info("Saving settings.");
                Settings.Save(SettingsFile);
            };

            // Set up display.
            GraphicsDeviceManager = new GraphicsDeviceManager(this)
            {
                PreferredBackBufferWidth  = Settings.Instance.ScreenResolution.X,
                PreferredBackBufferHeight = Settings.Instance.ScreenResolution.Y,
                IsFullScreen = Settings.Instance.Fullscreen,
                SynchronizeWithVerticalRetrace = false,
                PreferMultiSampling            = true
            };

            // Create our own, localized content manager.
            Content = new LocalizedContentManager(Services)
            {
                RootDirectory = "data"
            };

            // Register packet overloads for XNA value types.
            Packetizable.AddValueTypeOverloads(typeof(Engine.Math.PacketExtensions));
            Packetizable.AddValueTypeOverloads(typeof(Engine.FarMath.PacketExtensions));
            Packetizable.AddValueTypeOverloads(typeof(Engine.XnaExtensions.PacketExtensions));
        }