arkanoid/Arkanoidv3.0/Classes/Menu.cs
Mootfrost777 79260807c7 v.0.3
Start commit. All gameplay. Textbox lib by my friend was broken(not fatal for gameplay).
2021-12-21 19:57:41 +03:00

122 lines
3.5 KiB
C#

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content; // для ContentManager
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.Collections.Generic;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Media;
namespace Arkanoid.Classes
{
class Menu
{
private List<Label> items;
private string[] texts = { "Play", "Info", "History", "Exit" };
private int selected = 0;
private KeyboardState keyboard;
public KeyboardState prevKeyboard;
SoundEffect MenuSound;
SoundEffect SelectSound;
public Vector2 Position { get; set; }
public Menu()
{
items = new List<Label>();
Vector2 position = new Vector2(350, 300);
for (int i = 0; i < texts.Length; i++)
{
Label label = new Label(texts[i], position, Color.Yellow);
items.Add(label);
position.Y += 40;
}
}
public void SetMenuPosition(Vector2 Position)
{
this.Position = Position;
for (int i = 0; i < items.Count; i++)
{
items[i].Position = Position;
Position.Y += 30;
}
}
public void LoadContent(ContentManager Content)
{
foreach (Label item in items)
{
item.LoadContent(Content);
}
MenuSound = Content.Load<SoundEffect>("MenuSong");
SelectSound = Content.Load<SoundEffect>("Select");
}
public void Update(Song song)
{
keyboard = Keyboard.GetState();
// Down
if ((keyboard.IsKeyDown(Keys.S) || keyboard.IsKeyDown(Keys.Down)) && (keyboard != prevKeyboard))
{
if (selected < items.Count - 1)
{
SelectSound.Play();
items[selected].ResetColor();
selected++;
}
}
if ((keyboard.IsKeyDown(Keys.W) || keyboard.IsKeyDown(Keys.Up)) && (keyboard != prevKeyboard))
{
if (selected > 0)
{
SelectSound.Play();
items[selected].ResetColor();
selected--;
}
}
// Enter - выбор в меню
if (keyboard.IsKeyDown(Keys.Enter) && (keyboard != prevKeyboard))
{
MenuSound.Play();
switch (selected)
{
case 0:
Game1.gameState = GameState.Game;
MediaPlayer.Play(song);
break;
case 1:
Game1.gameState = GameState.Info;
//Game1.gameState = GameState.Win;
break;
case 3:
Game1.gameState = GameState.Exit;
break;
case 2:
Game1.gameState = GameState.History;
break;
default:
break;
}
}
prevKeyboard = keyboard;
}
public void Draw(SpriteBatch spriteBatch)
{
items[selected].Color = Color.Green;
foreach (var item in items)
{
item.Draw(spriteBatch);
}
}
}
}