protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
if (m_planeManager != null)
{
System.Drawing.RectangleF viewportRect = ScreenToTile(new Rectangle(GraphicsDevice.Viewport.X, GraphicsDevice.Viewport.Y, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height));
m_spriteBatch.Begin(SpriteSortMode.Texture, null, null, null, null, null, Matrix.CreateTranslation(0, 0, 0));
if (m_tileSize <= 1)
{
Texture2D circle = CreateCircle(250);
// Change Color.Red to the colour you want
m_spriteBatch.Draw(circle, new Vector2((-250 + (int)m_offsetX), (-250 + (int)m_offsetY)), Color.Red);
}
else
{
for (Planes p = Planes.Prime; p <= Planes.Fire; p++)
{
Plane plane = m_planeManager[p];
if (plane != null)
{
if (plane.IsVisible)
{
List<TerrainTile> tiles = plane.chunk.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
switch (t.Terrain)
{
case TerrainTypes.Ocean:
switch (plane.m_plane)
{
case Planes.Prime:
m_spriteBatch.Draw(m_ocean, TileToScreen(t.Bounds), Color.White);
break;
case Planes.Air:
m_spriteBatch.Draw(m_air, TileToScreen(t.Bounds), Color.White);
break;
case Planes.Earth:
m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
break;
case Planes.Water:
m_spriteBatch.Draw(m_ocean, TileToScreen(t.Bounds), Color.White);
break;
case Planes.Fire:
m_spriteBatch.Draw(m_fire, TileToScreen(t.Bounds), Color.White);
break;
}
break;
default:
m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
break;
}
}
}
}
}
}
//foreach (TerrainChunk chunk in chunks)
//{
/*tiles = water.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
// switch (t.Terrain)
// {
//case TerrainTypes.Ocean:
m_spriteBatch.Draw(m_ocean, TileToScreen(t.Bounds), Color.White);
// break;
//default:
// m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
// break;
// }
}
tiles = earth.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
switch (t.Terrain)
{
case TerrainTypes.Ocean:
//m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
break;
default:
m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
break;
}
}
tiles = air.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
switch (t.Terrain)
{
case TerrainTypes.Ocean:
m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
break;
default:
m_spriteBatch.Draw(m_air, TileToScreen(t.Bounds), Color.White);
break;
}
}
tiles = fire.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
switch (t.Terrain)
{
case TerrainTypes.Ocean:
m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
break;
default:
m_spriteBatch.Draw(m_fire, TileToScreen(t.Bounds), Color.White);
break;
}
}
tiles = plane5.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
m_spriteBatch.Draw(m_ocean, TileToScreen(t.Bounds), Color.White);
}
tiles = plane6.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
m_spriteBatch.Draw(m_air, TileToScreen(t.Bounds), Color.White);
}
tiles = plane7.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
m_spriteBatch.Draw(m_fire, TileToScreen(t.Bounds), Color.White);
}
tiles = plane8.GetTiles(viewportRect);
foreach (TerrainTile t in tiles)
{
m_spriteBatch.Draw(m_dirt, TileToScreen(t.Bounds), Color.White);
}*/
#if DEBUG
//Rectangle rect = TileToScreen(chunk.Bounds);
//string chunkString = "Chunk: (" + (chunk.Bounds.X / m_chunkSize) + "," + (chunk.Bounds.Y / m_chunkSize) + ")";
// DrawBorder(rect, 1, Color.Red);
// m_spriteBatch.DrawString(m_spriteFont, chunkString, new Vector2(rect.X + 5, rect.Y), Color.Red);
#endif
// }
m_spriteBatch.End();
}
base.Draw(gameTime);
}