source: 2014/koodauskerho/38/PietuR/Weaporage/Weaporage/Weaporage/Weaporage.cs @ 5821

Revision 5821, 20.8 KB checked in by jotapoti, 5 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
9class Pistooli : PhysicsObject
10{
11    Weaporage peli;
12
13    public Pistooli(Weaporage peli, double leveys, double korkeus)
14        : base(leveys, korkeus)
15    {
16        this.peli = peli;
17    }
18}
19
20class Pommi : PhysicsObject
21{
22    Weaporage peli;
23
24    public Pommi(Weaporage peli, double leveys, double korkeus)
25        : base(leveys, korkeus)
26    {
27        this.peli = peli;
28    }
29
30    public void Sytyta()
31    {
32        Animation = new Animation(peli.Pomminposaus);
33        Animation.FPS = 1;
34        Animation.Played += delegate
35        {
36            Explosion rajahdys = new Explosion(1000);
37            rajahdys.Position = Position;
38            rajahdys.Image = peli.Rajahdyskuva;
39            rajahdys.ShockwaveReachesObject += PaineaaltoOsuu;
40            rajahdys.Speed = 1500;
41            peli.Add(rajahdys);
42            Destroy();
43        };
44        Animation.Start();
45    }
46
47    void PaineaaltoOsuu(IPhysicsObject olio, Vector shokki)
48    {
49        Pelaaja pelaaja = peli.EtsiOmistaja(olio as PhysicsObject);
50
51        if (pelaaja != null)
52        {
53            pelaaja.Elamat.Value -= 6;
54        }
55    }
56}
57
58
59public class Pelaaja
60{
61    List<PhysicsObject> ruumiinOsat = new List<PhysicsObject>();
62    public List<PhysicsObject> RuumiinOsat { get { return ruumiinOsat; } }
63
64    IntMeter elamat;
65
66    public IntMeter Elamat { get { return elamat; } }
67
68    bool otetaanko = false;
69    public AxleJoint vasenKasi;
70    public AxleJoint oikeaKasi;
71
72    public bool OtetaankoKiinni
73    {
74        get
75        {
76            return otetaanko;
77        }
78        set
79        {
80            otetaanko = value;
81            foreach (var item in ruumiinOsat)
82            {
83                if ("oikeaKammen".Equals(item.Tag))
84                {
85                    if (oikeaKasi != null) return;
86                    if (otetaanko) item.Color = Color.Red;
87                    else item.Color = Color.Black;
88                }
89                if ("vasenKammen".Equals(item.Tag))
90                {
91                    if (vasenKasi != null) return;
92                    if (otetaanko) item.Color = Color.Red;
93                    else item.Color = Color.Black;
94                }
95            }
96        }
97    }
98
99    public Pelaaja(int defaultHp)
100    {
101        elamat = new IntMeter(defaultHp, 0, defaultHp);
102    }
103}
104
105
106
107public class Weaporage : PhysicsGame
108{
109
110    Pelaaja pelaaja1;
111    Pelaaja pelaaja2;
112    Pelaaja pelaaja3;
113    Pelaaja pelaaja4;
114
115    public Image Pomminkuva = LoadImage("Pommi1");
116    public Image Rajahdyskuva = LoadImage("Rajahdys");
117    public Image[] Pomminposaus = LoadImages("Pommi2", "Pommi3", "Pommi4", "Pommi5", "Pommi6");
118
119    Image Miekankuva = LoadImage("Miekka");
120    Image Nuijankuva = LoadImage("Nuija");
121    Image Tikarinkuva = LoadImage("Tikari");
122    Image Kirveenkuva = LoadImage("Kirves");
123    Image Sauvankuva = LoadImage("Sauva");
124    Image Pistoolinkuva = LoadImage("Pistooli");
125    Image Luodinkuva = LoadImage("Luoti");
126    Image Valomiekankuva = LoadImage("Valomiekka");
127    Image[] Valomiekkaaukeaa = LoadImages("Valomiekka1", "Valomiekka2", "Valomiekka3", "Valomiekka4", "Valomiekka5");
128   
129   
130   
131    Image Pallonkuva = LoadImage("Pallo");
132
133    public override void Begin()
134    {
135        Level.Width = 2400;
136        Level.Height = 1800;
137        LisaaAseetPeliin(new Vector(700, 700));
138        LisaaAseetPeliin(new Vector(700, -700));
139        LisaaAseetPeliin(new Vector(-700, -700));
140        LisaaAseetPeliin(new Vector(-700, 700));
141
142        Level.Background.CreateGradient(RandomGen.NextColor(), RandomGen.NextColor());
143       
144        IsFullScreen = true;
145       
146        pelaaja1 = new Pelaaja(10);
147        pelaaja2 = new Pelaaja(10);
148        pelaaja3 = new Pelaaja(10);
149        pelaaja4 = new Pelaaja(10);
150
151        IsMouseVisible = true;
152
153       /* PhysicsObject pallo = new PhysicsObject(200, 200);
154        pallo.Position = new Vector(0, 0);
155        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(2000);
156        pallo.Image = Pallonkuva;
157        pallo.Brain = satunnaisAivot;
158        satunnaisAivot.ChangeMovementSeconds = 100;
159        pallo.Shape = Shape.Circle;
160        pallo.AngularAcceleration = 10000;
161        pallo.RotateImage = true;
162        pallo.Tag = "ase";
163        Add(pallo);*/
164
165
166
167       
168        Level.CreateBorders();
169        Camera.ZoomToLevel();
170        Gravity = new Vector(0, -100);
171
172        Luopelaaja(pelaaja1, 2, new Vector(200, 200), Color.Red);
173        Luopelaaja(pelaaja2, 12, new Vector(200, -200), Color.Pink);
174        Luopelaaja(pelaaja3, 20, new Vector(-200, -200), Color.SpringGreen);
175        Luopelaaja(pelaaja4, 30, new Vector(-200, 200), Color.Blue);
176
177        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(-100, 0));
178        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(100, 0));
179        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(0, -100));
180        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(0, 100));
181        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja1);
182        Keyboard.Listen(Key.RightAlt, ButtonState.Pressed, IrrotaAseet, null, pelaaja1);
183
184        Keyboard.Listen(Key.Space, ButtonState.Pressed, AloitaAlustaPeli, null);
185
186        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(-100, 0));
187        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(100, 0));
188        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(0, -100));
189        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(0, 100));
190        Keyboard.Listen(Key.Q, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja2);
191        Keyboard.Listen(Key.E, ButtonState.Pressed, IrrotaAseet, null, pelaaja2);
192
193        Keyboard.Listen(Key.J, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(-100, 0));
194        Keyboard.Listen(Key.L, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(100, 0));
195        Keyboard.Listen(Key.K, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(0, -100));
196        Keyboard.Listen(Key.I, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(0, 100));
197        Keyboard.Listen(Key.U, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja3);
198        Keyboard.Listen(Key.O, ButtonState.Pressed, IrrotaAseet, null, pelaaja3);
199
200        Keyboard.Listen(Key.NumPad4, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(-100, 0));
201        Keyboard.Listen(Key.NumPad6, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(100, 0));
202        Keyboard.Listen(Key.NumPad5, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(0, -100));
203        Keyboard.Listen(Key.NumPad8, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(0, 100));
204        Keyboard.Listen(Key.Divide, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja4);
205        Keyboard.Listen(Key.Multiply, ButtonState.Pressed, IrrotaAseet, null, pelaaja4);
206
207        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja1);
208        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja2);
209        ControllerThree.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja3);
210        ControllerFour.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja4);
211
212
213        ControllerOne.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja1);
214        ControllerOne.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja1);
215        ControllerTwo.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja2);
216        ControllerTwo.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja2);
217        ControllerThree.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja3);
218        ControllerThree.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja3);
219        ControllerFour.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja4);
220        ControllerFour.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja4);
221
222        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
223        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
224    }
225
226    void AloitaAlustaPeli()
227    {
228        ClearAll();
229        Begin();
230    }
231
232
233    void IrrotaAseet(Pelaaja pelaaja)
234    {
235        if (pelaaja.oikeaKasi != null)
236        {
237            pelaaja.oikeaKasi.Destroy();
238            pelaaja.oikeaKasi = null;
239        }
240        if (pelaaja.vasenKasi != null)
241        {
242            pelaaja.vasenKasi.Destroy();
243            pelaaja.vasenKasi = null;
244        }
245        pelaaja.OtetaankoKiinni = false;
246    }
247
248
249    void ValmiinaOttamaanAseen(Pelaaja pelaaja)
250    {
251        if (pelaaja.OtetaankoKiinni)
252            pelaaja.OtetaankoKiinni = false;
253        else pelaaja.OtetaankoKiinni = true;
254    }
255
256
257    void LisaaAseetPeliin(Vector asepaikka)
258    {
259        int asenumero = RandomGen.NextInt(1, 8);
260        if (asenumero == 1)
261        {
262            PhysicsObject ase = new PhysicsObject(116, 404);
263            ase.Position = asepaikka;
264            ase.Mass = 5;
265            ase.Image = Kirveenkuva;
266            ase.Shape = Shape.FromImage(Kirveenkuva);
267            ase.Tag = "ase";
268            Add(ase);
269        }
270        else if (asenumero == 2)
271        {
272            PhysicsObject ase2 = new PhysicsObject(40, 93);
273            ase2.Position = asepaikka;
274            ase2.Mass = 0.00000001;
275            ase2.Image = Tikarinkuva;
276            ase2.Shape = Shape.FromImage(Tikarinkuva);
277            ase2.Tag = "ase";
278            Add(ase2);
279        }
280        else if (asenumero == 3)
281        {
282            PhysicsObject ase3 = new PhysicsObject(52, 320);
283            ase3.Position = asepaikka;
284            ase3.Mass = 0.1;
285            ase3.Image = Miekankuva;
286            ase3.CollisionIgnoreGroup = 20000;
287            ase3.Shape = Shape.FromImage(Miekankuva);
288            ase3.Tag = "ase";
289            AddCollisionHandler(ase3, "irtoava", CollisionHandler.DestroyTarget);
290            Add(ase3);
291        }
292        else if (asenumero == 4)
293        {
294            PhysicsObject ase4 = new PhysicsObject(160, 374);
295            ase4.Position = asepaikka;
296            ase4.Mass = 10;
297            ase4.Image = Nuijankuva;
298            ase4.Shape = Shape.FromImage(Nuijankuva);
299            ase4.Tag = "ase";
300            Add(ase4);
301        }
302        else if (asenumero == 5)
303        {
304            PhysicsObject ase5 = new PhysicsObject(12, 440);
305            ase5.Position = asepaikka;
306            ase5.Image = Sauvankuva;
307            ase5.Shape = Shape.FromImage(Sauvankuva);
308            ase5.Tag = "ase";
309            Add(ase5);
310        }
311        else if (asenumero == 6)
312        {
313            Pistooli ase6 = new Pistooli(this, 120, 60);
314            ase6.Position = asepaikka;
315            ase6.Image = Pistoolinkuva;
316            ase6.Shape = Shape.FromImage(Pistoolinkuva);
317            ase6.Tag = "ase";
318            Add(ase6);
319        }
320        else if (asenumero == 7)
321        {
322            Pommi ase7 = new Pommi(this, 50, 50);
323            ase7.Position = asepaikka;
324            ase7.Image = Pomminkuva;
325            ase7.Shape = Shape.FromImage(Pomminkuva);
326            ase7.Tag = "ase";
327            Add(ase7);
328        }
329
330    }
331    void LiikutaTatilla(AnalogState tatti, Pelaaja pelaaja)
332    {
333        LiikutaPelaajaa(pelaaja, tatti.StateVector * 100);
334    }
335
336    void LiikutaPelaajaa(Pelaaja pelaaja, Vector suunta)
337    {
338        if (pelaaja.RuumiinOsat.Count == 0) return;
339        pelaaja.RuumiinOsat[0].Hit(suunta);
340
341    }
342
343
344    void Luopelaaja(Pelaaja pelaaja,int collisionIgnoreGroup, Vector pos, Color vari)
345    {
346        const double perusKoko = 30;
347        //int collisionIgnoreGroup = 2;
348
349
350
351        PhysicsObject paa = LuoRuumiinOsa(perusKoko, perusKoko, Shape.Circle,collisionIgnoreGroup, pos, vari);
352        PhysicsObject keskiVartalo = LuoRuumiinOsa(perusKoko, perusKoko * 3, Shape.Ellipse, collisionIgnoreGroup, paa.Position + new Vector(0, -2 * perusKoko), vari);
353        PhysicsObject vasenKasi = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(-35, 40), vari);
354        PhysicsObject vasenKasi2 = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(-85, 40), vari);
355        PhysicsObject oikeaKasi = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(35, 40), vari);
356        PhysicsObject oikeaKasi2 = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(85, 40), vari);
357        PhysicsObject vasenJalka = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(-10, -70), vari);
358        PhysicsObject oikeaJalka = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(10, -70), vari);
359        PhysicsObject vasenJalka2 = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(-10, -120), vari);
360        //vasenJalka2.Tag = "irtoava";
361        PhysicsObject oikeaJalka2 = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(10, -120), vari);
362        PhysicsObject vasenKammen = LuoRuumiinOsa(perusKoko / 2, perusKoko / 2, Shape.Circle, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(-115, 40), vari);
363        vasenKammen.Tag = "vasenKammen";
364        PhysicsObject oikeaKammen = LuoRuumiinOsa(perusKoko / 2, perusKoko / 2, Shape.Circle, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(115, 40), vari);
365        oikeaKammen.Tag = "oikeaKammen";
366
367        keskiVartalo.Tag = "ruumis";
368        paa.Tag = "ruumis";
369
370
371        ProgressBar elamaPalkki = new ProgressBar(75, 10);
372        elamaPalkki.X = 0;
373        elamaPalkki.Y = 40;
374        elamaPalkki.BindTo(pelaaja.Elamat);
375        Add(elamaPalkki);
376
377        Timer ajastin = new Timer();
378        ajastin.Interval = 0.01;
379        ajastin.Timeout += delegate
380        {
381            elamaPalkki.Position = Camera.WorldToScreen(keskiVartalo.Position + new Vector(0, 150));
382        };
383        ajastin.Start();
384
385
386        AddCollisionHandler(keskiVartalo, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) {
387            AseOsuuRuumiinOsaan(kasi, ase, pelaaja);
388        });
389
390        AddCollisionHandler(paa, "ase", delegate(PhysicsObject kasi, PhysicsObject ase)
391        {
392            AseOsuuRuumiinOsaan(kasi, ase, pelaaja);
393        });
394
395        pelaaja.Elamat.LowerLimit += delegate {
396            Explosion rajahdys = new Explosion(200);
397            rajahdys.Position = paa.Position;
398            Add(rajahdys);
399            paa.Destroy();
400        };
401
402        AddCollisionHandler(vasenKammen, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) { KeraaAseVasempaanKateen(kasi, ase, pelaaja); });
403        AddCollisionHandler(oikeaKammen, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) { KeraaAseOikeaanKateen(kasi, ase, pelaaja); });
404        pelaaja.RuumiinOsat.Add(paa);
405
406        pelaaja.RuumiinOsat.Add(vasenKammen);
407        pelaaja.RuumiinOsat.Add(oikeaKammen);
408
409        foreach (var item in pelaaja.RuumiinOsat)
410        {
411            Add(item);
412        }
413
414        Add(paa);
415        Add(keskiVartalo);
416        Add(vasenKasi);
417        Add(vasenKasi2);
418        Add(oikeaKasi);
419        Add(oikeaKasi2);
420        Add(vasenJalka);
421        Add(oikeaJalka);
422        Add(vasenJalka2);
423        Add(oikeaJalka2);
424        Add(vasenKammen);
425        Add(oikeaKammen);
426        LiitaYhteen(paa, keskiVartalo, new Vector(0, -5));
427        LiitaYhteen(keskiVartalo, vasenKasi, new Vector(-10, 30));
428        LiitaYhteen(vasenKasi, vasenKasi2, new Vector(-25, 0));
429        LiitaYhteen(keskiVartalo, oikeaKasi, new Vector(10, 30));
430        LiitaYhteen(oikeaKasi, oikeaKasi2, new Vector(25, 0));
431        LiitaYhteen(vasenJalka, keskiVartalo, new Vector(0, 30));
432        LiitaYhteen(oikeaJalka, keskiVartalo, new Vector(0, 30));
433        LiitaYhteen(vasenJalka2, vasenJalka, new Vector(0, 25));
434        LiitaYhteen(oikeaJalka2, oikeaJalka, new Vector(0, 25));
435        LiitaYhteen(vasenKasi2, vasenKammen, new Vector(-25, 0));
436        LiitaYhteen(oikeaKasi2, oikeaKammen, new Vector(25, 0));
437    }
438
439    void AseOsuuRuumiinOsaan(PhysicsObject ruumiinOsa, PhysicsObject ase, Pelaaja pelaaja)
440    {
441
442        if (pelaaja.oikeaKasi != null && ase.Equals(pelaaja.oikeaKasi.Object2)) return;
443        if (pelaaja.vasenKasi != null && ase.Equals(pelaaja.vasenKasi.Object2)) return;
444        pelaaja.Elamat.Value--;
445    }
446
447    void KeraaAseVasempaanKateen(PhysicsObject kasi, PhysicsObject ase, Pelaaja pelaaja)
448    {
449        if (pelaaja.vasenKasi == null && pelaaja.OtetaankoKiinni)
450        {
451            pelaaja.vasenKasi = LiitaYhteen(kasi, ase, Vector.Zero);
452
453            if (ase is Pommi)
454            {
455                (ase as Pommi).Sytyta();
456                //Sytytapommi(ase);
457            }
458            else if (ase is Pistooli)
459            {
460                Timer laukausaika = new Timer();
461                laukausaika.Interval = 3;
462                laukausaika.Timeout += delegate
463                {
464
465                    PhysicsObject luoti = new PhysicsObject(30, 14);
466                    luoti.Position = ase.Position;
467                    luoti.Image = Luodinkuva;
468                    luoti.Hit(ase.Angle.GetVector() * 5000);
469                    luoti.LifetimeLeft = TimeSpan.FromSeconds(5);
470                    luoti.Tag = "ase";
471                    Add(luoti);
472                };
473                laukausaika.Start();
474            }
475        }
476        //ase.CollisionIgnoreGroup = kasi.CollisionIgnoreGroup;
477        AseKeratty(pelaaja);
478    }
479
480    void KeraaAseOikeaanKateen(PhysicsObject kasi, PhysicsObject ase, Pelaaja pelaaja)
481    {
482        if (pelaaja.oikeaKasi == null && pelaaja.OtetaankoKiinni)
483        {
484            pelaaja.oikeaKasi = LiitaYhteen(kasi, ase, Vector.Zero);
485
486            if (ase is Pommi)
487            {
488                (ase as Pommi).Sytyta();
489            }
490            else if (ase is Pistooli)
491            {
492                Timer laukausaika = new Timer();
493                laukausaika.Interval = 3;
494                laukausaika.Timeout += delegate
495                {
496
497                    PhysicsObject luoti = new PhysicsObject(30, 14);
498                    luoti.Position = ase.Position;
499                    luoti.Image = Luodinkuva;
500                    luoti.Hit(ase.Angle.GetVector() * 5000);
501                    luoti.LifetimeLeft = TimeSpan.FromSeconds(5);
502                    luoti.Tag = "ase";
503                    Add(luoti);
504                };
505                laukausaika.Start();
506            }
507        }
508        //ase.CollisionIgnoreGroup = kasi.CollisionIgnoreGroup;
509        AseKeratty(pelaaja);
510
511    }
512
513    void AseKeratty(Pelaaja pelaaja)
514    {
515        pelaaja.OtetaankoKiinni = false;
516    }
517
518
519
520    AxleJoint LiitaYhteen(PhysicsObject ens, PhysicsObject toin, Vector sidosKohta)
521    {
522        AxleJoint liitos = new AxleJoint(ens, toin, ens.Position + sidosKohta);
523        liitos.Softness = 0.000000005;
524        Add(liitos);
525        return liitos;
526    }
527
528    PhysicsObject LuoRuumiinOsa(double leveys, double korkeus, Shape muoto, int collisionIgnoreGroup, Vector pos, Color vari)
529    {
530        PhysicsObject ruumiinOsa = new PhysicsObject(leveys, korkeus, muoto);
531        ruumiinOsa.Position = pos;
532        ruumiinOsa.Color = vari;
533        ruumiinOsa.CollisionIgnoreGroup = collisionIgnoreGroup;
534       
535        return ruumiinOsa;
536    }
537
538    public Pelaaja EtsiOmistaja(PhysicsObject osa)
539    {
540        if (OmistaaOsan(pelaaja1, osa)) return pelaaja1;
541        if (OmistaaOsan(pelaaja2, osa)) return pelaaja2;
542        if (OmistaaOsan(pelaaja3, osa)) return pelaaja3;
543        if (OmistaaOsan(pelaaja4, osa)) return pelaaja4;
544        return null;
545    }
546
547    bool OmistaaOsan(Pelaaja pelaaja, PhysicsObject osa)
548    {
549        foreach (var obj in pelaaja.RuumiinOsat)
550        {
551            if (obj == osa)
552                return true;
553        }
554        return false;
555    }
556}
Note: See TracBrowser for help on using the repository browser.