source: 2014/24/AtteJ/Räiskintä-mättöpeli/Räiskintä-mättöpeli/Räiskintä-mättöpeli/Räiskintä_mättöpeli.cs @ 4996

Revision 4996, 24.1 KB checked in by atjokine, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Räiskintä_mättöpeli : PhysicsGame
10{
11    public static Räiskintä_mättöpeli Peli;
12
13    Vector liikuYlös = new Vector(0.0, 250.0);
14    Pelaaja[] pelaajat = new Pelaaja[2];
15
16    List<AmpuvaVihu> vihollisetv2 = new List<AmpuvaVihu>();
17    List<PhysicsObject> viholliset = new List<PhysicsObject>();
18
19    public IntMeter vihollisiaJaljella;
20    public IntMeter vihollisiaTuhottu;
21
22    Boolean skilli = true;
23    public static Boolean PeliLoppui = false;
24
25    Timer ajastin;
26    IntMeter kierrosLaskuri;
27    ScoreList TopLista = new ScoreList(10, false, 0);
28    IntMeter sekuntejaSkilliin;
29    Image Miina = LoadImage("Miina");
30
31    Label KierrosNaytto;
32    Label pistenaytto;
33
34
35    int vihollisiaV1 = 10;
36    int vihollisiaV2 = 0;
37    int vihollisiaV3 = 0;
38    int pelimuoto = 1; // yksi on yksinpeli, kaksi kaksinpeli
39
40
41    Elava vihollinen(double elamat, Color Väri, String Tag, double speed)
42    {
43        // Aivot, jotka seuraavat pelaajaa
44        FollowerBrain SeuraajanAivot = new FollowerBrain("pelaaja");
45        SeuraajanAivot.Speed = speed;
46
47        // Vihollisen luominen
48        Elava enemy = new Elava(30, 30, elamat);
49        enemy.Brain = SeuraajanAivot;
50        enemy.X = Level.Right - 30;
51        enemy.Y = RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30);
52        enemy.Shape = Shape.Circle;
53        enemy.Color = Väri;
54        enemy.Tag = Tag;
55        enemy.CollisionIgnoreGroup = 1;
56        viholliset.Add(enemy);
57        Add(enemy);
58
59        // Vihollisen kuoleminen
60        enemy.Elamat.LowerLimit += delegate
61        {
62            enemy.Destroy();
63            vihollisiaTuhottu.Value++;
64            vihollisiaJaljella.Value--;
65        };
66
67        enemy.Destroyed += delegate { viholliset.Remove(enemy); };
68
69        return enemy;
70    }
71
72    AmpuvaVihu vihollinenV2(double x, double y)
73    {
74        // Aivot, jotka seuraavat pelaajaa
75        FollowerBrain SeuraajanAivot = new FollowerBrain("pelaaja");
76        SeuraajanAivot.Speed = 200;
77
78        // Vihollisen luominen
79        AmpuvaVihu enemyV2 = new AmpuvaVihu(30, 30, 2, 3);
80        if (pelimuoto == 1) enemyV2.Kohde = pelaajat[0];
81        else enemyV2.Kohde = pelaajat[RandomGen.NextInt(2)];
82        enemyV2.Brain = SeuraajanAivot;
83        enemyV2.X = Level.Right - 30;
84        enemyV2.Y = RandomGen.NextDouble(Level.Bottom + 30, Level.Top - 30);
85        enemyV2.Shape = Shape.Circle;
86        enemyV2.Color = Color.Yellow;
87        enemyV2.Tag = "vihollinenV2";
88        vihollisetv2.Add(enemyV2);
89        enemyV2.Ase.ProjectileCollision = LuotiOsuuPelaajaan;
90        enemyV2.CollisionIgnoreGroup = 1;
91        Add(enemyV2);
92
93        // Vihollisen kuoleminen
94        enemyV2.Elamat.LowerLimit += delegate
95        {
96            enemyV2.Destroy();
97            vihollisiaTuhottu.Value++;
98            vihollisiaJaljella.Value--;
99        };
100
101        // Vihollisen ampuminen
102        vihollisenAmpuminen();
103
104        enemyV2.Destroyed += delegate
105        {
106            vihollisetv2.Remove(enemyV2);
107            enemyV2.Ase.Destroy();
108        };
109        return enemyV2;
110    }
111
112    public override void Begin()
113    {
114        ClearAll();
115        Peli = this;
116        Mouse.Enabled = false;
117        Mouse.IsCursorVisible = false;
118
119        MultiSelectWindow AlkuValikko = new MultiSelectWindow("Tervetuloa peliin",
120            "Aloita", "Ohje", "Ohjaimet", "Poistu");
121        AlkuValikko.ItemSelected += PainettiinValikonNappia;
122        AlkuValikko.Color = Color.Black;
123        AlkuValikko.SelectionColor = Color.White;
124        AlkuValikko.SetButtonTextColor(Color.Black);
125
126        Level.Background.CreateStars();
127        Add(AlkuValikko);
128    }
129
130    void PainettiinValikonNappia(int valinta)
131    {
132        switch (valinta)
133        {
134            case 0:
135                //aloita peli
136                YksinVaiKaksinPeli();
137                break;
138            case 1:
139                //miten peliä pelataan
140                Ohje();
141                break;
142            case 2:
143                // Ohjainten ohjeet
144                Ohjaimet();
145                break;
146            case 3:
147                Exit();
148                break;
149        }
150    }
151
152    void YksinVaiKaksinPeli()
153    {
154        MultiSelectWindow PelaajienMaara = new MultiSelectWindow("Yksin- vai kaksinpeli?",
155            "Yksinpeli", "Kaksinpeli", "Takaisin");
156        PelaajienMaara.ItemSelected += PainettiinValikon2Nappia;
157        PelaajienMaara.Color = Color.Black;
158        PelaajienMaara.SelectionColor = Color.White;
159        PelaajienMaara.SetButtonTextColor(Color.Black);
160        Add(PelaajienMaara);
161    }
162
163    void PainettiinValikon2Nappia(int valinta2)
164    {
165        switch (valinta2)
166        {
167            case 0:
168                AlustaPeli();// Yksinpeli
169                this.pelimuoto = 1;
170                break;
171            case 1:
172                AlustaPeli2(); // Kaksinpeli
173                this.pelimuoto = 2;
174                break;
175            case 2:
176                Begin();
177                break;
178        }
179    }
180
181    void AlustaPeli()
182    {
183        LuoKenttä();
184        Pelaaja(Color.Blue, -400, -30, 1, new Vector(Level.Left + 270, Level.Top - 40));
185        LisääOhjaimet();
186        LuoKierrosLaskuri();
187        LuoSkillinAjastin();
188
189        if (DataStorage.Exists("pisteet.xml"))
190            TopLista = DataStorage.Load<ScoreList>(TopLista, "pisteet.xml");
191    }
192
193    void AlustaPeli2()
194    {
195        LuoKenttä();
196        Pelaaja(Color.Blue, -400, -30, 1, new Vector(Level.Right - 270, Level.Top - 75));
197        Pelaaja(Color.DarkBlue, -400, 30, 2, new Vector(Level.Left + 270, Level.Top - 75));
198        LisääOhjaimet();
199        LisääOhjaimet2();
200        LuoKierrosLaskuri();
201        LuoSkillinAjastin();
202
203        if (DataStorage.Exists("pisteet.xml"))
204            TopLista = DataStorage.Load<ScoreList>(TopLista, "pisteet.xml");
205
206        Label P1 = new Label("P1");
207        P1.X = Level.Left + 270;
208        P1.Y = Level.Top - 40;
209        P1.TextColor = Color.White;
210        P1.Color = Color.Transparent;
211        Add(P1);
212
213        Label P2 = new Label("P2");
214        P2.X = Level.Right + 270;
215        P2.Y = Level.Top - 40;
216        P2.TextColor = Color.White;
217        P2.Color = Color.Transparent;
218        Add(P2);
219
220    }
221
222    void Ohje()
223    {
224
225        MessageWindow Ohje = new MessageWindow("Kierroksilla 1-5 vastaan tulee vain vihollisia jotka kuolevat yhdestä iskusta. Tasosta viisi eteenpäin    \nvastaan tulee myös vihollisia,         \njotka kuolevat 2 osumasta. Ta-         \nsolla 10 tulee 3:n osuman vi-         \nhollisia.");
226        Ohje.OKButton.Text = "Takaisin";
227        Ohje.Color = Color.Transparent;
228        Ohje.Message.TextColor = Color.White;
229        Ohje.OKButton.Color = Color.Transparent;
230        Ohje.OKButton.TextColor = Color.Transparent;
231        Ohje.Closed += delegate { Begin(); };
232        Add(Ohje);
233
234    }
235
236    void Ohjaimet()
237    {
238
239        MessageWindow Ohjaimet = new MessageWindow(
240            "Pelaaja 1:\nNuolinäppäimet = Liik-                   \nkuminen\nL-nappi =                 \nampuminen\nOikea Shift-               \nnappi = Aseen vaihta-         \nminen\n\nPelaaja 2:\nWASD = liikku-              \nminen\nG-nappi = ampumi-         \nnen\nVasen Shift-nappi =               \nAseen vaihtaminen       ");
241        Ohjaimet.OKButton.Text = "Takaisin";
242        Ohjaimet.Color = Color.Transparent;
243        Ohjaimet.Message.TextColor = Color.White;
244        Ohjaimet.OKButton.Color = Color.Transparent;
245        Ohjaimet.OKButton.TextColor = Color.Transparent;
246        Ohjaimet.Closed += delegate { Begin(); };
247        Add(Ohjaimet);
248    }
249
250    void LuoKenttä()
251    {
252        Level.Size = Screen.Size;
253        Level.CreateBorders(false);
254        Camera.ZoomToLevel();
255
256        vihollisiaJaljella = new IntMeter(0, 0, int.MaxValue);
257        vihollisiaTuhottu = new IntMeter(0);
258        vihollisiaJaljella.LowerLimit += delegate { KaikkiVihollisetTuhottu(); kierrosLaskuri.Value += 1; };
259
260        pistenaytto = new Label();
261        pistenaytto.X = 200;
262        pistenaytto.Y = Screen.Top - 40;
263        pistenaytto.BindTo(vihollisiaTuhottu);
264        pistenaytto.Title = "Vihollisia tuhottu";
265        pistenaytto.TextColor = Color.White;
266        pistenaytto.Color = Color.Transparent;
267        Add(pistenaytto);
268
269        int u = 0;
270        while (u < 10)
271        {
272            vihollinen(1, Color.Green, "vihollinenV1", 150);
273            vihollisiaJaljella.Value++;
274            u++;
275        }
276
277    }
278
279    void LuoKierrosLaskuri()
280    {
281        kierrosLaskuri = new IntMeter(1);
282        KierrosNaytto = new Label();
283        KierrosNaytto.X = 0;
284        KierrosNaytto.Y = Level.Top - 40;
285        KierrosNaytto.TextColor = Color.White;
286        KierrosNaytto.Color = Color.Transparent;
287        KierrosNaytto.Title = "Kierros";
288        KierrosNaytto.BindTo(kierrosLaskuri);
289        Add(KierrosNaytto);
290    }
291
292    void Pelaaja(Color Väri, double x, double y, int numero, Vector elamaPalkinSijainti)
293    {
294        Pelaaja pelaaja = new Pelaaja(30, 30, 100, elamaPalkinSijainti, numero);
295        pelaaja.Shape = Shape.Circle;
296        pelaaja.Color = Väri;
297        pelaaja.X = x;
298        pelaaja.Y = y;
299        pelaaja.Tag = "pelaaja";
300        Add(pelaaja);
301        pelaaja.LinearDamping = 0.9;
302        pelaaja.Restitution = 0.0;
303        pelaaja.CanRotate = false;
304        pelaaja.IgnoresExplosions = true;
305        pelaaja.Elamat.LowerLimit += delegate { PelaajaKuoli(pelaaja); };
306
307
308        // Pelaaja törmää viholliseen 1
309        AddCollisionHandler(pelaaja, "vihollinenV1", CollisionHandler.AddMeterValue(pelaaja.Elamat, -10));
310        AddCollisionHandler(pelaaja, "vihollinenV1", CollisionHandler.DestroyTarget);
311        AddCollisionHandler(pelaaja, "vihollinenV1", CollisionHandler.AddMeterValue(vihollisiaTuhottu, 1));
312        AddCollisionHandler(pelaaja, "vihollinenV1", CollisionHandler.AddMeterValue(vihollisiaJaljella, -1));
313
314        // Pelaaja törmää viholliseen 2
315        AddCollisionHandler(pelaaja, "vihollinenV2", CollisionHandler.AddMeterValue(pelaaja.Elamat, -20));
316        AddCollisionHandler(pelaaja, "vihollinenV2", CollisionHandler.DestroyTarget);
317        AddCollisionHandler(pelaaja, "vihollinenV2", CollisionHandler.AddMeterValue(vihollisiaTuhottu, 1));
318        AddCollisionHandler(pelaaja, "vihollinenV2", CollisionHandler.AddMeterValue(vihollisiaJaljella, -1));
319
320        // Pelaaja törmää viholliseen 3
321        AddCollisionHandler(pelaaja, "vihollinenV3", CollisionHandler.AddMeterValue(pelaaja.Elamat, -30));
322        AddCollisionHandler(pelaaja, "vihollinenV3", CollisionHandler.DestroyTarget);
323        AddCollisionHandler(pelaaja, "vihollinenV3", CollisionHandler.AddMeterValue(vihollisiaTuhottu, 1));
324        AddCollisionHandler(pelaaja, "vihollinenV3", CollisionHandler.AddMeterValue(vihollisiaJaljella, -1));
325
326        numero--;
327        if (numero >= 0 && numero < pelaajat.Length)
328        {
329            pelaajat[numero] = pelaaja;
330
331        }
332        LuoAseet(numero);
333        pelaaja.Ase = pelaaja.Aseet[0];
334        pelaaja.Add(pelaaja.Ase);
335    }
336
337    void PelaajanSkilli(int pelaaja)
338    {
339        if (skilli == false) return;
340
341        Explosion rajahdys = new Explosion(200);
342        rajahdys.Position = pelaajat[pelaaja].Position;
343        Add(rajahdys, -1);
344
345        rajahdys.Force = 100;
346        rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject kohde, Vector shokki)
347        {
348            if (kohde.Tag.ToString().StartsWith("vihollinen"))
349            {
350                Elava k = kohde as Elava;
351
352                if (kohde != null)
353                    k.Elamat.Value = 0;
354            }
355
356        };
357
358        ajastin.Reset();
359        KaynnistaAjastin();
360        skilli = false;
361    }
362
363    void LuoSkillinAjastin()
364    {
365
366        sekuntejaSkilliin = new IntMeter(0, 0, 10);
367        sekuntejaSkilliin.LowerLimit += delegate
368        {
369            skilli = true;
370            ajastin.Stop();
371        };
372
373        ajastin = new Timer();
374        ajastin.Interval = 1;
375        ajastin.Timeout += delegate
376        {
377            sekuntejaSkilliin.Value--;
378        };
379
380        Label SkilliNaytto = new Label();
381        SkilliNaytto.TextColor = Color.White;
382        SkilliNaytto.Color = Color.Transparent;
383        SkilliNaytto.DecimalPlaces = 1;
384        SkilliNaytto.X = -220;
385        SkilliNaytto.Y = Level.Top - 40;
386        SkilliNaytto.Title = "Skilli käytettävissä ajassa";
387        SkilliNaytto.BindTo(sekuntejaSkilliin);
388        Add(SkilliNaytto);
389    }
390
391    void KaynnistaAjastin()
392    {
393        ajastin.Start();
394        sekuntejaSkilliin.Value = sekuntejaSkilliin.MaxValue;
395    }
396
397    void LisääOhjaimet()
398    {
399
400        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-5000, 0), pelaajat[0]);
401        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(5000, 0), pelaajat[0]);
402        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 5000), pelaajat[0]);
403        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -5000), pelaajat[0]);
404        Keyboard.Listen(Key.L, ButtonState.Down, Ampuminen, "ammu", pelaajat[0]);
405        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, AseenVaihtaminen, null, 0);
406        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Pausevalikko, null);
407        Keyboard.Listen(Key.Space, ButtonState.Pressed, PelaajanSkilli, null, 0);
408
409    }
410
411    void LisääOhjaimet2()
412    {
413
414        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-5000, 0), pelaajat[1]);
415        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(5000, 0), pelaajat[1]);
416        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 5000), pelaajat[1]);
417        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -5000), pelaajat[1]);
418        Keyboard.Listen(Key.G, ButtonState.Down, Ampuminen, "ammu", pelaajat[1]);
419        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, AseenVaihtaminen, null, 1);
420        Keyboard.Listen(Key.F, ButtonState.Pressed, PelaajanSkilli, null, 1);
421
422    }
423
424    void Pausevalikko()
425    {
426        IsPaused = true;
427
428        MultiSelectWindow pause = new MultiSelectWindow("Peli on pausella.", "Jatka", "Päävalikko", "Poistu");
429        pause.ItemSelected += PainettiinPausenappia;
430        pause.Color = Color.Black;
431        pause.SetButtonTextColor(Color.Black);
432        pause.SelectionColor = Color.White;
433        Add(pause);
434    }
435
436    void PainettiinPausenappia(int pausevalinta)
437    {
438        switch (pausevalinta)
439        {
440            case 0:
441                Pause();
442                break;
443
444            case 1:
445                IsPaused = false;
446                Begin();
447                break;
448
449            case 2:
450                Exit();
451                break;
452        }
453    }
454
455    void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
456    {
457        pelaaja.Push(vektori);
458    }
459
460    Ase LuoAse(double tulinopeus, double voima, string tag, double damage, double rajahdyksenKoko)
461    {
462        Ase pyssy = new Ase(20, 5);
463        pyssy.InfiniteAmmo = true;
464        pyssy.IsVisible = false;
465        pyssy.Power.Value = voima;
466        pyssy.Power.DefaultValue = voima;
467        pyssy.Tag = tag;
468        pyssy.FireRate = tulinopeus;
469        pyssy.Damage = damage;
470        pyssy.ExplosionSize = rajahdyksenKoko;
471        return pyssy;
472    }
473
474    void LuoAseet(int pelaaja)
475    {
476        //Tässä voi lisätä aseita
477        pelaajat[pelaaja].Aseet.Add(LuoAse(5, 500, "rynnäkkökivääri", 1, 0));
478        pelaajat[pelaaja].Aseet.Add(LuoAse(1, 200, "Pistooli", 2, 0));
479        pelaajat[pelaaja].Aseet.Add(LuoAse(0.4, 0, "Miina", 3, 100));
480    }
481
482    void AseenVaihtaminen(int pelaaja)
483    {
484        int i = pelaajat[pelaaja].Aseet.IndexOf(pelaajat[pelaaja].Ase);
485
486        // Valitsee seuraavan aseen
487        if (i < pelaajat[pelaaja].Aseet.Count - 1)
488            pelaajat[pelaaja].Ase = pelaajat[pelaaja].Aseet[i + 1];
489        else
490            pelaajat[pelaaja].Ase = pelaajat[pelaaja].Aseet[0];
491        pelaajat[pelaaja].Add(pelaajat[pelaaja].Ase);
492        MessageDisplay.Add("Pelaajan " + (pelaaja + 1) + " ase:" + pelaajat[pelaaja].Ase.Tag.ToString());
493    }
494
495    void vihollisenAmpuminen()
496    {
497        for (int i = 0; i < vihollisetv2.Count; i++)
498        {
499            if (vihollisetv2[i].IsDestroyed) continue;
500            Angle kulma = new Angle();
501            if (pelimuoto == 1)
502            {
503                kulma = (vihollisetv2[i].AbsolutePosition - pelaajat[0].AbsolutePosition).Angle;
504            }
505
506            if (pelimuoto == 2)
507            {
508                kulma = (vihollisetv2[i].AbsolutePosition - pelaajat[RandomGen.NextInt(2)].AbsolutePosition).Angle;
509            }
510
511            vihollisetv2[i].Ase.Angle = kulma + Angle.FromDegrees(180);
512
513            PhysicsObject ammus = vihollisetv2[i].Ase.Shoot();
514            if (ammus != null)
515            {
516                AddCollisionHandler(ammus, VihollisenAmmusOsuu);
517                ammus.CollisionIgnoreGroup = 1;
518            }
519        }
520    }
521
522    void VihollisenAmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
523    {
524        if (kohde.Tag.ToString().StartsWith("vihollinen"))
525            ammus.Destroy();
526    }
527
528    public void LuotiOsuuPelaajaan(PhysicsObject ammus, PhysicsObject kohde)
529    {
530        Pelaaja p = kohde as Pelaaja;
531        ammus.Destroy();
532        if (p != null)
533            p.Elamat.Value -= 10;
534    }
535
536    void Ampuminen(Pelaaja pelaaja)
537    {
538        PhysicsObject panos = pelaaja.Ase.Shoot();
539
540        if (panos == null)
541        {
542            return;
543        }
544
545        panos.Tag = new AmmoData(pelaaja.Ase.Damage, pelaaja.Ase.ExplosionSize);
546
547        AddCollisionHandler(panos, delegate(PhysicsObject ammus, PhysicsObject kohde)
548        {
549            AmmoData data = (AmmoData)ammus.Tag;
550            LuotiOsuuViholliseen(ammus, kohde, data.Damage, data.ExplosionSize);
551
552        });
553        panos.Width *= 2;
554        panos.X = pelaaja.X + 30;
555
556        if (pelaaja.Ase.Tag.ToString() == "Miina")
557        {
558            panos.Image = Miina;
559            panos.Size = new Vector(30, 30);
560        }
561
562    }
563
564    void LuotiOsuuViholliseen(PhysicsObject ammus, PhysicsObject kohde, double damage, double sade)
565    {
566        ammus.Destroy();
567        Explosion rajahdys = new Explosion(sade);
568        rajahdys.Force = 1;
569        rajahdys.Position = ammus.Position;
570        rajahdys.Speed = 1000;
571        rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject k, Vector shokki)
572        {
573            if (kohde.Tag.ToString().StartsWith("vihollinen"))
574            {
575                Elava elava = k as Elava;
576
577                if (elava != null)
578                    elava.Elamat.Value = 0;
579            }
580        };
581
582        // Vihollinen menettää elämän
583        Elava vihu = kohde as Elava;
584        if (vihu != null)
585        { vihu.Elamat.Value -= damage; }
586
587        Add(rajahdys);
588    }
589
590    public void VihollinenOsuuPelaajaan(PhysicsObject pelaaja, PhysicsObject enemy)
591    {
592        Pelaaja Pelaaja = (Pelaaja)pelaaja;
593
594        if (Pelaaja.Elamat.Value <= 0)
595        {
596            PelaajaKuoli(Pelaaja);
597        }
598
599    }
600
601    void KaikkiVihollisetTuhottu()
602    {
603        MessageDisplay.Add("Viholliset tuhottu!");
604        Timer.SingleShot(1.5, LisaaVihollisia);
605    }
606
607    void LisaaVihollisia()
608    {
609        // Perusviholliset
610        vihollisiaV1 = vihollisiaV1 + 30;
611
612        int i = 0;
613        while (i < vihollisiaV1)
614        {
615            vihollinen(1, Color.Green, "vihollinenV1", 150);
616            vihollisiaJaljella.Value++;
617            i++;
618        }
619
620        // Keltaiset, ampuvat viholliset
621        if (kierrosLaskuri.Value >= 4)
622        {
623            vihollisiaV2 = vihollisiaV2 + 20;
624            int e = 0;
625            while (e < vihollisiaV2)
626            {
627                vihollinenV2(30, 10);
628                vihollisiaJaljella.Value++;
629                e++;
630            }
631        }
632
633        //Punaiset viholliset
634        if (kierrosLaskuri.Value >= 9)
635        {
636            vihollisiaV3 = vihollisiaV3 + 10;
637            i = 0;
638            while (i < vihollisiaV3)
639            {
640                vihollinen(3, Color.Red, "vihollinenV3", 350);
641                vihollisiaJaljella.Value++;
642                i++;
643            }
644        }
645
646    }
647
648    void PelaajaKuoli(Pelaaja pelaaja)
649    {
650        Explosion rajahdys = new Explosion(100);
651        rajahdys.Position = pelaaja.Position;
652        rajahdys.Speed = 500.0;
653        rajahdys.Force = 10000;
654        Add(rajahdys);
655
656        pelaaja.Destroy();
657        int numero = pelaaja.Numero - 1;
658        pelaajat[numero].Destroy();
659
660        // Jos kaikki pelaajat ovat kuolleet, pali loppuu
661        if (pelimuoto == 1 || pelaajat[0].IsDestroying == true && pelaajat[1].IsDestroying == true)
662        {
663            HighScoreWindow();
664        }
665    }
666
667    void KumoaPaineaalto(IPhysicsObject pelaaja, Vector voima)
668    {
669        pelaaja.Hit(-voima);
670    }
671
672    void HighScoreWindow()
673    {
674        KierrosNaytto.Destroy();
675        pistenaytto.Destroy();
676        PeliLoppui = true;
677        //Elamapalkki.Destroy();
678
679        Label tulos = new Label("Selvisit kierrokselle " + kierrosLaskuri + " tapoilla " + vihollisiaTuhottu + ". Onnittelut!");
680        tulos.Color = Color.White;
681        tulos.X = 0;
682        tulos.Y = 450;
683        Add(tulos);
684
685        HighScoreWindow topIkkuna = new HighScoreWindow("Parhaat pisteet", "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:", TopLista, vihollisiaTuhottu.Value);
686        topIkkuna.Closed += TallennaPisteet;
687        topIkkuna.X = 0;
688        topIkkuna.Y = 200;
689        topIkkuna.Color = Color.Transparent;
690        topIkkuna.List.PositionColor = Color.White;
691        topIkkuna.List.NameColor = Color.White;
692        topIkkuna.List.ScoreColor = Color.White;
693        topIkkuna.NameInputWindow.Color = Color.Transparent;
694        topIkkuna.NameInputWindow.TextEntered += delegate { Ok(); };
695        topIkkuna.NameInputWindow.InputBox.Cursor.Color = Color.Gray;
696        topIkkuna.NameInputWindow.InputBox.TextColor = Color.White;
697        topIkkuna.NameInputWindow.OKButton.Color = Color.White;
698        topIkkuna.NameInputWindow.OKButton.TextColor = Color.Black;
699        topIkkuna.OKButton.Destroy();
700        Add(topIkkuna);
701
702        if (topIkkuna.NameInputWindow.IsAddedToGame == false)
703        {
704            Ok();
705        }
706
707    }
708
709    void TallennaPisteet(Window sender)
710    {
711        DataStorage.Save<ScoreList>(TopLista, "pisteet.xml");
712        Exit();
713    }
714
715    void Ok()
716    {
717        MultiSelectWindow Ok = new MultiSelectWindow(
718"", "Ok");
719        Ok.ItemSelected += PainettiinValikon4Nappia;
720        Ok.Color = Color.Black;
721        Ok.SelectionColor = Color.White;
722        Ok.SetButtonTextColor(Color.Black);
723        Ok.X = 0;
724        Ok.Y = -200;
725        Add(Ok);
726    }
727
728    void PainettiinValikon4Nappia(int valinta3)
729    {
730        switch (valinta3)
731        {
732            case 0:
733                ClearAll();
734                Level.Background.CreateStars();
735                Uusiksi();
736                break;
737        }
738    }
739
740    void Uusiksi()
741    {
742        MultiSelectWindow PeliLoppui = new MultiSelectWindow("",
743               "Päävalikko", "Poistu");
744        PeliLoppui.ItemSelected += PainettiinValikon3Nappia;
745        PeliLoppui.Color = Color.Black;
746        PeliLoppui.SelectionColor = Color.White;
747        PeliLoppui.SetButtonTextColor(Color.Black);
748        PeliLoppui.X = 0;
749        PeliLoppui.Y = -200;
750        Add(PeliLoppui);
751    }
752
753    void PainettiinValikon3Nappia(int valinta4)
754    {
755        switch (valinta4)
756        {
757            case 0:
758                ClearAll();
759                Begin();
760                break;
761
762            case 1:
763                Exit();
764                break;
765        }
766    }
767
768}
Note: See TracBrowser for help on using the repository browser.