Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Content;
- using Microsoft.Xna.Framework.Graphics;
- using Microsoft.Xna.Framework.Input;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace menu
- {
- class MainMenu
- {
- enum GameState { mainMenu, enterCoords, inGame};
- GameState gameState;
- List<MenuElement> main = new List<MenuElement>();
- List<MenuElement> enterCoords = new List<MenuElement>();
- private string Coordinates = string.Empty;
- private SpriteFont font;
- private Keys[] lastPressedKeys = new Keys[5];
- public MainMenu()
- {
- main.Add(new MenuElement("menu"));
- main.Add(new MenuElement("play"));
- enterCoords.Add(new MenuElement("Coords"));
- enterCoords.Add(new MenuElement("done"));
- }
- public void LoadContent(ContentManager content)
- {
- foreach(MenuElement element in main)
- {
- element.LoadContent(content);
- element.CenterElement(500, 800);
- element.clickEvent += OnClick;
- }
- main.Find(x => x.AssetName == "play").MoveElement(0, -100);
- foreach (MenuElement element in enterCoords)
- {
- element.LoadContent(content);
- element.CenterElement(500, 800);
- element.clickEvent += OnClick;
- font = content.Load<SpriteFont>("SpriteFont1");
- }
- enterCoords.Find(x => x.AssetName == "done").MoveElement(0, 60);
- }
- public void Update()
- {
- switch (gameState)
- {
- case GameState.mainMenu:
- foreach (MenuElement element in main)
- {
- element.Update();
- }
- break;
- case GameState.enterCoords:
- foreach (MenuElement element in enterCoords)
- {
- element.Update();
- }
- break;
- case GameState.inGame:
- break;
- default:
- break;
- }
- }
- public void Draw(SpriteBatch spriteBatch)
- {
- switch (gameState)
- {
- case GameState.mainMenu:
- foreach (MenuElement element in main)
- {
- element.Draw(spriteBatch);
- }
- break;
- case GameState.enterCoords:
- foreach (MenuElement element in enterCoords)
- {
- element.Draw(spriteBatch);
- }
- GetKeys();
- spriteBatch.DrawString(font, Coordinates, new Vector2(300, 250), Color.Black);
- break;
- case GameState.inGame:
- break;
- default:
- break;
- }
- }
- public void OnClick(string element)
- {
- if (element == "play")
- {
- gameState = GameState.enterCoords;
- //Play the simulation
- }
- if (element == "done")
- {
- gameState = GameState.inGame;
- }
- }
- public void GetKeys()
- {
- KeyboardState kbState = Keyboard.GetState();
- Keys[] pressedKeys = kbState.GetPressedKeys();
- foreach (Keys key in lastPressedKeys)
- {
- if (!pressedKeys.Contains(key))
- {
- //key is no longer pressed
- OnKeyUp(key);
- }
- }
- foreach (Keys key in pressedKeys)
- {
- if (!lastPressedKeys.Contains(key))
- {
- OnKeyDown(key);
- }
- }
- lastPressedKeys = pressedKeys;
- }
- public void OnKeyUp(Keys key)
- {
- }
- public void OnKeyDown(Keys key)
- {
- KeyboardState kbState = Keyboard.GetState();
- if (key == Keys.Back && Coordinates.Length > 0)
- {
- Coordinates = Coordinates.Remove(Coordinates.Length - 1);
- }
- else
- {
- Coordinates += key.ToString();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement