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

Revision 2817, 9.2 KB checked in by ramipasa, 7 years ago (diff)

ASTEROIDIT!!!! (+ pythagoras kujntoon)

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        AUIButton LCaption;
38
39        /// <summary>
40        /// Allows the game component to perform any initialization it needs to before starting
41        /// to run.  This is where it can query for any required services and load content.
42        /// </summary>
43        public override void Initialize()
44        {
45            // TODO: Add your initialization code here
46
47            sizePos = new Rectangle(300, 300, 400, 200);
48
49            base.Initialize();
50
51            backgroundTexture = CreateTexture(sizePos.Width, sizePos.Height,
52                new Color(96, 96, 128, 128),
53                new Color(32, 32, 255, 255),
54                new Color(96, 96, 96, 255));
55
56            spriteBatch = new SpriteBatch(GraphicsDevice);
57            spriteFont = ALTKHandler.Loader.loadFont("aMainFont");
58
59            BExit = new AUIButton(Game);
60            BExit.FontPath = "aMainFont";
61            BExit.AlphaRate = BExit.AlphaRate / 2.0f;
62            BExit.UpdateFont("");
63            BExit.AdaptiveSize = true;
64            BExit.ButtonText = "Poistu";
65            BExit.PositionY = 100.0f;
66            BExit.PositionX = 100.0f;
67            BExit.TextColor = Color.Blue;
68            BExit.TextColorPressed = Color.Teal;
69            BExit.Width = 200;
70            BExit.Height = 30;
71            BExit.IdleTexture = CreateTexture(200, 30,
72                new Color(0, 51, 128, 128),
73                new Color(102, 0, 153, 255),
74                new Color(0, 0, 255, 168));
75            BExit.HoverTexture = CreateTexture(200, 30,
76                new Color(0, 255, 153, 196),
77                new Color(0, 0, 255, 255),
78                new Color(102, 0, 153, 196));
79            BExit.Initialize();
80
81            BCancel = new AUIButton(Game);
82            BCancel.FontPath = "aMainFont";
83            BCancel.AlphaRate = BCancel.AlphaRate / 2.0f;
84            BCancel.UpdateFont("");
85            BCancel.AdaptiveSize = false;
86            BCancel.ButtonText = "Minä haluan jatkaa! =///";
87            BCancel.PositionY = 150.0f;
88            BCancel.PositionX = 100.0f;
89            BCancel.TextColor = Color.Blue;
90            BCancel.TextColorPressed = Color.Teal;
91            BCancel.Width = 200;
92            BCancel.Height = 30;
93            BCancel.IdleTexture = CreateTexture(200, 30,
94                new Color(0, 51, 128, 128),
95                new Color(102, 0, 153, 255),
96                new Color(0, 0, 255, 168));
97            BCancel.HoverTexture = CreateTexture(200, 30,
98                new Color(0, 255, 153, 196),
99                new Color(0, 0, 255, 255),
100                new Color(102, 0, 153, 196));
101            BCancel.Initialize();
102
103            // Caption (haluatko nyt siis IHAN varmasti poistua??? ='((((( )
104            LCaption = new AUIButton(Game);
105            LCaption.FontPath = "aMainFont";
106            LCaption.UpdateFont("");
107            LCaption.AdaptiveSize = false;
108            LCaption.ButtonText = "Haluatko nyt siis IHAN varmasti poistua?? ='((((";
109            LCaption.PositionX = 10.0f;
110            LCaption.PositionY = 20.0f;
111            //LCaption.TextColor = Color.Teal;
112            LCaption.TextColorCurrent = Color.Teal;
113            LCaption.Width = 390;
114            LCaption.Height = 40;
115            LCaption.Initialize();
116            //BExit.IdleTexture.SaveAsPng(System.IO.File.Create(Environment.CurrentDirectory + "\\texture.png"), 200, 30);
117            //Environment.Exit(0);
118        }
119
120        protected override void LoadContent()
121        {
122            base.LoadContent();
123        }
124
125        private Texture2D CreateTexture(int width, int height, Color MainColor, Color SecondaryColor, Color TertiaryColor)
126        {
127            Texture2D Texture = new Texture2D(GraphicsDevice, width, height, false, SurfaceFormat.Color);
128
129            Color[] color = new Color[width * height];
130
131            // background color
132            // ***
133
134            for (int i = 0; i < color.Length; i++)
135                color[i] = MainColor;
136
137            // main border
138            // ***
139
140            // top
141            for (int i = width; i < (width * 3); i++)
142                color[i] = SecondaryColor;
143
144            // bottom
145            for (int i = color.Length - (width * 3); i < color.Length - width; i++)
146                color[i] = SecondaryColor;
147
148            // right
149            for (int i = 1; i < color.Length - width - 2; i = i + width)
150                color[i] = SecondaryColor;
151
152            for (int i = 2; i < color.Length - width - 2; i = i + width)
153                color[i] = SecondaryColor;
154
155            // left
156            for (int i = width - 3; i < color.Length; i = i + width)
157                color[i] = SecondaryColor;
158
159            for (int i = width - 2; i < color.Length; i = i + width)
160                color[i] = SecondaryColor;
161
162            // outer border
163            // ***
164
165            // top
166            for (int i = 0; i < width; i++)
167                color[i] = TertiaryColor;
168
169            // bottom
170            for (int i = color.Length - width; i < color.Length; i++)
171                color[i] = TertiaryColor;
172
173            // right
174            for (int i = 0; i < color.Length - width; i = i + width)
175                color[i] = TertiaryColor;
176
177            // left
178            for (int i = width - 1; i < color.Length; i = i + width)
179                color[i] = TertiaryColor;
180
181            Texture.SetData(color);
182            return Texture;
183        }
184
185        /// <summary>
186        /// Allows the game component to update itself.
187        /// </summary>
188        /// <param name="gameTime">Provides a snapshot of timing values.</param>
189        public override void Update(GameTime gameTime)
190        {
191            // TODO: Add your update code here
192
193            bool cursorOnChoice = false;
194
195            if (Cursor.SecPosX > sizePos.X && Cursor.SecPosY > sizePos.Y &&
196                Cursor.SecPosX < sizePos.X + sizePos.Width && Cursor.SecPosY < sizePos.Y + sizePos.Height)
197            {
198                Cursor.enableBasicInput = false;
199
200                prevMousePosX = mousePosX;
201                prevMousePosY = mousePosY;
202
203                mousePosX = Cursor.SecPosX;
204                mousePosY = Cursor.SecPosY;
205
206                if (Cursor.SecLeftPressed && System.Windows.Forms.Form.ActiveForm != null && cursorOnChoice == false)
207                {
208                    if (MousePressed == true)
209                    {
210                        sizePos.X = sizePos.X + (Cursor.SecPosX - prevMousePosX);
211                        sizePos.Y = sizePos.Y + (Cursor.SecPosY - prevMousePosY);
212
213                        // tarkista, ettei laatikko mene ruudun rajojen yli
214
215                        if (sizePos.X < 0)
216                            sizePos.X = 0;
217                        else if (sizePos.X + sizePos.Width > ALTKConstants.WindowWidth)
218                            sizePos.X = ALTKConstants.WindowWidth - sizePos.Width;
219
220                        if (sizePos.Y < 0)
221                            sizePos.Y = 0;
222                        else if (sizePos.Y + sizePos.Height > ALTKConstants.WindowHeight)
223                            sizePos.Y = ALTKConstants.WindowHeight - sizePos.Height;
224                    }
225
226                    MousePressed = true;
227                }
228            }
229            else
230                Cursor.enableBasicInput = true;
231
232            BExit.Update(gameTime, sizePos.X, sizePos.Y);
233
234            if (BExit.NeedsUpdating)
235                Environment.Exit(0);
236
237            BCancel.Update(gameTime, sizePos.X, sizePos.Y);
238
239            if (BCancel.NeedsUpdating)
240            {
241                BCancel.NeedsUpdating = false;
242                Cursor.enableBasicInput = true;
243                Enabled = false;
244                Visible = false;
245            }
246
247            base.Update(gameTime);
248        }
249
250        public override void Draw(GameTime gameTime)
251        {
252            spriteBatch.Begin();
253
254            spriteBatch.Draw(backgroundTexture, sizePos, Color.White);
255
256            spriteBatch.End();
257
258            BExit.Draw(gameTime, sizePos.X, sizePos.Y);
259            BCancel.Draw(gameTime, sizePos.X, sizePos.Y);
260            LCaption.Draw(gameTime, sizePos.X, sizePos.Y);
261
262            base.Draw(gameTime);
263        }
264    }
265}
Note: See TracBrowser for help on using the repository browser.