source: 2014/koodauskerho/38/EmilK/toimintajuttu/toimintajuttu/toimintajuttu/toimintajuttu.cs @ 5829

Revision 5829, 43.4 KB checked in by jotapoti, 7 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 toimintajuttu : PhysicsGame
10{
11    const double nopeus = 800;
12    const double hyppyNopeus = 2750;
13    const int RUUDUN_KOKO = 97;
14
15    PlatformCharacter pelaaja1;
16    //PlatformCharacter bossi;
17
18    int kentannumero = 1;
19
20    bool yokiikarit = false;
21    GameObject kiikarit;
22
23    DoubleMeter elamaLaskuriB;
24    PhysicsObject taso1;
25
26    Image[] taustaKuva = LoadImages("taustaagodofwariin", "metal gear tausta", "hitman tausta", "parempi metrotausta", "hiippailutausta", "far cry tausta", "middle earth taustaa", "spec ops tausta", "just cause tausta", "doom tausta");
27    Image pelaajanKuva = LoadImage("god of war");
28    Image tahtiKuva = LoadImage("tahti");
29
30    Image kiikarikuva = LoadImage("yökiikarit");
31
32    Image[][] vihollisenkuva = new Image[][]
33        { LoadImages("vihu")
34        , LoadImages("hämähäkki")
35        , LoadImages("nekromorfi")
36        , LoadImages("rotta juoksee 1", "rotta juoksee 2", "rotta juoksee 3", "rotta juoksee 4","rotta juoksee 5", "rotta juoksee 6")
37        , LoadImages("norsu")
38        , LoadImages("demoni 1")
39        , LoadImages("hiiri")
40        , LoadImages("spec ops vihu")
41        , LoadImages("spec ops vihu")
42        , LoadImages("jonnepahis1")
43        };
44
45    Image[] vihollisenLento = LoadImages("vihu hirttyy", "vihu hirttyy 2");
46
47    Image[] toisenvihollisenkuva = LoadImages("hämähäkki", "metal gear vihu 2", "hämähäkki", "vihu", "rotta", "vihu", "hiiri", "spec ops vihu 2", "rotta", "kuolemaa kerjäävä");
48
49    Image[] kolmannenvihollisenkuva = LoadImages("kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä", "kuolemaa kerjäävä","kuolemaa kerjäävä");
50
51    Image lentavankuva = LoadImage("demoni 1");
52
53    Image[] bossinkuva = LoadImages("bossi remasteroituna", "ocelot", "bossi3", "pahis", "hämähäkki", "norsu", "hiiri", "rotta", "bossi3", "ocelot");
54
55    Image ammuksenkuva = LoadImage("bossinhyökkäys");
56    Image[] energiankuva = LoadImages("PALLO9", "SPLINTERCELLHP2", "deadspacehp", "metrohealth", "powerup", "pavel", "hiiri", "rotta", "ROTTA", "PALLO9");
57    Image[] powerinkuva = LoadImages("powerup", "bossi3", "toinenbossi", "pahis", "norsu", "hämähäkki", "hiiri", "rotta", "powerup", "powerup");
58    Image[] tuhokuva = LoadImages("titaaninjalka", "vihu", "rotta", "nekromorfi", "metrohealth", "norsu", "hiiri", "rotta", "rotta", "rotta");
59    Image tasokuva = LoadImage("platform");
60    Image ansakuva = LoadImage("tappavaplätformi");
61    Image toinentasokuva = LoadImage("JUTTU");
62    Image[] kuolinkuvat = LoadImages("kuolinanimaatio 1", "kuolinanimaatio 2", "kuolinanimaatio 3", "kuolinanimaatio 4");
63    Image alkuvalikonkuva = LoadImage("TITLE SCREEN osa 1");
64    Image toinenalkuvalikonkuva = LoadImage("TITLE SCREEN osa 2");
65
66    Image[] tallomiskuva = LoadImages("bossi talloo 1", "bossi talloo 2");
67    Image jalkakuva = LoadImage("BOSSIN ISKU");
68
69    SoundEffect hyppyAani = LoadSoundEffect("Jump7");
70    SoundEffect terveysAani = LoadSoundEffect("Powerup2");
71
72    Image voitto = LoadImage("voitto");
73
74    Image[] aseenkuvat = LoadImages("ase", "hook", "hook", "hook", "hook", "hook", "hook", "hook", "hook", "lazor");
75
76    Color[] tasovarit = { Color.Red, Color.Gray, Color.DarkBlue, Color.DarkGreen, Color.Gray, Color.Green, Color.GreenYellow, Color.GreenYellow, Color.Gray, Color.Red };
77
78    String[] musiikit = { "bi&ei3", "ljn2", "doom2", "futuremusic2", "D&d2", "voittomusa", "ljn2", "doom2", "bi&ei3", "VIMONEN MUSA" };
79
80    private Image[][] ukkeliHyppaa = { LoadImages("kratos"), LoadImages("snake juoksee 1(2)"), LoadImages("agent 47 juoksee(22)"), LoadImages("pavel remasteroituna"), LoadImages("Sam Fisher juoksee 1"), LoadImages("Jason juoksee 1"), LoadImages("Talion"), LoadImages("Walker juoksee 1"), LoadImages("rico"), LoadImages("cyberdemon") };
81    private Image[][] ukkelinKavely = { LoadImages("kratos juoksee 1"), LoadImages("snake juoksee 1(2)", "snake juoksee 2(2)", "snake juoksee 3(2)", "snake juoksee 4(2)", "snake juoksee 5(2)", "snake juoksee 6(2)", "snake juoksee 7(2)"), LoadImages("agent 472", "agent 47 juoksee(22)"), LoadImages("pavel remasteroituna"), LoadImages("Sam Fisher", "Sam Fisher juoksee 1"), LoadImages("Jason", "Jason juoksee 1"), LoadImages("Talion"), LoadImages("Walker", "Walker juoksee 1"), LoadImages("rico 2"), LoadImages("cyberdemon") };
82    private Image[][] ukkeliHyokkaa = { LoadImages("hyökkäys 4"), LoadImages("snake 2"), LoadImages("agent 472"), LoadImages("pavel remasteroituna"), LoadImages("Sam Fisher"), LoadImages("Jason"), LoadImages("Talion"), LoadImages("Walker juoksee 1"), LoadImages("rico 2"), LoadImages("cyberdemon power 1", "cyberdemon power 2", "cyberdemon power 3", "cyberdemon power 3", "cyberdemon power 3") };
83    private Image[][] ukkeliHyokkaaPistol = { LoadImages("kratos ampuu 1", "kratos ampuu 2"), LoadImages("snake pistol 1", "snake pistol 2", "snake pistol 3", "snake pistol 4", "snake pistol 5", "snake pistol 6", "snake pistol 7"), LoadImages("agent 472"), LoadImages("pavel remasteroituna"), LoadImages("Sam Fisher taser"), LoadImages("Jason"), LoadImages("Talion"), LoadImages("Walker pistol 1", "Walker pistol 2"), LoadImages("rico pistol 1", "rico pistol 2", "rico pistol 3"), LoadImages("cyberdemon") };
84    private Image[][] ukkeliHyokkaaRifle = { LoadImages("kratos ampuu 1", "kratos ampuu 2"), LoadImages("snake"), LoadImages("agent 472"), LoadImages("pavel remasteroituna"), LoadImages("Sam Fisher"), LoadImages("Jason"), LoadImages("Talion"), LoadImages("Walker"), LoadImages("rico rifle 2"), LoadImages("cyberdemon ampuu 1", "cyberdemon ampuu 2", "cyberdemon ampuu 3") };
85    private Image[][] ukkeliPaikallaan = { LoadImages("kratos"), LoadImages("snake 2"), LoadImages("agent 472"), LoadImages("pavel remasteroituna"), LoadImages("Sam Fisher"), LoadImages("Jason"), LoadImages("Talion"), LoadImages("Walker"), LoadImages("rico 2"), LoadImages("cyberdemon") };
86    private Image[][] ukkeliPoweri = { LoadImages("kratos power 1", "kratos power 2", "kratos power 3", "kratos power 3"), LoadImages("snake power 1", "snake power 2", "snake power 3", "snake power 4"), LoadImages("agent 47 power", "agent 47 power 2", "agent 47 power 3", "agent 47 power 4", "agent 47 power 4"), LoadImages("pavel power 1", "pavel power 2", "pavel power 3", "pavel power 3"), LoadImages("Sam Fisher power 1", "Sam Fisher power 2", "Sam Fisher power 3", "Sam Fisher power 4"), LoadImages("Jason power 1", "Jason power 2", "Jason power 3", "Jason power 4"), LoadImages("Talion power 1", "Talion power 2", "Talion power 3", "Talion power 4"), LoadImages("Walker power 1", "Walker power 2", "Walker power 3", "Walker power 4"), LoadImages("rico 2"), LoadImages("cyberdemon power 1", "cyberdemon power 2", "cyberdemon power 3", "cyberdemon power 3", "cyberdemon power 3") };
87    private Image[] ammuskuvat = { LoadImage("Corvon nuoli"), LoadImage("graysonin luoti"), LoadImage("graysonin luoti"), LoadImage("graysonin luoti"), LoadImage("graysonin luoti"), LoadImage("graysonin luoti"), LoadImage("Corvon nuoli"), LoadImage("graysonin luoti"), LoadImage("graysonin luoti"), LoadImage("cyberdemonin ammus") };
88    private Image[] ukkelivahingoittui = { LoadImage("vahingoittunut snake 1"), LoadImage("vahingoittunut snake 2"), LoadImage("vahingoittunut snake 3")};
89
90    SoundEffect maaliAani = LoadSoundEffect("maali");
91
92    DoubleMeter elamaLaskuri;
93 
94    IntMeter VoimaLaskuri;
95
96    public override void Begin()
97    {
98        IsMouseVisible = true;
99
100       
101
102        LuoValikko(1);
103
104
105    }
106    void LuoValikko(int ruudunnumero)
107    {
108        ClearAll();
109
110
111        switch (ruudunnumero)
112        {
113            case 1:
114                Level.Background.Image = alkuvalikonkuva;
115                luonappi(0.3, 0.41, 1);
116                luonappi(0.53, 0.4, 3);
117                luonappi(0.74, 0.4, 5);
118                luonappi(0.25, 0.73, 4);
119                luonappi(0.49, 0.73, 2);
120                luonappi(0.75, 0.77, -99);
121                break;
122            case 2:
123                Level.Background.Image = toinenalkuvalikonkuva;
124               
125                luonappi(0.3, 0.4, 6);
126                luonappi(0.83, 0.47, 7);
127                luonappi(0.54, 0.42, 8);
128                luonappi(0.37, 0.74, 9);
129                luonappi(0.15, 0.73, -100);
130                luonappi(0.64, 0.78, 10);
131                break;
132        } 
133        Level.Background.FitToLevel();
134        Level.Background.Color = new Color(0, 19, 127);
135    }
136    void luonappi(double x, double y, int kenttä)
137    {
138        GameObject nappi = new GameObject(150, 150);
139        nappi.X = Level.Left + x * Level.Width;
140        nappi.Y = Level.Top - y * Level.Height;
141        nappi.Color = Color.Transparent;
142        Add(nappi);
143        if (kenttä == -99)
144        {
145            Mouse.ListenOn(nappi, MouseButton.Left, ButtonState.Pressed, LuoValikko, null, 2);
146        }
147        else if (kenttä == -100)
148        {
149            Mouse.ListenOn(nappi, MouseButton.Left, ButtonState. Pressed, LuoValikko, null, 1);
150        }
151        else
152        {
153            Mouse.ListenOn(nappi, MouseButton.Left, ButtonState.Pressed, vaihdakentta, null, kenttä);
154        }
155    } 
156
157    void vaihdakentta(int kenttä)
158    {
159        IsMouseVisible = false;
160        kentannumero = kenttä;
161        AloitaPeli();
162    }
163
164    void AloitaPeli()
165    {
166        ClearAll();
167
168        if (kentannumero >= 11)
169        {
170
171            MediaPlayer.Play("voittomusa");
172            MediaPlayer.IsRepeating = true;
173
174            PelinVoitto();
175            return;
176        }
177
178        //if (kentannumero == 4)
179        //{
180        //    Level.AmbientLight = 0.2;
181
182        //    Light valo = new Light();
183        //    valo.Intensity = 0.9;
184        //    valo.Distance = 300;
185        //    valo.Position = Vector.Zero;
186        //    Add(valo);
187
188        //    Timer ajastin = new Timer();
189        //    ajastin.Interval = 0.05;
190        //    ajastin.Timeout += delegate { valo.Position = pelaaja1.Position; /* + new Vector(0, -50); */ };
191        //    ajastin.Start();
192        //}
193
194        Gravity = new Vector(0, -4000);
195
196        MediaPlayer.Play(musiikit[kentannumero - 1]);
197        MediaPlayer.IsRepeating = true;
198
199
200        LuoKentta();
201        LisaaNappaimet();
202        LuoElamaLaskuri();
203
204        Camera.Follow(pelaaja1);
205        Camera.FollowOffset = new Vector(0, -100);
206        Camera.ZoomFactor = 0.85;
207        Camera.StayInLevel = true;
208
209        if(kentannumero==2)
210        {
211            Camera.FollowOffset = new Vector(0, 100);
212            }
213
214
215    }
216
217    void PelinVoitto()
218    {
219        GameObject voittokuva = new GameObject(800, 600);
220        voittokuva.Image = voitto;
221        Add(voittokuva);
222        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
223
224        Camera.ZoomToLevel();
225    }
226
227    void LuoKentta()
228    {
229        TileMap kentta = TileMap.FromLevelAsset("kentta" + kentannumero);
230        kentta.SetTileMethod('#', LisaaTaso);
231        kentta.SetTileMethod('*', LisaaTahti);
232        kentta.SetTileMethod('N', LisaaPelaaja);
233        kentta.SetTileMethod('H', LisaaVihollinen);
234        kentta.SetTileMethod('J', LisaaToinenVihollinen);
235        kentta.SetTileMethod('K', LisaaKolmasVihollinen);
236        kentta.SetTileMethod('P', LisaaAnsa);
237        kentta.SetTileMethod('B', LisaaBossi);
238        kentta.SetTileMethod('b', LisaaToinenBossi);
239        kentta.SetTileMethod('M', LisaaBossimusiikki);
240        kentta.SetTileMethod('4', LisaaToinentaso);
241        kentta.SetTileMethod('5', LisaaKolmastaso);
242        kentta.SetTileMethod('+', LisaaNeljästaso);
243        kentta.SetTileMethod('9', LisaaTerveyttä);
244        kentta.SetTileMethod('8', Lisaadeadspacehp);
245        kentta.SetTileMethod('3', Lisaametrohealth);
246        kentta.SetTileMethod('7', LisaaPowerup);
247        kentta.SetTileMethod('L', LisaaLentavavihollinen);
248        kentta.SetTileMethod('Q', Lisaanakymatonpalikka);
249        kentta.SetTileMethod('5', Lisaavalaistus);
250
251        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
252        Level.CreateBorders();
253        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
254
255        Level.Background.Image = taustaKuva[kentannumero - 1];
256    }
257
258    void LisaaTaso(Vector paikka, double leveys, double korkeus)
259    {
260        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
261        taso.Position = paikka;
262        taso.Color = tasovarit[kentannumero - 1];
263        taso.Image = tasokuva;
264
265        Add(taso);
266    }
267
268    void Lisaanakymatonpalikka(Vector paikka, double leveys, double korkeus)
269    {
270        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
271        taso.Position = paikka;
272        taso.Color = tasovarit[kentannumero - 1];
273        taso.Image = tasokuva;
274        taso.Tag = "nakymaton";
275        taso.IsVisible = false;
276
277
278        Add(taso);
279    }
280
281    void LisaaTerveyttä(Vector paikka, double leveys, double korkeus)
282    {
283        PhysicsObject terveys = PhysicsObject.CreateStaticObject(leveys, korkeus);
284        terveys.Position = paikka;
285        terveys.Color = tasovarit[kentannumero - 1];
286        terveys.Image = energiankuva[kentannumero - 1];
287        terveys.IgnoresCollisionResponse = true;
288        terveys.Tag = "terveys";
289        Add(terveys);
290    }
291    void Lisaasplintercellhp(Vector paikka, double leveys, double korkeus)
292    {
293        LisaaTerveyttä(paikka, leveys, korkeus);
294    }
295
296    void Lisaadeadspacehp(Vector paikka, double leveys, double korkeus)
297    {
298        LisaaTerveyttä(paikka, leveys / 5, korkeus / 2);
299    }
300
301    void Lisaametrohealth(Vector paikka, double leveys, double korkeus)
302    {
303        LisaaTerveyttä(paikka, leveys / 5, korkeus / 2);
304    }
305
306    void LisaaPowerup(Vector paikka, double leveys, double korkeus)
307    {
308        PhysicsObject powerup = PhysicsObject.CreateStaticObject(leveys, korkeus);
309        powerup.Position = paikka;
310        powerup.Color = tasovarit[kentannumero - 1];
311        powerup.Image = powerinkuva[kentannumero - 1];
312        powerup.IgnoresCollisionResponse = true;
313        powerup.Tag = "powerup";
314        Add(powerup);
315    }
316
317    void LisaaToinentaso(Vector paikka, double leveys, double korkeus)
318    {
319        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
320        taso.Position = paikka;
321        taso.Color = Color.Gray;
322        Add(taso);
323    }
324
325    void LisaaNeljästaso(Vector paikka, double leveys, double korkeus)
326    {
327        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
328        taso.Position = paikka;
329        taso.Image = toinentasokuva;
330        Add(taso);
331    }
332
333    void LisaaKolmastaso(Vector paikka, double leveys, double korkeus)
334    {
335        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
336        taso.Position = paikka;
337        taso.Color = Color.Gray;
338        Add(taso);
339
340    }
341
342    void LisaaBossimusiikki(Vector paikka, double leveys, double korkeus)
343    {
344        taso1 = PhysicsObject.CreateStaticObject(3 * leveys, 3 * korkeus);
345        taso1.Position = paikka;
346        taso1.Color = Color.Red;
347        taso1.IsVisible = false;
348        taso1.IgnoresCollisionResponse = true;
349        taso1.Tag = "Bossipalikka";
350        Add(taso1);
351    }
352
353    void Lisaavalaistus(Vector paikka, double leveys, double korkeus)
354    {
355        taso1 = PhysicsObject.CreateStaticObject(15 * leveys, 3 * korkeus);
356        taso1.Position = paikka;
357        taso1.Color = Color.Red;
358        taso1.IsVisible = false;
359        taso1.IgnoresCollisionResponse = true;
360        taso1.Tag = "Pimeää";
361        Add(taso1);
362    }
363
364    void LisaaAnsa(Vector paikka, double leveys, double korkeus)
365    {
366        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
367        taso.Position = paikka;
368        taso.Color = Color.Black;
369        taso.Image = ansakuva;
370        taso.Tag = "Ansa";
371
372        Add(taso);
373    }
374
375    void LisaaToinenBossi(Vector paikka, double leveys, double korkeus)
376    {
377        paikka += new Vector(0, 50);
378        PhysicsObject bossi = PhysicsObject.CreateStaticObject(leveys * 2.0, korkeus * 2.0);
379        bossi.Image = bossinkuva[kentannumero - 1];
380        bossi.Position = paikka;
381        bossi.CanRotate = false;
382        bossi.IgnoresCollisionResponse = true;
383        Add(bossi);
384
385        elamaLaskuriB = new DoubleMeter(10);
386        elamaLaskuriB.MaxValue = 10;
387
388        ProgressBar elamaPalkkiB = new ProgressBar(150, 20);
389        elamaPalkkiB.X = Screen.Right - 150;
390        elamaPalkkiB.Y = Screen.Top - 20;
391        elamaPalkkiB.BindTo(elamaLaskuriB);
392        Add(elamaPalkkiB);
393
394        AssaultRifle bossiAse = new AssaultRifle(30, 10);
395        bossiAse.ProjectileCollision = AmmusOsui;
396        bossiAse.FireRate = 3;
397        bossiAse.IsVisible=false;
398        bossi.Add(bossiAse);
399
400        AddCollisionHandler(bossi, "Ase", delegate(PhysicsObject ase, PhysicsObject vihu)
401        {
402            elamaLaskuriB.Value--;
403
404            if (elamaLaskuriB.Value < 1)
405            {
406                bossi.Destroy();
407                kentannumero++;
408                AloitaPeli();
409
410            }
411        });
412
413        double keskipaikka = paikka.X;
414        double säde = 800;
415        double kohde = keskipaikka - säde;
416        double suunta = -1;
417        double alkuY = paikka.Y;
418
419        double hyppyKorkeus = 500;
420
421        int pattern = 3;
422
423
424        Timer ajastin2 = new Timer();
425        ajastin2.Interval = 1.3;
426        ajastin2.Timeout += delegate
427        {
428            pattern--;
429            if (pattern < 0)
430            {
431                pattern = 3;
432            }
433
434            if (pattern > 0)
435            {
436                suunta *= -1;
437                kohde = keskipaikka + suunta * säde;
438            }
439        };
440        ajastin2.Start();
441
442        Timer ajastin = new Timer();
443        ajastin.Interval = 0.01;
444        ajastin.Timeout += delegate
445        {
446            if (bossi.IsDestroyed)
447            {
448                ajastin.Stop();
449                return;
450            }
451
452            if (pattern == 0)
453            {
454                bossiAse.AbsoluteAngle = (pelaaja1.Position - bossi.Position).Angle;
455                PhysicsObject ammus = bossiAse.Shoot();
456            }
457
458            bossi.X += Math.Sign(kohde - bossi.Position.X) * 20.0;
459
460            double xx = (keskipaikka - bossi.X) / säde;
461            bossi.Y = alkuY + hyppyKorkeus * Math.Sqrt(1 -  xx * xx);
462
463            //bossi.Hit(new Vector(suunta * 1300, -3000));
464            //suunta *= -1;
465        };
466        ajastin.Start();
467
468    }
469
470    void LisaaBossi(Vector paikka, double leveys, double korkeus)
471    {
472        PlatformCharacter bossi = new PlatformCharacter(leveys * 5, korkeus * 5);
473        bossi.Position = paikka;
474        bossi.Y += korkeus / 5;
475        bossi.Image = bossinkuva[kentannumero - 1];
476        Add(bossi);
477
478        bossi.Weapon = new AssaultRifle(30, 10);
479        bossi.Weapon.ProjectileCollision += AmmusOsui;
480
481
482
483        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
484        tasoAivot.Speed = 100;
485        bossi.Brain = tasoAivot;
486
487        /*
488        Timer bossinetaisyysajastin = new Timer();
489        bossinetaisyysajastin.Interval = 0.5;
490        bossinetaisyysajastin.Timeout += delegate { BossiTarkistaa(bossi); };
491        bossinetaisyysajastin.Start();
492        */
493
494        AddCollisionHandler(bossi, "Ase", delegate(PhysicsObject ase, PhysicsObject vihu)
495        {
496            elamaLaskuriB.Value--;
497
498            if (elamaLaskuriB.Value < 1)
499            {
500                bossi.Destroy();
501                kentannumero++;
502                AloitaPeli();
503
504            }
505        });
506
507        elamaLaskuriB = new DoubleMeter(10);
508        elamaLaskuriB.MaxValue = 10;
509        //elamaLaskuriB.LowerLimit += ElamaLoppui;
510
511        ProgressBar elamaPalkkiB = new ProgressBar(150, 20);
512        elamaPalkkiB.X = Screen.Right - 150;
513        elamaPalkkiB.Y = Screen.Top - 20;
514        elamaPalkkiB.BindTo(elamaLaskuriB);
515        Add(elamaPalkkiB);
516
517        Timer ajastin = new Timer();
518        ajastin.Interval = 1;
519        ajastin.Timeout += delegate
520        {
521            if (bossi.IsDestroyed)
522            {
523                ajastin.Stop();
524            }
525
526            if (Vector.Distance(pelaaja1.Position, bossi.Position) < 1500)
527            {
528                if (kentannumero == 1)
529                {
530                    BossiTarkistaa(bossi);
531
532                }
533
534                tasoAivot.Active = false;
535                bossi.Weapon.AbsoluteAngle = (pelaaja1.Position - bossi.Position).Angle;
536                PhysicsObject ammus = bossi.Weapon.Shoot();
537
538                if (ammus != null)
539                {
540                    ammus.Size = new Vector(320, 150);
541                    ammus.Image = ammuksenkuva;
542                    ammus.LifetimeLeft = TimeSpan.FromSeconds(5.0);
543                }
544            }
545            else
546            {
547                tasoAivot.Active = true;
548            }
549        };
550
551        ajastin.Start();
552
553    }
554
555    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
556    {
557        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus * 2);
558        vihollinen.Position = paikka;
559        vihollinen.Y += korkeus / 2;
560        vihollinen.Image = vihollisenkuva[kentannumero - 1][0];
561        vihollinen.Tag = "vihollinen";
562        Animation anim = new Animation(vihollisenkuva[kentannumero - 1]);
563        anim.FPS = 15;
564        vihollinen.AnimWalk = anim;
565        Add(vihollinen);
566
567        if (kentannumero==10)
568        {
569            PlatformCharacter vihu = new PlatformCharacter(leveys * 4, korkeus * 4);
570            vihollinen.Y += korkeus / 4;
571            vihollinen.X += leveys /  4;
572        }
573
574        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
575        tasoAivot.Speed = 450;
576        vihollinen.Brain = tasoAivot;
577
578        AddCollisionHandler(vihollinen, "Ase", delegate(PhysicsObject ase, PhysicsObject vihu) { vihollinen.Destroy(); });
579
580        Timer ajastin = new Timer();
581        ajastin.Interval = 0.05;
582        ajastin.Timeout += delegate
583        {
584            if (vihollinen.IsDestroyed)
585                ajastin.Stop();
586
587        };
588        ajastin.Start();
589    }
590
591
592    void LisaaLentavavihollinen(Vector paikka, double leveys, double korkeus)
593    {
594        PhysicsObject lentava = new PhysicsObject(leveys * 2, korkeus * 4);
595        lentava.Position = paikka;
596        lentava.IgnoresGravity = true;
597        lentava.CanRotate = false;
598        lentava.Oscillate(new Vector(0, 1), korkeus * 2, 0.5);
599        lentava.Image = lentavankuva;
600        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
601        lentava.Brain = seuraajanAivot;
602        seuraajanAivot.Active = true;
603        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
604        seuraajanAivot.DistanceFar = 1200;           // Etäisyys jolla aletaan seurata kohdetta
605        seuraajanAivot.DistanceClose = 400;         // Etäisyys jolloin ollaan lähellä kohdetta
606        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
607
608
609
610        Add(lentava);
611
612    }
613
614    void LisaaToinenVihollinen(Vector paikka, double leveys, double korkeus)
615    {
616        PlatformCharacter toinenvihollinen = new PlatformCharacter(leveys, korkeus * 2);
617        toinenvihollinen.Position = paikka;
618        toinenvihollinen.Y += korkeus / 2;
619        toinenvihollinen.Image = toisenvihollisenkuva[kentannumero - 1];
620        toinenvihollinen.Tag = "vihollinen";
621        Add(toinenvihollinen);
622
623        toinenvihollinen.Weapon = new AssaultRifle(30, 10);
624        toinenvihollinen.Weapon.ProjectileCollision += AmmusOsui;
625
626        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
627        tasoAivot.Speed = 100;
628        toinenvihollinen.Brain = tasoAivot;
629
630        AddCollisionHandler(toinenvihollinen, "Ase", delegate(PhysicsObject ase, PhysicsObject vihu) { toinenvihollinen.Destroy(); });
631
632        Timer ajastin = new Timer();
633        ajastin.Interval = 0.05;
634        ajastin.Timeout += delegate
635        {
636            if (toinenvihollinen.IsDestroyed)
637                ajastin.Stop();
638
639            if (Vector.Distance(pelaaja1.Position, toinenvihollinen.Position) < 600)
640            {
641                tasoAivot.Active = false;
642                toinenvihollinen.Weapon.AbsoluteAngle = (pelaaja1.Position - toinenvihollinen.Position).Angle;
643                PhysicsObject ammus = toinenvihollinen.Weapon.Shoot();
644
645                if (ammus != null)
646                {
647                    ammus.LifetimeLeft = TimeSpan.FromSeconds(5.0);
648                }
649            }
650            else
651            {
652                tasoAivot.Active = true;
653            }
654        };
655
656        ajastin.Start();
657    }
658
659    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
660    {
661        ammus.Destroy();
662        if (kohde == pelaaja1)
663        {
664            elamaLaskuri.Value--;
665            if (elamaLaskuri.Value == 4)
666            {
667                pelaaja1.Image = ukkelivahingoittui[0];
668
669            }
670            if (elamaLaskuri.Value == 3)
671            {
672                pelaaja1.Image = ukkelivahingoittui[1];
673            }
674            if (elamaLaskuri.Value == 2)
675            {
676                pelaaja1.Image = ukkelivahingoittui[2];
677            }
678
679        }
680    }
681
682    void LisaaKolmasVihollinen(Vector paikka, double leveys, double korkeus)
683    {
684        PlatformCharacter vihollinen = new PlatformCharacter(leveys * 4, korkeus * 4);
685        vihollinen.Position = paikka;
686        vihollinen.Y += korkeus / 2;
687        vihollinen.Image = vihollisenkuva[kentannumero - 1][0];
688        vihollinen.Tag = "vihollinen";
689        Animation anim = new Animation(vihollisenkuva[kentannumero - 1]);
690        anim.FPS = 15;
691        vihollinen.AnimWalk = anim;
692        Add(vihollinen);
693
694        if (kentannumero == 10)
695        {
696            PlatformCharacter vihu = new PlatformCharacter(leveys * 4, korkeus * 4);
697            vihollinen.Y += korkeus / 4;
698            vihollinen.X += leveys / 4;
699        }
700
701        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
702        tasoAivot.Speed = 450;
703        vihollinen.Brain = tasoAivot;
704
705        AddCollisionHandler(vihollinen, "Ase", delegate(PhysicsObject ase, PhysicsObject vihu) { vihollinen.Destroy(); });
706
707        Timer ajastin = new Timer();
708        ajastin.Interval = 0.05;
709        ajastin.Timeout += delegate
710        {
711            if (vihollinen.IsDestroyed)
712                ajastin.Stop();
713
714        };
715        ajastin.Start();
716    }
717
718
719    void LisaaTahti(Vector paikka, double leveys, double korkeus)
720    {
721        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
722        tahti.IgnoresCollisionResponse = true;
723        tahti.Position = paikka;
724        tahti.Image = tahtiKuva;
725        tahti.Tag = "tahti";
726        Add(tahti);
727    }
728
729    AssaultRifle pistol;
730    AssaultRifle rifle;
731
732    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
733    {
734        VoimaLaskuri = new IntMeter(0, 0, 3);
735
736        pelaaja1 = new PlatformCharacter(leveys * 2.0, korkeus * 2.0);
737        pelaaja1.Position = paikka;
738        pelaaja1.Y += 40;
739        pelaaja1.Mass = 4.0;
740        pelaaja1.Image = pelaajanKuva;
741        AddCollisionHandler(pelaaja1, "Ansa", TormaaAnsaan);
742        pelaaja1.AnimWalk = new Animation(ukkelinKavely[kentannumero - 1]);
743        pelaaja1.AnimWalk.FPS = 21;
744        pelaaja1.AnimIdle = new Animation(ukkeliPaikallaan[kentannumero - 1]);
745        pelaaja1.AnimJump = new Animation(ukkeliHyppaa[kentannumero - 1]);
746        pelaaja1.CollisionIgnoreGroup = 1;
747        AddCollisionHandler(pelaaja1, "Bossipalikka", Soitamusa);
748        AddCollisionHandler(pelaaja1, "terveys", Terveyttälisää);
749        AddCollisionHandler(pelaaja1, "powerup", Voimaalisää);
750        AddCollisionHandler(pelaaja1, "vihollinen", Vähennäterveyttä);
751        AddCollisionHandler(pelaaja1, "Pimeää", pimennys);
752
753        if (kentannumero==10)
754        {
755            pelaaja1 = new PlatformCharacter(leveys * 7.0, korkeus * 7.0);
756            pelaaja1.Position = paikka;
757            pelaaja1.Y += 40;
758            pelaaja1.Mass = 4.0;
759            pelaaja1.Image = pelaajanKuva;
760            AddCollisionHandler(pelaaja1, "Ansa", TormaaAnsaan);
761            pelaaja1.AnimWalk = new Animation(ukkelinKavely[kentannumero - 1]);
762            pelaaja1.AnimWalk.FPS = 21;
763            pelaaja1.AnimIdle = new Animation(ukkeliPaikallaan[kentannumero - 1]);
764            pelaaja1.AnimJump = new Animation(ukkeliHyppaa[kentannumero - 1]);
765            pelaaja1.CollisionIgnoreGroup = 1;
766            AddCollisionHandler(pelaaja1, "Bossipalikka", Soitamusa);
767            AddCollisionHandler(pelaaja1, "terveys", Terveyttälisää);
768            AddCollisionHandler(pelaaja1, "powerup", Voimaalisää);
769            AddCollisionHandler(pelaaja1, "vihollinen", Vähennäterveyttä);
770            AddCollisionHandler(pelaaja1, "Pimeää", pimennys);
771        }
772
773        pelaaja1.Tag = "pelaaja";
774        Add(pelaaja1);
775
776        pistol = new AssaultRifle(30, 10);
777        pistol.InfiniteAmmo = true;
778        pistol.IsVisible = false;
779        pistol.FireRate = 1;
780        pistol.ProjectileCollision = PelaajanAmmusOsui;
781        pistol.Y = 40;
782
783        rifle = new AssaultRifle(30, 10);
784        rifle.Ammo.MaxValue = 40;
785        rifle.Ammo.Value = 15;
786        rifle.IsVisible = false;
787        rifle.FireRate = 5;
788        rifle.ProjectileCollision = PelaajanAmmusOsui;
789        rifle.Y = 30;
790
791        pelaaja1.Weapon = rifle;
792
793        yokiikarit = false;
794
795        Label ammusNaytto = new Label();
796        ammusNaytto.X = Screen.Left + 100;
797        ammusNaytto.Y = Screen.Top - 100;
798        ammusNaytto.TextColor = Color.Black;
799        ammusNaytto.Color = Color.White;
800        ammusNaytto.IntFormatString = " ammuksia: {0:D1} ";
801        ammusNaytto.BindTo(rifle.Ammo);
802        Add(ammusNaytto);
803    }
804
805    void PelaajanAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
806    {
807        ammus.Destroy();
808    }
809
810    void Terveyttälisää(PhysicsObject hahmo, PhysicsObject palikka)
811    {
812        elamaLaskuri.Value += 3;
813        palikka.Destroy();
814        terveysAani.Play();
815    }
816
817
818    void Vähennäterveyttä(PhysicsObject hahmo, PhysicsObject vihollinen)
819    {
820        elamaLaskuri.Value -= 1;
821
822
823    }
824
825
826    void Voimaalisää(PhysicsObject hahmo, PhysicsObject palikka)
827    {
828        VoimaLaskuri.Value += 1;
829        palikka.Destroy();
830        terveysAani.Play();
831    }
832
833    void pimennys(PhysicsObject hahmo, PhysicsObject palikka)
834    {
835        Level.AmbientLight = 0.2;
836
837        Light valo = new Light();
838        valo.Intensity = 0.9;
839        valo.Distance = 300;
840        valo.Position = Vector.Zero;
841        Add(valo);
842
843        Timer ajastin = new Timer();
844        ajastin.Interval = 0.05;
845        ajastin.Timeout += delegate { valo.Position = pelaaja1.Position; /* + new Vector(0, -50); */ };
846        ajastin.Start();
847    }
848
849    void Soitamusa(PhysicsObject hahmo, PhysicsObject palikka)
850    {
851        taso1.Destroy();
852        MediaPlayer.Play("megaman2");
853        MediaPlayer.IsRepeating = true;
854    }
855
856    void LisaaNappaimet()
857    {
858        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
859        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
860
861        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
862        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
863        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
864        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, "Pelaaja hyokkaa", pelaaja1);
865
866        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
867
868        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
869        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
870
871        ControllerOne.Listen(Button.LeftShoulder, ButtonState.Pressed, kayttaayokiikaria, "yokiikarit", pelaaja1);
872
873        ControllerOne.Listen(Button.RightShoulder, ButtonState.Pressed, vaihtaaasetta, "aseenvaihto", pelaaja1);
874
875        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Pressed, KaynnistaKavelu, "Pelaaja liikkuu vasemmalle");
876        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Released, PysautaKavelu, "Pelaaja liikkuu vasemmalle");
877
878        //ControllerOne.Listen(Button.DPadRight, ButtonState.Pressed, KaynnistaKavelu, "Pelaaja liikkuu vasemmalle");
879        //ControllerOne.Listen(Button.DPadRight, ButtonState.Released, PysautaKavelu, "Pelaaja liikkuu vasemmalle");
880
881        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
882        ControllerOne.Listen(Button.Y, ButtonState.Pressed, Käyttääpoweria, "Kaikki kuolee", pelaaja1);
883        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
884
885
886        ControllerOne.Listen(Button.B, ButtonState.Down, Hyokkaa, "Pelaaja hyokkaa", pelaaja1);
887
888
889        ControllerOne.Listen(Button.X, ButtonState.Pressed, Lyo, "Pelaaja hyokkaa", pelaaja1);
890
891        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
892    }
893
894    void Liikuta(PlatformCharacter hahmo, double nopeus)
895    {
896        hahmo.Walk(nopeus);
897
898    }
899
900    void KaynnistaKavelu()
901    {
902
903        pelaaja1.Animation.Start();
904
905    }
906
907    void vaihtaaasetta(PlatformCharacter hahmo)
908    {
909        if (hahmo.Weapon == pistol)
910        {
911            hahmo.Weapon = rifle;
912        }
913        else if (hahmo.Weapon == rifle)
914        {
915            hahmo.Weapon = pistol;
916        }
917}
918
919    void PysautaKavelu()
920    {
921
922        pelaaja1.Animation.Stop();
923
924    }
925
926    void Hyppaa(PlatformCharacter hahmo, double nopeus)
927    {
928        hahmo.Jump(nopeus);
929        pelaaja1.Animation.Start();
930        hyppyAani.Play();
931
932    }
933
934    void Käyttääpoweria(PlatformCharacter hahmo)
935    {
936        if (VoimaLaskuri.Value > 0)
937        {
938            VoimaLaskuri.Value--;
939
940            if (kentannumero == 1)
941            {
942                Animation poweri = new Animation(ukkeliPoweri[kentannumero - 1]);
943                poweri.FPS = 7;
944                pelaaja1.PlayAnimation(poweri);
945
946                GameObject tuho = new GameObject(Screen.Width, Screen.Height);
947                tuho.Image = tuhokuva[kentannumero - 1];
948                tuho.Position = pelaaja1.Position + new Vector(0, Screen.Height); // + Screen.Height / 2;
949                Add(tuho, 1);
950
951                tuho.Oscillate(-Vector.UnitY, Screen.Height, 0.5);
952
953                Timer.SingleShot(0.5, delegate
954                {
955                    foreach (var vihu in GetObjectsWithTag("vihollinen"))
956                    {
957                        if (Vector.Distance(pelaaja1.Position, vihu.Position) < 1600)
958                        {
959                            vihu.Destroy();
960                        }
961                    }
962                });
963
964                Timer.SingleShot(1, delegate
965                {
966                    tuho.Destroy();
967                });
968            }
969            else if (kentannumero == 8)
970            {
971                Animation poweri = new Animation(ukkeliPoweri[kentannumero - 1]);
972                poweri.FPS = 7;
973                pelaaja1.PlayAnimation(poweri);
974
975                foreach (var vihu in GetObjectsWithTag("vihollinen"))
976                {
977                    if (Vector.Distance(pelaaja1.Position, vihu.Position) < 1600)
978                    {
979                        vihu.Destroy();
980
981                        GameObject ylos = new GameObject(vihu.Width, vihu.Height);
982                        ylos.Image = vihu.Image;
983                        ylos.Position = vihu.Position;
984                        var anim = new Animation(vihollisenLento);
985                        anim.FPS = 6;
986                        ylos.Animation = anim;
987                        ylos.Animation.Start();
988                        Add(ylos);
989
990                        ylos.MoveTo(ylos.Position + new Vector(0, 1600), 100);
991
992                    }
993                }
994            }
995            else if (kentannumero == 7)
996            {
997                Animation poweri = new Animation(ukkeliPoweri[kentannumero - 1]);
998                poweri.FPS = 7;
999                pelaaja1.PlayAnimation(poweri);
1000
1001                Timer.SingleShot(0.5, delegate
1002                {
1003                    GameObject tuho = new GameObject(Screen.Width * 2, Screen.Height * 2);
1004                    //tuho.Image = tuhokuva[kentannumero - 1];
1005                    tuho.Color = Color.Blue;
1006                    tuho.Position = pelaaja1.Position; // +new Vector(0, Screen.Height);
1007                    Add(tuho, 1);
1008
1009                    foreach (var vihu in GetObjectsWithTag("vihollinen"))
1010                    {
1011                        if (Vector.Distance(pelaaja1.Position, vihu.Position) < 1600)
1012                        {
1013                            vihu.Destroy();
1014
1015                            GameObject ylos = new GameObject(vihu.Width, vihu.Height);
1016                            ylos.Image = vihu.Image;
1017                            ylos.Position = vihu.Position;
1018                            var anim = new Animation(vihollisenLento);
1019                            anim.FPS = 6;
1020                            ylos.Animation = anim;
1021                            ylos.Animation.Start();
1022                            ylos.Animation.Played += delegate { ylos.Destroy(); };
1023                            Add(ylos);
1024                        }
1025                    }
1026
1027                    Timer.SingleShot(0.1, delegate
1028                    {
1029                        tuho.Destroy();
1030                    });
1031                });
1032            }
1033            else
1034            {
1035                Animation poweri = new Animation(ukkeliPoweri[kentannumero - 1]);
1036                poweri.FPS = 7;
1037                pelaaja1.PlayAnimation(poweri);
1038
1039                Timer.SingleShot(0.5, delegate
1040                {
1041                    GameObject tuho = new GameObject(Screen.Width * 2, Screen.Height * 2);
1042                    //tuho.Image = tuhokuva[kentannumero - 1];
1043                    tuho.Color = Color.White;
1044                    tuho.Position = pelaaja1.Position; // +new Vector(0, Screen.Height);
1045                    Add(tuho, 1);
1046
1047                    foreach (var vihu in GetObjectsWithTag("vihollinen"))
1048                    {
1049                        if (Vector.Distance(pelaaja1.Position, vihu.Position) < 1600)
1050                        {
1051                            vihu.Destroy();
1052                        }
1053                    }
1054
1055                    Timer.SingleShot(0.1, delegate
1056                    {
1057                        tuho.Destroy();
1058                    });
1059                });
1060            }
1061        }
1062    }
1063
1064
1065    void Hyokkaa(PlatformCharacter hahmo)
1066    {
1067
1068
1069        PhysicsObject ammus = hahmo.Weapon.Shoot();
1070
1071        if (ammus != null)
1072        {
1073            ammus.Tag = "Ase";
1074            ammus.LifetimeLeft = TimeSpan.FromSeconds(3);
1075            ammus.Image = ammuskuvat[kentannumero - 1];
1076            ammus.Size *= 5;
1077            Animation anim = null;
1078            if (hahmo.Weapon == pistol)
1079            {
1080                anim = new Animation(ukkeliHyokkaaPistol[kentannumero - 1]);
1081                anim.FPS = 8;
1082            }
1083            if (hahmo.Weapon == rifle)
1084            {
1085                anim = new Animation(ukkeliHyokkaaRifle[kentannumero - 1]);
1086                anim.FPS = 4;
1087            }
1088
1089            hahmo.PlayAnimation(anim);
1090
1091        }
1092
1093
1094
1095
1096    }
1097
1098    void Lyo(PlatformCharacter hahmo)
1099    {
1100        PhysicsObject Ase = new PhysicsObject(300, 60);
1101        Ase.Position = hahmo.Position + hahmo.FacingDirection.GetVector() * 120;
1102        Ase.LifetimeLeft = TimeSpan.FromSeconds(0.5);
1103        Ase.Image = aseenkuvat[kentannumero-1];
1104        Ase.CollisionIgnoreGroup = 1;
1105        Add(Ase);
1106        Animation anim = new Animation(ukkeliHyokkaa[kentannumero - 1]);
1107        anim.FPS = 2;
1108        Ase.Tag = "Ase";
1109        Ase.Angle = pelaaja1.FacingDirection.Angle;
1110        hahmo.PlayAnimation(anim);
1111
1112        if (kentannumero == 10)
1113        {
1114            anim.FPS = 8;
1115        }
1116
1117        Timer ajastin = new Timer();
1118        ajastin.Interval = 0.01;
1119        ajastin.Timeout += delegate
1120        {
1121            Ase.Position = pelaaja1.Position + pelaaja1.FacingDirection.GetVector() * 240 + new Vector(0, 30);
1122        };
1123        ajastin.Start();
1124    }
1125
1126
1127    void TormaaAnsaan(PhysicsObject hahmo, PhysicsObject tahti)
1128    {
1129        AloitaPeli();
1130
1131
1132    }
1133
1134    void LuoElamaLaskuri()
1135    {
1136        elamaLaskuri = new DoubleMeter(10);
1137        elamaLaskuri.MaxValue = 10;
1138        elamaLaskuri.LowerLimit += ElamaLoppui;
1139
1140        ProgressBar elamaPalkki = new ProgressBar(150, 20);
1141        elamaPalkki.X = Screen.Left + 150;
1142        elamaPalkki.Y = Screen.Top - 20;
1143        elamaPalkki.BindTo(elamaLaskuri);
1144        Add(elamaPalkki);
1145    }
1146
1147    void ElamaLoppui()
1148    {
1149        MessageDisplay.Add("Elämät loppuivat, voi voi.");
1150        pelaaja1.Animation = null;
1151        pelaaja1.AnimFall = null;
1152        pelaaja1.AnimJump = null;
1153        pelaaja1.AnimWalk = null;
1154        pelaaja1.Image = null;
1155        Animation kuolinanimaatio = new Animation(kuolinkuvat);
1156        kuolinanimaatio.FPS = 4;
1157        pelaaja1.PlayAnimation(kuolinanimaatio);
1158        //pelaaja1.Animation = new Animation(kuolinkuvat);
1159        Timer.SingleShot(1, AloitaPeli);
1160    }
1161
1162    void BossiTarkistaa(PlatformCharacter bossi)
1163    {
1164        if (Vector.Distance(pelaaja1.Position, bossi.Position) < 1000)
1165        {
1166            PhysicsObject tallominen = new PhysicsObject(300, 60);
1167            tallominen.Image = jalkakuva;
1168            tallominen.Position = bossi.Position + new Vector(-50, -200);
1169            tallominen.IgnoresCollisionResponse = true;
1170            Add(tallominen);
1171
1172            Timer ajastin = new Timer();
1173            ajastin.Interval = 0.01;
1174            ajastin.Timeout += delegate
1175            {
1176                tallominen.Position = bossi.Position + pelaaja1.FacingDirection.GetVector() * 240 + new Vector(0, 30);
1177            };
1178            ajastin.Start();
1179        }
1180    }
1181
1182    void kayttaayokiikaria(PlatformCharacter hahmo)
1183    {
1184        if (kentannumero != 2 && kentannumero != 5)
1185        {
1186            return;
1187        }
1188
1189        if (!yokiikarit)
1190        {
1191            kiikarit = new GameObject(Screen.Width * 2, Screen.Height * 2);
1192            kiikarit.Image = kiikarikuva;
1193            //kiikarit.Position = hahmo.Position;
1194            hahmo.Add(kiikarit);
1195            yokiikarit = true;
1196
1197            foreach (var palikka in GetObjectsWithTag("nakymaton"))
1198            {
1199                palikka.IsVisible = true;
1200            }
1201        }
1202        else
1203        {
1204            kiikarit.Destroy();
1205            yokiikarit = false;
1206
1207            foreach (var palikka in GetObjectsWithTag("nakymaton"))
1208            {
1209                palikka.IsVisible = false;
1210            }
1211        }
1212
1213    }
1214
1215
1216}
Note: See TracBrowser for help on using the repository browser.