Girando o nível inteiro
eu tenho umXNA
programm que desenha um campo (50x50) de uma textura
O código do desenho é assim:
<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>
Minha pergunta é agora, como posso rodar todo o mapa?
Deve ficar assim:
Eu não sei qual é a melhor maneira de fazer isso.
Devo rodar todas as minhas texturas e colocá-las na ordem certa, ou há uma maneira de girar todo o nível?
Eu acho que se eu pudesse girar o nível inteiro, o algoritmo de caminhada das minhas criaturas seria muito mais fácil, porque não seria diferente do meu algoritmo atual.
O outro jeito (girando cada textura) seria muito mais difícil. Eu acho.
Desde já, obrigado!