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

Revision 2822, 27.3 KB checked in by ramipasa, 9 years ago (diff)

Tekstuurit

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