source: 2012/23/LeoL/Tasohyppelypeli1.cs @ 2877

Revision 2877, 43.3 KB checked in by lemilaht, 11 years ago (diff)

Bug fixed

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class tasohyppelypeli : PhysicsGame
10{
11    string CurrentLevelFile = String.Empty;
12    SoundEffect JousiAani = LoadSoundEffect("Ampuu");
13    DoubleMeter elamaMittari;
14    DoubleMeter elamaMittari2;
15    DoubleMeter elamaMittari3;
16    DoubleMeter P2elamaMittari;
17    DoubleMeter P3elamaMittari;
18    Image Ampujankuva = LoadImage("Ampuja");
19    Image DemoninKuva = LoadImage("Dem1.anm");
20    Image olionKuva = LoadImage("cafgar.anm");
21    Image magenKuva = LoadImage("Mage");
22    Image maalinKuva = LoadImage("Maali");
23    Image hunterKuva = LoadImage("HUntelaar");
24    Image kavlorKuva = LoadImage("Kavlor");
25    Image[] pelaajanAnim = LoadImages("pelaaja", "Pelaaja2", "Pelaaja3");
26    Image[] pelaajanAnimPeilattu;
27    Image p2Kuva = LoadImage("P2");
28
29    double nopeusYlos = 1250;
30    Vector nopeusOikea = new Vector(250, 0);
31    Vector nopeusVasen = new Vector(-250, 0);
32    Image pelaajanKuva = LoadImage("pelaaja");
33
34    PlatformCharacter pelaaja;
35    PlatformCharacter pelaaja2;
36    PlatformCharacter pelaaja3;
37
38    public override void Begin()
39    {
40        ClearAll();
41        MultiSelectWindow valikko = new MultiSelectWindow("Welcome to game",
42        "P1", "P2", "Exit Game");
43        valikko.ItemSelected += PainettiinValikonNappia;
44        Add(valikko);
45    }
46        void PainettiinValikonNappia(int valinta)
47    {
48        switch (valinta)
49        {
50            case 0:
51                P1MSW();
52                break;
53
54            case 1:
55                P2MSW();
56                break;
57
58            case 2:
59                Exit();
60                break;
61        }
62    }
63   
64
65    void LuoKenttä(string levelFile)
66    {
67        TileMap ruudut = TileMap.FromLevelAsset(levelFile);
68        ruudut.SetTileMethod('_', LuoPalikka);
69        ruudut.SetTileMethod('.', LuoSeina);
70        ruudut.SetTileMethod('"', LuoPiikki);
71        ruudut.SetTileMethod('!', LuoPelaaja);
72        ruudut.SetTileMethod('+', LuoCafgar);
73        ruudut.SetTileMethod('#', LuoDemoni);
74        ruudut.SetTileMethod('-', LuoAmpuja);
75        ruudut.SetTileMethod('=', LuoMaali);
76        ruudut.SetTileMethod('M', LuoMage);
77        ruudut.SetTileMethod('H', LuoHunter);
78        ruudut.SetTileMethod('K', LuoKavlor);
79        ruudut.SetTileMethod('E', EPotion);
80        ruudut.Execute(20, 20);
81        Level.Background.Color = Color.ForestGreen;
82        Camera.Follow(pelaaja);
83        Gravity = new Vector(0, -5000);
84
85        CurrentLevelFile = levelFile;
86    }
87    void LuoKenttä2(string levelFile)
88    {
89        TileMap ruudut = TileMap.FromLevelAsset(levelFile);
90        ruudut.SetTileMethod('_', LuoPalikka);
91        ruudut.SetTileMethod('.', LuoSeina);
92        ruudut.SetTileMethod('"', LuoPiikki);
93        ruudut.SetTileMethod('!', LuoPelaaja3);
94        ruudut.SetTileMethod('2', LuoPelaaja2);
95        ruudut.SetTileMethod('+', LuoCafgar);
96        ruudut.SetTileMethod('#', LuoDemoni);
97        ruudut.SetTileMethod('-', LuoAmpuja2);
98        ruudut.SetTileMethod('=', LuoMaali);
99        ruudut.SetTileMethod('M', LuoMage2);
100        ruudut.SetTileMethod('H', LuoHunter2);
101        ruudut.SetTileMethod('K', LuoKavlor2);
102        ruudut.SetTileMethod('E', EPotion);
103       
104        ruudut.Execute(20, 20);
105        Level.Background.Color = Color.ForestGreen;
106        Camera.Follow(pelaaja3);
107        Gravity = new Vector(0, -5000);
108
109        CurrentLevelFile = levelFile;
110    }
111
112    void LuoPalikka(Vector paikka, double leveys, double korkeus)
113    {
114        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
115        palikka.Position = paikka;
116        palikka.Shape = Shape.Rectangle;
117        palikka.Color = Color.DarkBrown;
118        Add(palikka);
119    }
120
121    void LuoSeina(Vector paikka, double leveys, double korkeus)
122    {
123        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
124        seina.Position = paikka;
125        seina.Shape = Shape.Rectangle;
126        seina.Color = Color.DarkBrown;
127        Add(seina);
128    }
129
130    void LuoPiikki(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        piikki.Position = paikka;
134        piikki.Shape = Shape.Triangle;
135        piikki.Color = Color.Black;
136        piikki.Tag = "piikki";
137        Add(piikki);
138    }
139
140    void AsetaOhjaimet()
141    {
142        Keyboard.Listen(Key.Escape, ButtonState.Down, Begin, "Poistu pelistä");
143        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja liikkuu vasemmalle", pelaaja, nopeusVasen);
144        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
145        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja, nopeusYlos);
146        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja, nopeusOikea);
147        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
148        Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo, null, pelaajanAnim, new Vector(20, 0));
149        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo, null, pelaajanAnimPeilattu, new Vector(-20, 0));
150 
151       
152       
153    }
154    void AsetaOhjaimet2()
155    {
156        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Pelaaja2 liikkuu vasemmalle", pelaaja2, nopeusVasen);
157        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja2, Vector.Zero);
158        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy2, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja2, nopeusYlos);
159        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja2, nopeusOikea);
160        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja2, Vector.Zero);
161        Keyboard.Listen(Key.NumPad8, ButtonState.Pressed, Ammu, null, pelaaja2, new Vector(0, 1));
162        Keyboard.Listen(Key.NumPad5, ButtonState.Pressed, Ammu, null, pelaaja2, new Vector(0, -1));
163        Keyboard.Listen(Key.NumPad4, ButtonState.Pressed, Ammu, null, pelaaja2, new Vector(-1, 0));
164        Keyboard.Listen(Key.NumPad6, ButtonState.Pressed, Ammu, null, pelaaja2, new Vector(1, 0));
165
166
167        Keyboard.Listen(Key.Escape, ButtonState.Down, Begin, "Poistu pelistä");
168        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja liikkuu vasemmalle", pelaaja3, nopeusVasen);
169        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja3, Vector.Zero);
170        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy3, "Pelaaja 1: Pelaaaja hyppää  ylös", pelaaja3, nopeusYlos);
171        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Pelaaja Liikkuu Oikealle", pelaaja3, nopeusOikea);
172        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja3, Vector.Zero);
173        Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo2, null, pelaajanAnim, new Vector(20, 0));
174        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo2, null, pelaajanAnimPeilattu, new Vector(-20, 0));
175    }
176
177    void Ammu(PlatformCharacter pelaaja, Vector ampumissuunta)
178    {
179        pelaaja.Weapon.Angle = ampumissuunta.Angle;
180        PhysicsObject ammus = pelaaja.Weapon.Shoot();
181        if (ammus != null)
182        {
183            AddCollisionHandler(ammus, "Demoni", CollisionHandler.DestroyBoth);
184            AddCollisionHandler(ammus, "Ampuja", CollisionHandler.DestroyBoth);
185            AddCollisionHandler(ammus, "mage", CollisionHandler.DestroyBoth);
186            AddCollisionHandler(ammus, "hunter", CollisionHandler.DestroyBoth);
187            AddCollisionHandler(ammus, "Kavlor", KavlorMenettaa);
188            AddCollisionHandler(ammus, "cafgar", CafgarMenettaa);
189            ammus.CollisionIgnoreGroup = 1;
190        }
191    }
192
193    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
194    {
195        pelaaja = new PlatformCharacter(20, 40);
196        pelaaja.Position = paikka;
197        pelaaja.Color = Color.Aquamarine;
198        pelaaja.Image = pelaajanKuva;
199        pelaaja.CanRotate = false;
200        AddCollisionHandler(pelaaja, "piikki", PelaajaKuolee);
201        AddCollisionHandler(pelaaja, "Demoni", PelaajaMenettaa);
202        AddCollisionHandler(pelaaja, "Ampuja", PelaajaMenettaa2);
203        AddCollisionHandler(pelaaja, "cafgar", PelaajaMenettaa2);
204        AddCollisionHandler(pelaaja, "maali", SaavutitMaalin);
205        AddCollisionHandler(pelaaja, "peruna", LisaaElamaa);
206        PelaajanElamat();
207        pelaaja.Mass = 5000;
208        pelaaja.Weapon = new PlasmaCannon(20, 5);
209        pelaaja.Weapon.IsVisible = false;
210        pelaaja.Tag = "pelaaja";
211        Add(pelaaja);
212    }
213    void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
214    {
215        pelaaja3 = new PlatformCharacter(20, 40);
216        pelaaja3.Position = paikka;
217        pelaaja3.Color = Color.Aquamarine;
218        pelaaja3.Image = pelaajanKuva;
219        pelaaja3.CanRotate = false;
220        AddCollisionHandler(pelaaja3, "piikki", Pelaaja3Kuolee);
221        AddCollisionHandler(pelaaja3, "Demoni", Pelaaja3Menettaa);
222        AddCollisionHandler(pelaaja3, "Ampuja", Pelaaja3Menettaa2);
223        AddCollisionHandler(pelaaja3, "cafgar", Pelaaja3Menettaa2);
224        AddCollisionHandler(pelaaja3, "maali", SaavutitMaalin3);
225        AddCollisionHandler(pelaaja3, "peruna", LisaaElamaa3);
226        PelaajanElamat3();
227        pelaaja3.Tag = "pelaaja";
228        pelaaja3.Mass = 5000;
229        pelaaja3.CollisionIgnoreGroup = 1;
230        pelaaja3.Weapon = new PlasmaCannon(20, 5);
231        pelaaja3.Weapon.IsVisible = false;
232        Add(pelaaja3);
233    }
234
235    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
236    {
237        pelaaja2 = new PlatformCharacter(20, 40);
238        pelaaja2.Position = paikka;
239        pelaaja2.Color = Color.Aquamarine;
240        pelaaja2.Image = p2Kuva;
241        pelaaja2.CanRotate = false;
242        AddCollisionHandler(pelaaja2, "piikki", Pelaaja2Menettaa3);
243        AddCollisionHandler(pelaaja2, "Demoni", Pelaaja2Menettaa);
244        AddCollisionHandler(pelaaja2, "Ampuja", Pelaaja2Menettaa2);
245        AddCollisionHandler(pelaaja2, "cafgar", Pelaaja2Menettaa2);
246        AddCollisionHandler(pelaaja2, "ammus", Pelaaja2Menettaa2);
247        AddCollisionHandler(pelaaja2, "maali", SaavutitMaalin2);
248        AddCollisionHandler(pelaaja2, "peruna", LisaaElamaa2);
249        PelaajanElamat2();
250        pelaaja2.Weapon = new PlasmaCannon(20, 5);
251        pelaaja2.Weapon.IsVisible = false;
252        pelaaja2.Mass = 5000;
253        pelaaja2.CollisionIgnoreGroup = 1;
254        pelaaja2.Tag = "pelaaja";
255        Add(pelaaja2);
256    }
257
258    void AsetaNopeus(PhysicsObject Pelaaja, Vector nopeus)
259    {
260        Pelaaja.Velocity = nopeus;
261    }
262
263
264    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde)
265    {
266        pelaaja.Destroy();
267        Replay();
268    }
269    void Pelaaja2Kuolee(PhysicsObject pelaaja2, PhysicsObject kohde)
270    {
271        pelaaja2.Destroy();
272        Replay3();
273    }
274    void Pelaaja3Kuolee(PhysicsObject pelaaja3, PhysicsObject kohde)
275    {
276        pelaaja3.Destroy();
277        Replay3();
278    }
279
280    void LuoCafgar(Vector paikka, double leveys, double korkeus)
281    {
282        PhysicsObject Cafgar = new PhysicsObject(20, 40);
283        Cafgar.Position = paikka;
284        Cafgar.Image = olionKuva;
285        Cafgar.Color = Color.Black;
286        Cafgar.Tag = "cafgar";
287        Cafgar.Brain = Aivot("pelaaja");
288        Cafgar.CanRotate = false;
289        CafgarinElamat(Cafgar);
290        AddCollisionHandler(Cafgar, "ase", CafgarMenettaa);
291        AddCollisionHandler(Cafgar, "piikki", CafgarKuolee);
292        Cafgar.CollisionIgnoreGroup = 2;
293        Add(Cafgar);
294    }
295
296    void CafgarKuolee(PhysicsObject Cafgar, PhysicsObject kohde)
297    {
298        Cafgar.Destroy();
299    }
300
301    void LuoDemoni(Vector paikka, double leveys, double korkeus)
302    {
303        PhysicsObject Demoni = PhysicsObject.CreateStaticObject(20, 40);
304        Demoni.Position = paikka;
305        Demoni.Image = DemoninKuva;
306        Demoni.Color = Color.Black;
307        Demoni.Tag = "Demoni";
308        Demoni.Brain = Aivot("pelaaja");
309        AddCollisionHandler(Demoni, "piikki", DemoniTuhoutuu);
310        AddCollisionHandler(Demoni, "Ampuja", DemoniKuolee);
311        AddCollisionHandler(Demoni, "ammus", DemoniKuolee);
312        Demoni.Mass = 500;
313        Demoni.CollisionIgnoreGroup = 2;
314        Add(Demoni);
315    }
316    void DemoniTuhoutuu(PhysicsObject Demoni, PhysicsObject kohde)
317    {
318        Demoni.Destroy();
319    }
320    void Hyppy(PlatformCharacter pelaaja, double hypynVoima)
321    {
322        pelaaja.Jump(hypynVoima);
323    }
324    void Hyppy2(PlatformCharacter pelaaja2, double hypynVoima)
325    {
326        pelaaja2.Jump(hypynVoima);
327    }
328    void Hyppy3(PlatformCharacter pelaaja3, double hypynVoima)
329    {
330        pelaaja3.Jump(hypynVoima);
331    }
332    Brain Aivot(String ketaSeurataan)
333    {
334        TagFollowerBrain seuraajanAivot = new TagFollowerBrain(ketaSeurataan, 5000);
335        return seuraajanAivot;       
336    }
337
338    void DemoniKuolee(PhysicsObject tormaaja, PhysicsObject kohde)
339    {
340        kohde.Destroy();
341    }
342
343    Brain AivotAmpuja()
344    {
345        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
346        seuraajanAivot.Speed = 0;
347        seuraajanAivot.TargetFollowDistance = 200;
348        seuraajanAivot.FollowAlways = true;
349        seuraajanAivot.TargetCloseDistance = 200;
350        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2;
351        return seuraajanAivot;
352
353    }
354
355
356    void mitaTapahtuuKunOllaanLahella2(object lahettajaAivot, EventArgs e)
357    {
358        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
359        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
360        if (ammus != null)
361        {
362            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
363            ammus.Tag = "ammus";
364        }
365    }
366    Brain AivotAmpuja2()
367    {
368        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja2);
369        seuraajanAivot.Speed = 0;
370        seuraajanAivot.TargetFollowDistance = 200;
371        seuraajanAivot.FollowAlways = true;
372        seuraajanAivot.TargetCloseDistance = 200;
373        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella222;
374        return seuraajanAivot;
375
376    }
377
378
379    void mitaTapahtuuKunOllaanLahella223(object lahettajaAivot, EventArgs e)
380    {
381        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
382        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
383        if (ammus != null)
384        {
385            AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
386            ammus.Tag = "ammus";
387        }
388    }
389    void mitaTapahtuuKunOllaanLahella222(object lahettajaAivot, EventArgs e)
390    {
391        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja2.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
392        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
393        if (ammus != null)
394        {
395            AddCollisionHandler(ammus, pelaaja2, Pelaaja2Menettaa2);
396            ammus.Tag = "ammus";
397        }
398    }
399    Brain AivotAmpuja3()
400    {
401        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
402        seuraajanAivot.Speed = 0;
403        seuraajanAivot.TargetFollowDistance = 200;
404        seuraajanAivot.FollowAlways = true;
405        seuraajanAivot.TargetCloseDistance = 200;
406        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella223;
407        return seuraajanAivot;
408
409    }
410    void LuoAmpuja(Vector paikka, double leveys, double korkeus)
411    {
412
413        PlatformCharacter Ampuja = new PlatformCharacter(20, 20);
414        Ampuja.IgnoresGravity = true;
415        Ampuja.IgnoresPhysicsLogics = true;
416        Ampuja.MaxVelocity = 0.0;
417        Ampuja.Position = paikka;
418        Ampuja.Image = Ampujankuva;
419        Ampuja.Color = Color.Black;
420        Ampuja.Tag = "Ampuja";
421        Ampuja.Brain = AivotAmpuja();
422        Ampuja.Weapon = new PlasmaCannon(5, 3);
423        Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1);
424        Ampuja.CollisionIgnoreGroup = 2;
425        Add(Ampuja);
426    }
427    void LuoAmpuja2(Vector paikka, double leveys, double korkeus)
428    {
429
430        PlatformCharacter Ampuja = new PlatformCharacter(20, 20);
431        Ampuja.IgnoresGravity = true;
432        Ampuja.IgnoresPhysicsLogics = true;
433        Ampuja.MaxVelocity = 0.0;
434        Ampuja.Position = paikka;
435        Ampuja.Image = Ampujankuva;
436        Ampuja.Color = Color.Black;
437        Ampuja.Tag = "Ampuja";
438        Ampuja.Brain = AivotAmpuja2();
439        Ampuja.Brain = AivotAmpuja3();
440        Ampuja.Weapon = new PlasmaCannon(5, 3);
441        Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1);
442        Ampuja.CollisionIgnoreGroup = 2;
443        Add(Ampuja);
444    }
445
446    void PelaajaMenettaa()
447    {
448    }
449
450    void PelaajanElamat()
451    {
452        elamaMittari = new DoubleMeter(50);
453        elamaMittari.MaxValue = 50;
454        ProgressBar elamaPalkki = new ProgressBar(150, 10);
455        elamaPalkki.BindTo(elamaMittari);
456        Add(elamaPalkki);
457
458        elamaPalkki.X = Screen.Right - 150;
459        elamaPalkki.Y = Screen.Top - 10;
460        //elamaPalkki.Angle = Angle.RightAngle;
461        elamaPalkki.BarColor = Color.Green;
462        elamaPalkki.BorderColor = Color.White;
463        //elamaPalkki.Angle = Angle.FromDegrees(90);
464        elamaMittari.Value = 50;
465        elamaMittari.LowerLimit += PelaajaTuhoutuu;
466    }
467
468    void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde)
469    {
470        elamaMittari.Value -= 3;
471    }
472
473    void PelaajaTuhoutuu(double mittarinArvo)
474    {
475        pelaaja.Destroy();
476        MessageDisplay.Add("Dead");
477
478        Replay();
479    }
480
481    void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
482    {
483        elamaMittari.Value -= 5;
484    }
485    void PelaajanElamat2()
486    {
487        P2elamaMittari = new DoubleMeter(50);
488        P2elamaMittari.MaxValue = 50;
489        ProgressBar P2elamaPalkki = new ProgressBar(150, 10);
490        P2elamaPalkki.BindTo(P2elamaMittari);
491        Add(P2elamaPalkki);
492
493       P2elamaPalkki.X = Screen.Right - 150;
494       P2elamaPalkki.Y = Screen.Top - 20;
495       P2elamaPalkki.BarColor = Color.Navy;
496       P2elamaPalkki.BorderColor = Color.White;
497        P2elamaMittari.Value = 50;
498        P2elamaMittari.LowerLimit += Pelaaja2Tuhoutuu;
499    }
500
501    void Pelaaja2Menettaa(PhysicsObject pelaaja2, PhysicsObject kohde)
502    {
503        P2elamaMittari.Value -= 3;
504    }
505    void Pelaaja2Menettaa3(PhysicsObject pelaaja2, PhysicsObject kohde)
506    {
507        P2elamaMittari.Value -= 50;
508    }
509
510    void Pelaaja2Tuhoutuu(double mittarinArvo)
511    {
512        pelaaja2.Destroy();
513        MessageDisplay.Add("Dead");
514
515        Replay2();
516    }
517    void LisaaElamaa2(PhysicsObject pelaaja2, PhysicsObject potion)
518    {
519        potion.Destroy();
520        P2elamaMittari.Value += 50;
521
522    }
523
524    void Pelaaja2Menettaa2(PhysicsObject pelaaja, PhysicsObject kohde)
525    {
526        P2elamaMittari.Value -= 5;
527    }
528    void PelaajanElamat3()
529    {
530        P3elamaMittari = new DoubleMeter(50);
531        P3elamaMittari.MaxValue = 50;
532        ProgressBar P3elamaPalkki = new ProgressBar(150, 10);
533        P3elamaPalkki.BindTo(P3elamaMittari);
534        Add(P3elamaPalkki);
535
536        P3elamaPalkki.X = Screen.Right - 150;
537        P3elamaPalkki.Y = Screen.Top - 10;
538        P3elamaPalkki.BarColor = Color.Green;
539        P3elamaPalkki.BorderColor = Color.White;
540        P3elamaMittari.Value = 50;
541        P3elamaMittari.LowerLimit += Pelaaja3Tuhoutuu;
542    }
543
544    void Pelaaja3Menettaa(PhysicsObject pelaaja3, PhysicsObject kohde)
545    {
546        P3elamaMittari.Value -= 3;
547    }
548
549    void Pelaaja3Tuhoutuu(double mittarinArvo)
550    {
551        pelaaja3.Destroy();
552        MessageDisplay.Add("Dead");
553
554        Replay3();
555    }
556    void LisaaElamaa3(PhysicsObject pelaaja2, PhysicsObject potion)
557    {
558        potion.Destroy();
559        P3elamaMittari.Value += 50;
560
561    }
562
563    void Pelaaja3Menettaa2(PhysicsObject pelaaja3, PhysicsObject kohde)
564    {
565        P3elamaMittari.Value -= 5;
566    }
567
568    void PelaajaLyo2(Image[] animaatio, Vector miekanSuunta)
569    {
570        PhysicsObject Miekka3 = new PhysicsObject(5, 5);
571        Miekka3.IsVisible = false;
572        Miekka3.Position = pelaaja3.Position;
573        Miekka3.Tag = "ase";
574        AddCollisionHandler(Miekka3, "Demoni", DemoniKuolee);
575        AddCollisionHandler(Miekka3, "Ampuja", DemoniKuolee);
576        AddCollisionHandler(Miekka3, "mage", DemoniKuolee);
577        Miekka3.Push(miekanSuunta);
578        Add(Miekka3);
579        pelaaja3.Animation = new Animation(animaatio);
580        pelaaja3.Animation.Start(1);
581        pelaaja3.Animation.FPS = 10;
582    }
583
584    void PelaajaLyo(Image[] animaatio, Vector miekanSuunta)
585    {
586        PhysicsObject Miekka = new PhysicsObject(5, 5);
587        Miekka.IsVisible = false;
588        Miekka.Position = pelaaja.Position;
589        Miekka.Tag = "ase";
590        AddCollisionHandler(Miekka, "Demoni", DemoniKuolee);
591        AddCollisionHandler(Miekka, "Ampuja", DemoniKuolee);
592        AddCollisionHandler(Miekka, "mage", DemoniKuolee);
593        Miekka.Push(miekanSuunta);
594        Add(Miekka);
595        pelaaja.Animation = new Animation(animaatio);
596        pelaaja.Animation.Start(1);
597        pelaaja.Animation.FPS = 10;
598    }
599
600    void PainettiinValikonNappiaP1(int valinta)
601    {
602        switch (valinta)
603        {
604            case 0:
605                Aloitus("Tutorial map", "Road To War");
606                break;
607
608            case 1:
609                Aloitus("kartta", "Field Forces");
610                break;
611
612            case 2:
613                Aloitus("Kentta2", "Far From Victory");
614                break;
615
616            case 3:
617                Aloitus("Kentta3", "Field Forces");
618                break;
619
620            case 4:
621                Begin();
622                break;
623
624            case 5:
625                Exit();
626                break;
627        }
628    }
629    void PainettiinValikonNappiaP2(int valinta)
630    {
631        switch (valinta)
632        {
633            case 0:
634                Aloitus2("Tutorial map", "Road To War");
635                break;
636
637            case 1:
638                Aloitus2("kartta", "Field Forces");
639                break;
640
641            case 2:
642                Aloitus2("Kentta2", "Far From Victory");
643                break;
644
645            case 3:
646                Aloitus2("Kentta3", "Field Forces");
647                break;
648
649            case 4:
650                Begin();
651                break;
652
653            case 5:
654                Exit();
655                break;
656        }
657    }
658
659
660    void Aloitus(string levelFile, string kappale)
661    {
662
663        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
664
665        LuoKenttä(levelFile);
666        MediaPlayer.Stop();
667        MediaPlayer.Play(kappale);
668        AsetaOhjaimet();
669    }
670    void Aloitus2(string levelFile, string kappale)
671    {
672
673        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
674
675        LuoKenttä2(levelFile);
676        MediaPlayer.Stop();
677        MediaPlayer.Play(kappale);
678        AsetaOhjaimet2();
679    }
680
681
682    void LuoMaali(Vector paikka, double leveys, double korkeus)
683    {
684        PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 80);
685        maali.Position = paikka;
686        maali.Image = maalinKuva;
687        maali.Tag = "maali";
688        maali.Color = Color.Blue;
689
690        Add(maali);
691    }
692    void SaavutitMaalin(PhysicsObject pelaaja, PhysicsObject kohde)
693    {
694        MediaPlayer.Stop();
695        MediaPlayer.Play("Opening The");
696        YouWin();
697    }
698    void SaavutitMaalin2(PhysicsObject pelaaja, PhysicsObject kohde)
699    {
700        MediaPlayer.Stop();
701        MediaPlayer.Play("Opening The");
702        YouWin2();
703    }
704    void SaavutitMaalin3(PhysicsObject pelaaja, PhysicsObject kohde)
705    {
706        MediaPlayer.Stop();
707        MediaPlayer.Play("Opening The");
708        YouWin2();
709    }
710    void Replay()
711    {
712        ClearAll();
713        MediaPlayer.Stop();
714        MediaPlayer.Play("The Defeated");
715        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",
716        "Replay", "Menu", "End");
717        valikko2.ItemSelected += PainettiinValikonNappia2;
718        Add(valikko2);
719    }
720    void PainettiinValikonNappia2(int valinta)
721    {
722        switch (valinta)
723        {
724
725            case 0:
726                AloitaUudelleen();
727                break;
728
729            case 1:
730                Begin();
731                break;
732
733            case 2:
734                Exit();
735                break;
736        }
737    }
738    void YouWin()
739    {
740        ClearAll();
741        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
742        "Replay", "Menu", "End");
743        valikko3.ItemSelected += PainettiinValikonNappia3;
744        Add(valikko3);
745    }
746    void PainettiinValikonNappia3(int valinta)
747    {
748        switch (valinta)
749        {
750            case 0:
751                AloitaUudelleen();
752                break;
753
754            case 1:
755                Begin();
756                break;
757
758            case 2:
759                Exit();
760                break;
761        }
762    }
763    void YouWin2()
764    {
765        ClearAll();
766        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",
767        "Replay", "Menu", "End");
768        valikko3.ItemSelected += PainettiinValikonNappiaP2W;
769        Add(valikko3);
770    }
771    void PainettiinValikonNappiaP2W(int valinta)
772    {
773        switch (valinta)
774        {
775            case 0:
776                AloitaUudelleen2();
777                break;
778
779            case 1:
780                Begin();
781                break;
782
783            case 2:
784                Exit();
785                break;
786        }
787    }
788
789    void AloitaUudelleen()
790    {
791        ClearAll();
792        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
793        LuoKenttä(CurrentLevelFile);
794        AsetaOhjaimet();
795    }
796    void AloitaUudelleen2()
797    {
798        ClearAll();
799        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim);
800        LuoKenttä2(CurrentLevelFile);
801        AsetaOhjaimet2();
802    }
803
804    Brain AivotMage2()
805    {
806        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja2);
807        seuraajanAivot.Speed = 20;
808        seuraajanAivot.TargetFollowDistance = 200;
809        seuraajanAivot.FollowAlways = true;
810        seuraajanAivot.TargetCloseDistance = 300;
811        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella23;
812        return seuraajanAivot;
813    }
814
815    void mitaTapahtuuKunOllaanLahella23(object lahettajaAivot, EventArgs e)
816    {
817
818        PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
819
820        if (mage == null || mage.Objects.Count < 1) return;
821
822        PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
823        mageAse.Angle = (pelaaja2.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
824        PhysicsObject ammus = mageAse.Shoot();
825
826        if (ammus != null)
827        {
828            AddCollisionHandler(ammus, pelaaja2, Pelaaja2Menettaa2);
829            ammus.Tag = "ammus";
830        }
831    }
832        Brain AivotMage()
833    {
834        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
835        seuraajanAivot.Speed = 20;
836        seuraajanAivot.TargetFollowDistance = 200;
837        seuraajanAivot.FollowAlways = true;
838        seuraajanAivot.TargetCloseDistance = 300;
839        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella3;
840        return seuraajanAivot;
841    }
842
843        void mitaTapahtuuKunOllaanLahella3(object lahettajaAivot, EventArgs e)
844        {
845            PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
846
847            if (mage == null || mage.Objects.Count < 1) return;
848
849            PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
850            mageAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
851            PhysicsObject ammus = mageAse.Shoot();
852
853            if (ammus != null)
854            {
855                AddCollisionHandler(ammus, pelaaja, Pelaaja3Menettaa2);
856                ammus.Tag = "ammus";
857            }
858        }
859        Brain AivotMage3()
860        {
861            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
862            seuraajanAivot.Speed = 20;
863            seuraajanAivot.TargetFollowDistance = 200;
864            seuraajanAivot.FollowAlways = true;
865            seuraajanAivot.TargetCloseDistance = 300;
866            seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella33;
867            return seuraajanAivot;
868        }
869
870        void mitaTapahtuuKunOllaanLahella33(object lahettajaAivot, EventArgs e)
871        {
872            PhysicsObject mage = (lahettajaAivot as Brain).Owner as PhysicsObject;
873
874            if (mage == null || mage.Objects.Count < 1) return;
875
876            PlasmaCannon mageAse = (PlasmaCannon)mage.Objects[0];
877            mageAse.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
878            PhysicsObject ammus = mageAse.Shoot();
879
880            if (ammus != null)
881            {
882                AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
883                ammus.Tag = "ammus";
884            }
885        }
886    void LuoMage(Vector paikka, double leveys, double korkeus)
887    {
888
889        PhysicsObject Mage = new PhysicsObject(20, 40);
890        Mage.IgnoresGravity = true;
891        Mage.CanRotate = false;
892        Mage.Position = paikka;
893        Mage.Image = magenKuva;
894        Mage.IsVisible = true;
895        Mage.Color = Color.Black;
896        Mage.Tag = "mage";
897        Mage.Brain = AivotMage();
898        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
899        Mage.Add(pyssy);
900        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(1);
901        pyssy.IsVisible = false;
902        Mage.CollisionIgnoreGroup = 2;
903        Add(Mage);
904    }
905    void LuoMage2(Vector paikka, double leveys, double korkeus)
906    {
907
908        PhysicsObject Mage = new PhysicsObject(20, 40);
909        Mage.IgnoresGravity = true;
910        Mage.CanRotate = false;
911        Mage.Position = paikka;
912        Mage.Image = magenKuva;
913        Mage.IsVisible = true;
914        Mage.Color = Color.Black;
915        Mage.Tag = "mage";
916        Mage.Brain = AivotMage2();
917        Mage.Brain = AivotMage3();
918        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
919        Mage.Add(pyssy);
920        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(1);
921        pyssy.IsVisible = false;
922        Mage.CollisionIgnoreGroup = 2;
923        Add(Mage);
924    }
925    Brain AivotHunter()
926    {
927        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
928        seuraajanAivot.Speed = 300;
929        seuraajanAivot.TargetFollowDistance = 200;
930        seuraajanAivot.FollowAlways = true;
931        seuraajanAivot.TargetCloseDistance = 200;
932
933
934
935        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella4;
936        return seuraajanAivot;
937    }
938    Brain AivotHunter2()
939    {
940        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
941        seuraajanAivot.Speed = 300;
942        seuraajanAivot.TargetFollowDistance = 200;
943        seuraajanAivot.FollowAlways = true;
944        seuraajanAivot.TargetCloseDistance = 200;
945
946
947
948        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella34;
949        return seuraajanAivot;
950    }
951
952
953    void mitaTapahtuuKunOllaanLahella4(object lahettajaAivot, EventArgs e)
954    {
955        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
956        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
957        if (ammus != null)
958        {
959            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
960            ammus.Tag = "ammus";
961        }
962    }
963    Brain AivotHunter3()
964    {
965        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja2);
966        seuraajanAivot.Speed = 300;
967        seuraajanAivot.TargetFollowDistance = 200;
968        seuraajanAivot.FollowAlways = true;
969        seuraajanAivot.TargetCloseDistance = 200;
970
971
972
973        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella34;
974        return seuraajanAivot;
975    }
976
977
978    void mitaTapahtuuKunOllaanLahella24(object lahettajaAivot, EventArgs e)
979    {
980        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja2.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
981        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
982        if (ammus != null)
983        {
984            AddCollisionHandler(ammus, pelaaja2, Pelaaja2Menettaa2);
985            ammus.Tag = "ammus";
986        }
987    }
988    void mitaTapahtuuKunOllaanLahella34(object lahettajaAivot, EventArgs e)
989    {
990        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja3.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
991        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();
992        if (ammus != null)
993        {
994            AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
995            ammus.Tag = "ammus";
996        }
997    }
998    void LuoHunter(Vector paikka, double leveys, double korkeus)
999    {
1000
1001        PlatformCharacter hunter = new PlatformCharacter(20, 40);
1002
1003        hunter.MaxVelocity = 400.400;
1004        hunter.Position = paikka;
1005        hunter.Image = hunterKuva;
1006        hunter.Color = Color.Black;
1007        hunter.Tag = "Ampuja";
1008        hunter.Brain = AivotHunter();
1009       
1010        AddCollisionHandler(hunter, "piikki", HuntKuoli);
1011        hunter.Weapon = new PlasmaCannon(5, 3);
1012        hunter.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(3);
1013        hunter.Weapon.IsVisible = false;
1014        hunter.CollisionIgnoreGroup = 2;
1015        Add(hunter);
1016    }
1017    void LuoHunter2(Vector paikka, double leveys, double korkeus)
1018    {
1019
1020        PlatformCharacter hunter = new PlatformCharacter(20, 40);
1021
1022        hunter.MaxVelocity = 400.400;
1023        hunter.Position = paikka;
1024        hunter.Image = hunterKuva;
1025        hunter.Color = Color.Black;
1026        hunter.Tag = "Ampuja";
1027        hunter.Brain = AivotHunter2();
1028        AddCollisionHandler(hunter, "piikki", HuntKuoli);
1029        hunter.Weapon = new PlasmaCannon(5, 3);
1030        hunter.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(3);
1031        hunter.Weapon.IsVisible = false;
1032        hunter.CollisionIgnoreGroup = 2;
1033        Add(hunter);
1034    }
1035    void LuoKavlor(Vector paikka, double leveys, double korkeus)
1036    {
1037
1038        PhysicsObject kavlor = new PhysicsObject(20, 40);
1039
1040        kavlor.MaxVelocity = 400.400;
1041        kavlor.Position = paikka;
1042        kavlor.Image = kavlorKuva;
1043        kavlor.Color = Color.Black;
1044        kavlor.Tag = "kavlor";
1045        kavlor.Brain = AivotKavlor();
1046        kavlor.CanRotate = false;
1047        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
1048        kavlor.Add(pyssy);
1049        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(3);
1050        pyssy.IsVisible = false;
1051        KavlorinElamat(kavlor);
1052        AddCollisionHandler(kavlor, "ase", KavlorMenettaa);
1053        kavlor.CollisionIgnoreGroup = 2;
1054        Add(kavlor);
1055    }
1056    void LuoKavlor2(Vector paikka, double leveys, double korkeus)
1057    {
1058
1059        PhysicsObject kavlor = new PhysicsObject(20, 40);
1060
1061        kavlor.MaxVelocity = 400.400;
1062        kavlor.Position = paikka;
1063        kavlor.Image = kavlorKuva;
1064        kavlor.Color = Color.Black;
1065        kavlor.Tag = "kavlor";
1066        kavlor.Brain = AivotKavlor2();
1067        kavlor.Brain = AivotKavlor3();
1068        kavlor.CanRotate = false;
1069        PlasmaCannon pyssy = new PlasmaCannon(20, 5);
1070        kavlor.Add(pyssy);
1071        pyssy.TimeBetweenUse = TimeSpan.FromSeconds(3);
1072        pyssy.IsVisible = false;
1073        KavlorinElamat(kavlor);
1074        AddCollisionHandler(kavlor, "ase", KavlorMenettaa);
1075        kavlor.CollisionIgnoreGroup = 2;
1076        Add(kavlor);
1077    }
1078    void HuntKuoli(PhysicsObject hunter, PhysicsObject kohde)
1079    {
1080        hunter.Destroy();
1081    }
1082    void CafgarinElamat(PhysicsObject Cafgar)
1083    {
1084        elamaMittari2 = new DoubleMeter(25);
1085        elamaMittari2.MaxValue = 50;
1086        ProgressBar elamaPalkki2 = new ProgressBar(150, 10);
1087        elamaPalkki2.BindTo(elamaMittari2);
1088        Add(elamaPalkki2);
1089
1090        elamaPalkki2.X = Screen.Right - 150;
1091        elamaPalkki2.Y = Screen.Top - 30;
1092        //elamaPalkki.Angle = Angle.RightAngle;
1093        elamaPalkki2.BarColor = Color.Red;
1094        elamaPalkki2.BorderColor = Color.White;
1095        //elamaPalkki.Angle = Angle.FromDegrees(90);
1096        elamaMittari2.Value = 50;
1097        //        elamaMittari.LowerLimit += CafgarKuolee;
1098        elamaMittari2.LowerLimit += delegate
1099        {
1100            Cafgar.Destroy();
1101            YouWin();
1102        };
1103    }
1104
1105    void CafgarMenettaa(PhysicsObject Cafgar, PhysicsObject kohde)
1106    {
1107        elamaMittari2.Value -= 5;
1108    }
1109    void KavlorinElamat(PhysicsObject Kavlor)
1110    {
1111        elamaMittari3 = new DoubleMeter(25);
1112        elamaMittari3.MaxValue = 50;
1113        ProgressBar elamaPalkki3 = new ProgressBar(150, 10);
1114        elamaPalkki3.BindTo(elamaMittari3);
1115        Add(elamaPalkki3);
1116
1117        elamaPalkki3.X = Screen.Right - 150;
1118        elamaPalkki3.Y = Screen.Top - 30;
1119        //elamaPalkki.Angle = Angle.RightAngle;
1120        elamaPalkki3.BarColor = Color.Purple;
1121        elamaPalkki3.BorderColor = Color.White;
1122        //elamaPalkki.Angle = Angle.FromDegrees(90);
1123        elamaMittari3.Value = 50;
1124        //        elamaMittari.LowerLimit += CafgarKuolee;
1125        elamaMittari3.LowerLimit += delegate
1126        {
1127            Kavlor.Destroy();
1128            YouWin2();
1129        };
1130    }
1131
1132    void KavlorMenettaa(PhysicsObject Kavlor, PhysicsObject kohde)
1133    {
1134        elamaMittari3.Value -= 5;
1135    }
1136    Brain AivotKavlor()
1137    {
1138        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
1139        seuraajanAivot.Speed = 300;
1140        seuraajanAivot.TargetFollowDistance = 100;
1141        seuraajanAivot.FollowAlways = true;
1142        seuraajanAivot.TargetCloseDistance = 200;
1143        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella5;
1144        return seuraajanAivot;
1145    }
1146
1147    void mitaTapahtuuKunOllaanLahella5(object lahettajaAivot, EventArgs e)
1148    {
1149        //Magen ase on sen lapsiolio eli Objects-listassa paikassa 0.
1150
1151        PhysicsObject kavlor = (lahettajaAivot as Brain).Owner as PhysicsObject;
1152
1153        if (kavlor == null || kavlor.Objects.Count < 1) return;
1154
1155        PlasmaCannon kavlorAse = (PlasmaCannon)kavlor.Objects[0];
1156        kavlorAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
1157        PhysicsObject ammus = kavlorAse.Shoot();
1158
1159        if (ammus != null)
1160        {
1161            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);
1162            ammus.Tag = "ammus";
1163        }
1164    }
1165    Brain AivotKavlor2()
1166    {
1167        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja2);
1168        seuraajanAivot.Speed = 300;
1169        seuraajanAivot.TargetFollowDistance = 100;
1170        seuraajanAivot.FollowAlways = true;
1171        seuraajanAivot.TargetCloseDistance = 200;
1172        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella25;
1173        return seuraajanAivot;
1174    }
1175
1176    void mitaTapahtuuKunOllaanLahella25(object lahettajaAivot, EventArgs e)
1177    {
1178
1179        PhysicsObject kavlor = (lahettajaAivot as Brain).Owner as PhysicsObject;
1180
1181        if (kavlor == null || kavlor.Objects.Count < 1) return;
1182
1183        PlasmaCannon kavlorAse = (PlasmaCannon)kavlor.Objects[0];
1184        kavlorAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
1185        PhysicsObject ammus = kavlorAse.Shoot();
1186
1187        if (ammus != null)
1188        {
1189            AddCollisionHandler(ammus, pelaaja2, Pelaaja2Menettaa2);
1190            ammus.Tag = "ammus";
1191        }
1192    }
1193    Brain AivotKavlor3()
1194    {
1195        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja3);
1196        seuraajanAivot.Speed = 300;
1197        seuraajanAivot.TargetFollowDistance = 100;
1198        seuraajanAivot.FollowAlways = true;
1199        seuraajanAivot.TargetCloseDistance = 200;
1200        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella35;
1201        return seuraajanAivot;
1202    }
1203
1204    void mitaTapahtuuKunOllaanLahella35(object lahettajaAivot, EventArgs e)
1205    {
1206
1207        PhysicsObject kavlor = (lahettajaAivot as Brain).Owner as PhysicsObject;
1208
1209        if (kavlor == null || kavlor.Objects.Count < 1) return;
1210
1211        PlasmaCannon kavlorAse = (PlasmaCannon)kavlor.Objects[0];
1212        kavlorAse.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;
1213        PhysicsObject ammus = kavlorAse.Shoot();
1214
1215        if (ammus != null)
1216        {
1217            AddCollisionHandler(ammus, pelaaja3, Pelaaja3Menettaa2);
1218            ammus.Tag = "ammus";
1219        }
1220    }
1221    void EPotion(Vector paikka, double leveys, double korkeus)
1222    {
1223        PhysicsObject potion = new PhysicsObject(20, 20);
1224        potion.Position = paikka;
1225        potion.CanRotate = false;
1226        potion.Shape = Shape.Heart;
1227        potion.Color = Color.Red;
1228        potion.Tag = "peruna";
1229        potion.CollisionIgnoreGroup = 2;
1230        Add(potion);
1231    }
1232    void LisaaElamaa(PhysicsObject pelaaja, PhysicsObject potion)
1233    {
1234        potion.Destroy();
1235        elamaMittari.Value += 50;
1236       
1237    }
1238    void P1MSW()
1239    {
1240        MultiSelectWindow valikko = new MultiSelectWindow("One Player",
1241        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1242        valikko.ItemSelected += PainettiinValikonNappiaP1;
1243        Add(valikko);
1244    }
1245    void P2MSW()
1246    {
1247        MultiSelectWindow valikko = new MultiSelectWindow("Two Players",
1248        "tutorial", "Level 1", "Level 2", "Level 3", "Menu", "Exit");
1249        valikko.ItemSelected += PainettiinValikonNappiaP2;
1250        Add(valikko);
1251    }
1252    void Replay2()
1253    {
1254        ClearAll();
1255        MediaPlayer.Stop();
1256        MediaPlayer.Play("The Defeated");
1257        MultiSelectWindow valikko2 = new MultiSelectWindow("P2 Died",
1258        "Replay", "Menu", "End");
1259        valikko2.ItemSelected += PainettiinValikonNappiaP22;
1260        Add(valikko2);
1261    }
1262    void PainettiinValikonNappiaP22(int valinta)
1263    {
1264        switch (valinta)
1265        {
1266
1267            case 0:
1268                AloitaUudelleen2();
1269                break;
1270
1271            case 1:
1272                Begin();
1273                break;
1274
1275            case 2:
1276                Exit();
1277                break;
1278        }
1279    }
1280    void Replay3()
1281    {
1282        ClearAll();
1283        MediaPlayer.Stop();
1284        MediaPlayer.Play("The Defeated");
1285        MultiSelectWindow valikko2 = new MultiSelectWindow("P1 Died",
1286        "Replay", "Menu", "End");
1287        valikko2.ItemSelected += PainettiinValikonNappiaP223;
1288        Add(valikko2);
1289    }
1290    void PainettiinValikonNappiaP223(int valinta)
1291    {
1292        switch (valinta)
1293        {
1294
1295            case 0:
1296                AloitaUudelleen2();
1297                break;
1298
1299            case 1:
1300                Begin();
1301                break;
1302
1303            case 2:
1304                Exit();
1305                break;
1306        }
1307    }
1308}
Note: See TracBrowser for help on using the repository browser.