source: 2012/23/RamiP/YAG2DSSBase/YAG2DSS/YAG2DSS/GUI/Dialogs/ExitWindow.cs @ 2778

Revision 2778, 7.5 KB checked in by ramipasa, 9 years ago (diff)

korjauksia

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Microsoft.Xna.Framework;
5using Microsoft.Xna.Framework.Audio;
6using Microsoft.Xna.Framework.Content;
7using Microsoft.Xna.Framework.GamerServices;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using ALTK.GUI;
12
13namespace ALTK.GUI.Dialogs
14{
15    /// <summary>
16    /// This is a game component that implements IUpdateable.
17    /// </summary>
18    public class ExitWindow : Microsoft.Xna.Framework.DrawableGameComponent
19    {
20        public ExitWindow(Game game)
21            : base(game)
22        {
23            // TODO: Construct any child components here
24        }
25
26        int mousePosX, mousePosY;
27        int prevMousePosX, prevMousePosY;
28        bool MousePressed = false;
29
30        Rectangle sizePos;
31        Texture2D backgroundTexture;
32        SpriteBatch spriteBatch;
33        SpriteFont spriteFont;
34
35        AUIButton BExit;
36        AUIButton BCancel;
37
38        /// <summary>
39        /// Allows the game component to perform any initialization it needs to before starting
40        /// to run.  This is where it can query for any required services and load content.
41        /// </summary>
42        public override void Initialize()
43        {
44            // TODO: Add your initialization code here
45
46            sizePos = new Rectangle(300, 300, 400, 200);
47
48            base.Initialize();
49
50            backgroundTexture = CreateTexture(sizePos.Width, sizePos.Height,
51                new Color(96, 96, 128, 128),
52                new Color(32, 32, 255, 255),
53                new Color(96, 96, 96, 255));
54
55            spriteBatch = new SpriteBatch(GraphicsDevice);
56            spriteFont = ALTKHandler.Loader.loadFont("aMainFont");
57
58            BExit = new AUIButton(Game);
59            BExit.FontPath = "aMainFont";
60            BExit.UpdateFont("");
61            BExit.AdaptiveSize = true;
62            BExit.ButtonText = "Poistu";
63            BExit.PositionY = 100.0f;
64            BExit.PositionX = 100.0f;
65            BExit.TextColor = Color.Blue;
66            BExit.TextColorPressed = Color.Teal;
67            BExit.Width = 200;
68            BExit.Height = 30;
69            BExit.IdleTexture = CreateTexture(200, 30,
70                new Color(0, 102, 255, 196),
71                new Color(102, 0, 153, 255),
72                new Color(0, 0, 255, 168));
73            BExit.HoverTexture = CreateTexture(200, 30,
74                new Color(0, 255, 153, 196),
75                new Color(0, 0, 255, 255),
76                new Color(102, 0, 153, 196));
77            BExit.Initialize();
78
79            //BExit.IdleTexture.SaveAsPng(System.IO.File.Create(Environment.CurrentDirectory + "\\texture.png"), 200, 30);
80            //Environment.Exit(0);
81        }
82
83        protected override void LoadContent()
84        {
85            base.LoadContent();
86        }
87
88        private Texture2D CreateTexture(int width, int height, Color MainColor, Color SecondaryColor, Color TertiaryColor)
89        {
90            Texture2D Texture = new Texture2D(GraphicsDevice, width, height, false, SurfaceFormat.Color);
91
92            Color[] color = new Color[width * height];
93
94            // background color
95            // ***
96
97            for (int i = 0; i < color.Length; i++)
98                color[i] = MainColor;
99
100            // main border
101            // ***
102
103            // top
104            for (int i = sizePos.Width; i < (sizePos.Width * 3); i++)
105                color[i] = SecondaryColor;
106
107            // bottom
108            for (int i = color.Length - (sizePos.Width * 3); i < color.Length - sizePos.Width; i++)
109                color[i] = SecondaryColor;
110
111            // right
112            for (int i = 1; i < color.Length - sizePos.Width - 2; i = i + sizePos.Width)
113                color[i] = SecondaryColor;
114
115            for (int i = 2; i < color.Length - sizePos.Width - 2; i = i + sizePos.Width)
116                color[i] = SecondaryColor;
117
118            // left
119            for (int i = sizePos.Width - 3; i < color.Length; i = i + sizePos.Width)
120                color[i] = SecondaryColor;
121
122            for (int i = sizePos.Width - 2; i < color.Length; i = i + sizePos.Width)
123                color[i] = SecondaryColor;
124
125            // outer border
126            // ***
127
128            // top
129            for (int i = 0; i < sizePos.Width; i++)
130                color[i] = TertiaryColor;
131
132            // bottom
133            for (int i = color.Length - sizePos.Width; i < color.Length; i++)
134                color[i] = TertiaryColor;
135
136            // right
137            for (int i = 0; i < color.Length - sizePos.Width; i = i + sizePos.Width)
138                color[i] = TertiaryColor;
139
140            // left
141            for (int i = sizePos.Width - 1; i < color.Length; i = i + sizePos.Width)
142                color[i] = TertiaryColor;
143
144            Texture.SetData(color);
145            return Texture;
146        }
147
148        /// <summary>
149        /// Allows the game component to update itself.
150        /// </summary>
151        /// <param name="gameTime">Provides a snapshot of timing values.</param>
152        public override void Update(GameTime gameTime)
153        {
154            // TODO: Add your update code here
155
156            bool cursorOnChoice = false;
157
158            YAG2DSS.Instance.MessageDisplay.Clear();
159            YAG2DSS.Instance.MessageDisplay.Add(Cursor.SecPosX + "; " + Cursor.SecPosY);
160            YAG2DSS.Instance.MessageDisplay.Add(Convert.ToString(BExit.PositionX + sizePos.X) + "; " + Convert.ToString(BExit.PositionY + sizePos.Y));
161
162            if (Cursor.SecPosX > sizePos.X && Cursor.SecPosY > sizePos.Y &&
163                Cursor.SecPosX < sizePos.X + sizePos.Width && Cursor.SecPosY < sizePos.Y + sizePos.Height)
164            {
165                Cursor.enableBasicInput = false;
166
167                prevMousePosX = mousePosX;
168                prevMousePosY = mousePosY;
169
170                mousePosX = Cursor.SecPosX;
171                mousePosY = Cursor.SecPosY;
172
173                if (Cursor.SecLeftPressed && System.Windows.Forms.Form.ActiveForm != null && cursorOnChoice == false)
174                {
175                    if (MousePressed == true)
176                    {
177                        sizePos.X = sizePos.X + (Cursor.SecPosX - prevMousePosX);
178                        sizePos.Y = sizePos.Y + (Cursor.SecPosY - prevMousePosY);
179
180                        // tarkista, ettei laatikko mene ruudun rajojen yli
181
182                        if (sizePos.X < 0)
183                            sizePos.X = 0;
184                        else if (sizePos.X + sizePos.Width > ALTKConstants.WindowWidth)
185                            sizePos.X = ALTKConstants.WindowWidth - sizePos.Width;
186
187                        if (sizePos.Y < 0)
188                            sizePos.Y = 0;
189                        else if (sizePos.Y + sizePos.Height > ALTKConstants.WindowHeight)
190                            sizePos.Y = ALTKConstants.WindowHeight - sizePos.Height;
191                    }
192
193                    MousePressed = true;
194                }
195            }
196            else
197                Cursor.enableBasicInput = true;
198
199            BExit.Update(gameTime, sizePos.X, sizePos.Y);
200
201            base.Update(gameTime);
202        }
203
204        public override void Draw(GameTime gameTime)
205        {
206            spriteBatch.Begin();
207
208            spriteBatch.Draw(backgroundTexture, sizePos, Color.White);
209
210            spriteBatch.End();
211
212            BExit.Draw(gameTime, sizePos.X, sizePos.Y);
213
214            base.Draw(gameTime);
215        }
216    }
217}
Note: See TracBrowser for help on using the repository browser.