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

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