using System.Diagnostics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; namespace BouncyCatIsBouncy { public delegate void OnSelectedHandler(); class MainMenu : IMenu { public bool Closed { get; private set; } SpriteBatch m_batch; Input m_input; Texture2D m_background; Button m_start, m_exit; RandomCatSounds m_catSounds; const int DISTANCE_BETWEEN_BUTTONS = 125; public MainMenu(ContentManager content, SpriteBatch batch, AudioBank music, Input input, OnSelectedHandler start, OnSelectedHandler exit) { Debug.Assert(content != null); Debug.Assert(batch != null); Debug.Assert(input != null); m_batch = batch; m_input = input; music.PlayCue("title"); m_background = content.Load(@"Menus/main-bg"); m_start = new Button(content.Load(@"Menus/btn-start")); m_start.Center = new Vector2(ScreenSize.HalfWidth - DISTANCE_BETWEEN_BUTTONS, ScreenSize.Height - m_start.Height); m_start.OnClick += start; m_start.OnClick += () => Closed = true; m_start.OnEnter += () => m_catSounds.Play(); m_exit = new Button(content.Load(@"Menus/btn-exit")); m_exit.Center = new Vector2(ScreenSize.HalfWidth + DISTANCE_BETWEEN_BUTTONS, ScreenSize.Height - m_exit.Height); m_exit.OnClick += exit; m_exit.OnClick += () => Closed = true; m_exit.OnEnter += () => m_catSounds.Play(); m_catSounds = new RandomCatSounds(content); } public void Draw() { m_batch.Draw(m_background, Vector2.Zero, Color.White); m_start.Draw(m_batch); m_exit.Draw(m_batch); } public void Update(float dt) { m_start.Update(m_input); m_exit.Update(m_input); } } }