source: 2016/27/AnttiN/SalainenTehtävä/SalainenTehtävä/SalainenTehtävä/SalainenTehtävä.cs @ 8063

Revision 8063, 19.6 KB checked in by anvinurm, 3 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 SalainenTehtävä : PhysicsGame
10{
11
12    private bool onkoteepohjassa = false;
13
14    private const double nopeus = 2000;
15
16    private const int RUUDUN_KOKO = 40;
17
18    private IntMeter tahtiMittari;
19    private int kenttaNRO = 1;
20    private const int maxKentat = 3;
21
22    int pelaajia = 1;
23    private PhysicsObject pelaaja1;
24    private PhysicsObject pelaaja2;
25
26    private Dictionary<int, int> tahtiaKeratty = new Dictionary<int, int>();
27    private Dictionary<int, bool> tasotSuoritettu = new Dictionary<int, bool>();
28
29    [Save] public int[] tahtiaKerattyTaulukko = new int[maxKentat];
30    [Save] public bool[] tasotSuoritettuTaulukko = new bool[maxKentat];
31
32    private Image pelaajanKuva = LoadImage("Hahmo");
33    private Image pelaajan2Kuva = LoadImage("Hahmo2");
34    private Image tahtiKuva = LoadImage("tahti");
35    private Image kovaKuutio = LoadImage("kovaKuutio");
36    private Image LaskeutuminenKuva = LoadImage("Laskeutuminen");
37    private Image SahkoansaKuva = LoadImage("Sähköansa");
38    private Image SahkoansaTykkiKuva = LoadImage("SahkoansaTykki");
39    private Image SahkoansaSahkoKuva = LoadImage("SahkoansaSahko");
40    private Image RajahdysKuva = LoadImage("Rajahdys");
41    private Image TykkiKuva = LoadImage("Tykki");
42
43
44    private AssaultRifle pelaajan1Ase;
45    private AssaultRifle pelaajan2Ase;
46
47    private SoundEffect maaliAani = LoadSoundEffect("maali");
48
49    public override void Begin()
50    {
51        ClearAll();
52        Lataa();
53        LuoPaavalikko();
54        Keyboard.Listen(Key.N, ButtonState.Down, TarkistaPisteidenNollaus, null);
55        Keyboard.Listen(Key.T, ButtonState.Down, TeetaPainettu, null);
56        Keyboard.Listen(Key.T, ButtonState.Released, TeeLoysatty, null);
57
58    }
59
60    void Lataa()
61    {
62        //kerätyt tähdet alustus tyhjään
63        for (int i = 1; i <= maxKentat; i++)
64        {
65            tahtiaKeratty.Add(i, 0);
66        }
67
68        // suoritukset alustus tyhjään
69        for (int i = 1; i <= maxKentat; i++)
70        {
71            tasotSuoritettu.Add(i, false);
72
73        }
74
75        if (DataStorage.Exists("tilanne.xml"))
76        {
77            // pelitilanne olemassa, ladataan se
78            LoadGame("tilanne.xml");
79            int j = 0;
80            for (int i = 1; i <= maxKentat; i++, j++)
81            {
82                tahtiaKeratty[i] = tahtiaKerattyTaulukko[j];
83                tasotSuoritettu[i] = tasotSuoritettuTaulukko[j];
84            }
85        }
86
87    }
88
89    void PalaaPaavalikkoon(Window ikkuna)
90    {
91        LuoPaavalikko();
92    }
93
94    void LuoPaavalikko()
95    {
96        Level.Background.Image = LoadImage("vuoristo");
97        Level.Background.FitToLevel();
98        Camera.ZoomToLevel();
99        Level.Background.Color = Color.Blue;
100        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko","Pelaa","Lopeta");
101        Add(alkuValikko);
102        alkuValikko.AddItemHandler(0, Pelaa);
103        alkuValikko.AddItemHandler(1, Exit);
104    }
105
106    void Pelaa()
107    {
108        Level.Background.Image = LoadImage("kiviseina");
109        Level.Background.FitToLevel();
110        Camera.ZoomToLevel();
111        Level.Background.Color = Color.Gray;
112        MultiSelectWindow alkuValikko = new MultiSelectWindow("Valitse kenttä",
113        "Kenttä 1 | Tähtiä " + tahtiaKeratty[1],
114        "Kenttä 2 | Tähtiä " + tahtiaKeratty[2],
115        "Kenttä 3 | tähtiä " + tahtiaKeratty[3],
116        "Takaisin");
117        Add(alkuValikko);
118        alkuValikko.AddItemHandler(0, delegate { ValitsePelaajat(1); });
119        alkuValikko.AddItemHandler(1, delegate { if (tasotSuoritettu[1]) ValitsePelaajat(2); else Pelaa(); });
120        alkuValikko.AddItemHandler(2, delegate { if (tasotSuoritettu[2]) ValitsePelaajat(3); else Pelaa(); });
121        alkuValikko.AddItemHandler(3, LuoPaavalikko);
122
123    }
124
125    void ValitsePelaajat(int kentta)
126    {
127        MultiSelectWindow alkuValikko = new MultiSelectWindow("Kenttä "+kentta+". Montako pelaajaa?", "1 Pelaaja", "2 Pelaajaa", "takaisin");
128        Add(alkuValikko);
129        alkuValikko.AddItemHandler(0, delegate { pelaajia = 1; AloitaPeli(kentta); });
130        alkuValikko.AddItemHandler(1, delegate { pelaajia = 2; AloitaPeli(kentta); });
131        alkuValikko.AddItemHandler(2, Pelaa);
132    }
133
134    void AloitaPeli(int kentta)
135    {
136        this.kenttaNRO = kentta;
137        IsMouseVisible = true;
138        LuoKentta();
139        LuoTahtiLaskuri();
140        LisaaNappaimet();
141
142        Camera.Follow(pelaaja1);
143        Camera.ZoomFactor = 1.2;
144        Camera.StayInLevel = true;
145    }
146
147    void LuoKentta()
148    {
149        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttaNRO);
150        kentta.SetTileMethod('#', LisaaTaso);
151        kentta.SetTileMethod('*', LisaaTahti);
152        kentta.SetTileMethod('N', LisaaPelaaja,1);
153        kentta.SetTileMethod('L', LisaaLaskeutuminen);
154        kentta.SetTileMethod('R', LisaaSahkoansaTykkiVaaka);
155        kentta.SetTileMethod('S', LisaaSahkoansaTykkiPysty);
156        kentta.SetTileMethod('T', LisaaTykki);
157        if(pelaajia==2) kentta.SetTileMethod('2', LisaaPelaaja, 2);
158        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
159        Level.CreateBorders();
160        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
161        Level.Background.Image = LoadImage("kiviseina");
162    }
163
164    void LuoTahtiLaskuri()
165    {
166        tahtiMittari = new IntMeter(0,0,3);
167        tahtiMittari.UpperLimit += VoimaMittariTaynna;
168
169        ProgressBar voimaPalkki = new ProgressBar(150, 50);
170        voimaPalkki.X = Screen.Right - 250;
171        voimaPalkki.Y = Screen.Bottom + 100;
172        voimaPalkki.BindTo(tahtiMittari);
173        voimaPalkki.Image = LoadImage("harmaatTahdet");
174        voimaPalkki.BarImage = LoadImage("kultaisetTahdet");
175        Add(voimaPalkki);
176
177    }
178
179    void VoimaMittariTaynna()
180    {
181        MessageDisplay.Add("Keräsit kaikki kolme tähteä!");
182    }
183
184    void LisaaTaso(Vector paikka, double leveys, double korkeus)
185    {
186        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
187        taso.Position = paikka;
188        taso.Image = kovaKuutio;
189        Add(taso);
190    }
191
192    void LisaaTahti(Vector paikka, double leveys, double korkeus)
193    {
194        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
195        tahti.IgnoresCollisionResponse = true;
196        tahti.Position = paikka;
197        tahti.Image = tahtiKuva;
198        tahti.Tag = "tahti";
199        Add(tahti);
200    }
201
202    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, int pelaaja)
203    {
204        if (pelaaja == 1)
205        {
206            pelaaja1 = LuoPelaaja(paikka, leveys, korkeus, pelaajanKuva, "pelaaja1");
207            pelaajan1Ase = LuoPelaajanAse(pelaaja1);
208        }
209        if (pelaaja == 2)
210        {
211            pelaaja2 = LuoPelaaja(paikka, leveys, korkeus, pelaajan2Kuva, "pelaaja2");
212            pelaajan2Ase = LuoPelaajanAse(pelaaja2);
213        }
214    }
215
216    PhysicsObject LuoPelaaja(Vector paikka, double leveys, double korkeus,Image kuva, string nimi)
217    {
218        PhysicsObject pelaaja = new PhysicsObject(leveys*0.9, korkeus*0.9);
219        pelaaja.Position = paikka;
220        pelaaja.Mass = 4.0;
221        pelaaja.Image = kuva;
222        AddCollisionHandler(pelaaja, "SahkoansaSahko", TuhoaPelaaja);
223        AddCollisionHandler(pelaaja, "tahti", TormaaTahteen);
224        AddCollisionHandler(pelaaja, "Laskeutuminen", TormaaLaskeutumiseen);
225        Add(pelaaja);
226        pelaaja.LinearDamping = 0.9;
227        pelaaja.Tag = nimi;
228        pelaaja.CanRotate = false;
229
230        return pelaaja;
231    }
232
233    AssaultRifle LuoPelaajanAse(PhysicsObject pelaaja)
234    {
235        AssaultRifle pelaajanAse = new AssaultRifle(30, 10);
236        pelaajanAse.Power.MaxValue = 50;
237        pelaajanAse.FireRate = 1;
238        pelaajanAse.ProjectileCollision = AmmusOsui;
239        pelaaja.Add(pelaajanAse);
240        return pelaajanAse;
241    }
242
243    void LisaaLaskeutuminen(Vector paikka, double leveys, double korkeus)
244    {
245        PhysicsObject Laskeutuminen = PhysicsObject.CreateStaticObject(leveys, korkeus);
246        Laskeutuminen.IgnoresCollisionResponse = true;
247        Laskeutuminen.Position = paikka;
248        Laskeutuminen.Image = LaskeutuminenKuva;
249        Laskeutuminen.Tag = "Laskeutuminen";
250        Add(Laskeutuminen);
251    }
252
253    void LisaaSahkoansaTykkiPysty(Vector paikka, double leveys, double korkeus)
254    {
255        PhysicsObject sahko = LisaaSahkoansaSahko(new Vector(paikka.X, paikka.Y-korkeus), leveys/2, korkeus, Angle.FromDegrees(0));
256        LisaaSahkoansaTykki(paikka, leveys, korkeus, sahko, Angle.FromDegrees(180));
257        LisaaSahkoansaTykki(new Vector(paikka.X, paikka.Y-korkeus*2), leveys, korkeus, sahko, Angle.FromDegrees(0));
258    }
259
260    void LisaaSahkoansaTykkiVaaka(Vector paikka, double leveys, double korkeus)
261    {
262        PhysicsObject sahko = LisaaSahkoansaSahko(new Vector(paikka.X + leveys, paikka.Y), leveys/2, korkeus, Angle.FromDegrees(-90));
263        LisaaSahkoansaTykki(paikka,leveys,korkeus,sahko, Angle.FromDegrees(-90));
264        LisaaSahkoansaTykki(new Vector(paikka.X + leveys*2, paikka.Y), leveys, korkeus, sahko, Angle.FromDegrees(90));
265    }
266
267    void LisaaSahkoansaTykki(Vector paikka, double leveys, double korkeus, PhysicsObject sahko, Angle kaanna)
268    {
269        SahkoansaTykki Sahkoansa = new SahkoansaTykki(leveys, korkeus, sahko);
270        Sahkoansa.Position = paikka;
271        Sahkoansa.Image = SahkoansaTykkiKuva;
272        Sahkoansa.Tag = "SahkoansaTykki";
273        Add(Sahkoansa);
274        Sahkoansa.RotateImage = true;
275        Sahkoansa.Angle = kaanna;
276
277        Label pisteNaytto = new Label();
278        //pisteNaytto.Position = Camera.WorldToScreen(paikka);
279        pisteNaytto.TextColor = Color.Red;
280        pisteNaytto.BindTo(Sahkoansa.ElamaLaskuri);
281        Sahkoansa.Add(pisteNaytto);
282    }
283
284
285
286    PhysicsObject LisaaSahkoansaSahko(Vector paikka, double leveys, double korkeus,Angle kaanna)
287    {
288        PhysicsObject SahkoansaSahko = PhysicsObject.CreateStaticObject(leveys, korkeus);
289        SahkoansaSahko.Position = paikka;
290        SahkoansaSahko.Image = SahkoansaSahkoKuva;
291        SahkoansaSahko.Tag = "SahkoansaSahko";
292        Add(SahkoansaSahko);
293        SahkoansaSahko.RotateImage = true;
294        SahkoansaSahko.Angle = kaanna;
295        return SahkoansaSahko;
296    }
297
298    void LisaaTykki(Vector paikka, double leveys, double korkeus)
299    {
300        Tykki tykki = new Tykki(leveys, korkeus);
301        tykki.Position = paikka;
302        tykki.Image = TykkiKuva;
303        tykki.Tag = "Tykki";
304        Add(tykki);
305
306        AssaultRifle tykkiAse = new AssaultRifle(30, 10);
307        tykkiAse.IsVisible = false;
308        tykkiAse.Power.MaxValue = 50;
309        tykkiAse.FireRate = 0.5;
310        tykkiAse.ProjectileCollision = AmmusOsuiPelaajaan;
311        tykki.Add(tykkiAse);
312
313        Timer tykkiAjastin = new Timer();
314        tykkiAjastin.Interval = 0.5;
315        tykkiAjastin.Timeout += delegate
316        {
317            AmmuAseella(tykkiAse);
318        };
319        tykkiAjastin.Start();
320
321        tykki.Destroyed += delegate { tykkiAjastin.Stop(); };
322
323        Label pisteNaytto = new Label();
324        //pisteNaytto.Position = Camera.WorldToScreen(paikka);
325        pisteNaytto.TextColor = Color.Red;
326        pisteNaytto.BindTo(tykki.ElamaLaskuri);
327        tykki.Add(pisteNaytto);
328
329    }
330
331    void LisaaNappaimet()
332    {
333        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
334        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Tauko, "Lopeta peli");
335
336        //Pelaajan 1 näppäimet
337        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-nopeus, 0));
338        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, new Vector(nopeus, 0));
339        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Pelaaja liikkuu ylöspäin", pelaaja1, new Vector(0, nopeus));
340        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "pelaaja liikkuu alaspäin", pelaaja1, new Vector(0, -nopeus));
341        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
342        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
343
344
345        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
346        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, Liikuta, "Pelaaja liikkuu ylöspäin", pelaaja1, new Vector(0, nopeus));
347        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, Liikuta, "pelaaja liikkuu alaspäin", pelaaja1, new Vector(0, -nopeus));
348        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-nopeus, 0));
349        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, new Vector(nopeus, 0));
350        ControllerOne.Listen(Button.A, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
351        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa2, "Liikuta pelaajaa tattia pyörittämällä.", pelaajan1Ase);
352
353
354        // Pelaajan 2 ohjaimet
355        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, Liikuta, "Pelaaja liikkuu ylöspäin", pelaaja2, new Vector(0, nopeus));
356        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, Liikuta, "pelaaja liikkuu alaspäin", pelaaja2, new Vector(0, -nopeus));
357        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, new Vector(-nopeus, 0));
358        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, new Vector(nopeus, 0));
359        ControllerTwo.Listen(Button.A, ButtonState.Down, AmmuAseella, "Ammu", pelaajan2Ase);
360        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa2, "Liikuta pelaajaa tattia pyörittämällä.", pelaajan2Ase);
361
362
363
364        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
365    }
366
367    void Tahtaa2(AnalogState tatinTila, AssaultRifle ase)
368    {
369        ase.Angle = tatinTila.StateVector.Angle;
370    }
371
372    void Liikuta(PhysicsObject hahmo, Vector nopeus)
373    {
374        hahmo.Push(nopeus);
375    }
376
377
378
379    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
380    {
381        maaliAani.Play();
382        MessageDisplay.Add("Keräsit tähden!");
383        tahti.Destroy();
384        tahtiMittari.Value += 1;
385    }
386
387    void TormaaLaskeutumiseen(PhysicsObject hahmo, PhysicsObject Laskeutuminen)
388    {
389
390        MessageDisplay.Add("Läpäisit tason");
391        tasotSuoritettu[kenttaNRO] = true;
392        if (tahtiaKeratty[kenttaNRO] < tahtiMittari.Value) tahtiaKeratty[kenttaNRO] = tahtiMittari.Value;
393        Timer.SingleShot(1, Voitit);
394    }
395
396
397    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
398    {
399        ammus.Destroy();
400        if(kohde.Tag.ToString() == "SahkoansaTykki")
401        {
402            ((SahkoansaTykki)kohde).ElamaLaskuri.Value -= 5;
403        }
404        if (kohde.Tag.ToString() == "Tykki")
405        {
406
407            ((Tykki)kohde).ElamaLaskuri.Value -= 5;
408
409        }
410    }
411
412    void AmmusOsuiPelaajaan(PhysicsObject ammus, PhysicsObject kohde)
413    {
414        ammus.Destroy();
415        if (kohde.Tag.ToString() == "pelaaja1")
416        {
417            TuhoaPelaaja(pelaaja1, ammus);
418        }
419        if (kohde.Tag.ToString() == "pelaaja2")
420        {
421            TuhoaPelaaja(pelaaja2, ammus);
422        }
423
424    }
425
426    void Tahtaa(AnalogState hiirenLiike)
427    {
428        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
429        pelaajan1Ase.Angle = suunta.Angle;
430    }
431
432    void AmmuAseella(AssaultRifle ase)
433    {
434        PhysicsObject ammus = ase.Shoot();
435
436        if (ammus != null)
437        {
438            ammus.Size *= 1;
439            //ammus.Image = ...
440            ammus.MaximumLifetime = TimeSpan.FromSeconds(200.0);
441        }
442    }
443
444    void TuhoaPelaaja(PhysicsObject pelaaja, PhysicsObject kohde)
445    {
446        pelaaja.Destroy();
447        Explosion rajahdys = new Explosion(500);
448        rajahdys.Position = pelaaja.Position;
449        Add(rajahdys);
450       
451        Timer.SingleShot(2, delegate {
452            if ((pelaajia == 1 && pelaaja1.IsDestroyed) || (pelaajia == 2 && (pelaaja1.IsDestroyed && pelaaja2.IsDestroyed))) 
453            {
454
455                Mouse.Disable(MouseButton.Left);
456                Havisit();
457            }
458           
459        });
460    }
461
462    void Havisit()
463    {
464        ClearAll();
465        Level.Background.Color = Color.Black;
466        MultiSelectWindow havioValikko = new MultiSelectWindow("Hävisit pelin", "Aloita alusta", "Päävalikko", "Lopeta");
467        Add(havioValikko);
468        havioValikko.AddItemHandler(0, delegate { AloitaPeli(kenttaNRO); });
469        havioValikko.AddItemHandler(1, LuoPaavalikko);
470        havioValikko.AddItemHandler(2, Exit);
471    }
472
473    void Voitit()
474    {
475        ClearAll();
476        Level.Background.Color = Color.Black;
477        MultiSelectWindow voittoValikko = new MultiSelectWindow("Taso suoritettu", "Pelaa uudelleen", "Päävalikko","Seuraava kenttä", "Lopeta");
478        Add(voittoValikko);
479        voittoValikko.AddItemHandler(0, delegate { AloitaPeli(kenttaNRO); });
480        voittoValikko.AddItemHandler(1, LuoPaavalikko);
481        voittoValikko.AddItemHandler(2, delegate { if ((kenttaNRO >= maxKentat)) { MessageWindow ikkuna = new MessageWindow("Ei lisää kenttiä vielä!"); Add(ikkuna); ikkuna.Closed += PalaaPaavalikkoon; } else AloitaPeli(kenttaNRO += 1); });
482        voittoValikko.AddItemHandler(3, Exit);
483
484    }
485
486    protected override void OnExiting(object sender, EventArgs args)
487    {
488        int j = 0;
489        for (int i = 1; i <= maxKentat; i++, j++)
490        {
491            tahtiaKerattyTaulukko[j] = tahtiaKeratty[i];
492            tasotSuoritettuTaulukko[j] = tasotSuoritettu[i];
493        }
494        SaveGame("tilanne.xml");
495        base.OnExiting(sender, args);
496    }
497
498    void Tauko()
499    {
500        IsPaused = true;
501        MultiSelectWindow tauko = new MultiSelectWindow("Tauko", "Jatka", "Päävalikko", "Lopeta");
502        Add(tauko);
503        tauko.AddItemHandler(0, delegate { tauko.Close(); IsPaused = false; });
504        tauko.AddItemHandler(1, delegate { ClearAll();IsPaused = false; LuoPaavalikko(); });
505        tauko.AddItemHandler(2, Exit);
506
507    }
508
509    void TarkistaPisteidenNollaus() // on painettu näppäintä 'N'
510    {
511        if (onkoteepohjassa == true)
512        {
513            MessageDisplay.Add("Pisteet nollattu!");
514
515            for (int i = 1; i <= maxKentat; i++)
516            {
517                tahtiaKeratty[i] = 0;
518            }
519        }
520
521    }
522
523    void TeetaPainettu()
524    {
525        onkoteepohjassa = true;
526
527    }
528
529    void TeeLoysatty()
530    {
531        onkoteepohjassa = false;
532
533    }
534
535   
536
537
538}
539   
540
541
542class SahkoansaTykki : PhysicsObject
543{
544    private IntMeter elamaLaskuri = new IntMeter(50, 0, 50);
545
546    private PhysicsObject sahko;
547    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
548
549    public SahkoansaTykki(double leveys, double korkeus, PhysicsObject sahko)
550        : base(leveys, korkeus)
551    {
552        MakeStatic();
553        this.sahko = sahko;
554        elamaLaskuri.LowerLimit += delegate { this.sahko.Destroy(); this.Destroy(); };
555    }
556
557
558
559
560}
561
562class Tykki : PhysicsObject
563{
564    private IntMeter elamaLaskuri = new IntMeter(20, 0, 20);
565    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
566
567    public Tykki(double leveys, double korkeus)
568        : base(leveys, korkeus)
569    {
570        MakeStatic();
571        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
572    }
573}
Note: See TracBrowser for help on using the repository browser.