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

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