XNA Level Select Menu
- by user29901
I'll try to explain this the best I can. I'm trying to create a level select menu for a game I'm making. The menu is basically a group of blocks numbered 1-16, similar to something like the Angry Birds menu. What I've done is created a cursor, basically just an outline to surround a block, that the user can move to select what level they want to play. What I want it do is move from block to block instead of simply moving around on the X and Y axes as it does now.
So my question is, how can I get the cursor (highLight in the below code) to move from block to block(destinationRectangle1 etc. in the code)?
/// Field for the "cursor"
Vector2 highLightPos = new Vector2(400, 200);
///This is the Update code
KeyboardState keyBoardState = Keyboard.GetState();
if (keyBoardState.IsKeyDown(Keys.Up))
highLightPos.Y--;
if (keyBoardState.IsKeyDown(Keys.Down))
highLightPos.Y++;
if (keyBoardState.IsKeyDown(Keys.Right))
highLightPos.X++;
if (keyBoardState.IsKeyDown(Keys.Left))
highLightPos.X--;
/// This is the draw code
SpriteBatch spriteBatch = ScreenManager.SpriteBatch;
Rectangle screenRectangle = new Rectangle(0, 0, 1280, 720);
Rectangle destinationRectangle1 = new Rectangle(400, 200, 64, 64);
Rectangle frameRectangle1 = new Rectangle(0, 0, 64, 64);
Rectangle destinationRectangle2 = new Rectangle(500, 200, 64, 64);
Rectangle frameRectangle2 = new Rectangle(64, 0, 64, 64);
Rectangle destinationRectangle3 = new Rectangle(600, 200, 64, 64);
Rectangle frameRectangle3 = new Rectangle(128, 0, 64, 64);
Rectangle destinationRectangle4 = new Rectangle(700, 200, 64, 64);
Rectangle frameRectangle4 = new Rectangle(192, 0, 64, 64);
Rectangle destinationRectangle5 = new Rectangle(800, 200, 64, 64);
Rectangle frameRectangle5 = new Rectangle(256, 0, 64, 64);
Rectangle destinationRectangle6 = new Rectangle(400, 300, 64, 64);
Rectangle frameRectangle6 = new Rectangle(320, 0, 64, 64);
Rectangle destinationRectangle7 = new Rectangle(500, 300, 64, 64);
Rectangle frameRectangle7 = new Rectangle(384, 0, 64, 64);
Rectangle destinationRectangle8 = new Rectangle(600, 300, 64, 64);
Rectangle frameRectangle8 = new Rectangle(448, 0, 64, 64);
Rectangle destinationRectangle9 = new Rectangle(700, 300, 64, 64);
Rectangle frameRectangle9 = new Rectangle(0, 64, 64, 64);
Rectangle destinationRectangle10 = new Rectangle(800, 300, 64, 64);
Rectangle frameRectangle10 = new Rectangle(64, 64, 64, 64);
Rectangle destinationRectangle11 = new Rectangle(400, 400, 64, 64);
Rectangle frameRectangle11 = new Rectangle(128, 64, 64, 64);
Rectangle destinationRectangle12 = new Rectangle(500, 400, 64, 64);
Rectangle frameRectangle12 = new Rectangle(192, 64, 64, 64);
Rectangle destinationRectangle13 = new Rectangle(600, 400, 64, 64);
Rectangle frameRectangle13 = new Rectangle(256, 64, 64, 64);
Rectangle destinationRectangle14 = new Rectangle(700, 400, 64, 64);
Rectangle frameRectangle14 = new Rectangle(320, 64, 64, 64);
Rectangle destinationRectangle15 = new Rectangle(800, 400, 64, 64);
Rectangle frameRectangle15 = new Rectangle(384, 64, 64, 64);
Rectangle destinationRectangle16 = new Rectangle(600, 500, 64, 64);
Rectangle frameRectangle16 = new Rectangle(448, 64, 64, 64);
spriteBatch.Begin();
spriteBatch.Draw(forestBG, screenRectangle, Color.White);
spriteBatch.Draw(highLight, highLightPos, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle1, frameRectangle1, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle2, frameRectangle2, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle3, frameRectangle3, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle4, frameRectangle4, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle5, frameRectangle5, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle6, frameRectangle6, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle7, frameRectangle7, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle8, frameRectangle8, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle9, frameRectangle9, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle10, frameRectangle10, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle11, frameRectangle11, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle12, frameRectangle12, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle13, frameRectangle13, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle14, frameRectangle14, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle15, frameRectangle15, Color.White);
spriteBatch.Draw(levelSelectTiles, destinationRectangle16, frameRectangle16, Color.White);
spriteBatch.End();
PS, I'm aware that this code is probably inefficient, cumbersome or that there's a better way to draw parts of a tile sheet. Any suggestions would be appreciated.