source: sipi_o/Omapeli/Peli.cs @ 187

Revision 187, 13.3 KB checked in by sikajeov, 10 years ago (diff)
Line 
1#region Usings
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Audio;
7using Microsoft.Xna.Framework.Content;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11using Jypeli;
12using Jypeli.ScreenObjects;
13using Jypeli.Assets;
14using AdvanceMath;
15using Physics2DDotNet;
16using Physics2DDotNet.Shapes;
17#endregion
18
19namespace Omapeli
20{
21    public class Peli : PhysicsGame
22    {
23        //-----------------------------------------------
24        //Debuggaus hahmo
25        PhysicsObject dbHahmo;
26        PhysicsObject LUOTI;
27        PhysicsObject tahtainn;
28        PhysicsObject zombi;
29        //-----------------------------------------------
30
31        protected override void LoadContent()
32        {
33            ShowMouseCursor(true);
34            DEBUGROOM();
35            pLiikuta();
36        }
37
38        bool pHiiri(ControlEvent e)
39        {
40            Vector2D hiirenSijainti = Controls.Mouse.GetPositionOnWorld(Camera);
41            Level.Objects.Remove(tahtainn);
42            naytaTahtain(hiirenSijainti);
43            kaannaPelaajaa(dbHahmo, hiirenSijainti);
44            return false;
45        }
46
47        void kaannaPelaajaa(PhysicsObject pelaaja, Vector2D kohde)
48        {
49            Vector2D suunta = new Vector2D(kohde.X - dbHahmo.X, kohde.Y - dbHahmo.Y);
50            double kohdekulma = suunta.Angle;
51            pelaaja.Angle = new Angle(kohdekulma, false);
52        }
53
54        void naytaTahtain(Vector2D xhair)
55        {
56            IShape testi = Shapes.CreateCircle(28.0);
57            tahtainn = new PhysicsObject(0.1, testi);
58            tahtainn.IgnoresCollisionResponse = true;
59            tahtainn.Texture = Content.Load<Texture2D>("tahtajn");
60            tahtainn.X = xhair.X;
61            tahtainn.Y = xhair.Y;
62            Level.Objects.Add(tahtainn);
63        }
64
65        void luovihollinen(double enemyHP)
66        {
67            IShape enemy1 = Shapes.CreateRectangle(60.0, 60.0);
68            zombi = new PhysicsObject(10.0, enemy1);
69
70            Texture2D[] elavakuollut1 =
71            {
72                Content.Load<Texture2D>( "zombi2" ),
73                Content.Load<Texture2D>( "zombi1" )
74            };
75            AnimatedTexture zombi1text = new AnimatedTexture(elavakuollut1);
76            zombi1text.FPS = 2;
77            zombi.AnimatedTexture = zombi1text;
78            zombi.Tag = "vihollinen";
79            vihollisenSijainti();
80
81            Vector2D hahmonsijainti = dbHahmo.Position;
82            zombinSuunta(zombi, hahmonsijainti, enemyHP);
83        }
84
85        void zombinSuunta(PhysicsObject asd, Vector2D qwerty, double omfg)
86        {
87            Vector2D zombiVektori = new Vector2D(qwerty.X - zombi.X, qwerty.Y - zombi.Y);
88            double sombiSuunta = zombiVektori.Angle;
89            asd.Angle = new Angle(sombiSuunta, false);
90            asd.Hit(Vector2D.FromLengthAndAngle(omfg, asd.Angle.Radian));
91        }
92
93
94
95        void vihollisenSijainti()
96        {
97            int sijaintivariable = RandomGen.NextInt(1, 4);
98            // jos sijaintivariable on...
99            // 1 = spawnaa vasemmalle
100            // 2 = spawnaa oikealle
101            // 3 = spawnaa ylös
102            // 4 = spawnaa alas
103
104            // --- // --- // --- // --- // --- // --- // --- // --- // --- //
105            if (sijaintivariable == 1)
106            {
107                double rofl = RandomGen.NextDouble(Level.Top, Level.Bottom);
108                zombi.X = Level.Left;
109                zombi.Y = rofl;
110            }
111            // --- // --- // --- // --- // --- // --- // --- // --- // --- //
112            if (sijaintivariable == 2)
113            {
114                double rofl = RandomGen.NextDouble(Level.Top, Level.Bottom);
115                zombi.X = Level.Right;
116                zombi.Y = rofl;
117            }
118            // --- // --- // --- // --- // --- // --- // --- // --- // --- //
119            if (sijaintivariable == 3)
120            {
121                double rofl = RandomGen.NextDouble(Level.Left, Level.Right);
122                zombi.X = Level.Top;
123                zombi.Y = rofl;
124            }
125            // --- // --- // --- // --- // --- // --- // --- // --- // --- //
126            if (sijaintivariable == 4)
127            {
128                double rofl = RandomGen.NextDouble(Level.Left, Level.Right);
129                zombi.X = Level.Bottom;
130                zombi.Y = rofl;
131            }
132            // --- // --- // --- // --- // --- // --- // --- // --- // --- //
133
134            Level.Objects.Add(zombi);
135        }
136
137        //-----------------------------------------------
138        //PELAAJAN LIIKUTUS YLEISESTi
139        void pLiikuta()
140        {
141            //-----------------------------------------------
142            //Debuggaushahmon (dbHahmo) liikutusta...
143            double pNopeus = 4.0; //dbHahmon nopeus...
144            Controls.Listen(Keys.W, ButtonPosition.Down, pLiikkuuY, "Pelaaja liikkuu ylös", dbHahmo, pNopeus);
145            Controls.Listen(Keys.S, ButtonPosition.Down, pLiikkuuY, "Pelaaja liikkuu alas", dbHahmo, -pNopeus);
146            Controls.Listen(Keys.D, ButtonPosition.Down, pLiikkuuX, "Pelaaja liikkuu oikealle", dbHahmo, pNopeus);
147            Controls.Listen(Keys.A, ButtonPosition.Down, pLiikkuuX, "Pelaaja liikkuu vasemmalle", dbHahmo, -pNopeus);
148            Controls.Listen(Keys.W, ButtonPosition.Released, animaationPalautus);
149            Controls.Listen(Keys.S, ButtonPosition.Released, animaationPalautus);
150            Controls.Listen(Keys.D, ButtonPosition.Released, animaationPalautus);
151            Controls.Listen(Keys.A, ButtonPosition.Released, animaationPalautus);
152            Controls.Listen(MouseButtons.Left, ButtonPosition.Pressed, 0.0, ammus);
153            Controls.Listen(MouseButtons.None, ButtonPosition.Irrelevant, 0.1, pHiiri);
154           
155            //-----------------------------------------------
156        }
157        bool animaationPalautus(ControlEvent e)
158        {
159            Texture2D[] tekstuurit =
160            {
161                Content.Load<Texture2D>( "spriteidle" ),
162                Content.Load<Texture2D>( "spriteidle" ),
163                Content.Load<Texture2D>( "spriteidle" ),
164                Content.Load<Texture2D>( "spriteidle" )
165            };
166            AnimatedTexture walkTexture = new AnimatedTexture(tekstuurit);
167            walkTexture.FPS = 1;
168            return false;
169        }
170
171        bool ammus(ControlEvent e)
172        {
173           
174
175            IShape dbLuoti = Shapes.CreateRectangle(40.0, 2.0);
176            LUOTI = new PhysicsObject(5.0, dbLuoti);
177            double hahmoX = dbHahmo.X;
178            double hahmoY = dbHahmo.Y;
179            LUOTI.X = hahmoX;
180            LUOTI.Y = hahmoY;
181            LUOTI.Restitution = 0.0;
182            LUOTI.Color = Color.White;
183
184            LUOTI.Tag = "luoti";
185            LUOTI.Lifetime.MaxSeconds = 1;
186            Level.Objects.Add(LUOTI);
187
188            AddCollisionHandler(LUOTI, luotiKatoaa);
189
190            Vector2D hiirenSijainti = Controls.Mouse.GetPositionOnWorld(Camera);
191            luodinSuunta(LUOTI, hiirenSijainti);
192
193            return false;
194        }
195
196        void luodinSuunta(PhysicsObject panos, Vector2D ammuksenSuunta)
197        {
198            Vector2D luotiVektori = new Vector2D(ammuksenSuunta.X - dbHahmo.X, ammuksenSuunta.Y - dbHahmo.Y);
199            double luotiSuunta = luotiVektori.Angle;
200            panos.Angle = new Angle(luotiSuunta, false);
201            panos.Hit(Vector2D.FromLengthAndAngle(15000, panos.Angle.Radian));
202        }
203       
204        //-----------------------------------------------
205        //PELAAJA LIIKKUU X-AKSELILLA (vasen, oikea)
206        //-----------------------------------------------
207        bool pLiikkuuX(ControlEvent e)
208        {
209           
210            PhysicsObject dbHahmo = e.Parameter0.ToPhysicsObject();
211            double pSpeed = e.Parameter1.ToDouble();
212            double uusiX = dbHahmo.X + pSpeed;
213
214            if ((Level.Left < uusiX) && (uusiX < Level.Right))
215            {
216                dbHahmo.X = uusiX;
217            }
218
219            Vector2D hiirenSijainti = Controls.Mouse.GetPositionOnWorld(Camera);
220            kaannaPelaajaa(dbHahmo, hiirenSijainti);
221
222            Texture2D[] tekstuurit =
223            {
224                Content.Load<Texture2D>( "spriteidle" ),
225                Content.Load<Texture2D>( "spritewalk1" ),
226                Content.Load<Texture2D>( "spriteidle" ),
227                Content.Load<Texture2D>( "spritewalk2" )
228            };
229            AnimatedTexture walkTexture = new AnimatedTexture(tekstuurit);
230            walkTexture.FPS = 6;
231
232            return false;
233        }
234
235        //-----------------------------------------------
236        //PELAAJA LIIKKUU Y-AKSELILLA (ylös, alas)
237        //-----------------------------------------------
238        bool pLiikkuuY( ControlEvent e )
239        {
240           
241            PhysicsObject dbHahmo = e.Parameter0.ToPhysicsObject();
242            double pSpeed = e.Parameter1.ToDouble();
243            double uusiY = dbHahmo.Y + pSpeed;
244
245            if ((Level.Bottom < uusiY) && (uusiY < Level.Top))
246            {
247                dbHahmo.Y = uusiY;
248            }
249
250            Vector2D hiirenSijainti = Controls.Mouse.GetPositionOnWorld(Camera);
251            kaannaPelaajaa(dbHahmo, hiirenSijainti);
252
253            Texture2D[] tekstuurit =
254            {
255                Content.Load<Texture2D>( "spriteidle" ),
256                Content.Load<Texture2D>( "spritewalk1" ),
257                Content.Load<Texture2D>( "spriteidle" ),
258                Content.Load<Texture2D>( "spritewalk2" )
259            };
260            AnimatedTexture walkTexture = new AnimatedTexture(tekstuurit);
261            walkTexture.FPS = 6;
262
263            return false;
264        }
265
266        void luotiKatoaa(Collision collision)
267        {
268            PhysicsObject LUOTI = collision.Obj;
269            PhysicsObject tormays = collision.Other;
270
271            if (tormays == Level.RightBorder)
272            {
273                LUOTI.Lifetime.IsExpired = true;
274            }
275            if (tormays == Level.LeftBorder)
276            {
277                LUOTI.Lifetime.IsExpired = true;
278            }
279            if (tormays == Level.TopBorder)
280            {
281                LUOTI.Lifetime.IsExpired = true;
282            }
283            if (tormays == Level.BottomBorder)
284            {
285                LUOTI.Lifetime.IsExpired = true;
286            }
287            if (tormays.Tag == "luoti")
288            {
289                LUOTI.Lifetime.IsExpired = true;
290            }
291            if (tormays.Tag == "vihollinen")
292            {
293                //MITÄ KÄY KUN ZOMBIIN OSUTAAN??? ASD
294                LUOTI.Lifetime.IsExpired = true;
295               
296                zombi.Lifetime.IsExpired = true;
297                //double wat =+ 10.0;
298                luovihollinen(1500);
299            }
300        }
301
302        //-----------------------------------------------------//
303        // PELIALUE (debugroom koska en jaksa enää vaihtaa...) //
304        //-----------------------------------------------------//
305        void DEBUGROOM()
306        {
307            //Level.BackgroundColor = Color.LightGreen;
308            Texture2D tausta = Content.Load<Texture2D>("Grass");
309            Level.Background.Image = tausta;
310            Level.Background.FitToLevel(Level);
311            //Level.CreateBorder(0.0, true);
312
313            Texture2D spriteidle = Content.Load<Texture2D>("spriteidle");
314            IShape dbPallo = Shapes.CreateRectangle(60.0, 60.0);
315            dbHahmo = new PhysicsObject(9999999999.0, dbPallo);
316            dbHahmo.X = 0.0;
317            dbHahmo.Y = 0.0;
318            dbHahmo.Restitution = 0.2;
319            dbHahmo.Color = Color.Black;
320            //standFPS();
321
322            Texture2D[] tekstuurit =
323            {
324                Content.Load<Texture2D>( "spriteidle" ),
325                Content.Load<Texture2D>( "spriteidle" ),
326                Content.Load<Texture2D>( "spriteidle" ),
327                Content.Load<Texture2D>( "spriteidle" )
328                //Content.Load<Texture2D>( "spriteshoot1" ),
329                //Content.Load<Texture2D>( "spriteshoot2" ),
330                //Content.Load<Texture2D>( "spriteshoot3" ),
331                //Content.Load<Texture2D>( "spriteshoot2" )
332            };
333            AnimatedTexture walkTexture = new AnimatedTexture(tekstuurit);
334            walkTexture.FPS = 6;
335            dbHahmo.AnimatedTexture = walkTexture;
336
337            luovihollinen(1500);
338            Level.Objects.Add(dbHahmo);
339
340            AddCollisionHandler(dbHahmo, zombiosuu);
341            //-----------------------------------------------
342        }
343
344        void zombiosuu(Collision collision)
345        {
346            PhysicsObject LUOTI = collision.Obj;
347            PhysicsObject kuolema = collision.Other;
348
349            if (kuolema == zombi)
350            {
351                dbHahmo.Lifetime.IsExpired = true;
352                MessageDisplay.Add("Kuolit!");
353                MessageDisplay.Add("Kuolit!");
354                MessageDisplay.Add("Kuolit!");
355                MessageDisplay.Add("Kuolit!");
356                MessageDisplay.Add("Kuolit!");
357                MessageDisplay.Add("Kuolit!");
358                MessageDisplay.Add("Kuolit!");
359                MessageDisplay.TextColor = Color.Red;
360            }
361        }
362    }
363}
Note: See TracBrowser for help on using the repository browser.