// Project: XnaGraphicEngineVs2005, File: YourGame.cs
// Namespace: XnaGraphicEngine, Class: YourGame
// Path: C:\code\XnaBook\XnaGraphicEngine, Author: Abi
// Code lines: 323, Size of file: 8,65 KB
// Creation date: 21.11.2006 03:56
// Last modified: 27.11.2006 07:09
// Generated with Commenter by abi.exDream.com
#region Using directives
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 System;
using System.Collections.Generic;
using XnaGraphicEngine.Game;
using XnaGraphicEngine.Graphics;
using Texture = XnaGraphicEngine.Graphics.Texture;
using Model = XnaGraphicEngine.Graphics.Model;
using XnaGraphicEngine.Helpers;
#endregion
namespace XnaGraphicEngine
{
///
/// YourGame test class, very similar to the MyOwnGraphicEngine project
/// from the Rocket Commander tutorials, but this time in XNA. While this
/// class is pretty easy the graphic engine we build in the background
/// is quite powerful and will enable us to create cool games very quickly
/// now as we can see in a few chapters :)
///
public class YourGame : BaseGame
{
#region Constructor
///
/// Create your game
///
public YourGame()
{
// Init simple camera
SetCamera(new SimpleCamera(this));
// And Fps counter
this.Components.Add(new FpsCounter(this));
} // YourGame()
GameComponent currentCamera = null;
///
/// Set camera
///
/// New camera
public void SetCamera(GameComponent camera)
{
// Remove existing cameras
if (currentCamera != null)
this.Components.Remove(currentCamera);
// Add new camera!
this.Components.Add(camera);
currentCamera = camera;
} // SetCamera(camera)
#endregion
#region Initialize
///
/// Allows the game to perform any initialization it needs.
///
protected override void Initialize()
{
base.Initialize();
// Make sure mouse is centered
Input.Update();
Input.MousePos = new Point(
Window.ClientBounds.X + width / 2,
Window.ClientBounds.Y + height / 2);
Input.Update();
// Nothing else in here yet
} // Initialize()
#endregion
#region Update
///
/// 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);
} // Update(gameTime)
#endregion
#region Draw
///
/// This is called when the game should draw itself.
///
/// Provides a snapshot of timing values.
protected override void Draw(GameTime gameTime)
{
ClearBackground();
// Not a unit test?
if (this.GetType() == typeof(YourGame))
TextureFont.WriteText(30, 30, "StartGame does nothing, "+
"please start one of the unit tests instead!");
base.Draw(gameTime);
} // Draw(gameTime)
#endregion
#region Start Game
///
/// Start game
///
public static void StartGame()
{
using (YourGame game = new YourGame())
{
game.Run();
} // using (game)
} // StartGame()
#endregion
#region Unit tests
#if DEBUG
#region TestRenderOurNewGraphicEngine
///
/// Test render our new graphic engine
///
public static void TestRenderOurNewGraphicEngine()
{
Texture backgroundTexture = null;
Model rocketModel = null;
TestGame.Start("TestRenderOurNewGraphicEngine",
delegate
{
// Load background and rocket
backgroundTexture = new Texture("SpaceBackground");
rocketModel = new Model("Rocket");
TestGame.game.SetCamera(new RotationCamera(TestGame.game));
},
delegate
{
// Show background
backgroundTexture.RenderOnScreen(
BaseGame.ResolutionRect);
SpriteHelper.DrawSprites(width, height);
// Render model in center
BaseGame.Device.RenderState.DepthBufferEnable = true;
rocketModel.Render(Matrix.CreateScale(10));
// Draw 3d line
BaseGame.DrawLine(
new Vector3(-100, 0, 0), new Vector3(+100, 0, 0), Color.Red);
// Draw save region box for the Xbox 360 (support for older monitors)
Point upperLeft = new Point(width / 15, height / 15);
Point upperRight = new Point(width * 14 / 15, height / 15);
Point lowerRight = new Point(width * 14 / 15, height * 14 / 15);
Point lowerLeft = new Point(width / 15, height * 14 / 15);
BaseGame.DrawLine(upperLeft, upperRight);
BaseGame.DrawLine(upperRight, lowerRight);
BaseGame.DrawLine(lowerRight, lowerLeft);
BaseGame.DrawLine(lowerLeft, upperLeft);
// And finally some text
TextureFont.WriteText(upperLeft.X + 15, upperLeft.Y + 15,
"TestRenderOurNewGraphicEngine");
});
} // TestRenderOurNewGraphicEngine()
#endregion
#endif
#endregion
} // class YourGame
} // namespace XnaGraphicEngine