using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace BouncyCatIsBouncy { struct Button { Texture2D m_texture; bool m_isMouseOver, m_wasOver; public event OnSelectedHandler OnClick; public event OnSelectedHandler OnEnter; public Vector2 Center { get; set; } public int Width { get { return m_texture.Width; } } public int Height { get { return m_texture.Height; } } public Button(Texture2D texture) : this() { m_texture = texture; } public void Draw(SpriteBatch batch) { batch.Draw(m_texture, Center - new Vector2(m_texture.Width / 2, m_texture.Height / 2), m_isMouseOver ? Color.Red : Color.White); } public void Update(Input input) { var rect = new Rectangle((int)Center.X - m_texture.Width / 2, (int)Center.Y - m_texture.Height / 2, m_texture.Width, m_texture.Height); var point = new Point((int)input.Cursor2DLocation.X, (int)input.Cursor2DLocation.Y); if (m_isMouseOver = rect.Contains(point)) { if (!m_wasOver && OnEnter != null) { OnEnter(); } if (OnClick != null && input.IsActivityPressed(Activity.Launch)) { OnClick(); } } m_wasOver = m_isMouseOver; } } }