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 @ 4997

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