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

Revision 2768, 7.7 KB checked in by ramipasa, 9 years ago (diff)

Muutettu ALTK-logiikoita toimimaan Jypelin kanssa.

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 = CreateBackgroundTexture();
51
52            spriteBatch = new SpriteBatch(GraphicsDevice);
53            spriteFont = ALTKHandler.Loader.loadFont("aMainFont");
54
55            BExit = new AUIButton(Game);
56            BExit.FontPath = "aMainFont";
57            BExit.UpdateFont("");
58            BExit.AdaptiveSize = true;
59            BExit.ButtonText = "Poistu";
60            BExit.PositionY = 100.0f;
61            BExit.PositionX = 200.0f;
62            BExit.TextColor = Color.Blue;
63            BExit.TextColorPressed = Color.Teal;
64            BExit.Width = 200;
65            BExit.Height = 30;
66        }
67
68        protected override void LoadContent()
69        {
70            base.LoadContent();
71        }
72
73
74
75        private Texture2D CreateBackgroundTexture()
76        {
77            //GraphicsDevice gd = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, GraphicsProfile.Reach, new PresentationParameters());
78            Texture2D Texture = new Texture2D(GraphicsDevice, sizePos.Width, sizePos.Height, false, SurfaceFormat.Color);
79
80            Color[] color = new Color[sizePos.Width * sizePos.Height];
81
82            Color backColor = new Color(96, 128, 96, 128);
83            Color borderColor = new Color(32, 255, 32, 255);
84            Color outerBorderColor = new Color(96, 96, 96, 255);
85
86            //Stopwatch sw = new Stopwatch();
87
88            //sw.Start();
89            // background color
90            // ***
91
92            for (int i = 0; i < color.Length; i++)
93                color[i] = backColor;
94
95            // main border
96            // ***
97
98            // top
99            for (int i = sizePos.Width; i < (sizePos.Width * 3); i++)
100                color[i] = borderColor;
101
102            // bottom
103            for (int i = color.Length - (sizePos.Width * 3); i < color.Length - sizePos.Width; i++)
104                color[i] = borderColor;
105
106            // right
107            for (int i = 1; i < color.Length - sizePos.Width - 2; i = i + sizePos.Width)
108                color[i] = borderColor;
109
110            for (int i = 2; i < color.Length - sizePos.Width - 2; i = i + sizePos.Width)
111                color[i] = borderColor;
112
113            // left
114            for (int i = sizePos.Width - 3; i < color.Length; i = i + sizePos.Width)
115                color[i] = borderColor;
116
117            for (int i = sizePos.Width - 2; i < color.Length; i = i + sizePos.Width)
118                color[i] = borderColor;
119
120            // outer border
121            // ***
122
123            // top
124            for (int i = 0; i < sizePos.Width; i++)
125                color[i] = outerBorderColor;
126
127            // bottom
128            for (int i = color.Length - sizePos.Width; i < color.Length; i++)
129                color[i] = outerBorderColor;
130
131            // right
132            for (int i = 0; i < color.Length - sizePos.Width; i = i + sizePos.Width)
133                color[i] = outerBorderColor;
134
135            // left
136            for (int i = sizePos.Width - 1; i < color.Length; i = i + sizePos.Width)
137                color[i] = outerBorderColor;
138
139            //sw.Stop();
140            //Console.WriteLine("ADialogWindow texture creation time (ms): " + sw.ElapsedMilliseconds);
141
142            Texture.SetData(color);
143            return Texture;
144        }
145
146        /// <summary>
147        /// Allows the game component to update itself.
148        /// </summary>
149        /// <param name="gameTime">Provides a snapshot of timing values.</param>
150        public override void Update(GameTime gameTime)
151        {
152            // TODO: Add your update code here
153
154            //YAG2DSS.Instance.MessageDisplay.Add("UPDATING");
155
156            bool cursorOnChoice = false;
157
158            YAG2DSS.Instance.MessageDisplay.Clear();
159            YAG2DSS.Instance.MessageDisplay.Add("Rectangle: " + sizePos.X + "; " + sizePos.Y + "; " + sizePos.Width + "; " + sizePos.Height);
160            YAG2DSS.Instance.MessageDisplay.Add(Convert.ToString(ALTK.Cursor.SecPosX + "; " + ALTK.Cursor.SecPosY));
161
162            //if (Cursor.SecPosX > sizePos.X && Cursor.SecPosY > sizePos.Y)
163            //{
164            //    YAG2DSS.Instance.MessageDisplay.Clear();
165            //    YAG2DSS.Instance.MessageDisplay.Add("ajajjajajaj xDDD");
166            //}
167
168            if (Cursor.SecPosX > sizePos.X && Cursor.SecPosY > sizePos.Y &&
169                Cursor.SecPosX < sizePos.X + sizePos.Width && Cursor.SecPosY < sizePos.Y + sizePos.Height)
170            {
171                Cursor.enableBasicInput = false;
172
173                //YAG2DSS.Instance.MessageDisplay.Clear();
174                YAG2DSS.Instance.MessageDisplay.Add("Cursor is on window");
175                //dialogMousePosX = ms.X - sizePos.X;
176                //dialogMousePosY = ms.Y - sizePos.Y;
177
178                prevMousePosX = mousePosX;
179                prevMousePosY = mousePosY;
180
181                mousePosX = Cursor.SecPosX;
182                mousePosY = Cursor.SecPosY;
183
184                if (Cursor.SecLeftPressed && System.Windows.Forms.Form.ActiveForm != null && cursorOnChoice == false)
185                {
186                    if (MousePressed == true)
187                    {
188                        sizePos.X = sizePos.X + (Cursor.SecPosX - prevMousePosX);
189                        sizePos.Y = sizePos.Y + (Cursor.SecPosY - prevMousePosY);
190
191                        // tarkista, ettei laatikko mene ruudun rajojen yli
192
193                        if (sizePos.X < 0)
194                            sizePos.X = 0;
195                        else if (sizePos.X + sizePos.Width > ALTKConstants.WindowWidth)
196                            sizePos.X = ALTKConstants.WindowWidth - sizePos.Width;
197
198                        if (sizePos.Y < 0)
199                            sizePos.Y = 0;
200                        else if (sizePos.Y + sizePos.Height > ALTKConstants.WindowHeight)
201                            sizePos.Y = ALTKConstants.WindowHeight - sizePos.Height;
202                    }
203
204                    MousePressed = true;
205                }
206            }
207            else
208                Cursor.enableBasicInput = true;
209
210            base.Update(gameTime);
211        }
212
213        public override void Draw(GameTime gameTime)
214        {
215            spriteBatch.Begin();
216
217            spriteBatch.Draw(backgroundTexture, sizePos, Color.White);
218
219            spriteBatch.End();
220
221            base.Draw(gameTime);
222        }
223    }
224}
Note: See TracBrowser for help on using the repository browser.