source: 2013/24/AleksanteriV/Protokolla236/Protokolla236/Protokolla236/Protokolla236.cs @ 4478

Revision 4478, 22.1 KB checked in by alvirmas, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9// apuva lista:
10
11
12public class Portti : PhysicsObject
13{
14    public int MistaVie { get; set; }
15    public int MihinVie { get; set; }
16    public string Vari { get; set; }
17
18    public Portti(double leveys, double korkeus)
19        : base(leveys, korkeus)
20    {
21
22    }
23
24}
25
26public class Protokolla236 : PhysicsGame
27{
28
29    Image tausta = LoadImage("taustakuvastarfield");
30
31    Image pelaajankuva = LoadImage("pelaaja1.0");
32
33    Image taso2 = LoadImage("taso2");
34    Image taso3 = LoadImage("taso3");
35    Image taso4 = LoadImage("taso4");
36    private Image[] tasoanim = LoadImages("taso1", "taso1.1", "taso1.2", "taso1.3", "taso1", "taso1", "taso1.3", "taso1", "taso1.1");
37    private Image[] liekkianim = LoadImages("liekki1.1", "liekki1.2");
38    private Image[] taso5anim = LoadImages("taso5.1", "taso5.2", "taso5.3", "taso5.4", "taso5.5", "taso5.6", "taso5.7");
39    private Image[] porttianim = LoadImages("portti01", "portti02", "portti03", "portti04", "portti03", "portti02");
40
41    Image Block021 = LoadImage("Block2.1");
42    Image BlockMusta = LoadImage("Blockmusta");
43    Image Blocklasi = LoadImage("Blocklasi");
44    Image Block121 = LoadImage("Block121");
45    Image Lasitausta = LoadImage("lasitausta");
46    Image isolasi1 = LoadImage("isolasi1");
47    Image isolasi2 = LoadImage("isolasi2");
48    Image isolasi3 = LoadImage("isolasi3");
49    Image isolasi4 = LoadImage("isolasi4");
50    Image isolasi5 = LoadImage("isolasi5");
51    Image isolasi6 = LoadImage("isolasi6");
52    Image isolasi7 = LoadImage("isolasi7");
53    Image isolasi8 = LoadImage("isolasi8");
54    private Image[] LabRat = LoadImages("Block1.1", "Block1.2", "Block1.3", "Block1.2");
55    private Image[] Block06anim = LoadImages("Block06", "Block061", "Block062", "Block063", "Block064", "Block063", "Block062", "Block063", "Block061");
56
57    private Image[] vihu1 = LoadImages("vihu01", "vihu02");
58    private Image[] vihu2 = LoadImages("vihu05", "vihu051", "vihu052", "vihu053", "vihu054");
59    private Image[] vihu3 = LoadImages("vihu031", "vihu032", "vihu033");
60    private Image[] vihu4 = LoadImages("vihu041", "vihu042", "vihu043", "vihu042");
61    Image sikioanim = LoadImage("sikio03");
62
63
64
65    private Image[] tasoliekkianim = LoadImages("taso23.1", "taso23.2", "taso23.3");
66
67    SoundEffect raketti = LoadSoundEffect("raketti");
68    List<Pelaaja> pelaajat = new List<Pelaaja>();
69    Timer MessageDisplaynAjastin;
70
71    SoundEffect laser = LoadSoundEffect("lasershot");
72    private Image[] ammusanim = LoadImages("ammus", "ammus");
73
74    private string[] soitin = { "nitrome - N.M.D", "nitrome - enemy 585 3", "nitrome - bullethead" };
75
76    SoundEffect rajahdysAani = LoadSoundEffect("the");
77    bool joMaalissa = false;
78
79    int nopeus = RandomGen.NextInt(3, 5);
80    int kenttaNro = 1;
81    private string mihinSpawnaaSeuraavaksi = "00FF00"; // ihan ekassa kentässä spawnaa tähän
82
83    public override void Begin()
84    {
85        MessageDisplay.Position += new Vector(Screen.Width / 2, 0);
86
87        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
88"yksinpeli tarina (1P)", "selviytyminen (2P):ei toimi", "Lopeta");
89        Add(alkuValikko);
90
91        alkuValikko.AddItemHandler(0, AloitaPeli);
92        alkuValikko.AddItemHandler(1, selviytyminen);
93        alkuValikko.AddItemHandler(2, Exit);
94        MediaPlayer.Play(soitin[0]);
95
96    }
97    void AloitaPeli()
98    {
99        ClearAll();
100        seuraavakentta();
101        MediaPlayer.IsRepeating = true;
102        MessageDisplay.Add("Tehtävänäsi on päästa ulos mottiin joutuneen emä aluksesi sisältä.");
103        MessageDisplay.Add("Kulje vihollis linjojen läpi äläkä jää turhaan odottamaan omaa tuhoasi!!!");
104        Keyboard.Listen(Key.F1, ButtonState.Pressed, Begin, null);
105        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, null);
106    }
107
108    void selviytyminen()
109    {
110        MediaPlayer.Play(soitin[2]);
111        kenttaNro = 5;
112        AloitaPeli();
113    }
114
115    void luokentta(string kenttakuva)
116    {
117        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttakuva);
118
119        Pelaaja pelaaja1 = luoPelaaja(50, 50);
120        LuoElamaLaskuri(pelaaja1, Screen.Left + 150, Screen.Top - 20, Color.Red);
121        pelaaja1.Image = LoadImage("pelaaja1.0");
122
123        //Pelaaja pelaaja2 = luoPelaaja(50, 50);
124        //LuoElamaLaskuri(pelaaja2, Screen.Right - 150, Screen.Top - 20, Color.Blue);
125        //pelaaja2.Image = LoadImage("pelaaja2.0");
126
127
128        ruudut.SetTileMethod(Color.FromHexCode("00FF00"), AsetaPelaajanPaikka, "00FF00", pelaaja1);
129        //ruudut.SetTileMethod(Color.FromHexCode("00FFC5"), LuoPelaaja2);    6DFF54
130        ruudut.SetTileMethod(Color.FromHexCode("6DFF54"), Luomaali);
131        ruudut.SetTileMethod(Color.FromHexCode("000000"), LuoTaso, new Animation(tasoanim));
132        ruudut.SetTileMethod(Color.FromHexCode("FFFF00"), LuoTaso, (Animation)taso3);
133        ruudut.SetTileMethod(Color.FromHexCode("54FFEB"), LuoTaso, (Animation)taso4);
134        ruudut.SetTileMethod(Color.FromHexCode("FF0087"), LuoTaso, new Animation(taso5anim));
135        ruudut.SetTileMethod(Color.FromHexCode("0000FF"), LuoTaso, new Animation(tasoliekkianim));
136        ruudut.SetTileMethod(Color.FromHexCode("D9FF93"), LuoTaso, (Animation)Blocklasi);
137        ruudut.SetTileMethod(Color.FromHexCode("FF42C0"), LuoTausta, new Animation(LabRat));
138        ruudut.SetTileMethod(Color.FromHexCode("B7FF9E"), LuoTausta, new Animation(Block06anim));
139        ruudut.SetTileMethod(Color.FromHexCode("42B9FF"), LuoTausta, (Animation)BlockMusta);
140        ruudut.SetTileMethod(Color.FromHexCode("00FF90"), LuoTausta, (Animation)Block021);
141        ruudut.SetTileMethod(Color.FromHexCode("478DFF"), LuoTausta, (Animation)Block121);
142        ruudut.SetTileMethod(Color.FromHexCode("FFDB4C"), LuoTausta, (Animation)Lasitausta);
143        ruudut.SetTileMethod(Color.FromHexCode("A72BFF"), LuoTausta, (Animation)isolasi1);
144        ruudut.SetTileMethod(Color.FromHexCode("A73AFF"), LuoTausta, (Animation)isolasi2);
145        ruudut.SetTileMethod(Color.FromHexCode("A75BFF"), LuoTausta, (Animation)isolasi3);
146        ruudut.SetTileMethod(Color.FromHexCode("A746FF"), LuoTausta, (Animation)isolasi4);
147        ruudut.SetTileMethod(Color.FromHexCode("A778FF"), LuoTausta, (Animation)isolasi5);
148        ruudut.SetTileMethod(Color.FromHexCode("A797FF"), LuoTausta, (Animation)isolasi6);
149        ruudut.SetTileMethod(Color.FromHexCode("A788FF"), LuoTausta, (Animation)isolasi7);
150        ruudut.SetTileMethod(Color.FromHexCode("A7BAFF"), LuoTausta, (Animation)isolasi8);
151        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), LuoVihu, new Animation(vihu2));
152        ruudut.SetTileMethod(Color.FromHexCode("FF5700"), LuoVihu, new Animation(vihu3));
153        ruudut.SetTileMethod(Color.FromHexCode("FF5711"), LuoVihu, new Animation(vihu4));
154
155        ruudut.SetTileMethod(Color.FromHexCode("A860FF"), LuoPortti, 1, 2, "000102"); // kentta1 --> kentta2
156        ruudut.SetTileMethod(Color.FromHexCode("BD87FF"), LuoPortti, 2, 1, "000201"); // kentta2 --> kentta1
157        ruudut.SetTileMethod(Color.FromHexCode("FFA8AC"), LuoPortti, 2, 3, "000203"); // kentta2 --> kentta3
158        ruudut.SetTileMethod(Color.FromHexCode("6DFF81"), LuoPortti, 3, 2, "000302"); // kentta3 --> kentta2
159        ruudut.SetTileMethod(Color.FromHexCode("35FFA7"), LuoPortti, 3, 4, "000304"); // kentta3 --> kentta4
160        ruudut.SetTileMethod(Color.FromHexCode("548DFF"), LuoPortti, 4, 3, "000403"); // kentta4 --> kentta3
161        ruudut.SetTileMethod(Color.FromHexCode("4C70FF"), LuoPortti, 4, 5, "000405"); // kentta4 --> kentta5
162        ruudut.SetTileMethod(Color.FromHexCode("AF87FF"), LuoPortti, 4, 5, "B00405"); // kentta4 --> kentta5
163        ruudut.SetTileMethod(Color.FromHexCode("FF9BAC"), LuoPortti, 5, 4, "B00504"); // kentta5 --> kentta4
164        ruudut.SetTileMethod(Color.FromHexCode("9A02FF"), LuoPortti, 5, 4, "000504"); // kentta5 --> kentta4
165        ruudut.SetTileMethod(Color.FromHexCode("FFCE93"), LuoPortti, 5, 6, "000506"); // kentta5 --> kentta6
166        ruudut.SetTileMethod(Color.FromHexCode("FF4989"), LuoPortti, 6, 5, "000605"); // kentta6 --> kentta5
167        ruudut.SetTileMethod(Color.FromHexCode("79FF3F"), LuoPortti, 6, 1, "000601"); // kentta6 --> kentta1
168        ruudut.SetTileMethod(Color.FromHexCode("35FFDA"), LuoPortti, 1, 6, "000106"); // kentta1 --> kentta6
169        ruudut.SetTileMethod(Color.FromHexCode("FF8797"), LuoPortti, 4, 7, "000407"); // kentta4 --> kentta7
170        ruudut.SetTileMethod(Color.FromHexCode("FF8793"), LuoPortti, 7, 4, "000704"); // kentta7 --> kentta4
171
172        ruudut.SetTileMethod(Color.FromHexCode("000102"), AsetaPelaajanPaikka, "000102", pelaaja1);
173        ruudut.SetTileMethod(Color.FromHexCode("000201"), AsetaPelaajanPaikka, "000201", pelaaja1);
174        ruudut.SetTileMethod(Color.FromHexCode("000203"), AsetaPelaajanPaikka, "000203", pelaaja1);
175        ruudut.SetTileMethod(Color.FromHexCode("000302"), AsetaPelaajanPaikka, "000302", pelaaja1);
176        ruudut.SetTileMethod(Color.FromHexCode("000304"), AsetaPelaajanPaikka, "000304", pelaaja1);
177        ruudut.SetTileMethod(Color.FromHexCode("000403"), AsetaPelaajanPaikka, "000403", pelaaja1);
178        ruudut.SetTileMethod(Color.FromHexCode("000405"), AsetaPelaajanPaikka, "000405", pelaaja1);
179        ruudut.SetTileMethod(Color.FromHexCode("000504"), AsetaPelaajanPaikka, "000504", pelaaja1);
180        ruudut.SetTileMethod(Color.FromHexCode("000506"), AsetaPelaajanPaikka, "000506", pelaaja1);
181        ruudut.SetTileMethod(Color.FromHexCode("000605"), AsetaPelaajanPaikka, "000605", pelaaja1);
182        ruudut.SetTileMethod(Color.FromHexCode("000601"), AsetaPelaajanPaikka, "000601", pelaaja1);
183        ruudut.SetTileMethod(Color.FromHexCode("000106"), AsetaPelaajanPaikka, "000106", pelaaja1);
184        ruudut.SetTileMethod(Color.FromHexCode("000407"), AsetaPelaajanPaikka, "000407", pelaaja1);
185        ruudut.SetTileMethod(Color.FromHexCode("000704"), AsetaPelaajanPaikka, "000704", pelaaja1);
186        ruudut.SetTileMethod(Color.FromHexCode("B00405"), AsetaPelaajanPaikka, "B00405", pelaaja1);
187        ruudut.SetTileMethod(Color.FromHexCode("B00504"), AsetaPelaajanPaikka, "B00504", pelaaja1);
188
189        ruudut.Execute(50, 50);
190
191        /* taustakuva */
192        GameObject tausta1 = new GameObject(Level.Width, Level.Height);
193        tausta1.Image = tausta;
194        Add(tausta1, -3);
195        Layers[-3].RelativeTransition = new Vector(0.2, 0.2);
196
197
198        Gravity = new Vector(0.0, -150.0);
199        Level.CreateBorders(0.5, true);
200        LisaaNappaimet(pelaajat);
201        Camera.Follow(pelaajat.ToArray());
202    }
203
204    void AsetaPelaajanPaikka(Vector paikka, double leveys, double korkeus, String mihinSpawnaa, Pelaaja pelaaja)
205    {
206        if (mihinSpawnaa == this.mihinSpawnaaSeuraavaksi) pelaaja.Position = paikka;
207    }
208
209    void Luomaali(Vector paikka, double leveys, double korkeus)
210    {
211        PhysicsObject maali = new PhysicsObject(leveys, korkeus);
212        maali.MakeStatic();
213        maali.Position = paikka;
214        maali.IsVisible = false;
215
216        AddCollisionHandler(maali, "pelaaja", maaliintultiin);
217
218        Add(maali);
219
220    }
221
222    void maaliintultiin(PhysicsObject obj, PhysicsObject toinen)
223    {
224        if (joMaalissa) { return; }
225        joMaalissa = true;
226        MessageDisplay.Add("Hyvä!");
227        MessageDisplay.Add("Pääsit pois aluksesta. Ehjänä... Ja...");
228        MessageDisplay.Add("valmiina kostoon!");
229
230    }
231
232    void LuoPortti(Vector paikka, double leveys, double korkeus, int mistaVie, int mihinVie, String variHexJohonPelaajaSpawnaa)
233    {
234        Portti portti = new Portti(leveys, korkeus);
235        portti.MakeStatic();
236        portti.Position = paikka;
237        //portti.Tag = "portti";
238        portti.MistaVie = mistaVie;
239        portti.MihinVie = mihinVie;
240        portti.Vari = variHexJohonPelaajaSpawnaa;
241        Add(portti);
242        portti.Animation = new Animation(porttianim);
243        portti.Animation.Start();
244        portti.Animation.FPS = RandomGen.NextDouble(3.0, 7.0);
245    }
246
247    void seuraavakentta()
248    {
249        ClearAll();
250        pelaajat.Clear();
251
252        if (kenttaNro == 1) luokentta("Kentta1");
253        else if (kenttaNro == 2) luokentta("Kentta2");
254        else if (kenttaNro == 3) luokentta("Kentta3");
255        else if (kenttaNro == 4) luokentta("Kentta4");
256        else if (kenttaNro == 5) luokentta("Kentta5");
257        else if (kenttaNro == 6) luokentta("Kentta6");
258        else if (kenttaNro == 7) luokentta("Kentta7");
259
260    }
261
262
263
264    void TormattiinPorttiin(Pelaaja pelaaja, Portti portti)
265    {
266        kenttaNro = portti.MihinVie;
267        this.mihinSpawnaaSeuraavaksi = portti.Vari;
268        seuraavakentta();
269    }
270
271    void LuoTaso(Vector paikka, double leveys, double korkeus, Animation kuva)
272    {
273        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
274        taso.Position = paikka;
275        taso.Tag = "taso";
276        Add(taso);
277        taso.Animation = kuva;
278        taso.Animation.Start();
279        taso.Animation.FPS = nopeus;
280    }
281
282    void LuoTausta(Vector paikka, double leveys, double korkeus, Animation kuva)
283    {
284        GameObject Block = new GameObject(50, 50);
285        Block.Position = paikka;
286        Add(Block, -2);
287        Block.Animation = kuva;
288        Block.Animation.Start();
289        Block.Animation.FPS = nopeus;
290    }
291
292
293    void LuoElamaLaskuri(Pelaaja pelaaja, double x, double y, Color vari)
294    {
295        ProgressBar elamaPalkki = new ProgressBar(200, 10);
296        elamaPalkki.X = 0;
297        elamaPalkki.BarColor = vari;
298        elamaPalkki.Y = y;
299        elamaPalkki.BindTo(pelaaja.ElamaLaskuri);
300        elamaPalkki.BorderColor = Color.White;
301        Add(elamaPalkki);
302    }
303
304    void PelaajaOsuu(PhysicsObject pel, PhysicsObject kohde, string tyyppi)
305    {
306        if (!(pel is Pelaaja)) return;
307        Pelaaja pelaaja = (Pelaaja)pel;
308
309        switch (tyyppi)
310        {
311            case "sikio":
312                pelaaja.ElamaLaskuri.Value -= 1;
313                break;
314            case "vihu":
315                pelaaja.ElamaLaskuri.Value -= 2;
316                break;
317            case "taso":
318                double maxvel = 0;
319                if (Math.Abs(pelaaja.Velocity.X) > Math.Abs(pelaaja.Velocity.Y)) { maxvel = Math.Round(pelaaja.Velocity.X); } else { maxvel = Math.Round(pelaaja.Velocity.Y); }
320                int arvo = (int)Math.Abs(Math.Round(maxvel / 90)) - 4;
321
322                if (arvo > 0)
323                {
324                    pelaaja.ElamaLaskuri.Value -= arvo;
325                }
326                break;
327        }
328
329
330    }
331
332
333    void ElamaLoppui()
334    {
335        kenttaNro = 1;
336        mihinSpawnaaSeuraavaksi = "00FF00";
337
338        Kuolit();
339        pelaajat.Clear();
340
341        Timer.SingleShot(5.0, seuraavakentta);
342    }
343
344    void Kuolit()
345    {
346        Explosion rajahdys = new Explosion(100);
347        rajahdys.Position = pelaajat[0].Position;
348        rajahdys.Sound = rajahdysAani;
349        Add(rajahdys);
350        pelaajat[0].Destroy();
351
352
353    }
354
355
356    void ElamaLoppuiSurvivalissa()
357    {
358        foreach (var item in pelaajat)
359        {
360            if (!item.IsDestroyed)
361                item.Destroy();
362        }
363        pelaajat.Clear();
364        seuraavakentta();
365
366
367    }
368
369
370    Pelaaja alustaPelaaja()
371    {
372        Pelaaja pelaaja = new Pelaaja(50, 50);
373        if (kenttaNro == 5)
374            pelaaja.ElamaLaskuri.LowerLimit += delegate { ElamaLoppuiSurvivalissa(); };
375        else pelaaja.ElamaLaskuri.LowerLimit += delegate { ElamaLoppui(); };
376        pelaaja.CanRotate = false;
377        Camera.StayInLevel = true;
378        pelaaja.Shape = Shape.FromImage(pelaajankuva);
379        pelaaja.Tag = "pelaaja";
380        pelaaja.Restitution = 0.1;
381        return pelaaja;
382    }
383
384    Pelaaja luoPelaaja(double leveys, double korkeus)
385    {
386        Pelaaja pelaaja = alustaPelaaja();
387        Add(pelaaja);
388
389        AddCollisionHandler<Pelaaja, Portti>(pelaaja, TormattiinPorttiin);
390        AddCollisionHandler(pelaaja, "vihu", delegate(Pelaaja p, PhysicsObject vihu) { PelaajaOsuu(p, vihu, "vihu"); });
391        AddCollisionHandler(pelaaja, "sikio", delegate(Pelaaja p, PhysicsObject sikio) { PelaajaOsuu(p, sikio, "sikio"); });
392        AddCollisionHandler(pelaaja, "taso", delegate(Pelaaja p, PhysicsObject taso) { PelaajaOsuu(p, taso, "taso"); });
393
394        AssaultRifle pelaajanAse = new AssaultRifle(30, 10);
395        pelaajanAse.IsVisible = false;
396        pelaajanAse.Angle = Angle.RightAngle;
397        pelaajanAse.AttackSound = laser;
398        pelaajanAse.InfiniteAmmo = true;
399        pelaajanAse.Power.DefaultValue = 200;
400        pelaajanAse.FireRate = 8;
401        pelaajanAse.ProjectileCollision = AmmusOsui;
402        pelaaja.Add(pelaajanAse);
403        pelaaja.Ase = pelaajanAse;
404
405        GameObject liekki = new GameObject(50, 50);
406        liekki.Animation = new Animation(liekkianim);
407        liekki.IsVisible = false;
408        liekki.Animation.Start();
409        pelaaja.Add(liekki);
410        liekki.Y = -25;
411        pelaaja.Liekki = liekki;
412
413        pelaajat.Add(pelaaja);
414        return pelaaja;
415    }
416
417
418
419    private void LisaaNappaimet(List<Pelaaja> pelaajat)
420    {
421        Keyboard.Listen(Key.Left, ButtonState.Down, kaannaPelaajaa, null, 5.0, pelaajat[0]);
422        Keyboard.Listen(Key.Right, ButtonState.Down, kaannaPelaajaa, null, -5.0, pelaajat[0]);
423        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, 800.0, pelaajat[0]);
424        Keyboard.Listen(Key.LeftControl, ButtonState.Down, AmmuAseella, null, pelaajat[0].Ase);
425
426        //-----------------------------------------------------------------
427
428        Keyboard.Listen(Key.Up, ButtonState.Down, liekkianimaatio, null, pelaajat[0].Liekki, true);
429        Keyboard.Listen(Key.Up, ButtonState.Released, liekkianimaatio, null, pelaajat[0].Liekki, false);
430
431        /* Ei vielä toimi kaksinpeli
432        //-2-2-2-2-2-2-2--22-2-2-2-2-22-2-22-2-22-22-2-22-22--22-22-2-2-2-2-2-2-22-22-2----------
433        Keyboard.Listen(Key.A, ButtonState.Down, kaannaPelaajaa, null, 5.0, pelaajat[1]);
434        Keyboard.Listen(Key.D, ButtonState.Down, kaannaPelaajaa, null, -5.0, pelaajat[1]);
435        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, 900.0, pelaajat[1]);
436        Keyboard.Listen(Key.LeftControl, ButtonState.Down, AmmuAseella, null, pelaajat[1].Ase);
437
438        //-----------------------------------------------------------------
439        Keyboard.Listen(Key.W, ButtonState.Down, liekkianimaatio, null, pelaajat[1].Liekki, true);
440        Keyboard.Listen(Key.W, ButtonState.Released, liekkianimaatio, null, pelaajat[1].Liekki, false);
441         * */
442
443    }
444
445    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
446    {
447    }
448
449    void AmmuAseella(AssaultRifle ase)
450    {
451        PhysicsObject ammus = ase.Shoot();
452        if (ammus != null)
453        {
454            ammus.Angle = ase.AbsoluteAngle - Angle.RightAngle;
455            ammus.Size *= 3;
456
457            ammus.Animation = new Animation(ammusanim);
458            ammus.Animation.Start();
459            ammus.Animation.FPS = 3;
460        }
461    }
462
463    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
464    {
465        ammus.Destroy();
466        if (kohde.Tag.ToString() == "vihu")
467        {
468            kohde.Destroy();
469
470        }
471        else if (kohde.Tag.ToString() == "sikio")
472        {
473            kohde.Destroy();
474        }
475
476    }
477
478    void liekkianimaatio(GameObject liekki, bool totuus)
479    {
480        liekki.IsVisible = totuus;
481        if (totuus)
482        {
483
484            if (!raketti.IsPlaying)
485            {
486                raketti.Play();
487            }
488        }
489        else
490        {
491            raketti.Stop();
492        }
493    }
494
495    void kaannaPelaajaa(double kulmanopeus, PhysicsObject pelaaja)
496    {
497        pelaaja.Angle += Angle.FromDegrees(kulmanopeus);
498    }
499    void LiikutaPelaajaa(double nopeus, PhysicsObject pelaaja1)
500    {
501        pelaaja1.Push(Vector.FromLengthAndAngle(nopeus, pelaaja1.Angle + Angle.RightAngle));
502    }
503
504    void LuoVihu(Vector paikka, double leveys, double korkeus, Animation kuva)
505    {
506        PhysicsObject vihu = new PhysicsObject(50, 50);
507        vihu.Shape = Shape.Circle;
508        vihu.Animation = kuva;
509        vihu.Position = paikka;
510        vihu.Tag = "vihu";
511        vihu.AngularDamping = 0.1;
512        vihu.IgnoresGravity = true;
513        Add(vihu, 1);
514
515        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
516        satunnaisAivot.ChangeMovementSeconds = 5;
517        vihu.Brain = satunnaisAivot;
518        vihu.Animation.Start();
519        vihu.Animation.FPS = 4;
520
521        AddCollisionHandler(vihu, "vihu", luovihuosuma);
522    }
523
524    void luovihuosuma(PhysicsObject vihu, PhysicsObject kohde)
525    {
526        if (kohde.Tag.ToString() == "vihu") luosikio(vihu.Position, 50, 50, new Animation(sikioanim));
527    }
528
529    void luosikio(Vector paikka, double leveys, double korkeus, Animation kuva)
530    {
531        PhysicsObject sikio = new PhysicsObject(35, 35);
532        sikio.Shape = Shape.Circle;
533        sikio.Animation = kuva;
534        sikio.Position = paikka;
535        sikio.Tag = "sikio";
536        sikio.AngularDamping = 0.1;
537        sikio.IgnoresGravity = true;
538
539        Add(sikio, 1);
540
541        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
542        satunnaisAivot.ChangeMovementSeconds = 5;
543        sikio.Brain = satunnaisAivot;
544        sikio.Animation.Start();
545        sikio.Animation.FPS = 4;
546    }
547
548
549}
550
551public class Pelaaja : PhysicsObject
552{
553    AssaultRifle ase;
554    GameObject liekki;
555    DoubleMeter elamaLaskuri;
556    public AssaultRifle Ase { get { if (ase != null) return ase; else throw new Exception("Alustus ei tapahtunut ajoissa!"); } set { ase = value; } }
557    public GameObject Liekki { get { if (liekki != null) return liekki; else throw new Exception("Alustus ei tapahtunut ajoissa!"); } set { liekki = value; } }
558    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
559    public Pelaaja(double leveys, double korkeus)
560        : base(leveys, korkeus)
561    {
562        elamaLaskuri = new DoubleMeter(25, 0, 25);
563
564    }
565
566
567
568}
Note: See TracBrowser for help on using the repository browser.