Obracanie całego poziomu

mamXNA program, który rysuje pole (50x50) tekstury

Kod rysunku wygląda tak:

<code>namespace Village
{
    public class DrawLogic
    {

        internal static void DrawCreatures(GameTime gameTime, GraphicsDevice graphicsDevice, SpriteBatch spriteBatch, Dictionary<string, Texture2D> creatureTextures, List<Creature> list, Coordinate current)
        {
            spriteBatch.Begin();
            foreach (var item in list)
            {
                Vector2 origin = new Vector2(0, 0);
                if (item.Selected)
                {
                    spriteBatch.Draw(creatureTextures["selected"], new Vector2((item.Coordinates.X * 32) - current.X, (item.Coordinates.Y * 32) - current.Y), new Rectangle(0, 0, creatureTextures["human"].Width, creatureTextures["human"].Height), Color.White, 0.0f, origin, 1f, SpriteEffects.None, 1f);
                }
                else
                {
                    spriteBatch.Draw(creatureTextures["human"], new Vector2((item.Coordinates.X * 32) - current.X, (item.Coordinates.Y * 32) - current.Y), new Rectangle(0, 0, creatureTextures["human"].Width, creatureTextures["human"].Height), Color.White, 0.0f, origin, 1f, SpriteEffects.None, 1f);
                }
            }
            spriteBatch.End();
        }

        internal static void DrawObjects(GameTime gameTime, GraphicsDevice graphicsDevice, SpriteBatch spriteBatch, Dictionary<string, Texture2D> creatureTextures, List<IHarvestable> list, Coordinate current)
        {
            spriteBatch.Begin();
            foreach (var item in list)
            {
                Vector2 origin = new Vector2(0, 0);

                spriteBatch.Draw(creatureTextures["tree"], new Vector2((item.Coordinates.X * 32) - current.X, (item.Coordinates.Y * 32) - current.Y), new Rectangle(0, 0, creatureTextures["tree"].Width, creatureTextures["tree"].Height), Color.White, 0.0f, origin, 1f, SpriteEffects.None, 1f);

            }
            spriteBatch.End();
        }

        internal static void DrawMap(GameTime gameTime, GraphicsDevice graphicsDevice, SpriteBatch spriteBatch, Dictionary<string, Texture2D> worldTextures, Block[,] map, Coordinate current)
        {
            spriteBatch.Begin();

            for (int i = 0; i < map.GetLength(0); i++)
            {
                for (int j = 0; j < map.GetLength(1); j++)
                {
                    if (map[i, j].GetType() == typeof(Grass))
                    {


                        Vector2 origin = new Vector2(0, 0);
                        spriteBatch.Draw(worldTextures["grass"], new Vector2((i * 32) - current.X, (j * 32) - current.Y), new Rectangle(0, 0, worldTextures["grass"].Width, worldTextures["grass"].Height), Color.White, 0.0f, origin, 1.0f, SpriteEffects.None, 1f);
                    }
                }
            }

            spriteBatch.End();
        }
    }
}
</code>

Moje pytanie jest teraz, jak mogę obrócić całą mapę?

Powinno to wyglądać tak:

Nie wiem, co jest najlepszym sposobem na to.

Czy powinienem obrócić wszystkie moje tekstury i ustawić je w odpowiedniej kolejności, czy też istnieje sposób na obrócenie całego poziomu?

Myślę, że gdybym mógł obrócić cały poziom, algorytm chodzenia moich stworzeń byłby znacznie łatwiejszy, ponieważ nie byłby inny niż mój obecny algorytm.

Inna droga (obracanie każdej pojedynczej tekstury) byłaby znacznie trudniejsza .. Myślę.

Z góry dziękuję!

questionAnswers(3)

yourAnswerToTheQuestion