source: 2011/23/sijoseha/AdventureGame/AdventureGame/Button.cs @ 1734

Revision 1734, 2.4 KB checked in by tekrjant, 9 years ago (diff)
  • Map and HUD are no separeted
  • Button works with events
  • Lots of minor stuff
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Graphics;
7
8
9namespace AdventureGame
10{
11
12    public delegate void ButtonClickedHandler(object sender, EventArgs e);
13
14    public class Button
15    {
16        public event ButtonClickedHandler Clicked;
17
18        public Vector2 Position { get { return new Vector2(Boundaries.X, Boundaries.Y); } set { } }
19        public Rectangle Boundaries { get; set; }
20        public int Width { get { return Boundaries.Width; } private set { } }
21        public int Height { get { return Boundaries.Height; } private set { } }
22        private Texture2D Image { get; set; }
23        public Color BackgroundColor { get; set; }
24        public Color BorderColor { get; set; }
25        public string ButtonText { get; set; }
26
27        public Button(Rectangle boundaries, string text, Color bgColor, Color borderColor, GraphicsDevice device)
28        {
29            this.Boundaries = boundaries;
30            this.ButtonText = text;
31            this.BackgroundColor = bgColor;
32            this.BorderColor = borderColor;
33            Color[,] tex = new Color[this.Width, this.Height];
34            for (int x = 0; x < this.Width; x++)
35            {
36                for (int y = 0; y < this.Height; y++)
37                {
38                    if (x == 0 || y == 0 || x == this.Width || y == this.Height)
39                        tex[x, y] = borderColor;
40                    tex[x, y] = bgColor;
41                }
42            }
43            Color[] tex1D = new Color[this.Width * this.Height];
44            for (int x = 0; x < this.Width; x++)
45                for (int y = 0; y < this.Height; y++)
46                    tex1D[x + y * this.Width] = tex[x, y];
47            this.Image = new Texture2D(device, this.Width, this.Height);
48            this.Image.SetData(tex1D);
49        }
50
51        protected void OnClicked(EventArgs e)
52        {
53            if (Clicked != null)
54                Clicked(this, e);
55        }
56
57        public void Pressed()
58        {
59            OnClicked(EventArgs.Empty);
60        }
61
62        public void Draw(SpriteBatch sb)
63        {
64            sb.Draw(this.Image, this.Boundaries, Color.White);
65            sb.DrawString(AdventureGame.basicFont, this.ButtonText, this.Position, Color.Black);
66        }
67    }
68}
Note: See TracBrowser for help on using the repository browser.