source: 2012/23/RamiP/YAG2DSSBase/YAG2DSS/YAG2DSS/YAG2DSS.cs @ 2841

Revision 2841, 45.2 KB checked in by ramipasa, 7 years ago (diff)

Poweruppien pohja;

Line 
1using System;
2using System.Collections.Generic;
3using System.IO;
4using Jypeli;
5using Jypeli.Assets;
6using Jypeli.Controls;
7using Jypeli.Effects;
8using Jypeli.Widgets;
9using ALTK;
10using ALTK.GUI.Dialogs;
11
12public class YAG2DSS : PhysicsGame
13{
14    ALTKHandler altkHandler;
15    GameObject Kursori;
16
17    List<PhysicsObject> Pelaaja = new List<PhysicsObject>();
18    List<PhysicsObject> Madonreika = new List<PhysicsObject>();
19    List<PhysicsObject> Minioni = new List<PhysicsObject>();
20    List<PhysicsObject> Asteroidi = new List<PhysicsObject>();
21
22    Timer MadonreikaAjastin;
23    Timer Minioniajastin;
24    Timer Minioninliikuttaja;
25    Timer Automaattiammus;
26    Timer MinioninAmmus;
27    Timer Asteroidiajastin;
28    Timer TuhoaAsteroidi;
29    Timer EnergianLataaja;
30    Timer Vaikeuttaja;
31    Timer Konekivaari1;
32    Timer Konekivaari2;
33    Timer Triplefire1;
34    Timer Triplefire2;
35
36    ExplosionSystem PlayerHitES;
37    ExplosionSystem PlayerDeathES;
38    ExplosionSystem PlayerDeathESL;
39    ExplosionSystem PlayerDeathES2;
40
41    ExplosionSystem WormholeExplosionES;
42    ExplosionSystem WormholeExplosionES2;
43
44    ExplosionSystem MinionExplosionES;
45    ExplosionSystem MinionExplosionES2;
46
47    ExplosionSystem AsteroidExplosionES;
48    ExplosionSystem AsteroidExplosionES2;
49
50    double MadonreikaPosX = 0.0;
51    double MadonreikaPosY = 0.0;
52
53    int Pelaajan1Pisteet = 0;
54    int Pelaajan2Pisteet = 0;
55
56    double Pelaajan1Kerroin = 1;
57    double Pelaajan2Kerroin = 2;
58
59    public override void Begin()
60    {
61        #region Cursor handling
62        Kursori = new GameObject(32, 32);
63        Kursori.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "cursor.png"));
64        Kursori.IsVisible = false;
65        AnalogHandler handler = new AnalogHandler(HandleCursor);
66        Mouse.ListenMovement(0.1, handler, "");
67        Add(Kursori);
68        #endregion
69        LuoKentta();
70        AsetaNappaimet();
71        LuoAjastin();
72        //LuoMadonreika();
73        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
74        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ShowExit, "Lopeta peli");
75        Explotions();
76    }
77
78    void Explotions()
79    {
80        PlayerHitES = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "player_explosion.png")), 800);
81        PlayerHitES.ScaleAmount = 0.0002;
82        PlayerHitES.MaxRotationSpeed = 1000.0;
83        PlayerHitES.BlendMode = BlendMode.Alpha;
84        PlayerHitES.MinScale = 2.5;
85        PlayerHitES.MaxScale = 5.0;
86        PlayerHitES.Shape = Shape.Circle;
87        PlayerHitES.MinRotationSpeed = 500.0;
88        PlayerHitES.AlphaAmount = 1.0;
89        PlayerHitES.MinAcceleration = 3.0;
90        PlayerHitES.MaxAcceleration = 6.0;
91        PlayerHitES.MinVelocity = 10.0;
92        PlayerHitES.MaxVelocity = 20.0;
93        PlayerHitES.MinLifetime = PlayerHitES.MinLifetime * 0.8;
94        PlayerHitES.MaxLifetime = PlayerHitES.MaxLifetime * 0.8;
95        Add(PlayerHitES);
96
97        PlayerDeathES = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "player_explosion.png")), 8000);
98        PlayerDeathES.ScaleAmount = 0.0002;
99        PlayerDeathES.MaxRotationSpeed = 1000.0;
100        PlayerDeathES.BlendMode = BlendMode.Alpha;
101        PlayerDeathES.MinScale = 2.0;
102        PlayerDeathES.MaxScale = 4.0;
103        PlayerDeathES.Shape = Shape.Circle;
104        PlayerDeathES.MinRotationSpeed = 500.0;
105        PlayerDeathES.AlphaAmount = 1.0;
106        PlayerDeathES.MinAcceleration = 3.0;
107        PlayerDeathES.MaxAcceleration = 6.0;
108        PlayerDeathES.MaxVelocity = 100.0;
109        PlayerDeathES.MinLifetime = 5.9;
110        PlayerDeathES.MaxLifetime = 6.0;
111        Add(PlayerDeathES);
112
113        PlayerDeathESL = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "player_explosion.png")), 16000);
114        PlayerDeathESL.ScaleAmount = 0.0002;
115        PlayerDeathESL.MaxRotationSpeed = 1000.0;
116        PlayerDeathESL.BlendMode = BlendMode.Alpha;
117        PlayerDeathESL.MinScale = 1.5;
118        PlayerDeathESL.MaxScale = 3.0;
119        PlayerDeathESL.Shape = Shape.Circle;
120        PlayerDeathESL.MinRotationSpeed = 500.0;
121        PlayerDeathESL.AlphaAmount = 1.0;
122        PlayerDeathESL.MinAcceleration = 1.5;
123        PlayerDeathESL.MaxAcceleration = 3.0;
124        PlayerDeathESL.MaxVelocity = 50.0;
125        PlayerDeathESL.MinLifetime = 5.9;
126        PlayerDeathESL.MaxLifetime = 6.0;
127        Add(PlayerDeathESL);
128
129        PlayerDeathES2 = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "player_explosion.png")), 2800);
130        PlayerDeathES2.ScaleAmount = 0.0002;
131        PlayerDeathES2.MaxRotationSpeed = 1000.0;
132        PlayerDeathES2.BlendMode = BlendMode.Alpha;
133        PlayerDeathES2.MinScale = 64.0;
134        PlayerDeathES2.MaxScale = 128.0;
135        PlayerDeathES2.Shape = Shape.Circle;
136        PlayerDeathES2.MinRotationSpeed = 500.0;
137        PlayerDeathES2.AlphaAmount = 0.8;
138        PlayerDeathES2.MinAcceleration = 0.75;
139        PlayerDeathES2.MaxAcceleration = 0.75;
140        PlayerDeathES2.MaxVelocity = 12.5;
141        PlayerDeathES2.MinLifetime = 5.9;
142        PlayerDeathES2.MaxLifetime = 6.0;
143        Add(PlayerDeathES2);
144
145        MinionExplosionES = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minion_explosion.png")), 5000);
146        MinionExplosionES.OuterParticleImage = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minion_explosion_2.png"));
147        MinionExplosionES.ScaleAmount = 0.0002;
148        MinionExplosionES.MaxRotationSpeed = 1250.0;
149        MinionExplosionES.BlendMode = BlendMode.Alpha;
150        MinionExplosionES.MinScale = 2.0;
151        MinionExplosionES.MaxScale = 4.0;
152        MinionExplosionES.Shape = Shape.Circle;
153        MinionExplosionES.MinRotationSpeed = 500.0;
154        MinionExplosionES.MinAcceleration = 12.0;
155        MinionExplosionES.MaxAcceleration = 24.0;
156        MinionExplosionES.MinVelocity = 18.00;
157        MinionExplosionES.MaxVelocity = 30.00;
158        MinionExplosionES.MaxLifetime = MinionExplosionES.MaxLifetime * 1.00;
159        MinionExplosionES.MinLifetime = MinionExplosionES.MinLifetime * 1.00;
160        Add(MinionExplosionES);
161
162        MinionExplosionES2 = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minion_explosion.png")), 500);
163        MinionExplosionES2.OuterParticleImage = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minion_explosion_2.png"));
164        MinionExplosionES2.ScaleAmount = 0.0002;
165        MinionExplosionES2.MaxRotationSpeed = 800.0;
166        MinionExplosionES2.BlendMode = BlendMode.Alpha;
167        MinionExplosionES2.MinScale = 16.0;
168        MinionExplosionES2.MaxScale = 32.0;
169        MinionExplosionES2.Shape = Shape.Circle;
170        MinionExplosionES2.MinRotationSpeed = 250.0;
171        MinionExplosionES2.AlphaAmount = 0.8;
172        MinionExplosionES2.MinAcceleration = 3.0;
173        MinionExplosionES2.MaxAcceleration = 6.0;
174        MinionExplosionES2.MaxVelocity = 18.75;
175        MinionExplosionES2.MaxLifetime = MinionExplosionES2.MaxLifetime * 0.65;
176        MinionExplosionES2.MinLifetime = MinionExplosionES2.MinLifetime * 0.65;
177        Add(MinionExplosionES2);
178
179        AsteroidExplosionES = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "asteroid_explosion.png")), 2000);
180        AsteroidExplosionES.ScaleAmount = 0.0002;
181        AsteroidExplosionES.MaxRotationSpeed = 800.0;
182        AsteroidExplosionES.BlendMode = BlendMode.Alpha;
183        AsteroidExplosionES.MinScale = 4.0;
184        AsteroidExplosionES.MaxScale = 8.0;
185        AsteroidExplosionES.Shape = Shape.Circle;
186        AsteroidExplosionES.MinRotationSpeed = 350.0;
187        AsteroidExplosionES.AlphaAmount = 0.8;
188        AsteroidExplosionES.MinAcceleration = 6.0;
189        AsteroidExplosionES.MaxAcceleration = 12.0;
190        AsteroidExplosionES.MinVelocity = 36.75;
191        AsteroidExplosionES.MaxVelocity = 55.25;
192        AsteroidExplosionES.MaxLifetime = AsteroidExplosionES.MaxLifetime * 0.425;
193        AsteroidExplosionES.MinLifetime = AsteroidExplosionES.MinLifetime * 0.425;
194        Add(AsteroidExplosionES);
195
196        AsteroidExplosionES2 = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "asteroid_explosion.png")), 800);
197        AsteroidExplosionES2.ScaleAmount = 0.0002;
198        AsteroidExplosionES2.MaxRotationSpeed = 800.0;
199        AsteroidExplosionES2.BlendMode = BlendMode.Alpha;
200        AsteroidExplosionES2.MinScale = 10.0;
201        AsteroidExplosionES2.MaxScale = 18.0;
202        AsteroidExplosionES2.Shape = Shape.Circle;
203        AsteroidExplosionES2.MinRotationSpeed = 350.0;
204        AsteroidExplosionES2.AlphaAmount = 0.8;
205        AsteroidExplosionES2.MinAcceleration = 1.5;
206        AsteroidExplosionES2.MaxAcceleration = 3.0;
207        AsteroidExplosionES2.MinVelocity = 8.75;
208        AsteroidExplosionES2.MaxVelocity = 20.25;
209        AsteroidExplosionES2.MaxLifetime = AsteroidExplosionES2.MaxLifetime * 1.8;
210        AsteroidExplosionES2.MinLifetime = AsteroidExplosionES2.MinLifetime * 1.8;
211        Add(AsteroidExplosionES2);
212
213        WormholeExplosionES = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion.png")), 5000);
214        WormholeExplosionES.OuterParticleImage = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion_2.png"));
215        WormholeExplosionES.ScaleAmount = 0.0002;
216        WormholeExplosionES.MaxRotationSpeed = 1000.0;
217        WormholeExplosionES.BlendMode = BlendMode.Alpha;
218        WormholeExplosionES.MinScale = 1.5;
219        WormholeExplosionES.MaxScale = 5.0;
220        WormholeExplosionES.Shape = Shape.Circle;
221        WormholeExplosionES.MinRotationSpeed = 500.0;
222        WormholeExplosionES.AlphaAmount = 0.5;
223        WormholeExplosionES.MinAcceleration = 6.0;
224        WormholeExplosionES.MaxAcceleration = 12.0;
225        WormholeExplosionES.MaxVelocity = 125.0;
226        Add(WormholeExplosionES);
227
228        WormholeExplosionES2 = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion.png")), 5000);
229        WormholeExplosionES2.OuterParticleImage = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion_2.png"));
230        WormholeExplosionES2.ScaleAmount = 0.0002;
231        WormholeExplosionES2.MaxRotationSpeed = 1000.0;
232        WormholeExplosionES2.BlendMode = BlendMode.Alpha;
233        WormholeExplosionES2.MinScale = 16.0;
234        WormholeExplosionES2.MaxScale = 32.0;
235        WormholeExplosionES2.Shape = Shape.Circle;
236        WormholeExplosionES2.MinRotationSpeed = 500.0;
237        WormholeExplosionES2.AlphaAmount = 0.5;
238        WormholeExplosionES2.MinAcceleration = 6.0;
239        WormholeExplosionES2.MaxAcceleration = 12.0;
240        WormholeExplosionES2.MaxVelocity = 85.0;
241        Add(WormholeExplosionES2);
242    }
243
244    void LuoKentta()
245    {
246        PhysicsObject vasenReuna = Level.CreateLeftBorder();
247        vasenReuna.CollisionIgnoreGroup = 3;
248        vasenReuna.IsVisible = false;
249        PhysicsObject oikeaReuna = Level.CreateRightBorder();
250        oikeaReuna.IsVisible = false;
251        oikeaReuna.CollisionIgnoreGroup = 3;
252        PhysicsObject ylaReuna = Level.CreateTopBorder();
253        ylaReuna.IsVisible = false;
254        ylaReuna.CollisionIgnoreGroup = 3;
255        PhysicsObject alaReuna = Level.CreateBottomBorder();
256        alaReuna.IsVisible = false;
257        alaReuna.CollisionIgnoreGroup = 3;
258
259        Level.BackgroundColor = Color.Black;
260
261        Camera.ZoomToLevel();
262
263        LuoPelaaja(300);
264        Pelaaja[0].Tag = 11;
265        Pelaaja[0].CollisionIgnoreGroup = 1;
266        LuoPelaaja(-300);
267        Pelaaja[1].CollisionIgnoreGroup = 2;
268        Pelaaja[1].Tag = 12;
269    }
270
271    void LuoPelaaja(double x)
272    {
273        PhysicsObject pelaaja = new PhysicsObject(20, 20);
274
275        pelaaja.X = x;
276        pelaaja.Y = -250;
277        pelaaja.Restitution = 0.5;
278        pelaaja.AngularDamping = 0.1;
279        pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees + 90);
280        pelaaja.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "player.png"));
281        Pelaaja.Add(pelaaja);
282        Add(Pelaaja[Pelaaja.Count - 1]);
283    }
284
285    void LuoAjastin()
286    {
287        MadonreikaAjastin = new Timer();
288        MadonreikaAjastin.Interval = 5;
289        MadonreikaAjastin.Timeout += new Action(NaytaAnimaatio);
290        MadonreikaAjastin.Start();
291
292        Minioniajastin = new Timer();
293        Minioniajastin.Interval = 20;
294        Minioniajastin.Timeout += new Action(Minioniajastin_Timeout);
295        Minioniajastin.Start();
296
297        Minioninliikuttaja = new Timer();
298        Minioninliikuttaja.Interval = 0.1; // ei pienene
299        Minioninliikuttaja.Timeout += new Action(Minioninliikuttaja_Timeout);
300        Minioninliikuttaja.Start();
301
302        Automaattiammus = new Timer();
303        Automaattiammus.Interval = 0.2; // ei pienene
304        Automaattiammus.Timeout += new Action(Automaattiammus_Timeout);
305        Automaattiammus.Start();
306
307        MinioninAmmus = new Timer();
308        MinioninAmmus.Interval = 1.0;
309        MinioninAmmus.Timeout += new Action(MinioninAmmus_Timeout);
310        MinioninAmmus.Start();
311
312        Asteroidiajastin = new Timer();
313        Asteroidiajastin.Interval = RandomGen.NextDouble (5, 12);
314        Asteroidiajastin.Timeout += new Action(Asteroidiajastin_Timeout);
315        Asteroidiajastin.Start();
316
317        TuhoaAsteroidi = new Timer();
318        TuhoaAsteroidi.Interval = 30.0;
319        TuhoaAsteroidi.Timeout += new Action(TuhoaAsteroidi_Timeout);
320        TuhoaAsteroidi.Start();
321
322        Vaikeuttaja = new Timer();
323        Vaikeuttaja.Interval = 5.0;
324        Vaikeuttaja.Timeout += new Action(Vaikeuttaja_Timeout);
325        Vaikeuttaja.Start();
326
327        EnergianLataaja = new Timer();
328        EnergianLataaja.Interval = 5.0;
329        EnergianLataaja.Timeout += new Action(EnergianLataaja_Timeout);
330        EnergianLataaja.Start();
331
332        Konekivaari1 = new Timer();
333        Konekivaari1.Interval = 0.05;
334        Konekivaari1.Timeout += new Action(Konekivaari1_Timeout);
335
336        Konekivaari2 = new Timer();
337        Konekivaari2.Interval = 0.05;
338        Konekivaari2.Timeout += new Action(Konekivaari2_Timeout);
339
340        Triplefire1 = new Timer();
341        Triplefire1.Interval = 0.2;
342    }
343
344    void Konekivaari1_Timeout()
345    {
346        if (Keyboard.GetKeyState(Key.RightShift) == ButtonState.Down)
347            LuoPelaajanAmmus(0);
348    }
349
350
351    void Konekivaari2_Timeout()
352    {
353        if (Keyboard.GetKeyState(Key.LeftShift) == ButtonState.Down)
354           LuoPelaajanAmmus(1);
355    }
356
357    void Vaikeuttaja_Timeout()
358    {
359        MadonreikaAjastin.Interval = MadonreikaAjastin.Interval * 0.9;
360        Minioniajastin.Interval = Minioniajastin.Interval * 0.9;
361        Asteroidiajastin.Interval = Asteroidiajastin.Interval * 0.9;
362        MinioninAmmus.Interval = MinioninAmmus.Interval * 0.95;
363        Vaikeuttaja.Interval = Vaikeuttaja.Interval * 1.2;
364    }
365
366    void EnergianLataaja_Timeout()
367    {
368        if (ALTKHandler.HealthBars[0].Value < 100 &&
369            !Pelaaja[0].IsDestroyed)
370            ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value + 1;
371
372        if (ALTKHandler.HealthBars[1].Value < 100 &&
373            !Pelaaja[1].IsDestroyed)
374            ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value + 1;
375    }
376
377    void TuhoaAsteroidi_Timeout()
378    {
379        Timer.SingleShot(0.0, AsteroidinTuhoaja);
380    }
381
382    void Asteroidiajastin_Timeout()
383    {
384        Timer.SingleShot(0.0, LuoAsteroidi);
385    }
386
387    void LuoPelaajanAmmus(int pelaajaID)
388    {
389        if (Pelaaja[pelaajaID].IsDestroyed)
390        {
391            return;
392        }
393        Projectile PelaajanAmmus = new Projectile(4.0, 4.0, Color.Green);
394
395        PelaajanAmmus.Shape = Shape.Rectangle;
396
397        PelaajanAmmus.Angle = Pelaaja[pelaajaID].Angle;
398        PelaajanAmmus.Width = 12;
399        PelaajanAmmus.Height = 3;
400        PelaajanAmmus.Position = Pelaaja[pelaajaID].Position; 
401       
402        Vector jotain = Vector.FromLengthAndAngle(25.0, Pelaaja[pelaajaID].Angle);
403        PelaajanAmmus.Position = PelaajanAmmus.Position + jotain;
404        PelaajanAmmus.Mass = 1;
405
406        AddCollisionHandler(PelaajanAmmus, PelaajanAmmuksenTuhoaja);
407
408        PelaajanAmmus.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "playerProjectile.png"));
409
410        if (pelaajaID == 0)
411        {
412            PelaajanAmmus.Tag = 1;
413            PelaajanAmmus.CollisionIgnoreGroup = 1;
414        }
415        else
416        {
417            PelaajanAmmus.Tag = 2;
418            PelaajanAmmus.CollisionIgnoreGroup = 2;
419        }
420        PelaajanAmmus.CollisionIgnoreGroup = 100;
421        Add(PelaajanAmmus);
422        Vector Pelaajanammus = jotain * 40;
423        PelaajanAmmus.Hit(Pelaajanammus);
424        ALTKHandler.SoundPlayer.PlaySound(0);
425    }
426
427    void PelaajanAmmuksenTuhoaja(PhysicsObject PelaajanAmmus, PhysicsObject kohde)
428    {
429        PelaajanAmmus.Destroy();
430
431        try
432        {
433            int tagi = (int)kohde.Tag;
434            int ammuksenTagi = (int)PelaajanAmmus.Tag;
435
436            if (tagi == 5)
437            {
438                MinionExplosionES.AddEffect(kohde.Position, 800);
439                MinionExplosionES2.AddEffect(kohde.Position, 100);
440                ALTKHandler.StaticAnimHandler.AddStaticAnim(17, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
441                ALTKHandler.StaticAnimHandler.AddStaticAnim(18, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
442                kohde.Destroy();
443                if (ammuksenTagi == 1)
444                {
445                    LisaaPisteita(0, Convert.ToInt32(10 * Pelaajan1Kerroin));
446                }
447                else
448                {
449                    LisaaPisteita(1, Convert.ToInt32(10 * Pelaajan1Pisteet));
450                }
451            }
452            else if (tagi == 1337)
453            {
454                kohde.MaxVelocity = kohde.MaxVelocity - 1.0;
455
456                WormholeExplosionES.AddEffect(PelaajanAmmus.Position, 150);
457                WormholeExplosionES2.AddEffect(PelaajanAmmus.Position, 5);
458
459                if (ammuksenTagi == 1)
460                {
461                    LisaaPisteita(0, Convert.ToInt32 (2 * Pelaajan1Kerroin));
462                }
463                else
464                {
465                    LisaaPisteita(1, Convert.ToInt32(2 * Pelaajan2Kerroin));
466                }
467
468                if (kohde.MaxVelocity < 1)
469                {
470                    WormholeExplosionES.AddEffect(kohde.Position, 500);
471                    WormholeExplosionES2.AddEffect(kohde.Position, 150);
472                    ALTKHandler.StaticAnimHandler.AddStaticAnim(15, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
473                    kohde.Destroy();
474                    if (ammuksenTagi == 1)
475                    {
476                        LisaaPisteita(0, Convert.ToInt32(13 * Pelaajan1Kerroin));
477                    }
478                    else
479                    {
480                        LisaaPisteita(1, Convert.ToInt32(13 * Pelaajan2Kerroin));
481                    }
482                }
483            }
484            else if (tagi == 123)
485            {
486                kohde.Mass = (Math.Abs((kohde.Left - kohde.Right) * (kohde.Top - kohde.Bottom))) / 20;
487                kohde.Size = kohde.Size * 0.84;
488
489                AsteroidHitEffect(PelaajanAmmus.Position);
490
491                if (ammuksenTagi == 1)
492                {
493                    LisaaPisteita(0, Convert.ToInt32((1 / kohde.Mass) * 500 * Pelaajan1Kerroin));
494
495                    if (kohde.Mass < 20)
496                    {
497                        TuhoaAsteroidiEfekti(kohde.Position);
498                        LisaaKerrointa(0, 0.5);
499                    }
500                }
501                else
502                {
503                    LisaaPisteita(1, Convert.ToInt32((1 / kohde.Mass) * 500 * Pelaajan2Kerroin));
504
505                    if (kohde.Mass < 20)
506                    {
507                        TuhoaAsteroidiEfekti(kohde.Position);
508                        LisaaKerrointa(1, 0.5);
509                    }
510                }
511            }
512            else if (tagi == 11)
513            {
514                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 5;
515                if (ALTKHandler.HealthBars[0].Value < 1)
516                {
517                    PelaajanTuhoaja();
518                }
519            }
520            else if (tagi == 12)
521            {
522                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 5;
523                PelaajanTuhoaja();
524
525            }
526            else if (tagi == 8)
527            {
528                MinionExplosionES.AddEffect(kohde.Position, 200);
529                kohde.Destroy();
530            }
531
532        }
533        catch
534        {
535        }
536    }
537
538    void MinioninTuhoaja(PhysicsObject minioni, PhysicsObject kohde)
539    {
540        try
541        {
542            int tagi = (int)kohde.Tag;
543            if (tagi == 11)
544            {
545                MinionExplosionES.AddEffect(kohde.Position, 800);
546                MinionExplosionES2.AddEffect(kohde.Position, 100);
547                ALTKHandler.StaticAnimHandler.AddStaticAnim(17, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
548                ALTKHandler.StaticAnimHandler.AddStaticAnim(18, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
549
550                PlayerHitES.AddEffect(kohde.Position, 150);
551                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 20;
552                minioni.Destroy();
553                PelaajanTuhoaja();
554                LisaaPisteita(0, Convert.ToInt32 ( 10 * Pelaajan1Kerroin));
555            }
556
557            if (tagi == 12)
558            {
559                MinionExplosionES.AddEffect(kohde.Position, 800);
560                MinionExplosionES2.AddEffect(kohde.Position, 100);
561                ALTKHandler.StaticAnimHandler.AddStaticAnim(17, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
562                ALTKHandler.StaticAnimHandler.AddStaticAnim(18, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
563
564                PlayerHitES.AddEffect(kohde.Position, 150);
565                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 20;
566                minioni.Destroy();
567                PelaajanTuhoaja();
568                LisaaPisteita(1, Convert.ToInt32 ( 10 * Pelaajan2Kerroin));
569            }
570
571        }
572        catch
573        {
574        }
575    }
576
577    void AsteroidiTormaa(PhysicsObject asteroidi, PhysicsObject kohde)
578    {
579        try
580        {
581            int tagi = (int)kohde.Tag;
582            if (tagi == 1)
583            {
584                kohde.Destroy();
585                AsteroidHitEffect(asteroidi.Position);
586                asteroidi.Mass = (Math.Abs((asteroidi.Left - asteroidi.Right) * (asteroidi.Top - asteroidi.Bottom))) / 20;
587                asteroidi.Size = asteroidi.Size * 0.86;
588                LisaaPisteita(0, Convert.ToInt32((1 / asteroidi.Mass) * 500 * Pelaajan1Kerroin));
589                if (asteroidi.Mass < 20)
590                {
591                    TuhoaAsteroidiEfekti(asteroidi.Position);
592                    asteroidi.Destroy();
593                    LisaaKerrointa(0, 0.5);
594                }
595            }
596            else if (tagi == 2)
597            {
598                kohde.Destroy();
599                AsteroidHitEffect(asteroidi.Position);
600                asteroidi.Mass = (Math.Abs((asteroidi.Left - asteroidi.Right) * (asteroidi.Top - asteroidi.Bottom))) / 20;
601                asteroidi.Size = asteroidi.Size * 0.86;
602                LisaaPisteita(1, Convert.ToInt32((1 / asteroidi.Mass) * 500 * Pelaajan2Kerroin));
603                if (asteroidi.Mass < 20)
604                {
605                    TuhoaAsteroidiEfekti(asteroidi.Position);
606                    asteroidi.Destroy();
607                    LisaaKerrointa(1, 0.5);
608                }
609
610            }
611
612            else if (tagi == 11)
613            {
614                ALTKHandler.HealthBars[0].Value = Convert.ToInt32(Convert.ToDouble(ALTKHandler.HealthBars[0].Value) * (1 - ((asteroidi.Mass / 360.0))));
615                PelaajanTuhoaja();
616            }
617            else if (tagi == 12)
618            {
619                ALTKHandler.HealthBars[1].Value = Convert.ToInt32(Convert.ToDouble(ALTKHandler.HealthBars[1].Value) * (1 - ((asteroidi.Mass / 360.0))));
620                PelaajanTuhoaja();
621            }
622        }
623        catch
624        {
625        }
626    }
627
628    private void AsteroidHitEffect(Vector position)
629    {
630        AsteroidExplosionES.AddEffect(position, 200);
631        ALTKHandler.StaticAnimHandler.AddStaticAnim(19,
632            ALTKHandler.CreateXNAVectorFromDoubles(position.X * ALTKConstants.JypeliToXNARatioX, position.Y * ALTKConstants.JypeliToXNARatioY));
633    }
634
635    private void TuhoaAsteroidiEfekti(Vector paikka)
636    {
637        AsteroidExplosionES.AddEffect(paikka, 400);
638        AsteroidExplosionES2.AddEffect(paikka, 200);
639        ALTKHandler.StaticAnimHandler.AddStaticAnim(20,
640            ALTKHandler.CreateXNAVectorFromDoubles(paikka.X * ALTKConstants.JypeliToXNARatioX, paikka.Y * ALTKConstants.JypeliToXNARatioY));
641    }
642
643    void Minioninliikuttaja_Timeout()
644    {
645        for (int minionID = 0; minionID < Minioni.Count; minionID++)
646        {
647            double etäisyys1 = 100000.0;
648            double etäisyys2 = 100000.0;
649            if (!Pelaaja[0].IsDestroyed)
650            {
651                double x1 = Math.Abs(Pelaaja[0].X - Minioni[minionID].X);
652                double y1 = Math.Abs(Pelaaja[0].Y - Minioni[minionID].Y);
653                etäisyys1 = Math.Sqrt(x1 + y1);
654            }
655
656            if (!Pelaaja[1].IsDestroyed)
657            {
658                double x2 = Math.Abs(Pelaaja[1].X - Minioni[minionID].X);
659                double y2 = Math.Abs(Pelaaja[1].Y - Minioni[minionID].Y);
660                etäisyys2 = Math.Sqrt(x2 + y2);
661            }
662            if (etäisyys1 > etäisyys2)
663            {
664                MinioninLiike(Minioni[minionID], 1);
665            }
666            else
667            {
668                MinioninLiike(Minioni[minionID], 0);
669            }
670        }
671    }
672
673    void Minioniajastin_Timeout()
674    {
675        Timer.SingleShot (2, AjaLuoMinioni);
676    }
677
678    void Automaattiammus_Timeout()
679    {
680        if (Keyboard.GetKeyState(Key.RightShift) == ButtonState.Down)
681        {
682            Timer.SingleShot(0, AjaLuoPelaajan1Ammus);
683        }
684
685        if (Keyboard.GetKeyState(Key.LeftShift) == ButtonState.Down)
686        {
687            Timer.SingleShot(0, AjaLuoPelaajan2Ammus);
688        }
689    }
690
691    void MinioninAmmus_Timeout()
692    {
693        Timer.SingleShot(RandomGen.NextDouble(0.5, 2), AjaLuoMinioninAmmus);
694    }
695
696    void AjaLuoPelaajan1Ammus()
697    {
698        LuoPelaajanAmmus(0);
699    }
700
701    void AjaLuoPelaajan2Ammus()
702    {
703        LuoPelaajanAmmus(1);
704    }
705
706    void AjaLuoMinioninAmmus()
707    {
708        for (int mId = 0; mId < Minioni.Count; mId++)
709        {
710            if (!Minioni[mId].IsDestroyed)
711            {
712                int jtn = RandomGen.NextInt(10000);
713                if (jtn > 5000)
714                {
715                    LuoMinioninAmmus(mId);
716                }
717            }
718        }
719    }
720
721    void AjaLuoMinioni()
722    {
723        for (int Madonreikaa = 0; Madonreikaa < Madonreika.Count; Madonreikaa++)
724        {
725            if (!Madonreika[Madonreikaa].IsDestroyed)
726                LuoMinioni(Madonreikaa);
727        }
728    }
729
730    void NaytaAnimaatio()
731    {
732        int arvo = RandomGen.NextInt(4);
733
734        double x = 0.0;
735        double y = 0.0;
736
737        // yläreuna
738        if (arvo == 0)
739        {
740            x = RandomGen.NextDouble(Level.Left + 30, Level.Right - 30);
741            y = RandomGen.NextDouble(Level.Top - 30, Level.Top - 300);
742        }
743        // alareuna
744        else if (arvo == 1)
745        {
746            x = RandomGen.NextDouble(Level.Left + 30, Level.Right - 30);
747            y = RandomGen.NextDouble(Level.Bottom + 30, Level.Bottom + 300);
748        }
749        // vasen reuna
750        else if (arvo == 2)
751        {
752            x = RandomGen.NextDouble(Level.Left + 30, Level.Left + 300);
753            y = RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30);
754        }
755        // oikea reuna
756        else
757        {
758            x = RandomGen.NextDouble(Level.Right - 30, Level.Right - 300);
759            y = RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30);
760        }
761
762        MadonreikaPosX = x;
763        MadonreikaPosY = y;
764
765        ALTKHandler.StaticAnimHandler.AddStaticAnim(16, ALTKHandler.CreateXNAVectorFromDoubles(x * 1.12, y * 1.12));
766
767        Timer.SingleShot(2, LuoMadonreika);
768    }
769
770    void LuoMadonreika()
771    {
772        PhysicsObject madonreika = PhysicsObject.CreateStaticObject(50, 50);
773
774        madonreika.X = MadonreikaPosX;
775        madonreika.Y = MadonreikaPosY;
776        madonreika.CollisionIgnoreGroup = 5;
777        madonreika.MaxVelocity = 15.0;
778        madonreika.Tag = 1337;
779        madonreika.Shape = Shape.Circle;
780        madonreika.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole.png"));
781        Madonreika.Add(madonreika);
782        AddCollisionHandler(madonreika, MadonreikaTormaa);
783        Add(madonreika, -3);
784        madonreika.AngularVelocity = 1;
785        LuoMinioni(Madonreika.Count - 1);
786
787        ALTKHandler.SoundPlayer.PlaySound(2);
788    }
789
790    void AsteroidinTuhoaja()
791    {
792        for (int asteroidiId = 0; asteroidiId < Asteroidi.Count; asteroidiId++)
793        {
794            if (Math.Abs(Asteroidi[asteroidiId].X) > 500.0 ||
795                Math.Abs(Asteroidi[asteroidiId].Y) > 500.0)
796            {
797                Asteroidi[asteroidiId].Destroy();
798
799                Asteroidi.RemoveAt(asteroidiId);
800                asteroidiId--;
801            }
802        }
803    }
804
805    void LuoAsteroidi()
806    {
807        int arvo = RandomGen.NextInt(4);
808
809        double x = 0.0;
810        double y = 0.0;
811
812        // yläreuna
813        if (arvo == 0)
814        {
815            x = RandomGen.NextDouble(Level.Left -60, Level.Right + 60);
816            y = Level.Top + 60;
817        }
818        // alareuna
819        else if (arvo == 1)
820        {
821            x = RandomGen.NextDouble(Level.Left - 60, Level.Right + 60);
822            y = Level.Bottom - 60;
823        }
824        // vasen reuna
825        else if (arvo == 2)
826        {
827            x = Level.Left - 60;
828            y = RandomGen.NextDouble(Level.Bottom - 60, Level.Top + 60);
829        }
830        // oikea reuna
831        else
832        {
833            x = Level.Right + 60;
834            y = RandomGen.NextDouble(Level.Bottom - 60, Level.Top + 60);
835        }
836        PhysicsObject asteroidi = new PhysicsObject (RandomGen.NextDouble (10, 60), RandomGen.NextDouble(10, 60));
837        asteroidi.Shape = Shape.Circle;
838        asteroidi.X = x;
839        asteroidi.Y = y;
840        asteroidi.Mass = (Math.Abs((asteroidi.Left - asteroidi.Right) * (asteroidi.Top - asteroidi.Bottom))) / 20;
841        asteroidi.Tag = 123;
842
843        Vector suunta = -asteroidi.Position;
844        Vector origo = Vector.FromLengthAndAngle(RandomGen.NextDouble(2000, 4000), suunta.Angle);
845        Vector ohi = new Vector (RandomGen.NextDouble(-3000.0, 3000.0), RandomGen.NextDouble(-3000.0, 3000.0));
846        Vector hit = origo + ohi;
847
848        Asteroidi.Add(asteroidi);
849        Add(Asteroidi[Asteroidi.Count -1], 0);
850        asteroidi.CollisionIgnoreGroup = 3;
851        AddCollisionHandler(Asteroidi[Asteroidi.Count - 1], AsteroidiTormaa);
852        asteroidi.Hit(hit);
853        asteroidi.AngularVelocity = RandomGen.NextDouble (4, -4);
854       
855    }
856
857    void LuoMinioni(int madonreikaID)
858    {
859        PhysicsObject minioni = new PhysicsObject(20, 20);
860
861        minioni.X = Madonreika[madonreikaID].X;
862        minioni.Y = Madonreika[madonreikaID].Y;
863        minioni.CollisionIgnoreGroup = 5;
864        minioni.Shape = Shape.Triangle;
865        minioni.Color = Color.Red;
866        minioni.Angle = (Pelaaja[1].Position - minioni.Position).Angle;
867        minioni.Hit(Vector.FromLengthAndAngle(100, minioni.Angle));
868        minioni.MaxVelocity = 100.0;
869        minioni.AngularDamping = 0.1;
870        minioni.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minion_ship.png"));
871        minioni.Tag = 5;
872        AddCollisionHandler(minioni, MinioninTuhoaja);
873        Minioni.Add(minioni);
874        Add(Minioni[Minioni.Count - 1]);
875        MinioninLiike(Minioni[Minioni.Count - 1], 0);
876    }
877
878    void MadonreikaTormaa (PhysicsObject madonreika, PhysicsObject kohde)
879    {
880        try
881        {
882            int tagi = (int)kohde.Tag;
883
884            if (tagi == 1)
885            {
886                LisaaPisteita(0, Convert.ToInt32 ( 2 * Pelaajan1Kerroin));
887            }
888            if (tagi == 2)
889            {
890                LisaaPisteita(1, Convert.ToInt32 ( 2 * Pelaajan2Kerroin));
891            }
892            if (tagi == 11)
893            {
894                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 17;
895                PlayerHitES.AddEffect(kohde.Position, 150);
896                PelaajanTuhoaja(); 
897            }
898            else if (tagi == 12)
899            {
900                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 17;
901                PlayerHitES.AddEffect(kohde.Position, 150);
902                PelaajanTuhoaja(); 
903            }
904        }
905        catch
906        {
907        }
908    }
909
910    void LuoMinioninAmmus(int minioniID)
911    {
912        Projectile minioninAmmus = new Projectile(4.0, 4.0, Color.Yellow);
913        minioninAmmus.Angle = Minioni[minioniID].Angle;
914        minioninAmmus.Shape = Shape.Rectangle;
915        minioninAmmus.Width = 8.0;
916        minioninAmmus.Height = 2.0;
917        Vector a = Vector.FromLengthAndAngle(25.0, Minioni[minioniID].Angle);
918        minioninAmmus.Position = Minioni[minioniID].Position + a;
919        minioninAmmus.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minionProjectile.png"));
920        AddCollisionHandler(minioninAmmus, MinioninAmmuksenTuhoaja);
921        minioninAmmus.Tag = 8;
922        minioninAmmus.CollisionIgnoreGroup = 5;
923        Add(minioninAmmus);
924        minioninAmmus.Mass = 0.5;
925        Vector b = Vector.FromLengthAndAngle(250.0, Minioni[minioniID].Angle);
926        minioninAmmus.Hit(b);
927        ALTKHandler.SoundPlayer.PlaySound(3);
928    }
929
930    void PelaajanTuhoaja()
931    {
932        if (ALTKHandler.HealthBars[0].Value < 1 && !Pelaaja[0].IsDestroyed)
933        {
934            ALTKHandler.StaticAnimHandler.AddStaticAnim(21,
935                ALTKHandler.AdjustJypeliVectorToXna(Pelaaja[0].X, Pelaaja[0].Y));
936
937            PlayerDeathES.AddEffect(Pelaaja[0].Position, 2000);
938            PlayerDeathESL.AddEffect(Pelaaja[0].Position, 4000);
939            PlayerDeathES2.AddEffect(Pelaaja[0].Position, 1400);
940
941            Pelaaja[0].Destroy();
942        }
943
944        if (ALTKHandler.HealthBars[1].Value < 1 && !Pelaaja[1].IsDestroyed)
945        {
946            ALTKHandler.StaticAnimHandler.AddStaticAnim(21,
947                ALTKHandler.AdjustJypeliVectorToXna(Pelaaja[1].X, Pelaaja[1].Y));
948
949            PlayerDeathES.AddEffect(Pelaaja[1].Position, 2000);
950            PlayerDeathESL.AddEffect(Pelaaja[1].Position, 4000);
951            PlayerDeathES2.AddEffect(Pelaaja[1].Position, 1400);
952
953            Pelaaja[1].Destroy();
954        } 
955
956    }
957
958    void MinioninAmmuksenTuhoaja(PhysicsObject minioninAmmus, PhysicsObject kohde)
959    {
960        minioninAmmus.Destroy();
961
962        try
963        {
964            int tagi = (int)kohde.Tag;
965            if (tagi == 11)
966            {
967                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 10 ;
968                PlayerHitES.AddEffect(kohde.Position, 150);
969                PelaajanTuhoaja();
970            }
971            else if (tagi == 12)
972            {
973                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 10;
974                PlayerHitES.AddEffect(kohde.Position, 150);
975                PelaajanTuhoaja();
976            }
977            else if (tagi == 1 ||
978                     tagi == 2)
979            {
980                MinionExplosionES.AddEffect(kohde.Position, 200);
981                kohde.Destroy();
982            }
983
984        }
985        catch
986        {
987        }
988    }
989
990    void MinioninLiike(PhysicsObject minioni, int pelaaja)
991    {
992        minioni.Angle = (Pelaaja[pelaaja].Position - minioni.Position).Angle;
993        Vector q = Vector.FromLengthAndAngle(5.0, minioni.Angle);
994        minioni.Hit(q);
995        return;
996    }
997
998    void LisaaPisteita(int pelaajaID, int pistemaara)
999    {
1000        if (pelaajaID == 0)
1001            Pelaajan1Pisteet = Pelaajan1Pisteet + pistemaara;
1002        if (pelaajaID == 1)
1003            Pelaajan2Pisteet = Pelaajan2Pisteet + pistemaara;
1004    }
1005
1006    void LisaaKerrointa(int pelaajaID, double kerroin)
1007    {
1008        if (pelaajaID == 0)
1009            Pelaajan1Kerroin = Pelaajan1Kerroin + kerroin;
1010        if (pelaajaID == 1)
1011            Pelaajan2Kerroin = Pelaajan2Kerroin + kerroin;
1012    }
1013
1014    void AsetaNappaimet()
1015    {
1016        Keyboard.Listen(Key.Up, ButtonState.Down, AlkuKiihdytys, null, Pelaaja[0]);
1017        Keyboard.Listen(Key.Up, ButtonState.Down, Kiihdyta, null, Pelaaja[0]);
1018        Keyboard.Listen(Key.Down, ButtonState.Down, Hidasta, null, Pelaaja[0]);
1019        Keyboard.Listen(Key.Left, ButtonState.Down, kaannaVasemmalle, null, Pelaaja[0]);
1020        Keyboard.Listen(Key.Right, ButtonState.Down, kaannaOikealle, null, Pelaaja[0]);
1021        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, LuoPelaajanAmmus, null, 0);
1022       
1023        Keyboard.Listen(Key.W, ButtonState.Down, AlkuKiihdytys, null, Pelaaja[1]);
1024        Keyboard.Listen(Key.W, ButtonState.Down, Kiihdyta, null, Pelaaja[1]);
1025        Keyboard.Listen(Key.S, ButtonState.Down, Hidasta, null, Pelaaja[1]);
1026        Keyboard.Listen(Key.A, ButtonState.Down, kaannaVasemmalle, null, Pelaaja[1]);
1027        Keyboard.Listen(Key.D, ButtonState.Down, kaannaOikealle, null, Pelaaja[1]);
1028        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, LuoPelaajanAmmus, null, 1);
1029
1030        Keyboard.Listen(Key.F11, ButtonState.Pressed, Reset, null);
1031    }
1032
1033    void AlkuKiihdytys(PhysicsObject pelaaja)
1034    {
1035        if (pelaaja.Velocity.Magnitude < 7)
1036        {
1037            Vector o = Vector.FromLengthAndAngle(50.0, pelaaja.Angle);
1038            pelaaja.Hit(o);
1039            ALTKHandler.SoundPlayer.PlaySound(1);
1040        }
1041    }
1042
1043    void Kiihdyta(PhysicsObject pelaaja)
1044    {
1045        Vector z = Vector.FromLengthAndAngle(5.0, pelaaja.Angle);
1046        pelaaja.Hit(z);
1047
1048        ALTKHandler.StaticAnimHandler.AddStaticAnim("ENGINE_SMOKE",
1049            ALTKHandler.CreateXNAVectorFromDoubles(pelaaja.Position.X * 1.125, pelaaja.Position.Y * 1.125));
1050    }
1051
1052    void Hidasta(PhysicsObject pelaaja)
1053    {
1054        pelaaja.Velocity = new Vector(pelaaja.Velocity.X * 0.95, pelaaja.Velocity.Y * 0.95);
1055    }
1056
1057    void kaannaVasemmalle(PhysicsObject pelaaja)
1058    {
1059        pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees + 4);
1060    }
1061
1062    void kaannaOikealle(PhysicsObject pelaaja)
1063    {
1064        pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees - 4);
1065    }
1066
1067    void PowerUps(PhysicsObject PowerUp, PhysicsObject kohde)
1068    {
1069        int arvo = RandomGen.NextInt(10);
1070        int pelaaja = (int)kohde.Tag;
1071
1072        if (arvo == 1)
1073        {
1074            //Energiaboosti
1075            PhysicsObject Energia10 = PhysicsObject.CreateStaticObject (25, 25, Shape.Hexagon);
1076            Energia10.Color = Color.Green;
1077            Energia10.CollisionIgnoreGroup = 5;
1078            Add(Energia10);
1079            if (pelaaja == 11)
1080            {
1081                if (ALTKHandler.HealthBars[0].Value < 80)
1082                {
1083                    ALTKHandler.HealthBars[0].Value = Convert.ToInt32(ALTKHandler.HealthBars[0].Value + 20);
1084                    Energia10.Destroy();
1085                }
1086                else
1087                {
1088                    ALTKHandler.HealthBars[0].Value = 100;
1089                }
1090                Energia10.Destroy();
1091            }
1092            else if (pelaaja == 22)
1093            {
1094                if (ALTKHandler.HealthBars[1].Value < 80)
1095                {
1096                    ALTKHandler.HealthBars[1].Value = Convert.ToInt32(ALTKHandler.HealthBars[1].Value + 20);
1097                }
1098                else
1099                {
1100                    ALTKHandler.HealthBars[1].Value = 100;
1101                }
1102                Energia10.Destroy();
1103            }
1104
1105        }
1106        else if (arvo == 3)
1107        {
1108            //Konekivääri
1109            PhysicsObject Konekivaari = PhysicsObject.CreateStaticObject(25, 25);
1110            Konekivaari.Color = Color.Blue;
1111            Add(Konekivaari);
1112
1113            if (pelaaja == 11)
1114            {
1115            Konekivaari1.Start(200);               
1116            Konekivaari.Destroy();
1117            }
1118            else if (pelaaja == 12)
1119            {
1120            Konekivaari1.Start(200);
1121            Konekivaari.Destroy();
1122            }
1123           
1124        }
1125        else if (arvo == 4)
1126        {
1127            //Triplefire
1128            PhysicsObject TripleFire = PhysicsObject.CreateStaticObject(25, 25, Shape.Triangle);
1129
1130            if (pelaaja == 11)
1131            {
1132                Triplefire1.Start(50);
1133                TripleFire.Destroy();
1134            }
1135            else if (pelaaja == 22)
1136            {
1137                Triplefire2.Start(50);
1138                TripleFire.Destroy();
1139            }
1140        }
1141        else if (arvo == 5)
1142        {
1143            //Full restore
1144        }
1145        else
1146        {
1147        }
1148    }
1149
1150    void Reset()
1151    {
1152        ClearAll();
1153        Asteroidi.Clear();
1154        Minioni.Clear();
1155        Pelaaja.Clear();
1156        Madonreika.Clear();
1157        Begin();
1158        ALTKHandler.HealthBars[0].Value = 100;
1159        ALTKHandler.HealthBars[1].Value = 100;
1160    }
1161
1162    #region XNA / ALTK-Based Code
1163
1164    private void HandleCursor(AnalogState analogState)
1165    {
1166        Kursori.AbsolutePosition = new Vector(Kursori.Position.X + analogState.MouseMovement.X, Kursori.Position.Y + analogState.MouseMovement.Y);
1167    }
1168
1169    protected override void Initialize()
1170    {
1171        base.Initialize();
1172
1173        InitALTK();
1174    }
1175
1176    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
1177    {
1178        base.Update(gameTime);
1179
1180        if (Kursori.Position.X > ALTKConstants.WindowWidth / 2.0)
1181            Kursori.MoveTo(new Vector(ALTKConstants.WindowWidth / 2.0, Kursori.Position.Y), 1000000.0);
1182        else if (Kursori.Position.X < ALTKConstants.WindowWidth / -2.0)
1183            Kursori.MoveTo(new Vector(ALTKConstants.WindowWidth / -2.0, Kursori.Position.Y), 1000000.0);
1184
1185        if (Kursori.Position.Y > ALTKConstants.WindowHeight / 2.0)
1186            Kursori.MoveTo(new Vector(Kursori.Position.X, ALTKConstants.WindowHeight / 2.0), 1000000.0);
1187        else if (Kursori.Position.Y < ALTKConstants.WindowHeight / -2.0)
1188            Kursori.MoveTo(new Vector(Kursori.Position.X, ALTKConstants.WindowHeight / -2.0), 1000000.0);
1189
1190        ALTK.Cursor.SecPosX = Convert.ToInt32((ALTKConstants.WindowWidth / 2) + Kursori.Position.X * 1.12);
1191        ALTK.Cursor.SecPosY = Convert.ToInt32(ALTK.ALTKConstants.WindowHeight - ((ALTKConstants.WindowHeight / 2) + Kursori.Position.Y * 1.12));
1192
1193        if (ALTK.GameHandler.DoUpdate)
1194        {
1195        }
1196        else
1197        {
1198            //PhysicsEnabled = false;
1199        }
1200    }
1201
1202    /// <summary>
1203    /// Initializes the ALTKEngine components used by the game. -Rampastring
1204    /// </summary>
1205    private void InitALTK()
1206    {
1207        ALTKConstants.WindowWidth = this.Window.ClientBounds.Width;
1208        ALTKConstants.WindowHeight = this.Window.ClientBounds.Height;
1209
1210        altkHandler = new ALTKHandler(this);
1211        altkHandler.Initialize();
1212        this.Components.Add(altkHandler);
1213
1214        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARS_1", new Microsoft.Xna.Framework.Vector2(0, 0));
1215        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARS_2", new Microsoft.Xna.Framework.Vector2(0, 0));
1216
1217        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY", new Microsoft.Xna.Framework.Vector2(0, 0));
1218        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY_BLUE", new Microsoft.Xna.Framework.Vector2(0, 0));
1219        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY_RED", new Microsoft.Xna.Framework.Vector2(200, 100));
1220        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY_WHITE", new Microsoft.Xna.Framework.Vector2(0, 0));
1221
1222        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE", new Microsoft.Xna.Framework.Vector2(200, -250));
1223        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE_BLUE", new Microsoft.Xna.Framework.Vector2(400, 250));
1224        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE_RED", new Microsoft.Xna.Framework.Vector2(-350, -200));
1225        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE_WHITE", new Microsoft.Xna.Framework.Vector2(-300, 250));
1226
1227    }
1228
1229    private void ShowExit()
1230    {
1231        //this.StopAll();
1232        if (!ALTKHandler.ExitWindow.Enabled)
1233        {
1234            ALTKHandler.ExitWindow.Enabled = true;
1235            ALTKHandler.ExitWindow.Visible = true;
1236
1237            Kursori.IsVisible = true;
1238        }
1239    }
1240
1241    #endregion
1242}
Note: See TracBrowser for help on using the repository browser.