source: 2012/23/AnttiR/From above/FysiikkaPeli2/FysiikkaPeli2/FromAbove.cs @ 2885

Revision 2885, 36.7 KB checked in by anjuroys, 9 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pelaaja : PhysicsObject
10{
11    public DoubleMeter elamaMittari;
12    public DoubleMeter turbomittari;
13    public DoubleMeter Ammusmittari;
14    public DoubleMeter Pistemittari;
15    public double Latausnopeus;
16    public double Latapati;
17    public bool lataamassa = false;
18    public bool Recoil = false;
19    public double liikkumisnopeus;
20    public Explosion Viimeisinrajahdus = null;
21    public double Ampumisnopeus;
22    public String Asekuva;
23    public string Ase;
24    public Vector viimeisinSuunta = Vector.Zero;
25
26   
27   
28    public Pelaaja(double leveys, double korkeus)
29        : base(leveys, korkeus)
30    {
31        elamaMittari = new DoubleMeter(1000, 0, 1000);
32        turbomittari = new DoubleMeter(50, 0, 100);
33        Ammusmittari = new DoubleMeter(250, 0, 250);
34        Pistemittari = new DoubleMeter(0, 0, 3000);
35        Ampumisnopeus = 512;
36        Ase = "Heavy";
37        Asekuva = "HMG";
38        Latausnopeus = 6.0;
39        Latapati = 250;
40        liikkumisnopeus = 155;
41    }
42}
43
44public class FromAbove : PhysicsGame
45{
46    Pelaaja pallo;
47    Pelaaja pallo2;
48    PhysicsObject alareuna;
49    GameObject Sinikuva;
50    GameObject Punakuva;
51    GameObject Text;
52    GameObject Text2;
53
54    BarGauge elppiPalkki = new BarGauge(50, 150);
55    BarGauge elppiPalkki2 = new BarGauge(50, 150);
56    BarGauge turboPalkki = new BarGauge(50, 150);
57    BarGauge turboPalkki2 = new BarGauge(50, 150);
58    BarGauge ammusPalkki = new BarGauge(50, 150);
59    BarGauge ammusPalkki2 = new BarGauge(50, 150);
60    BarGauge pistePalkki = new BarGauge(150, 40);
61    BarGauge pistePalkkib = new BarGauge(150, 40);
62    Image pPallo = LoadImage("Punapallo");
63    Image sPallo = LoadImage("Sinipallo");
64    Image sPati = LoadImage("Punapati");
65    Image Boom = LoadImage("Boom!++++++");
66    Image pPati = LoadImage("Sinipati");
67    Image kransu = LoadImage("kransu");
68    Image Sydan = LoadImage("Heart");
69    Image salama = LoadImage("Lightning");
70    Image Shotgun = LoadImage("Striker");
71    Image Famas = LoadImage("Famas");
72    Image Caliber = LoadImage("Caliber 89");
73    Image Ak47u = LoadImage("Aku");
74    Image Sniper = LoadImage("Barret");
75    Image Light = LoadImage("Light");
76    Image HMG = LoadImage("HMG");
77    Image tausta = LoadImage("Hpboost");
78    Image tausta2 = LoadImage("Hpboost2");
79    Image MGH = LoadImage("Dragunov");
80    Image Spas = LoadImage("Spas12");
81    public override void Begin()
82    {
83
84
85
86
87        //Kirjoita ohjelmakoodisi tähän
88
89       
90
91        pallo = Luopallo(Color.Blue, Level.Left + 20, Level.Top - 20);
92        pallo2 = Luopallo(Color.Red, Level.Right - 20, Level.Top - 20);
93        pallo.Image = sPallo;
94        pallo2.Image = pPallo;
95
96
97        Level.Background.CreateGradient(Color.White, Color.LightBlue);
98
99
100        Luokentta();
101        Luopelikentta();
102        Liikkeet();
103        Luoajastin();
104        Kutsuvalikko();
105
106    }
107    Pelaaja Luopallo(Color vari, double x, double y)
108    {
109        Pelaaja pallo = new Pelaaja(25, 25);
110        pallo.elamaMittari.LowerLimit += delegate { Pelaajakuoli(pallo); };
111        pallo.Shape = Shape.Circle;
112        pallo.Restitution = 0.0;
113        pallo.X = x;
114        pallo.Y = y;
115        pallo.CanRotate = false;
116        pallo.Tag = "pallo";
117        pallo.Color = vari;
118        Add(pallo);
119        return pallo;
120    }
121    void Luoajastin()
122    {
123        Timer ajastin = new Timer();
124        ajastin.Interval = 1.0;
125        ajastin.Timeout += delegate { pallo.turbomittari.Value += 5; };
126        ajastin.Timeout += delegate { pallo2.turbomittari.Value += 5; };
127        ajastin.Start();
128    }
129    void Luokentta()
130    {
131        Surface vasenReuna = Surface.CreateLeft(Level);
132        vasenReuna.Color = Color.DarkBlue;
133        Add(vasenReuna);
134        Surface oikeaReuna = Surface.CreateRight(Level);
135        oikeaReuna.Color = Color.DarkBlue;
136        Add(oikeaReuna);
137        Surface ylaReuna = Surface.CreateTop(Level);
138        ylaReuna.Color = Color.DarkBlue;
139        Add(ylaReuna);
140        Surface alaReuna = Surface.CreateBottom(Level);
141        alaReuna.Color = Color.DarkBlue;
142        Add(alaReuna);
143        PhysicsObject alareuna = PhysicsObject.CreateStaticObject(1000, 10);
144        alareuna.Color = Color.DarkBlue;
145        alareuna.X = 0;
146        alareuna.Y = -150;
147        Add(alareuna);
148
149        PhysicsObject vali = PhysicsObject.CreateStaticObject(10, 290);
150        vali.Color = Color.DarkBlue;
151        vali.X = 0;
152        vali.Y = -300;
153        Add(vali);
154
155        Sinikuva = new GameObject(HMG);
156        Sinikuva.Position = new Vector(-165,-300);
157        Add(Sinikuva);
158
159        Punakuva = new GameObject(HMG);
160        Punakuva.Position = new Vector(165, -300);
161        Add(Punakuva);
162
163        GameObject Text = new GameObject(tausta);
164        Text.Position = new Vector(-399, -190);
165        Add(Text);
166
167        GameObject Text2 = new GameObject(tausta2);
168        Text2.Position = new Vector(399, -190);
169        Add(Text2);
170
171        elppiPalkki.BindTo(pallo.elamaMittari);
172        elppiPalkki.BarColor = Color.Red;
173        elppiPalkki.BorderColor = Color.Black;
174        elppiPalkki.Position = new Vector(-450, -300);
175        Add(elppiPalkki);
176
177        elppiPalkki2.BindTo(pallo2.elamaMittari);
178        elppiPalkki2.BarColor = Color.Red;
179        elppiPalkki2.BorderColor = Color.Black;
180        elppiPalkki2.Position = new Vector(350, -300);
181        Add(elppiPalkki2);
182
183        turboPalkki.BindTo(pallo.turbomittari);
184        turboPalkki.BarColor = Color.DarkBlue;
185        turboPalkki.BorderColor = Color.Black;
186        turboPalkki.Position = new Vector(-400, -300);
187        Add(turboPalkki);
188
189        turboPalkki2.BindTo(pallo2.turbomittari);
190        turboPalkki2.BarColor = Color.DarkBlue;
191        turboPalkki2.BorderColor = Color.Black;
192        turboPalkki2.Position = new Vector(400, -300);
193        Add(turboPalkki2);
194
195        ammusPalkki.BindTo(pallo.Ammusmittari);
196        ammusPalkki.BarColor = Color.Yellow;
197        ammusPalkki.BorderColor = Color.Black;
198        ammusPalkki.Position = new Vector(-350, -300);
199        Add(ammusPalkki);
200
201        ammusPalkki2.BindTo(pallo2.Ammusmittari);
202        ammusPalkki2.BarColor = Color.Yellow;
203        ammusPalkki2.BorderColor = Color.Black;
204        ammusPalkki2.Position = new Vector(450, -300);
205        Add(ammusPalkki2);
206
207        pistePalkki.BindTo(pallo.Pistemittari);
208        pistePalkki.BarColor = Color.DarkBlue;
209        pistePalkki.BorderColor = Color.Black;
210        pistePalkki.Position = new Vector(-200, -200);
211        pistePalkki.Direction = BarGauge.BarDirection.BarHorizontalLeft;
212        Add(pistePalkki);
213        Label pisteLuku = new Label();
214        pisteLuku.BindTo(pallo.Pistemittari);
215        pisteLuku.Position = new Vector(-60, -200);
216        Add(pisteLuku);
217
218
219        pistePalkkib.BindTo(pallo2.Pistemittari);
220        pistePalkkib.BarColor = Color.DarkRed;
221        pistePalkkib.BorderColor = Color.Black;
222        pistePalkkib.Position = new Vector(200, -200);
223        pistePalkkib.Direction = BarGauge.BarDirection.BarHorizontalLeft;
224        Add(pistePalkkib);
225        Label pisteLukub = new Label();
226        pisteLukub.BindTo(pallo2.Pistemittari);
227        pisteLukub.Position = new Vector(60, -200);
228        Add(pisteLukub);
229
230
231
232    }
233    void Liikkeet()
234    {
235        // Pelaaja 1
236        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Pelaaja 1 liiku oikealle", pallo, new Vector(pallo.liikkumisnopeus * 1, 0));
237        Keyboard.Listen(Key.D, ButtonState.Released, Liikuta, null, pallo, Vector.Zero);
238        Keyboard.Listen(Key.W, ButtonState.Down, Liikuta, "Pelaaja 1 liiku ylös", pallo, new Vector(0, pallo.liikkumisnopeus * 1));
239        Keyboard.Listen(Key.W, ButtonState.Released, Liikuta, null, pallo, Vector.Zero);
240        Keyboard.Listen(Key.S, ButtonState.Down, Liikuta, "Pelaaja 1 liiku alas", pallo, new Vector(0, -pallo.liikkumisnopeus * 1));
241        Keyboard.Listen(Key.S, ButtonState.Released, Liikuta, null, pallo, Vector.Zero);
242        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Pelaaja 1 liiku vasemmalle", pallo, new Vector(-pallo.liikkumisnopeus * 1, 0));
243        Keyboard.Listen(Key.A, ButtonState.Released, Liikuta, null, pallo, Vector.Zero);
244        Keyboard.Listen(Key.Q, ButtonState.Pressed, Kayta, "Pelaaja 1:Käytä turbo", pallo);
245        Keyboard.Listen(Key.U, ButtonState.Pressed, Tayta, "Pelaaja 1:Paranna elamia", pallo);
246        Keyboard.Listen(Key.E, ButtonState.Pressed, Lataa, "Pelaaja 1:Lataa ase", pallo);
247        Keyboard.Listen(Key.T, ButtonState.Pressed, HKranaatti, "Pelaaja 1:Heita kranaatti", pallo); // heitetään kranaatti siihen suuntaan mihin on viimeksi liikuttu
248        Keyboard.Listen(Key.Y, ButtonState.Down, Ammu, "Pelaaja 1: ammu", pallo, new Vector(0, 1), pPati);
249        Keyboard.Listen(Key.H, ButtonState.Down, Ammu, "Pelaaja 1: ammu", pallo, new Vector(0, -1), pPati);
250        Keyboard.Listen(Key.G, ButtonState.Down, Ammu, "Pelaaja 1: ammu", pallo, new Vector(-1, 0), pPati);
251        Keyboard.Listen(Key.J, ButtonState.Down, Ammu, "Pelaaja 1: ammu", pallo, new Vector(1, 0), pPati);
252
253        // Pelaaja 2
254        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Pelaaja 2 liiku oikealle", pallo2, new Vector(pallo2.liikkumisnopeus * 1, 0));
255        Keyboard.Listen(Key.Right, ButtonState.Released, Liikuta, null, pallo2, Vector.Zero);
256        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Pelaaja 2 liiku ylös", pallo2, new Vector(0, pallo2.liikkumisnopeus * 1));
257        Keyboard.Listen(Key.Up, ButtonState.Released, Liikuta, null, pallo2, Vector.Zero);
258        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Pelaaja 2 liiku alas", pallo2, new Vector(0, -pallo2.liikkumisnopeus * 1));
259        Keyboard.Listen(Key.Down, ButtonState.Released, Liikuta, null, pallo2, Vector.Zero);
260        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Pelaaja 2 liiku vasemmalle", pallo2, new Vector(-pallo2.liikkumisnopeus * 1, 0));
261        Keyboard.Listen(Key.Left, ButtonState.Released, Liikuta, null, pallo2, Vector.Zero);
262        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Kayta, "Pelaaja 2:Käytä turbo", pallo2);
263        Keyboard.Listen(Key.NumPad9, ButtonState.Pressed, Tayta, "Pelaaja 2:Paranna elamia", pallo2);
264        Keyboard.Listen(Key.NumPad2, ButtonState.Pressed, Lataa, "Pelaaja 2:Lataa ase", pallo2);
265        Keyboard.Listen(Key.NumPad7, ButtonState.Pressed, HKranaatti, "Pelaaja 2:Heita kranaatti", pallo2);
266        Keyboard.Listen(Key.NumPad8, ButtonState.Down, Ammu, "Pelaaja 2: ammu", pallo2, new Vector(0, 1), sPati);
267        Keyboard.Listen(Key.NumPad5, ButtonState.Down, Ammu, "Pelaaja 2: ammu", pallo2, new Vector(0, -1), sPati);
268        Keyboard.Listen(Key.NumPad4, ButtonState.Down, Ammu, "Pelaaja 2: ammu", pallo2, new Vector(-1, 0), sPati);
269        Keyboard.Listen(Key.NumPad6, ButtonState.Down, Ammu, "Pelaaja 2: ammu", pallo2, new Vector(1, 0), sPati);
270
271        //General
272
273        Keyboard.Listen(Key.P, ButtonState.Pressed,Kutsuvalikko,"Vaihda aseita");
274
275    }
276    void Ammu(Pelaaja pallo, Vector suunta, Image P)
277    {
278        if (pallo.IsDestroyed) return;
279        if (pallo.Ammusmittari < 1) return;
280        if (pallo.Recoil == true) return;
281
282        PhysicsObject ammus = new PhysicsObject(4, 4);
283        ammus.Position = pallo.Position + suunta * 25;
284        ammus.Image = P;
285        ammus.Restitution = 0.0;
286        pallo.Ammusmittari.Value -= 1;
287        ammus.Velocity = suunta * pallo.Ampumisnopeus;
288        AddCollisionHandler(ammus, "tuhottava", AmmusOsui);
289        AddCollisionHandler(ammus, CollisionHandler.DestroyObject);
290        Add(ammus);
291        ammus.Tag = "ammus";
292
293        double vahinko = 0;
294
295        if (pallo.Ase == "Heavy")
296        {
297
298            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 700);
299            vahinko = 9;
300        }
301        if (pallo.Ase == "Famas")
302        {
303
304            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 190);
305            pallo.Recoil = true;
306            vahinko = 23;
307            Timer.SingleShot(0.03, delegate
308            {
309                pallo.Recoil = false;
310            });
311
312
313        }
314        if (pallo.Ase == "LMG Type")
315        {
316
317            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 500);
318            pallo.Recoil = true;
319            vahinko =14;
320            Timer.SingleShot(0.01, delegate
321            {
322                pallo.Recoil = false;
323            });
324
325
326        }
327        if (pallo.Ase == "Dragunov")
328        {
329            pallo.Recoil = true;
330            vahinko = 139;
331            Timer.SingleShot(0.4, delegate
332            {
333                pallo.Recoil = false;
334            });
335
336        }
337        if (pallo.Ase == "Barret")
338        {
339           vahinko = 298; 
340        }
341
342        if (pallo.Ase == "Ak")
343        {
344            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 600);
345            pallo.Recoil = true;
346            vahinko = 13;
347            Timer.SingleShot(0.01, delegate
348            {
349                pallo.Recoil = false;
350            });
351        }
352        if (pallo.Ase == "Cal89")
353        {
354            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 500);
355            pallo.Recoil = true;
356            vahinko = 26;
357            Timer.SingleShot(0.1, delegate
358            {
359                pallo.Recoil = false;
360            });
361        }
362            if (pallo.Ase == "Spas")
363            {
364                ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100);
365                pallo.Recoil = true;
366                vahinko = 219;
367                Timer.SingleShot(0.5, delegate
368                {
369                    pallo.Recoil = false;
370                });
371            }
372
373       
374        if (pallo.Ase == "Shotgun")
375        {
376            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100);
377            pallo.Recoil = true;
378            vahinko = 90;
379            Timer.SingleShot(0.4, delegate
380            {
381                pallo.Recoil = false;
382            });
383
384
385            PhysicsObject hauli = new PhysicsObject(4, 4);
386            hauli.Position = pallo.Position + suunta * 25;
387            hauli.Image = P;
388            hauli.Tag = "ammus";
389            hauli.Restitution = 0.0;
390            hauli.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 70);
391            AddCollisionHandler(hauli, "tuhottava", AmmusOsui);
392            AddCollisionHandler(hauli, CollisionHandler.DestroyObject);
393            Add(hauli);
394            hauli.Velocity = suunta * pallo.Ampumisnopeus;
395            hauli.Velocity = Vector.FromLengthAndAngle(suunta.Magnitude, suunta.Angle + Angle.FromDegrees(-20)) * pallo.Ampumisnopeus;
396            AddCollisionHandler(hauli, "pallo", delegate(PhysicsObject tormaaja, PhysicsObject kohde)
397            {
398                Pelaaja kohdepelaaja = (Pelaaja)kohde;
399                kohdepelaaja.elamaMittari.Value -= vahinko;
400                pallo.Pistemittari.Value += vahinko;
401
402            });
403
404            PhysicsObject hauli2 = new PhysicsObject(4, 4);
405            hauli2.Position = pallo.Position + suunta * 25;
406            hauli2.Image = P;
407            hauli2.Tag = "ammus";
408            hauli2.Restitution = 0.0;
409            hauli2.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 70);
410            AddCollisionHandler(hauli2, "tuhottava", AmmusOsui);
411            AddCollisionHandler(hauli2, CollisionHandler.DestroyObject);
412            Add(hauli2);
413
414            hauli2.Velocity = Vector.FromLengthAndAngle(suunta.Magnitude, suunta.Angle + Angle.FromDegrees(20)) * pallo.Ampumisnopeus;
415            AddCollisionHandler(hauli2, "pallo", delegate(PhysicsObject tormaaja, PhysicsObject kohde)
416            {
417                Pelaaja kohdepelaaja = (Pelaaja)kohde;
418                kohdepelaaja.elamaMittari.Value -= vahinko;
419                pallo.Pistemittari.Value += vahinko;
420
421            });
422
423            //2 haulia lisää
424
425        }
426        AddCollisionHandler(ammus, "pallo", delegate(PhysicsObject tormaaja, PhysicsObject kohde)
427        {
428            Pelaaja kohdepelaaja = (Pelaaja)kohde;
429            kohdepelaaja.elamaMittari.Value -= vahinko;
430            pallo.Pistemittari.Value += vahinko;
431
432        });
433    }
434    void Liikuta(Pelaaja pallo, Vector suunta)
435    {
436        //        pallo.Velocity = suunta;
437        if (suunta.Magnitude != 0)
438        {
439            pallo.Velocity = Vector.ComponentProduct(suunta.Normalize(), new Vector(pallo.liikkumisnopeus, pallo.liikkumisnopeus));
440            pallo.viimeisinSuunta = Vector.ComponentProduct(suunta.Normalize(), new Vector(pallo.liikkumisnopeus, pallo.liikkumisnopeus));
441            return;
442        }
443        pallo.Velocity = suunta;
444        pallo.viimeisinSuunta = suunta;
445    }
446    PhysicsObject Luoseina(Double q, double w, double e, double r)
447    {
448        PhysicsObject m = PhysicsObject.CreateStaticObject(q, w);
449        m.Shape = Shape.Rectangle;
450        m.X = e;
451        m.Y = r;
452        m.Color = Color.DarkBlue;
453        Add(m);
454        return m;
455    }
456    PhysicsObject LuoRseina(Double w, double h, double x, double y)
457    {
458        PhysicsObject n = PhysicsObject.CreateStaticObject(w, h);
459        n.Shape = Shape.Rectangle;
460        n.X = x;
461        n.Y = y;
462        n.Color = Color.LightBlue;
463        n.Tag = "tuhottava";
464        Add(n);
465        return n;
466    }
467    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
468    {
469        kohde.Destroy();
470    }
471    void Kayta(Pelaaja p)
472    {
473        if (p.turbomittari > 99)
474        {
475            ExplosionSystem ss = new ExplosionSystem(salama, 100);
476            ss.MaxScale = 30;
477            ss.MinScale = 20;
478            ss.MaxVelocity = 150;
479            ss.MaxLifetime = 0.5;
480            ss.MinRotation = 0.0;
481            ss.MaxRotation = 365.0;
482            ss.MinRotationSpeed = 2.0;
483
484            Add(ss);
485            ss.AddEffect(p.Position, 50);
486            p.liikkumisnopeus = p.liikkumisnopeus * 2;
487            p.turbomittari.Value = 0.0;
488            Timer.SingleShot(5.0, delegate { p.liikkumisnopeus = p.liikkumisnopeus / 2; });
489
490        }
491    }
492    void Lataa(Pelaaja x)
493    {
494        if (!x.lataamassa)
495        {
496            x.lataamassa = true;
497            x.Ammusmittari.Value = 0;
498            Timer.SingleShot(x.Latausnopeus, delegate { x.Ammusmittari.Value += x.Latapati; x.lataamassa = false; });
499        }
500    }
501    //Kentta:
502    void Luopelikentta()
503    {
504        //House; Pelikartta esteet:
505
506        //Normaalit seinät
507
508        Luoseina(40, 160, 200, 50);
509        Luoseina(40, 100, -250, 70);
510        Luoseina(40, 50, -250, 170);
511        Luoseina(100, 30, -300, 180);
512        Luoseina(100, 40, 100, 80);
513        Luoseina(40, 100, 70, 50);
514        Luoseina(30, 40, -270, 40);
515        Luoseina(120, 40, -450, 40);
516        Luoseina(110, 40, -417, -30);
517        Luoseina(110, 40, -417, -100);
518        Luoseina(50, 150, -50, -80);
519        Luoseina(100, 40, -145, 80);
520        Luoseina(95, 40, -10, 80);
521        Luoseina(40, 50, -250, 380);
522        Luoseina(40, 140, -430, 360);
523        Luoseina(40, 90, -250, 295);
524        Luoseina(90, 40, -405, 270);
525        Luoseina(100, 30, -450, 180);
526        Luoseina(60, 40, -270, 270);
527        Luoseina(40, 80, 200, -110);
528        Luoseina(40, 140, 200, 260);
529        Luoseina(200, 40, 80, 310);
530        Luoseina(40, 20, 350, 390);
531        Luoseina(40, 130, 350, 295);
532        Luoseina(70, 40, 220, 250);
533        Luoseina(70, 40, 330, 250);
534        Luoseina(40, 200, 350, 80);
535        Luoseina(150, 40, 445, 80);
536
537
538        //Rikottavat
539
540        LuoRseina(30, 40, 165, 80);
541        LuoRseina(105, 35, -337.5, 40);
542        LuoRseina(60, 40, -330, 270);
543        LuoRseina(40, 30, -382, -65);
544        LuoRseina(40, 30, -452, -65);
545        LuoRseina(40, 50, 350, 205);
546    }
547    //Valikot!!!!
548    void Kutsuvalikko()
549    {
550        MultiSelectWindow alkuv = new MultiSelectWindow("Welcome", "Start game/Continue", "Set game", "Player 1 settings", "Player 2 settings", "Quit");
551        alkuv.ItemSelected += PainettiinValikonNappia;
552        alkuv.Color = Color.MediumBlue;
553        Add(alkuv);
554    }
555    void PainettiinValikonNappia(int valinta)
556    {
557        switch (valinta)
558        {
559            case 0:
560                //Sulje ikkuna,Pelaa norm.asetuksilla
561                break;
562            case 1:
563                Gasetukset();
564                //Erikoisasetukset,"Modit"
565                break;
566            case 2:
567                Asetukset1();
568                //Pelaajan 1 asevalinta
569                break;
570            case 3:
571                Asetukset2();
572                //Pelaajan 2 asevalinta
573                break;
574            case 4:
575                Exit();
576                break;
577        }
578
579    }
580    void Asetukset1()
581    {
582        MultiSelectWindow p1 = new MultiSelectWindow("Choose your gun",
583            "Sniper rifle", "Assault rifle", "Heavy machine gun", "Shotgun", "Light machine gun", "Back");
584        p1.Color = Color.MediumBlue;
585        p1.ItemSelected += PVN1;
586        Add(p1);
587    }
588    void Asetukset2()
589    {
590        MultiSelectWindow p2 = new MultiSelectWindow("Choose your gun",
591               "Sniper rifle", "Assault rifle", "Heavy machine gun", "Shotgun", "Light machine gun", "Back");
592        p2.Color = Color.Ruby;
593        p2.ItemSelected += PVN2;
594        Add(p2);
595    }
596    void PVN1(int s)
597    {
598        switch (s)
599        {
600            case 0:
601                pallo.Ase = "Sniper";
602                Sni();
603                break;
604            case 1:
605                As();
606                break;
607            case 2:
608                pallo.Ase = "Heavy";
609                pallo.Ampumisnopeus = 512;
610                pallo.Ammusmittari.MaxValue = 400;
611                pallo.Ammusmittari.Value = 400;
612                pallo.Latausnopeus = 6.0;
613                pallo.Latapati = 400;
614                pallo.Asekuva = "HMG";
615                Sinikuva.Image = HMG;
616                Kutsuvalikko();
617                break;
618            case 3:
619                sho();
620                break;
621            case 4:
622                LMG();
623                break;
624            case 5:
625                Kutsuvalikko();
626                //Palaa takaisin
627                break;
628        }
629    }
630    void PVN2(int s)
631    {
632        switch (s)
633        {
634            case 0:
635                Snib();
636                break;
637            case 1:
638                Asb();
639                break;
640            case 2:
641                pallo2.Ase = "Heavy";
642                pallo2.Ampumisnopeus = 512;
643                pallo2.Ammusmittari.MaxValue = 400;
644                pallo2.Ammusmittari.Value = 400;
645                pallo2.Latausnopeus = 6.0;
646                pallo2.Latapati = 400;
647                pallo2.Asekuva = "HMG2";
648                Punakuva.Image = HMG;
649                Kutsuvalikko();
650                break;
651            case 3:
652                shob();
653                break;
654            case 4:
655                LMGb();
656                break;
657            case 5:
658                Kutsuvalikko();
659                //Palaa takaisin
660                break;
661        }
662    }
663    void Gasetukset()
664    {
665        MultiSelectWindow a1 = new MultiSelectWindow("Special settings",
666              "Double moving speed", "Slow shots", "Back");
667        a1.Color = Color.Yellow;
668        a1.ItemSelected += PVN3;
669        Add(a1);
670    }
671    void PVN3(int Valinta)
672    {
673        switch (Valinta)
674        {
675            case 0:
676                //2x vauhti
677                pallo.liikkumisnopeus = pallo.liikkumisnopeus * 2;
678                pallo2.liikkumisnopeus = pallo2.liikkumisnopeus * 2;
679                Kutsuvalikko();
680                break;
681            case 1:
682                //Hitaat panokset
683                pallo.Ampumisnopeus = pallo.Ampumisnopeus / 2;
684                pallo2.Ampumisnopeus = pallo2.Ampumisnopeus / 2;
685                Kutsuvalikko();
686                break;
687            case 2:
688                Kutsuvalikko();
689                //Palaa takaisin
690                break;
691        }
692
693
694    }
695    //Light machine gun valikot
696    void LMG()
697    {
698        MultiSelectWindow LMG = new MultiSelectWindow("Light machine guns", "Famas", "LMG Type `95","Back");
699        LMG.Color = Color.MediumBlue;
700        LMG.ItemSelected += LMG2;
701        Add(LMG);
702    }
703    void LMGb()
704    {
705        MultiSelectWindow LMG = new MultiSelectWindow("Light machine guns", "Famas", "LMG Type `95", "Back");
706        LMG.Color = Color.Ruby;
707        LMG.ItemSelected += LMG2b;
708        Add(LMG);
709    }
710    void LMG2(int s)
711    {
712        switch (s)
713        {
714
715            case 0:
716                pallo.Ase = "Famas";
717                pallo.Ampumisnopeus = 1024;
718                pallo.Ammusmittari.MaxValue = 100;
719                pallo.Ammusmittari.Value = 100;
720                pallo.Latausnopeus = 1.9;
721                pallo.Latapati = 100;
722                pallo.Asekuva = "Famas2";
723                Sinikuva.Image = Famas;
724                Kutsuvalikko();
725                break;
726            case 1:
727                pallo.Ase = "LMG Type";
728                pallo.Ampumisnopeus = 448;
729                pallo.Ammusmittari.MaxValue = 400;
730                pallo.Ammusmittari.Value = 400;
731                pallo.Latausnopeus = 5.0;
732                pallo.Latapati = 400;
733                pallo.Asekuva = "Light2";
734                Sinikuva.Image = Light;
735                Kutsuvalikko();
736                break;
737            case 2:
738                Asetukset1();
739                break;
740        }
741    }
742    void LMG2b(int s)
743    {
744        switch (s)
745        {
746
747            case 0:
748                pallo2.Ase = "Famas";
749                pallo2.Ampumisnopeus = 1024;
750                pallo2.Ammusmittari.MaxValue = 100;
751                pallo2.Ammusmittari.Value = 100;
752                pallo2.Latausnopeus = 1.9;
753                pallo2.Latapati = 100;
754                pallo2.Asekuva = "Famas2";
755                Punakuva.Image = Famas;
756                Kutsuvalikko();
757                break;
758            case 1:
759                pallo2.Ase = "LMG Type";
760                pallo2.Ampumisnopeus = 448;
761                pallo2.Ammusmittari.MaxValue = 400;
762                pallo2.Ammusmittari.Value = 400;
763                pallo2.Latausnopeus = 5.0;
764                pallo2.Latapati = 400;
765                pallo2.Asekuva = "Light2";
766                Punakuva.Image = Light;
767                Kutsuvalikko();
768                break;
769            case 2:
770                Asetukset2();
771                break;
772        }
773    }
774    //Assault Riflet
775    void As()
776    {
777        MultiSelectWindow As = new MultiSelectWindow("Assault rifles", "Ak-47u", "Caliber `89", "Back");
778        As.Color = Color.MediumBlue;
779        As.ItemSelected += As2;
780        Add(As);
781    }
782    void As2(int s)
783    {
784        switch (s)
785        {
786
787            case 0:
788                pallo.Ase = "Ak";
789                pallo.Ampumisnopeus = 890;
790                pallo.Ammusmittari.MaxValue = 64;
791                pallo.Ammusmittari.Value = 64;
792                pallo.Latausnopeus = 0.8;
793                pallo.Latapati = 64;
794                pallo.Asekuva = "Ak47u2";
795                Sinikuva.Image = Ak47u;
796                Kutsuvalikko();
797                break;
798            case 1:
799                pallo.Ase = "Cal89";
800                pallo.Ampumisnopeus = 1024;
801                pallo.Ammusmittari.MaxValue = 25;
802                pallo.Ammusmittari.Value = 25;
803                pallo.Latausnopeus = 2.1;
804                pallo.Latapati = 25;
805                pallo.Asekuva = "Caliber2";
806                Sinikuva.Image = Caliber;
807                Kutsuvalikko();
808                break;
809            case 2:
810                Asetukset1();
811                break;
812        }
813    }   
814    void Asb()
815    {
816        MultiSelectWindow As = new MultiSelectWindow("Assault rifles", "Ak-47u", "Caliber `89", "Back");
817        As.Color = Color.Ruby;
818        As.ItemSelected += As2b;
819        Add(As);
820    }
821    void As2b(int s)
822    {
823        switch (s)
824        {
825
826            case 0:
827                pallo2.Ase = "Ak";
828                pallo2.Ampumisnopeus = 890;
829                pallo2.Ammusmittari.MaxValue = 64;
830                pallo2.Ammusmittari.Value = 64;
831                pallo2.Latausnopeus = 0.8;
832                pallo2.Latapati = 64;
833                pallo2.Asekuva = "Ak47u2";
834                Punakuva.Image = Ak47u;
835                Kutsuvalikko();
836                break;
837            case 1:
838                pallo2.Ase = "Cal89";
839                pallo2.Ampumisnopeus = 1024;
840                pallo2.Ammusmittari.MaxValue = 25;
841                pallo2.Ammusmittari.Value = 25;
842                pallo2.Latausnopeus = 2.1;
843                pallo2.Latapati = 25;
844                pallo2.Asekuva = "Caliber2";
845                Punakuva.Image = Caliber;
846                Kutsuvalikko();
847                break;
848            case 2:
849                Asetukset2();
850                break;
851        }
852    }
853    //Sniput
854    void Sni()
855    {
856        MultiSelectWindow Sni = new MultiSelectWindow("Sniper rifles", "Dragunov", "L84 Mod.", "Back");
857        Sni.Color = Color.MediumBlue;
858        Sni.ItemSelected += Sni2;
859        Add(Sni);
860    }
861    void Sni2(int s)
862    {
863        switch (s)
864        {
865
866            case 0:
867                pallo.Ase = "Dragunov";
868                pallo.Ampumisnopeus = 1224;
869                pallo.Ammusmittari.MaxValue = 11;
870                pallo.Ammusmittari.Value = 11;
871                pallo.Latausnopeus = 5.3;
872                pallo.Latapati = 11;
873                Sinikuva.Image = MGH;
874                Kutsuvalikko();
875                break;
876            case 1:
877                pallo.Ase = "Barret";
878                pallo.Ampumisnopeus = 1224;
879                pallo.Ammusmittari.MaxValue =1;
880                pallo.Ammusmittari.Value =1;
881                pallo.Latausnopeus = 2.0;
882                pallo.Latapati =1;
883                Sinikuva.Image = Sniper;
884                Kutsuvalikko();
885                break;
886            case 2:
887                Asetukset1();
888                break;
889        }
890    }
891    void Snib()
892    {
893        MultiSelectWindow Sni = new MultiSelectWindow("Sniper rifles", "Dragunov", "L84 Mod.", "Back");
894        Sni.Color = Color.Ruby;
895        Sni.ItemSelected += Sni2b;
896        Add(Sni);
897    }
898    void Sni2b(int s)
899    {
900        switch (s)
901        {
902
903            case 0:
904                pallo2.Ase = "Dragunov";
905                pallo2.Ampumisnopeus = 1224;
906                pallo2.Ammusmittari.MaxValue = 11;
907                pallo2.Ammusmittari.Value = 11;
908                pallo2.Latausnopeus = 5.3;
909                pallo2.Latapati = 11;
910                Punakuva.Image = MGH;
911                Kutsuvalikko();
912                break;
913            case 1:
914                pallo2.Ase = "Barret";
915                pallo2.Ampumisnopeus = 1224;
916                pallo2.Ammusmittari.MaxValue = 1;
917                pallo2.Ammusmittari.Value = 1;
918                pallo2.Latausnopeus = 2.0;
919                pallo2.Latapati = 1;
920                Punakuva.Image = Sniper;
921                Kutsuvalikko();
922                break;
923            case 2:
924                Asetukset2();
925                break;
926        }
927    }
928    void sho()
929    {
930        MultiSelectWindow Sni = new MultiSelectWindow("Shotguns", "Striker", "Spas12", "Back");
931        Sni.Color = Color.MediumBlue;
932        Sni.ItemSelected += sho2;
933        Add(Sni);
934    }
935    void sho2(int s)
936    {
937        switch (s)
938        {
939
940            case 0:
941                pallo.Ase = "Shotgun";
942                pallo.Ampumisnopeus = 1224;
943                pallo.Ammusmittari.MaxValue = 11;
944                pallo.Ammusmittari.Value = 11;
945                pallo.Latausnopeus = 5.3;
946                pallo.Latapati = 11;
947                Sinikuva.Image = Shotgun;
948                Kutsuvalikko();
949                break;
950            case 1:
951                pallo.Ase = "Spas";
952                pallo.Ampumisnopeus = 1224;
953                pallo.Ammusmittari.MaxValue = 2;
954                pallo.Ammusmittari.Value = 2;
955                pallo.Latausnopeus = 1.6;
956                pallo.Latapati = 2;
957                Sinikuva.Image = Spas;
958                Kutsuvalikko();
959                break;
960            case 2:
961                Asetukset1();
962                break;
963        }
964    }
965    void shob()
966    {
967        MultiSelectWindow Sni = new MultiSelectWindow("Shotguns", "Striker", "Spas12", "Back");
968        Sni.Color = Color.Ruby;
969        Sni.ItemSelected += sho2b;
970        Add(Sni);
971    }
972    void sho2b(int s)
973    {
974        switch (s)
975        {
976            case 0:
977                pallo2.Ase = "Shotgun";
978                pallo2.Ampumisnopeus = 1224;
979                pallo2.Ammusmittari.MaxValue = 11;
980                pallo2.Ammusmittari.Value = 11;
981                pallo2.Latausnopeus = 5.3;
982                pallo2.Latapati = 11;
983                Punakuva.Image = Shotgun;
984                Kutsuvalikko();
985                break;
986            case 1:
987                pallo2.Ase = "Spas";
988                pallo2.Ampumisnopeus = 1224;
989                pallo2.Ammusmittari.MaxValue = 2;
990                pallo2.Ammusmittari.Value = 2;
991                pallo2.Latausnopeus = 1.6;
992                pallo2.Latapati = 2;
993                Punakuva.Image = Spas;
994                Kutsuvalikko();
995                break;
996            case 2:
997                Asetukset2();
998                break;
999        }
1000    }
1001    //Respaus
1002    void Pelaajakuoli(PhysicsObject p)
1003    {
1004        if (p == pallo)
1005        {
1006            Remove(pallo);
1007            Timer.SingleShot(3.0, delegate
1008            {
1009                Add(pallo);
1010                pallo.Position = new Vector(Level.Left + 20, Level.Top - 20);
1011                pallo.turbomittari.Value = 100.0;
1012                pallo.elamaMittari.Value = 1000.0;
1013                pallo.Ammusmittari.Value += pallo.Latapati;
1014            });
1015
1016        }
1017        if (p == pallo2)
1018        {
1019            Remove(pallo2);
1020            Timer.SingleShot(3.0, delegate
1021            {
1022                Add(pallo2);
1023                pallo2.Position = new Vector(Level.Right - 20, Level.Top - 20);
1024                pallo2.turbomittari.Value = 100.0;
1025                pallo2.elamaMittari.Value = 1000.0;
1026                pallo2.Ammusmittari.Value += pallo.Latapati;
1027            });
1028        }
1029    }
1030    //Kransu
1031    void HKranaatti(Pelaaja Pallo)
1032    {
1033        if (Pallo.turbomittari < Pallo.turbomittari.MaxValue ) return;
1034        Pallo.turbomittari.Value = Pallo.turbomittari.MinValue;
1035
1036        PhysicsObject Kransu = new PhysicsObject(20, 20);
1037        Kransu.Image = kransu;
1038        Add(Kransu);
1039        Kransu.Position = Pallo.Position;
1040        Kransu.IgnoresCollisionResponse = true;
1041        Kransu.Hit(Pallo.viimeisinSuunta*1.5);
1042        Timer.SingleShot(1.0, delegate
1043        {
1044            ExplosionSystem es = new ExplosionSystem(Boom, 80);           
1045            es.Position = Kransu.Position;
1046            es.MaxScale = 30;
1047            es.MinScale = 30;
1048            es.MaxVelocity = 100;
1049            Add(es);
1050            es.AddEffect(Kransu.Position, 80);
1051            Kransu.Destroy();
1052            Explosion es2 = new Explosion(100);
1053            es2.Position = Kransu.Position;
1054            es2.IsVisible = false;
1055            es2.ShockwaveReachesObject += delegate(IPhysicsObject kohde, Vector suunta) { Rajahdusosui(Pallo, kohde, suunta, es2); }; 
1056            Add(es2);
1057        });
1058    }
1059
1060    void Rajahdusosui(Pelaaja ampuja, IPhysicsObject kohde, Vector v, Explosion es)
1061    {
1062        if (!(kohde is Pelaaja)) return;
1063        Pelaaja kohdePelaaja = kohde as Pelaaja;
1064        if (kohdePelaaja == null) return;
1065        if (kohdePelaaja.Viimeisinrajahdus == es) return;
1066        double etaisyys = Vector.Distance(kohdePelaaja.Position, es.Position);
1067        int damage = (int)Math.Floor(1000 / etaisyys);
1068        kohdePelaaja.elamaMittari.Value -= damage;
1069        if (ampuja == kohde) return;
1070        ampuja.Pistemittari.Value += damage;
1071    }
1072
1073    void Tayta(Pelaaja p)
1074    {
1075        if (p.turbomittari < p.turbomittari.MaxValue) return;
1076        p.turbomittari.Value = p.turbomittari.MinValue;
1077        ExplosionSystem ss = new ExplosionSystem(Sydan, 100);
1078        ss.MaxScale = 30;
1079        ss.MinScale = 15;
1080        ss.MaxVelocity = 40;
1081        ss.MaxLifetime = 0.6;
1082        Add(ss);
1083        ss.AddEffect(p.Position, 15);
1084        p.elamaMittari.Value = p.elamaMittari.Value + 150;
1085        if (p == pallo)
1086        {
1087            pallo2.Pistemittari.Value = pallo2.Pistemittari.Value -= 150;
1088        }
1089        if (p == pallo2)
1090        {
1091            pallo.Pistemittari.Value = pallo.Pistemittari.Value -= 150;
1092        }
1093       
1094    }
1095    void Kuvavaihtu()
1096    {
1097    }
1098}
Note: See TracBrowser for help on using the repository browser.