Advertisement
Guest User

C# XNA MainMenu Class

a guest
Nov 14th, 2017
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.66 KB | None | 0 0
  1. using Microsoft.Xna.Framework;
  2. using Microsoft.Xna.Framework.Content;
  3. using Microsoft.Xna.Framework.Graphics;
  4. using Microsoft.Xna.Framework.Input;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9.  
  10. namespace menu
  11. {
  12.     class MainMenu
  13.     {
  14.         enum GameState { mainMenu, enterCoords, inGame};
  15.             GameState gameState;
  16.  
  17.         List<MenuElement> main = new List<MenuElement>();
  18.         List<MenuElement> enterCoords = new List<MenuElement>();
  19.  
  20.         private string Coordinates = string.Empty;
  21.         private SpriteFont font;
  22.  
  23.         private Keys[] lastPressedKeys = new Keys[5];
  24.  
  25.         public MainMenu()
  26.         {
  27.             main.Add(new MenuElement("menu"));
  28.             main.Add(new MenuElement("play"));            
  29.  
  30.  
  31.             enterCoords.Add(new MenuElement("Coords"));
  32.             enterCoords.Add(new MenuElement("done"));
  33.  
  34.         }
  35.  
  36.         public void LoadContent(ContentManager content)
  37.         {
  38.             foreach(MenuElement element in main)
  39.             {
  40.                 element.LoadContent(content);
  41.                 element.CenterElement(500, 800);
  42.                 element.clickEvent += OnClick;
  43.             }
  44.             main.Find(x => x.AssetName == "play").MoveElement(0, -100);
  45.  
  46.             foreach (MenuElement element in enterCoords)
  47.             {
  48.                 element.LoadContent(content);
  49.                 element.CenterElement(500, 800);
  50.                 element.clickEvent += OnClick;
  51.                 font = content.Load<SpriteFont>("SpriteFont1");
  52.             }            
  53.             enterCoords.Find(x => x.AssetName == "done").MoveElement(0, 60);
  54.         }
  55.  
  56.         public void Update()
  57.         {
  58.             switch (gameState)
  59.             {
  60.                 case GameState.mainMenu:
  61.                     foreach (MenuElement element in main)
  62.                     {
  63.                         element.Update();
  64.                     }
  65.                     break;
  66.                 case GameState.enterCoords:
  67.                     foreach (MenuElement element in enterCoords)
  68.                     {
  69.                         element.Update();
  70.                     }
  71.                     break;
  72.                 case GameState.inGame:
  73.                     break;
  74.                 default:
  75.                     break;
  76.             }        
  77.            
  78.         }
  79.  
  80.         public void Draw(SpriteBatch spriteBatch)
  81.         {
  82.             switch (gameState)
  83.             {
  84.                 case GameState.mainMenu:
  85.                     foreach (MenuElement element in main)
  86.                     {
  87.                         element.Draw(spriteBatch);
  88.                     }
  89.                     break;
  90.                 case GameState.enterCoords:
  91.                     foreach (MenuElement element in enterCoords)
  92.                     {
  93.                         element.Draw(spriteBatch);
  94.                     }
  95.                     GetKeys();
  96.                     spriteBatch.DrawString(font, Coordinates, new Vector2(300, 250), Color.Black);
  97.  
  98.                     break;
  99.                 case GameState.inGame:
  100.                     break;
  101.                 default:
  102.                     break;
  103.  
  104.             }
  105.            
  106.         }
  107.         public void OnClick(string element)
  108.         {
  109.             if (element == "play")
  110.             {
  111.                 gameState = GameState.enterCoords;
  112.                 //Play the simulation
  113.             }
  114.             if (element == "done")
  115.             {
  116.                 gameState = GameState.inGame;
  117.             }
  118.         }
  119.  
  120.         public void GetKeys()
  121.         {
  122.             KeyboardState kbState = Keyboard.GetState();
  123.  
  124.             Keys[] pressedKeys = kbState.GetPressedKeys();
  125.  
  126.             foreach (Keys key in lastPressedKeys)
  127.             {
  128.                 if (!pressedKeys.Contains(key))
  129.                 {
  130.                     //key is no longer pressed
  131.                     OnKeyUp(key);
  132.                 }
  133.  
  134.             }
  135.             foreach (Keys key in pressedKeys)
  136.             {
  137.                 if (!lastPressedKeys.Contains(key))
  138.                 {
  139.                     OnKeyDown(key);
  140.                 }
  141.             }
  142.             lastPressedKeys = pressedKeys;
  143.         }
  144.         public void OnKeyUp(Keys key)
  145.         {
  146.  
  147.  
  148.  
  149.         }
  150.  
  151.         public void OnKeyDown(Keys key)
  152.         {
  153.             KeyboardState kbState = Keyboard.GetState();
  154.  
  155.             if (key == Keys.Back && Coordinates.Length > 0)
  156.             {
  157.                 Coordinates = Coordinates.Remove(Coordinates.Length - 1);
  158.             }
  159.             else
  160.             {
  161.  
  162.                 Coordinates += key.ToString();
  163.  
  164.             }
  165.  
  166.         }
  167.  
  168.  
  169.  
  170.  
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement