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

Revision 2826, 28.6 KB checked in by ramipasa, 9 years ago (diff)
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
31    ExplosionSystem WormholeExplosionES;
32    ExplosionSystem WormholeExplosionES2;
33
34    double MadonreikaPosX = 0.0;
35    double MadonreikaPosY = 0.0;
36
37    public override void Begin()
38    {
39        #region Cursor handling
40        Kursori = new GameObject(32, 32);
41        Kursori.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "cursor.png"));
42        Kursori.IsVisible = false;
43        AnalogHandler handler = new AnalogHandler(HandleCursor);
44        Mouse.ListenMovement(0.1, handler, "");
45        Add(Kursori);
46        #endregion
47        LuoKentta();
48        AsetaNappaimet();
49        LuoAjastin();
50        //LuoMadonreika();
51        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
52        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ShowExit, "Lopeta peli");
53        WormholeExplosion();
54
55    }
56
57    void WormholeExplosion()
58    {
59
60        WormholeExplosionES = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion.png")), 5000);
61        WormholeExplosionES.OuterParticleImage = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion_2.png"));
62        WormholeExplosionES.ScaleAmount = 0.0002;
63        WormholeExplosionES.MaxRotationSpeed = 1000.0;
64        WormholeExplosionES.BlendMode = BlendMode.Alpha;
65        WormholeExplosionES.MinScale = 1.5;
66        WormholeExplosionES.MaxScale = 5.0;
67        WormholeExplosionES.Shape = Shape.Circle;
68        WormholeExplosionES.MinRotationSpeed = 500.0;
69        WormholeExplosionES.AlphaAmount = 0.5;
70        WormholeExplosionES.MinAcceleration = 6.0;
71        WormholeExplosionES.MaxAcceleration = 12.0;
72        WormholeExplosionES.MaxVelocity = 125.0;
73        Add(WormholeExplosionES);
74
75        WormholeExplosionES2 = new ExplosionSystem(Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion.png")), 5000);
76        WormholeExplosionES2.OuterParticleImage = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole_explosion_2.png"));
77        WormholeExplosionES2.ScaleAmount = 0.0002;
78        WormholeExplosionES2.MaxRotationSpeed = 1000.0;
79        WormholeExplosionES2.BlendMode = BlendMode.Alpha;
80        WormholeExplosionES2.MinScale = 16.0;
81        WormholeExplosionES2.MaxScale = 32.0;
82        WormholeExplosionES2.Shape = Shape.Circle;
83        WormholeExplosionES2.MinRotationSpeed = 500.0;
84        WormholeExplosionES2.AlphaAmount = 0.5;
85        WormholeExplosionES2.MinAcceleration = 6.0;
86        WormholeExplosionES2.MaxAcceleration = 12.0;
87        WormholeExplosionES2.MaxVelocity = 85.0;
88        Add(WormholeExplosionES2);
89    }
90
91    void LuoKentta()
92    {
93        PhysicsObject vasenReuna = Level.CreateLeftBorder();
94        vasenReuna.CollisionIgnoreGroup = 3;
95        vasenReuna.IsVisible = false;
96        PhysicsObject oikeaReuna = Level.CreateRightBorder();
97        oikeaReuna.IsVisible = false;
98        oikeaReuna.CollisionIgnoreGroup = 3;
99        PhysicsObject ylaReuna = Level.CreateTopBorder();
100        ylaReuna.IsVisible = false;
101        ylaReuna.CollisionIgnoreGroup = 3;
102        PhysicsObject alaReuna = Level.CreateBottomBorder();
103        alaReuna.IsVisible = false;
104        alaReuna.CollisionIgnoreGroup = 3;
105
106        Level.BackgroundColor = Color.Black;
107
108        Camera.ZoomToLevel();
109
110        LuoPelaaja(300);
111        Pelaaja[0].Tag = 11;
112        Pelaaja[0].CollisionIgnoreGroup = 1;
113        LuoPelaaja(-300);
114        Pelaaja[1].CollisionIgnoreGroup = 2;
115        Pelaaja[1].Tag = 12;
116    }
117
118    void LuoPelaaja(double x)
119    {
120        PhysicsObject pelaaja = new PhysicsObject(20, 20);
121
122        pelaaja.X = x;
123        pelaaja.Y = -250;
124        pelaaja.Restitution = 0.5;
125        pelaaja.AngularDamping = 0.1;
126        pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees + 90);
127        pelaaja.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "player.png"));
128        Pelaaja.Add(pelaaja);
129        Add(Pelaaja[Pelaaja.Count - 1]);
130    }
131
132    void LuoAjastin()
133    {
134        MadonreikaAjastin = new Timer();
135        MadonreikaAjastin.Interval = 5;
136        MadonreikaAjastin.Timeout += new Action(NaytaAnimaatio);
137        MadonreikaAjastin.Start();
138
139        Minioniajastin = new Timer();
140        Minioniajastin.Interval = 20;
141        Minioniajastin.Timeout += new Action(Minioniajastin_Timeout);
142        Minioniajastin.Start();
143
144        Minioninliikuttaja = new Timer();
145        Minioninliikuttaja.Interval = 0.1; // ei pienene
146        Minioninliikuttaja.Timeout += new Action(Minioninliikuttaja_Timeout);
147        Minioninliikuttaja.Start();
148
149        Automaattiammus = new Timer();
150        Automaattiammus.Interval = 0.2; // ei pienene
151        Automaattiammus.Timeout += new Action(Automaattiammus_Timeout);
152        Automaattiammus.Start();
153
154        MinioninAmmus = new Timer();
155        MinioninAmmus.Interval = 1.0;
156        MinioninAmmus.Timeout += new Action(MinioninAmmus_Timeout);
157        MinioninAmmus.Start();
158
159        Asteroidiajastin = new Timer();
160        Asteroidiajastin.Interval = RandomGen.NextDouble (5, 12);
161        Asteroidiajastin.Timeout += new Action(Asteroidiajastin_Timeout);
162        Asteroidiajastin.Start();
163
164        TuhoaAsteroidi = new Timer();
165        TuhoaAsteroidi.Interval = 30.0;
166        TuhoaAsteroidi.Timeout += new Action(TuhoaAsteroidi_Timeout);
167        TuhoaAsteroidi.Start();
168
169        EnergianLataaja = new Timer();
170        EnergianLataaja.Interval = 5.0;
171        EnergianLataaja.Timeout += new Action(EnergianLataaja_Timeout);
172        EnergianLataaja.Start();
173    }
174
175    void EnergianLataaja_Timeout()
176    {
177        if (;
178    }
179
180    void TuhoaAsteroidi_Timeout()
181    {
182        Timer.SingleShot(0.0, AsteroidinTuhoaja);
183    }
184
185    void Asteroidiajastin_Timeout()
186    {
187        Timer.SingleShot(0.0, LuoAsteroidi);
188    }
189
190    void LuoPelaajanAmmus(int pelaajaID)
191    {
192        if (Pelaaja[pelaajaID].IsDestroyed)
193        {
194            return;
195        }
196        Projectile PelaajanAmmus = new Projectile(4.0, 4.0, Color.Green);
197
198        PelaajanAmmus.Shape = Shape.Rectangle;
199
200        PelaajanAmmus.Angle = Pelaaja[pelaajaID].Angle;
201        PelaajanAmmus.Width = 12;
202        PelaajanAmmus.Height = 3;
203        PelaajanAmmus.Position = Pelaaja[pelaajaID].Position; 
204       
205        Vector jotain = Vector.FromLengthAndAngle(25.0, Pelaaja[pelaajaID].Angle);
206        PelaajanAmmus.Position = PelaajanAmmus.Position + jotain;
207        PelaajanAmmus.Mass = 1;
208
209        AddCollisionHandler(PelaajanAmmus, PelaajanAmmuksenTuhoaja);
210
211        PelaajanAmmus.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "playerProjectile.png"));
212
213        if (pelaajaID == 0)
214        {
215            PelaajanAmmus.Tag = 1;
216            PelaajanAmmus.CollisionIgnoreGroup = 1;
217        }
218        else
219        {
220            PelaajanAmmus.Tag = 2;
221            PelaajanAmmus.CollisionIgnoreGroup = 2;
222        }
223        PelaajanAmmus.CollisionIgnoreGroup = 100;
224        Add(PelaajanAmmus);
225        Vector Pelaajanammus = jotain * 40;
226        PelaajanAmmus.Hit(Pelaajanammus);
227        ALTKHandler.SoundPlayer.PlaySound(0);
228    }
229
230    void PelaajanAmmuksenTuhoaja(PhysicsObject PelaajanAmmus, PhysicsObject kohde)
231    {
232        PelaajanAmmus.Destroy();
233
234        try
235        {
236            int tagi = (int)kohde.Tag;
237            if (tagi == 5 ||
238                tagi == 8)
239            {
240                kohde.Destroy();
241            }
242            else if (tagi == 1337)
243            {
244                kohde.MaxVelocity = kohde.MaxVelocity - 1.0;
245                if (kohde.MaxVelocity < 1)
246                {
247                    WormholeExplosionES.AddEffect(kohde.Position, 500);
248                    WormholeExplosionES2.AddEffect(kohde.Position, 150);
249                    ALTKHandler.StaticAnimHandler.AddStaticAnim(15, ALTKHandler.CreateXNAVectorFromDoubles(kohde.X * 1.12, kohde.Y * 1.12));
250                    kohde.Destroy();
251                }
252            }
253            else if (tagi == 123)
254            {
255                kohde.Mass = kohde.Mass * 0.7;
256                kohde.Size = kohde.Size * 0.7;
257                if (kohde.Mass < 20)
258                {
259                    kohde.Destroy();
260                }
261            }
262            else if (tagi == 11)
263            {
264                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 5;
265                if (ALTKHandler.HealthBars[0].Value < 1)
266                {
267                    PelaajanTuhoaja();
268                }
269            }
270            else if (tagi == 12)
271            {
272                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 5;
273                PelaajanTuhoaja();
274            }           
275        }
276        catch
277        {
278        }
279    }
280
281    void MinioninTuhoaja(PhysicsObject minioni, PhysicsObject kohde)
282    {
283        try
284        {
285            int tagi = (int)kohde.Tag;
286            if (tagi == 11)
287            {
288                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 20;
289                minioni.Destroy();
290                PelaajanTuhoaja();
291            }
292
293            if (tagi == 12)
294            {
295                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 20;
296                minioni.Destroy();
297                PelaajanTuhoaja();
298            }
299
300        }
301        catch
302        {
303        }
304    }
305
306    void AsteroidiTormaa(PhysicsObject asteroidi, PhysicsObject kohde)
307    {
308        try
309        {
310            int tagi = (int)kohde.Tag;
311            if (tagi == 1 ||
312                tagi == 2)
313            {
314                kohde.Destroy();
315                asteroidi.Mass = asteroidi.Mass * 0.7;
316                asteroidi.Size = asteroidi.Size * 0.7;
317                if (asteroidi.Mass < 20)
318                {
319                    asteroidi.Destroy();
320                }
321            }
322            else if (tagi == 11)
323            {
324                ALTKHandler.MessageDisplay.AddItem(Convert.ToString(Convert.ToDouble(ALTKHandler.HealthBars[0].Value) * (1 - ((asteroidi.Mass  / 360.0)))));
325                ALTKHandler.HealthBars[0].Value = Convert.ToInt32(Convert.ToDouble(ALTKHandler.HealthBars[0].Value) * (1 - ((asteroidi.Mass  / 360.0))));
326                PelaajanTuhoaja();
327            }
328            else if (tagi == 12)
329            {
330                ALTKHandler.MessageDisplay.AddItem(Convert.ToString(Convert.ToDouble(ALTKHandler.HealthBars[1].Value) * (1 - ((asteroidi.Mass  / 360.0)))));
331                ALTKHandler.HealthBars[1].Value = Convert.ToInt32(Convert.ToDouble(ALTKHandler.HealthBars[1].Value) * (1 - ((asteroidi.Mass  / 360.0))));
332                PelaajanTuhoaja();
333            }
334        }
335        catch
336        {
337        }
338    }
339
340    void Minioninliikuttaja_Timeout()
341    {
342        for (int minionID = 0; minionID < Minioni.Count; minionID++)
343        {
344            double etäisyys1 = 100000.0;
345            double etäisyys2 = 100000.0;
346            if (!Pelaaja[0].IsDestroyed)
347            {
348                double x1 = Math.Abs(Pelaaja[0].X - Minioni[minionID].X);
349                double y1 = Math.Abs(Pelaaja[0].Y - Minioni[minionID].Y);
350                etäisyys1 = Math.Sqrt(x1 + y1);
351            }
352
353            if (!Pelaaja[1].IsDestroyed)
354            {
355                double x2 = Math.Abs(Pelaaja[1].X - Minioni[minionID].X);
356                double y2 = Math.Abs(Pelaaja[1].Y - Minioni[minionID].Y);
357                etäisyys2 = Math.Sqrt(x2 + y2);
358            }
359            if (etäisyys1 > etäisyys2)
360            {
361                MinioninLiike(Minioni[minionID], 1);
362            }
363            else
364            {
365                MinioninLiike(Minioni[minionID], 0);
366            }
367        }
368    }
369
370    void Minioniajastin_Timeout()
371    {
372        Timer.SingleShot (2, AjaLuoMinioni);
373    }
374
375    void Automaattiammus_Timeout()
376    {
377        if (Keyboard.GetKeyState(Key.RightShift) == ButtonState.Down)
378        {
379            Timer.SingleShot(0, AjaLuoPelaajan1Ammus);
380        }
381
382        if (Keyboard.GetKeyState(Key.LeftShift) == ButtonState.Down)
383        {
384            Timer.SingleShot(0, AjaLuoPelaajan2Ammus);
385        }
386    }
387
388    void MinioninAmmus_Timeout()
389    {
390        Timer.SingleShot(RandomGen.NextDouble(0.5, 2), AjaLuoMinioninAmmus);
391    }
392
393    void AjaLuoPelaajan1Ammus()
394    {
395        LuoPelaajanAmmus(0);
396    }
397
398    void AjaLuoMinioninAmmus()
399    {
400        for (int mId = 0; mId < Minioni.Count; mId++)
401        {
402            if (!Minioni[mId].IsDestroyed)
403            {
404                int jtn = RandomGen.NextInt(10000);
405                if (jtn > 5000)
406                {
407                    LuoMinioninAmmus(mId);
408                }
409            }
410        }
411    }
412
413    void AjaLuoPelaajan2Ammus()
414    {
415        LuoPelaajanAmmus(1);
416    }
417
418    void AjaLuoMinioni()
419    {
420        for (int Madonreikaa = 0; Madonreikaa < Madonreika.Count; Madonreikaa++)
421        {
422            if (!Madonreika[Madonreikaa].IsDestroyed)
423                LuoMinioni(Madonreikaa);
424        }
425    }
426
427    void NaytaAnimaatio()
428    {
429        int arvo = RandomGen.NextInt(4);
430
431        double x = 0.0;
432        double y = 0.0;
433
434        // yläreuna
435        if (arvo == 0)
436        {
437            x = RandomGen.NextDouble(Level.Left + 30, Level.Right - 30);
438            y = RandomGen.NextDouble(Level.Top - 30, Level.Top - 300);
439        }
440        // alareuna
441        else if (arvo == 1)
442        {
443            x = RandomGen.NextDouble(Level.Left + 30, Level.Right - 30);
444            y = RandomGen.NextDouble(Level.Bottom + 30, Level.Bottom + 300);
445        }
446        // vasen reuna
447        else if (arvo == 2)
448        {
449            x = RandomGen.NextDouble(Level.Left + 30, Level.Left + 300);
450            y = RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30);
451        }
452        // oikea reuna
453        else
454        {
455            x = RandomGen.NextDouble(Level.Right - 30, Level.Right - 300);
456            y = RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30);
457        }
458
459        MadonreikaPosX = x;
460        MadonreikaPosY = y;
461
462        ALTKHandler.StaticAnimHandler.AddStaticAnim(16, ALTKHandler.CreateXNAVectorFromDoubles(x * 1.12, y * 1.12));
463
464        Timer.SingleShot(2, LuoMadonreika);
465    }
466
467    void LuoMadonreika()
468    {
469        PhysicsObject madonreika = PhysicsObject.CreateStaticObject(50, 50);
470
471        madonreika.X = MadonreikaPosX;
472        madonreika.Y = MadonreikaPosY;
473        madonreika.CollisionIgnoreGroup = 5;
474        madonreika.MaxVelocity = 15.0;
475        madonreika.Tag = 1337;
476        madonreika.Shape = Shape.Circle;
477        madonreika.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "wormhole.png"));
478        Madonreika.Add(madonreika);
479        AddCollisionHandler(madonreika, MadonreikaTormaa);
480        Add(madonreika, -3);
481        madonreika.AngularVelocity = 1;
482        LuoMinioni(Madonreika.Count - 1);
483
484        ALTKHandler.SoundPlayer.PlaySound(2);
485    }
486
487    void AsteroidinTuhoaja()
488    {
489        for (int asteroidiId = 0; asteroidiId < Asteroidi.Count; asteroidiId++)
490        {
491            if (Math.Abs(Asteroidi[asteroidiId].X) > 500.0 ||
492                Math.Abs(Asteroidi[asteroidiId].Y) > 500.0)
493            {
494                Asteroidi[asteroidiId].Destroy();
495                Asteroidi.RemoveAt(asteroidiId);
496                asteroidiId--;
497            }
498        }
499    }
500
501    void LuoAsteroidi()
502    {
503        int arvo = RandomGen.NextInt(4);
504
505        double x = 0.0;
506        double y = 0.0;
507
508        // yläreuna
509        if (arvo == 0)
510        {
511            x = RandomGen.NextDouble(Level.Left -60, Level.Right + 60);
512            y = Level.Top + 60;
513        }
514        // alareuna
515        else if (arvo == 1)
516        {
517            x = RandomGen.NextDouble(Level.Left - 60, Level.Right + 60);
518            y = Level.Bottom - 60;
519        }
520        // vasen reuna
521        else if (arvo == 2)
522        {
523            x = Level.Left - 60;
524            y = RandomGen.NextDouble(Level.Bottom - 60, Level.Top + 60);
525        }
526        // oikea reuna
527        else
528        {
529            x = Level.Right + 60;
530            y = RandomGen.NextDouble(Level.Bottom - 60, Level.Top + 60);
531        }
532        PhysicsObject asteroidi = new PhysicsObject (RandomGen.NextDouble (10, 60), RandomGen.NextDouble(10, 60));
533        asteroidi.Shape = Shape.Circle;
534        asteroidi.X = x;
535        asteroidi.Y = y;
536        asteroidi.Mass = (Math.Abs((asteroidi.Left - asteroidi.Right) * (asteroidi.Top - asteroidi.Bottom))) / 20;
537        asteroidi.Tag = 123;
538
539        Vector suunta = -asteroidi.Position;
540        Vector origo = Vector.FromLengthAndAngle(RandomGen.NextDouble(2000, 4000), suunta.Angle);
541        Vector ohi = new Vector (RandomGen.NextDouble(-400.0, 400.0), RandomGen.NextDouble(-400.0, 400.0));
542        Vector hit = origo + ohi;
543
544        Asteroidi.Add(asteroidi);
545        Add(Asteroidi[Asteroidi.Count -1], 0);
546        asteroidi.CollisionIgnoreGroup = 3;
547        AddCollisionHandler(Asteroidi[Asteroidi.Count - 1], AsteroidiTormaa);
548        asteroidi.Hit(hit);
549        asteroidi.AngularVelocity = RandomGen.NextDouble (4, -4);
550       
551    }
552
553    void LuoMinioni(int madonreikaID)
554    {
555        PhysicsObject minioni = new PhysicsObject(20, 20);
556
557        minioni.X = Madonreika[madonreikaID].X;
558        minioni.Y = Madonreika[madonreikaID].Y;
559        minioni.CollisionIgnoreGroup = 5;
560        minioni.Shape = Shape.Triangle;
561        minioni.Color = Color.Red;
562        minioni.Angle = (Pelaaja[1].Position - minioni.Position).Angle;
563        minioni.Hit(Vector.FromLengthAndAngle(100, minioni.Angle));
564        minioni.MaxVelocity = 100.0;
565        minioni.AngularDamping = 0.1;
566        minioni.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minion_ship.png"));
567        minioni.Tag = 5;
568        AddCollisionHandler(minioni, MinioninTuhoaja);
569        Minioni.Add(minioni);
570        Add(Minioni[Minioni.Count - 1]);
571        MinioninLiike(Minioni[Minioni.Count - 1], 0);
572    }
573
574    void MadonreikaTormaa (PhysicsObject madonreika, PhysicsObject kohde)
575    {
576        try
577        {
578            int tagi = (int)kohde.Tag;
579            if (tagi == 11)
580            {
581                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 17;
582                PelaajanTuhoaja(); 
583            }
584            else if (tagi == 12)
585            {
586                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 17;
587                PelaajanTuhoaja(); 
588            }
589        }
590        catch
591        {
592        }
593    }
594
595    void LuoMinioninAmmus(int minioniID)
596    {
597        Projectile minioninAmmus = new Projectile(4.0, 4.0, Color.Yellow);
598        minioninAmmus.Angle = Minioni[minioniID].Angle;
599        minioninAmmus.Shape = Shape.Rectangle;
600        minioninAmmus.Width = 8.0;
601        minioninAmmus.Height = 2.0;
602        Vector a = Vector.FromLengthAndAngle(25.0, Minioni[minioniID].Angle);
603        minioninAmmus.Position = Minioni[minioniID].Position + a;
604        minioninAmmus.Image = Image.FromStream(File.OpenRead(ALTKConstants.TexturePath + "minionProjectile.png"));
605        AddCollisionHandler(minioninAmmus, MinioninAmmuksenTuhoaja);
606        minioninAmmus.Tag = 8;
607        minioninAmmus.CollisionIgnoreGroup = 5;
608        Add(minioninAmmus);
609        minioninAmmus.Mass = 0.5;
610        Vector b = Vector.FromLengthAndAngle(250.0, Minioni[minioniID].Angle);
611        minioninAmmus.Hit(b);
612        ALTKHandler.SoundPlayer.PlaySound(3);
613    }
614
615    void PelaajanTuhoaja()
616    {
617    //    if (ALTKHandler.HealthBars[0].Value < 1)
618    //    {
619    //        ALTKHandler.StaticAnimHandler.AddStaticAnim("GEN_EXPLOSION",
620    //            new Microsoft.Xna.Framework.Vector2(Convert.ToSingle(Pelaaja[0].X), Convert.ToSingle(Pelaaja[0].Y)));
621    //        Pelaaja[0].Destroy();
622    //    }
623
624    //    if (ALTKHandler.HealthBars[1].Value < 1)
625    //    {
626    //        ALTKHandler.StaticAnimHandler.AddStaticAnim("GEN_EXPLOSION",
627    //            new Microsoft.Xna.Framework.Vector2(Convert.ToSingle(Pelaaja[1].X), Convert.ToSingle(Pelaaja[1].Y)));
628    //        Pelaaja[1].Destroy();
629    //    }
630
631    }
632
633    void MinioninAmmuksenTuhoaja(PhysicsObject minioninAmmus, PhysicsObject kohde)
634    {
635        minioninAmmus.Destroy();
636
637        try
638        {
639            int tagi = (int)kohde.Tag;
640            if (tagi == 11)
641            {
642                ALTKHandler.HealthBars[0].Value = ALTKHandler.HealthBars[0].Value - 10 ;
643                PelaajanTuhoaja();
644            }
645            else if (tagi == 12)
646            {
647                ALTKHandler.HealthBars[1].Value = ALTKHandler.HealthBars[1].Value - 10;
648                PelaajanTuhoaja();
649            }
650            else if (tagi == 1 ||
651                     tagi == 2)
652            {
653                kohde.Destroy();
654            }
655
656        }
657        catch
658        {
659        }
660    }
661
662    void MinioninLiike(PhysicsObject minioni, int pelaaja)
663    {
664        minioni.Angle = (Pelaaja[pelaaja].Position - minioni.Position).Angle;
665        Vector q = Vector.FromLengthAndAngle(5.0, minioni.Angle);
666        minioni.Hit(q);
667        return;
668    }
669
670    void AsetaNappaimet()
671    {
672        Keyboard.Listen(Key.Up, ButtonState.Down, AlkuKiihdytys, null, Pelaaja[0]);
673        Keyboard.Listen(Key.Up, ButtonState.Down, Kiihdyta, null, Pelaaja[0]);
674        Keyboard.Listen(Key.Down, ButtonState.Down, Hidasta, null, Pelaaja[0]);
675        Keyboard.Listen(Key.Left, ButtonState.Down, kaannaVasemmalle, null, Pelaaja[0]);
676        Keyboard.Listen(Key.Right, ButtonState.Down, kaannaOikealle, null, Pelaaja[0]);
677        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, LuoPelaajanAmmus, null, 0);
678       
679        Keyboard.Listen(Key.W, ButtonState.Down, AlkuKiihdytys, null, Pelaaja[1]);
680        Keyboard.Listen(Key.W, ButtonState.Down, Kiihdyta, null, Pelaaja[1]);
681        Keyboard.Listen(Key.S, ButtonState.Down, Hidasta, null, Pelaaja[1]);
682        Keyboard.Listen(Key.A, ButtonState.Down, kaannaVasemmalle, null, Pelaaja[1]);
683        Keyboard.Listen(Key.D, ButtonState.Down, kaannaOikealle, null, Pelaaja[1]);
684        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, LuoPelaajanAmmus, null, 1);
685    }
686
687    void AlkuKiihdytys(PhysicsObject pelaaja)
688    {
689        if (pelaaja.Velocity.Magnitude < 7)
690        {
691            Vector o = Vector.FromLengthAndAngle(50.0, pelaaja.Angle);
692            pelaaja.Hit(o);
693            ALTKHandler.SoundPlayer.PlaySound(1);
694        }
695    }
696
697    void Kiihdyta(PhysicsObject pelaaja)
698    {
699        Vector z = Vector.FromLengthAndAngle(5.0, pelaaja.Angle);
700        pelaaja.Hit(z);
701
702        ALTKHandler.StaticAnimHandler.AddStaticAnim("ENGINE_SMOKE",
703            ALTKHandler.CreateXNAVectorFromDoubles(pelaaja.Position.X * 1.125, pelaaja.Position.Y * 1.125));
704    }
705
706    void Hidasta(PhysicsObject pelaaja)
707    {
708        pelaaja.Velocity = new Vector(pelaaja.Velocity.X * 0.95, pelaaja.Velocity.Y * 0.95);
709    }
710
711    void kaannaVasemmalle(PhysicsObject pelaaja)
712    {
713        pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees + 4);
714    }
715
716    void kaannaOikealle(PhysicsObject pelaaja)
717    {
718        pelaaja.Angle = Angle.FromDegrees(pelaaja.Angle.Degrees - 4);
719    }
720
721    #region XNA / ALTK-Based Code
722
723    private void HandleCursor(AnalogState analogState)
724    {
725        Kursori.AbsolutePosition = new Vector(Kursori.Position.X + analogState.MouseMovement.X, Kursori.Position.Y + analogState.MouseMovement.Y);
726    }
727
728    protected override void Initialize()
729    {
730        base.Initialize();
731
732        InitALTK();
733    }
734
735    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
736    {
737        base.Update(gameTime);
738
739        //for (int minioniId = 0; minioniId < Minioni.Count; minioniId++)
740        //{
741        //    MinioninLiike(Minioni[minioniId]);
742        //}
743
744        //ALTKHandler.MessageDisplay.AddItem("Trololollolollololoo, lololololooo...");
745
746        if (Kursori.Position.X > ALTKConstants.WindowWidth / 2.0)
747            Kursori.MoveTo(new Vector(ALTKConstants.WindowWidth / 2.0, Kursori.Position.Y), 1000000.0);
748        else if (Kursori.Position.X < ALTKConstants.WindowWidth / -2.0)
749            Kursori.MoveTo(new Vector(ALTKConstants.WindowWidth / -2.0, Kursori.Position.Y), 1000000.0);
750
751        if (Kursori.Position.Y > ALTKConstants.WindowHeight / 2.0)
752            Kursori.MoveTo(new Vector(Kursori.Position.X, ALTKConstants.WindowHeight / 2.0), 1000000.0);
753        else if (Kursori.Position.Y < ALTKConstants.WindowHeight / -2.0)
754            Kursori.MoveTo(new Vector(Kursori.Position.X, ALTKConstants.WindowHeight / -2.0), 1000000.0);
755
756        ALTK.Cursor.SecPosX = Convert.ToInt32((ALTKConstants.WindowWidth / 2) + Kursori.Position.X * 1.12);
757        ALTK.Cursor.SecPosY = Convert.ToInt32(ALTK.ALTKConstants.WindowHeight - ((ALTKConstants.WindowHeight / 2) + Kursori.Position.Y * 1.12));
758
759        //ALTK.Cursor.PosX = Convert.ToInt32((ALTKConstants.WindowWidth / 2) + Kursori.Position.X);
760        //ALTK.Cursor.PosY = ALTK.Cursor
761
762        //MessageDisplay.Clear();
763        //MessageDisplay.Add(Convert.ToString(ALTK.Cursor.SecPosX + "; " + ALTK.Cursor.SecPosY));
764
765        //if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down)
766        //{
767        //    Vector impulssi = Vector.FromLengthAndAngle(2.0, po.Angle);
768        //    po.Hit(impulssi);
769        //}
770
771        //if (Keyboard.GetKeyState(Key.Left) == ButtonState.Down)
772        //{
773        //    po.Angle = Angle.FromDegrees(po.Angle.Degrees - 5.0);
774        //}
775
776        //if (Keyboard.GetKeyState(Key.Right) == ButtonState.Down)
777        //{
778        //    po.Angle = Angle.FromDegrees(po.Angle.Degrees + 5.0);
779        //}
780
781        //if (Keyboard.GetKeyState(Key.Down) == ButtonState.Down)
782        //{
783        //    if (po.Velocity.Angle == po.Angle)
784        //    {
785        //        Vector impulssi = Vector.FromLengthAndAngle(-2.0, po.Angle);
786        //        po.Hit(impulssi);
787        //    }
788        //}
789
790        if (ALTK.GameHandler.DoUpdate)
791        {
792        }
793        else
794        {
795            //PhysicsEnabled = false;
796        }
797    }
798
799    /// <summary>
800    /// Initializes the ALTKEngine components used by the game. -Rampastring
801    /// </summary>
802    private void InitALTK()
803    {
804        ALTKConstants.WindowWidth = this.Window.ClientBounds.Width;
805        ALTKConstants.WindowHeight = this.Window.ClientBounds.Height;
806
807        altkHandler = new ALTKHandler(this);
808        altkHandler.Initialize();
809        this.Components.Add(altkHandler);
810
811        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARS_1", new Microsoft.Xna.Framework.Vector2(0, 0));
812        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARS_2", new Microsoft.Xna.Framework.Vector2(0, 0));
813
814        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY", new Microsoft.Xna.Framework.Vector2(0, 0));
815        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY_BLUE", new Microsoft.Xna.Framework.Vector2(0, 0));
816        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY_RED", new Microsoft.Xna.Framework.Vector2(0, 0));
817        ALTKHandler.StaticAnimHandler.AddStaticAnim("GALAXY_WHITE", new Microsoft.Xna.Framework.Vector2(0, 0));
818
819        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE", new Microsoft.Xna.Framework.Vector2(200, -250));
820        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE_BLUE", new Microsoft.Xna.Framework.Vector2(400, 250));
821        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE_RED", new Microsoft.Xna.Framework.Vector2(-200, -200));
822        ALTKHandler.StaticAnimHandler.AddStaticAnim("STARSMOKE_WHITE", new Microsoft.Xna.Framework.Vector2(-250, 300));
823    }
824
825    private void ShowExit()
826    {
827        //this.StopAll();
828        if (!ALTKHandler.ExitWindow.Enabled)
829        {
830            ALTKHandler.ExitWindow.Enabled = true;
831            ALTKHandler.ExitWindow.Visible = true;
832
833            Kursori.IsVisible = true;
834        }
835    }
836
837    #endregion
838}
Note: See TracBrowser for help on using the repository browser.