using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; using xna_Fegelein.Sources.ServiceProviders; using xna_Fegelein.Sources.GameComponents; using xna_Fegelein.Sources.Utilities; namespace xna_Fegelein { /// /// This is the main type for your game /// public class Game1 : Game, IContentManagerService { /// /// Private members /// private GraphicsDeviceManager graphics; private ContentManager content; /// /// Properties /// public ContentManager ContentManager { get { return this.content; } } /// /// Constructor /// public Game1() { // Init the graphics device and content pipeline this.graphics = new GraphicsDeviceManager(this); this.content = new ContentManager(Services); // Init the camera manager CameraManager cameraManager = new CameraManager(this); this.Components.Add(cameraManager); // Init the input component InputManager inputManager = new InputManager(this); this.Components.Add(inputManager); // Init the measureFPS component MeasureFPS measureFPS = new MeasureFPS(this); // this.Components.Add(measureFPS); // Init the MySpaceWarShip component MySpaceWarShip mySpaceWarShip = new MySpaceWarShip(this); // this.Components.Add(mySpaceWarShip); // Init the DrawPrimitives component DrawPrimitives drawPrimitives = new DrawPrimitives(this); // this.Components.Add(drawPrimitives); DrawTriangle drawTriangle = new DrawTriangle(this, 1000); //this.Components.Add(drawTriangle); DrawTorus drawTorus = new DrawTorus(this, 1000, 500, 25, 25); this.Components.Add(drawTorus); Grid gridComponent = new Grid(this, 16, 1000, GridLayout.DirectionZ, Color.Yellow); //this.Components.Add(gridComponent); // Add the contentManager service this.Services.AddService(typeof(IContentManagerService), this); } /// /// Method that handles the update event of the FPS counter, /// updates the window title to display the number of frames /// /// integer number of total frames private void component_OnUpdate(int totalFrames) { this.Window.Title = String.Format("FPS: {0}", totalFrames); } /// /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// protected override void Initialize() { // TODO: Add your initialization logic here base.Initialize(); } /// /// Load your graphics content. If loadAllContent is true, you should /// load content from both ResourceManagementMode pools. Otherwise, just /// load ResourceManagementMode.Manual content. /// /// Which type of content to load. protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { } // TODO: Load any ResourceManagementMode.Manual content } /// /// Unload your graphics content. If unloadAllContent is true, you should /// unload content from both ResourceManagementMode pools. Otherwise, just /// unload ResourceManagementMode.Manual content. Manual content will get /// Disposed by the GraphicsDevice during a Reset. /// /// Which type of content to unload. protected override void UnloadGraphicsContent(bool unloadAllContent) { if (unloadAllContent == true) { this.content.Unload(); } } /// /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input and playing audio. /// /// Provides a snapshot of timing values. protected override void Update(GameTime gameTime) { // Allows the default game to exit on Xbox 360 and Windows if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); // TODO: Add your update logic here base.Update(gameTime); } /// /// This is called when the game should draw itself. /// /// Provides a snapshot of timing values. protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); base.Draw(gameTime); } } }