128 lines
3.9 KiB
C#

using ANX.Framework;
using ANX.Framework.Graphics;
using ANX.Framework.Input;
using BasicEffectSample.Scenes;
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace BasicEffectSample
{
public class Game1 : Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont font;
KeyboardState lastState;
private readonly BaseScene[] allScenes =
{
// Basic
new DiffuseNoFogScene(),
new DiffuseFogScene(),
new VertexColorNoFogScene(),
new VertexColorFogScene(),
new TextureNoFogScene(),
new TextureFogScene(),
new VertexColorTextureNoFogScene(),
new VertexColorTextureFogScene(),
// Vertex Lighting
new LitDiffuseNoFogScene(LightingMode.VertexLighting),
new LitDiffuseFogScene(LightingMode.VertexLighting),
new LitVertexColorNoFogScene(LightingMode.VertexLighting),
new LitVertexColorFogScene(LightingMode.VertexLighting),
new LitTextureNoFogScene(LightingMode.VertexLighting),
new LitTextureFogScene(LightingMode.VertexLighting),
new LitVertexColorTextureNoFogScene(LightingMode.VertexLighting),
new LitVertexColorTextureFogScene(LightingMode.VertexLighting),
// One Light
new LitDiffuseNoFogScene(LightingMode.OneLight),
new LitDiffuseFogScene(LightingMode.OneLight),
new LitVertexColorNoFogScene(LightingMode.OneLight),
new LitVertexColorFogScene(LightingMode.OneLight),
new LitTextureNoFogScene(LightingMode.OneLight),
new LitTextureFogScene(LightingMode.OneLight),
new LitVertexColorTextureNoFogScene(LightingMode.OneLight),
new LitVertexColorTextureFogScene(LightingMode.OneLight),
// Pixel Lighting
new LitDiffuseNoFogScene(LightingMode.PixelLighting),
new LitDiffuseFogScene(LightingMode.PixelLighting),
new LitVertexColorNoFogScene(LightingMode.PixelLighting),
new LitVertexColorFogScene(LightingMode.PixelLighting),
new LitTextureNoFogScene(LightingMode.PixelLighting),
new LitTextureFogScene(LightingMode.PixelLighting),
new LitVertexColorTextureNoFogScene(LightingMode.PixelLighting),
new LitVertexColorTextureFogScene(LightingMode.PixelLighting),
};
int currentSceneIndex;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "SampleContent";
}
protected override void Initialize()
{
Camera.Initialize(GraphicsDevice);
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
font = Content.Load<SpriteFont>("Fonts/Debug");
foreach (var scene in allScenes)
scene.Initialize(Content, GraphicsDevice);
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
KeyboardState newState = Keyboard.GetState();
if (newState.IsKeyDown(Keys.Left) && lastState.IsKeyDown(Keys.Left) == false)
{
currentSceneIndex--;
if (currentSceneIndex == -1)
currentSceneIndex = allScenes.Length - 1;
}
else if (newState.IsKeyDown(Keys.Right) && lastState.IsKeyDown(Keys.Right) == false)
{
currentSceneIndex++;
if (currentSceneIndex == allScenes.Length)
currentSceneIndex = 0;
}
lastState = newState;
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.DrawString(font, "Current scene: " + allScenes[currentSceneIndex].Name + "\n<- Left | Right ->",
new Vector2(5, 5), Color.White);
spriteBatch.End();
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
allScenes[currentSceneIndex].Draw(GraphicsDevice);
base.Draw(gameTime);
}
}
}