using System.Diagnostics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; namespace BouncyCatIsBouncy { class PauseMenu : IMenu { public bool Closed { get; private set; } Texture2D m_background; SpriteBatch m_batch; Input m_input; bool m_waitedAFrame; Button m_resume, m_main; const int DISTANCE_BETWEEN_BUTTONS = 125; public PauseMenu(ContentManager content, SpriteBatch batch, Input input, OnSelectedHandler exit) { Debug.Assert(content != null); Debug.Assert(batch != null); Debug.Assert(input != null); m_batch = batch; m_input = input; m_background = content.Load(@"Menus/paused-bg"); m_resume = new Button(content.Load(@"Menus/btn-resume")); m_resume.Center = new Vector2(ScreenSize.HalfWidth - DISTANCE_BETWEEN_BUTTONS, ScreenSize.Height - m_resume.Height * 3); m_resume.OnClick += () => Closed = true; m_main = new Button(content.Load(@"Menus/btn-main")); m_main.Center = new Vector2(ScreenSize.HalfWidth + DISTANCE_BETWEEN_BUTTONS, ScreenSize.Height - m_main.Height * 3); m_main.OnClick += () => Closed = true; m_main.OnClick += exit; } public void Draw() { m_batch.Draw(m_background, Vector2.Zero, new Color(Color.White, 200)); m_resume.Draw(m_batch); m_main.Draw(m_batch); } public void Update(float dt) { if (!m_waitedAFrame) { m_waitedAFrame = true; return; } if (m_input.IsActivityPressed(Activity.Menu)) { Closed = true; } m_resume.Update(m_input); m_main.Update(m_input); } } }