source: 2015/23/EelisK/Acsending/Files/Ascending/Ascending/Ascending/Ascending.cs @ 5882

Revision 5882, 33.1 KB checked in by empaheik, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8class KaytettavaObjekti : PhysicsObject
9{
10    private Action toiminto;
11    public Action Toiminto
12    {
13        set { toiminto = value; }
14        get { return toiminto; }
15    }
16
17    private Vector käyttöpaikka;
18    public Vector Käyttöpaikka
19    {
20        get { return käyttöpaikka; }
21        set { käyttöpaikka = value; }
22    }
23
24    private Image käyttöKuva;
25    public Image KäyttöKuva
26    {
27        get { return käyttöKuva; }
28        set { käyttöKuva = value; }
29    }
30
31
32    public KaytettavaObjekti(double leveys, double korkeus)
33        : base(leveys, korkeus)
34    {
35    }
36}
37
38class NumeroNaytto
39{
40    private IntMeter mittari;
41    private Vector paikka;
42    private Image[] numerokuvat;
43
44    private int numeroita;
45    public int Numeroita
46    {
47        get { return numeroita; }
48    }
49
50    public Label[] Numerot;
51
52    public NumeroNaytto(Vector paikka, int numeroita, Image[] numerokuvat, IntMeter mittari, PhysicsGame peli)
53    {
54        this.numerokuvat = numerokuvat;
55        this.paikka = paikka;
56        this.mittari = mittari;
57        this.numeroita = numeroita;
58        Numerot = new Label[numeroita];
59
60        for (int i = 0; i < numeroita; i++)
61        {
62            Numerot[i] = new Label();
63            Numerot[i].Image = numerokuvat[0];
64            Numerot[i].Width = 4 * 5;
65            Numerot[i].Height = 6 * 5;
66            Numerot[i].Position = paikka + new Vector(20, 0) * i;
67            peli.Add(Numerot[i]);
68        }
69
70        mittari.Changed += Paivita;
71        Paivita(0, 0);
72    }
73
74    public void Paivita(int vanha, int uusi)
75    {
76        string format = "";
77        for (int i = 0; i < numeroita; i++)
78        {
79            format += "0";
80        }
81        string num = string.Format("{0:"+format+"}", mittari.Value);
82        for (int i = 0; i < numeroita; i++)
83        {
84            Numerot[i].Image = numerokuvat[int.Parse(""+num[i])];
85        }
86    }
87}
88
89public class Ascending : PhysicsGame
90{
91    const double nopeus = 200;
92    const double hyppyNopeus = 400;
93    const int RUUDUN_KOKO = 70;
94
95    GameObject ristihius;
96    GameObject puhekupla;
97    //PlatformCharacter shell;
98    Image crosshair = LoadImage("crosshair");
99    PlatformCharacter pelaaja1;
100    GameObject käsi;
101    private Animation LyhtyAnimaatio;
102    Image pickupKuva = LoadImage("take item icon");
103    private Animation GormAnimaatio;
104    private Animation UkkeliKävelee;
105    private Animation ShellJuoksee;
106    Image[] numerokuvat = LoadImages("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
107    Image kolikkoKuva = LoadImage("coin icon");
108    Image lipasKuva = LoadImage("revolver clip");
109    Image TeltanKuva = LoadImage("hizet trading tent");
110    Image lukossa =LoadImage ("lukko");
111    Image gormsanoo2 = LoadImage("gorm sanoo 2");
112    Image hiisiPuhuu1 = LoadImage("trade_hizet_quote");
113    Image hiisiPuhuu2 = LoadImage("trade_hizet_quote_2");
114    Image LuolanKuva = LoadImage("cave entrance");
115    Image hyllykuva = LoadImage("kaapisto");
116    Vector pelaajanTuloPaikka = new Vector(-360, -85);
117    Image Ekatehtävä = LoadImage("gorm sanoo");
118    Image oviKäyttöKuva = LoadImage("e_door");
119    Image tikasKäyttöKuva = LoadImage("e_ladders");
120    Image puheKäyttöKuva = LoadImage("e_talk");
121    Image ammusKuva = LoadImage("ammus");
122    Image OvenKuva = LoadImage("Ovi");
123    Image arkunKuva = LoadImage("aarre arkku");
124    Image TelttaSisällä = LoadImage("trading_tent_inside");
125    Image talokuva = LoadImage("TALO");
126    Image lyhtykuva = LoadImage("LYTY1");
127    Image pelaajanKuva = LoadImage("armless_ukkeli");
128    Image myyjämöi = LoadImage("hizet_ammo_trade");
129    Image myyjämyy = LoadImage("hizet_ammo_trade_2");
130    Image Myyjäeimyynyt = LoadImage("no money");
131    Image tahtiKuva = LoadImage("tahti");   
132    Image luolatausta = LoadImage("cave");
133    Image rahasäkkikuva = LoadImage("monabag");
134    Image taustaKuva = LoadImage("testi wäärld");
135    Image puhekuva = LoadImage("kyssäri kupla");
136    Image sisälmykset = LoadImage("TALON sisälmykset1");
137    Image kauppiasKuva = LoadImage("trading_hizet");
138    Image Gormkuvan = LoadImage("gorm");
139    Image Käsikuva = LoadImage("arm");
140    Image KäsikuvaFlip;
141    SoundEffect maaliAani = LoadSoundEffect("maali");
142    Image Shellkuva = LoadImage("shell hopper 1");
143    IntMeter lippaat = new IntMeter(2, 0, 10);
144    IntMeter rahaa = new IntMeter(0, 0, 1000);
145    private DoubleMeter elämät;
146    double elämäregen;
147    //private IntMeter sElämät;
148    Image tikaskuva = LoadImage("tikkaat");
149    private Image[] gormseisoo = LoadImages("gorm");
150    KaytettavaObjekti kohdeObjekti;
151    string checkpoint = "aloitus";
152    Vector checkpointpaikka = new Vector(-360, -85);
153
154    int ammuksia = 6;
155
156    bool rahasäkki = false;
157    bool avain1 = false;
158    bool taloAuki = false;
159
160    public override void Begin()
161    {
162        kauppiasKuva = Image.Mirror(kauppiasKuva);
163        KäsikuvaFlip = Image.Flip(Käsikuva);
164        SmoothTextures = false;
165        IsFullScreen = true;
166        IsMouseVisible = false;
167        elämät = new DoubleMeter(100, 0, 100);
168        elämät.LowerLimit += pelaajakuoli;
169        LataaKentta("aloitus");
170    }
171
172    void pelaajakuoli()
173    {
174        elämät.Value = elämät.MaxValue * 0.5;
175        LataaKentta(checkpoint);
176        pelaaja1.Position = checkpointpaikka;
177    }
178   
179    void LataaKentta(string nimi)
180    {
181       
182        ClearAll();
183        Level.Background.Color = Color.Black;
184
185        elämäregen = 0.5;
186       
187        ristihius = new GameObject(5, 5);
188        ristihius.Image = crosshair;
189        Add(ristihius, 3);
190
191        Vector rahaPaikka = new Vector(Screen.Left + 230, Screen.Bottom + 30);
192        Label rahaSymboli = new Label();
193        rahaSymboli.Width = 6 * 4;
194        rahaSymboli.Height = 6 * 4;
195        rahaSymboli.Image = kolikkoKuva;
196        rahaSymboli.Position = rahaPaikka;
197        Add(rahaSymboli);
198        NumeroNaytto raha = new NumeroNaytto(rahaPaikka + new Vector(30, 0), 4, numerokuvat, rahaa, this);
199
200        Vector lipasPaikka = new Vector(Screen.Left + 230, Screen.Bottom + 60);
201        Label lipasSymboli = new Label();
202        lipasSymboli.Width = 14 * 2;
203        lipasSymboli.Height = 10 * 2;
204        lipasSymboli.Image = lipasKuva;
205        lipasSymboli.Position = lipasPaikka;
206        Add(lipasSymboli);
207        NumeroNaytto lipasNumerot = new NumeroNaytto(lipasPaikka + new Vector(30, 0), 2, numerokuvat, lippaat, this);
208
209        Gravity = new Vector(0, -1000);
210
211        LisaaPelaaja(pelaajanTuloPaikka, 35, 64);
212        if (nimi == "talo") LuoTalonSisälmykset();
213        if (nimi == "aloitus") LuoAlotusKentta();       
214        if (nimi == "toinentaso") LuoToinenKentta();
215        if (nimi == "kolmastaso") LuoKolmasKentta();
216        if (nimi == "neljästaso") LuoKolmasneljäskenttä();
217        if (nimi == "luolataso1") LuoLuola1();
218        if (nimi == "telttataso1") LuoTeltta1();
219        if (nimi == "viidestaso") LuoViidesKenttä();
220        if (nimi == "luolataso2") LuoLuola2();
221        if (nimi =="luolataso3") LuoLuola3();
222       // if (nimi == "luolataso1") LuoLuolaTaso1();
223
224        LisaaKävelyTaso();
225       
226        puhekupla = new GameObject(20, 20);
227        puhekupla.Image = null;
228        puhekupla.Color = Color.Transparent;
229        Add(puhekupla,3);
230         
231        LisaaNappaimet();
232        Camera.Follow(pelaaja1);
233        Camera.ZoomFactor = 1;
234        Camera.StayInLevel = true;
235
236        Timer Ajastin = new Timer();
237        Ajastin.Interval = 0.1;
238        Ajastin.Timeout += delegate
239        {
240            KaytettavaObjekti Objekti = null;
241            foreach (GameObject oobj in GetObjectsWithTag("kohde"))
242            {
243                KaytettavaObjekti obj = oobj as KaytettavaObjekti;
244                if (obj != null)
245                {
246                    if (Math.Abs(pelaaja1.X - (obj.X + obj.Käyttöpaikka.X)) < 50.0)
247                    {
248                        Objekti = obj;
249                    }
250                }
251               
252            }
253
254            if (Objekti != null)
255            {
256                TeePuhekupla(Objekti);
257                kohdeObjekti = Objekti;
258            }
259            else
260            {
261                puhekupla.IsVisible = false;
262                kohdeObjekti = null;
263                //tikasonlahella = false;
264            }
265        };
266        Ajastin.Start();
267    }
268
269    void LuoAlotusKentta()
270    {
271       
272        Level.Height = 360;
273        Level.Width = 800;
274
275        MediaPlayer.Play("soundtrack_05");
276        Level.Background.Image = taustaKuva;
277        LisääLyhty(new Vector(-300, -98), 64, 64);
278        LisaaTalo(new Vector(0, 39), 430, 360, "talo", new Vector(200, -85));
279        if (!taloAuki)
280        {
281            LisaaGorm(new Vector(0, -97), 58, 58, delegate(PhysicsObject gorm)
282            {
283                if (avain1)
284                {
285                    lisääTeksti(gorm, gormsanoo2);
286                    taloAuki = true;
287                    rahaa.Value += 25;
288                }
289                else
290                {
291                    lisääTeksti(gorm, Ekatehtävä);
292                }
293            });
294        }
295
296
297        Surfaces s = Level.CreateBorders(false);
298        s.Left.Tag = "maa";
299        s.Right.Tag = "maa";
300        s.Top.Tag = "maa";
301        LisaaTikkaat(new Vector(250, 38), 120, 360, "toinentaso", new Vector(-360, -85));
302    }
303
304    void LuoToinenKentta()
305    {
306        Level.Height = 360;
307        Level.Width = 800;
308       // LisaaPelaaja(new Vector(-360, -85), 35, 64);
309
310        Surfaces s = Level.CreateBorders(false);
311        s.Left.Tag = "maa";
312        s.Right.Tag = "maa";
313        s.Top.Tag = "maa";
314       
315        Level.Background.Image = taustaKuva;
316        LisääLyhty(new Vector(-50, -98), 64, 64);
317        LisaaShell(new Vector(0, -97), 32, 32);
318        LisaaTikkaat(new Vector(-360, -200), 120, 360, "aloitus", new Vector(250, -85));
319
320        LisaaTikkaat(new Vector(200, 38), 120, 360, "kolmastaso", new Vector(360, -85));
321        LisaaShell(new Vector(100, -97), 32, 32);
322
323
324    }
325    void LuoTalonSisälmykset()
326    {
327        Level.Height = 360;
328        Level.Width = 460;
329        MediaPlayer.Play("soundtrack_04");
330        elämäregen = 10;
331       
332        Surfaces s = Level.CreateBorders(false);
333        s.Left.Tag = "maa";
334        s.Right.Tag = "maa";
335        s.Top.Tag = "maa";
336        LisaaGorm(new Vector(175, -97), 58, 58, delegate(PhysicsObject gorm) { });
337        GameObject hylly = new GameObject(104, 54);
338        hylly.Position = new Vector(185, -115);
339        hylly.Image = hyllykuva;
340        //LisaaPelaaja(new Vector(200, -85), 35, 64);
341        LisaaOvi(new Vector(185, -87), 73, 103, "aloitus",new Vector(-75, -85),OvenKuva );
342        Level.Background.Image = sisälmykset;
343       
344        Add(hylly, 1);
345    }
346    void LuoKolmasKentta()
347    {
348        Level.Height = 360;
349        Level.Width = 800;
350        //LisaaPelaaja(new Vector(360, -85), 35, 64);
351        Surfaces s = Level.CreateBorders(false);
352        s.Left.Tag = "maa";
353        s.Right.Tag = "maa";
354        s.Top.Tag = "maa";
355        Level.Background.Image = taustaKuva;
356        LisaaTeltta(new Vector(200, -70), 130, 70, "telttataso1", new Vector(0, -85));
357        LisaaTikkaat(new Vector(0, 38), 120, 360, "neljästaso", new Vector(0, -85));
358        LisaaTikkaat(new Vector(350, -200), 120, 360, "toinentaso", new Vector(200, -85));
359
360    }
361    void LuoTeltta1()
362    {
363        Level.Height = 415;
364        Level.Width = 358;
365        Surfaces s = Level.CreateBorders(false);
366        s.Left.Tag = "maa";
367        s.Right.Tag = "maa";
368        s.Top.Tag = "maa";
369        Level.Background.Image = TelttaSisällä;
370        LisaaKauppias(new Vector(150, -138), 32, 44);
371        LisaaOvi(new Vector(0, -87), 73, 103, "kolmastaso", new Vector(100, -85), null);
372    }
373
374    void LuoKolmasneljäskenttä()
375    {
376        Level.Height = 360;
377        Level.Width = 800;
378        //LisaaPelaaja(new Vector(360, -85), 35, 64);
379       
380        Surfaces s = Level.CreateBorders(false);
381        s.Left.Tag = "maa";
382        s.Right.Tag = "maa";
383        s.Top.Tag = "maa";
384        Level.Background.Image = taustaKuva;
385        LisääLyhty(new Vector(-200, -98), 64, 64);
386        LisaaTikkaat(new Vector(0, -200), 120, 360, "kolmastaso", new Vector(0, -85));
387        LisaaLuola (new Vector (-300,-49),140*1.5, 120*1.5,"luolataso1",new Vector(0,-85));
388        LisaaTikkaat(new Vector(200, 38), 120, 360, "viidestaso", new Vector(-360, -85));
389       
390    }
391    void LuoViidesKenttä()
392    {
393        Level.Height = 360;
394        Level.Width = 800;
395        //LisaaPelaaja(new Vector(360, -85), 35, 64);
396
397        Surfaces s = Level.CreateBorders(false);
398        s.Left.Tag = "maa";
399        s.Right.Tag = "maa";
400        s.Top.Tag = "maa";
401        Level.Background.Image = taustaKuva;
402        LisääLyhty(new Vector(-200, -98), 64, 64);
403        LisaaLuola(new Vector(-300, -49), 140 * 1.5, 120 * 1.5, "luolataso2", new Vector(0, -85));
404        LisaaTikkaat(new Vector(200, 38), 120, 360, "viidestaso", new Vector(-360, -85));
405
406    }
407    void LuoLuola2()
408    {
409
410        Level.Height = 360;
411        Level.Width = 1000;
412        Surfaces s = Level.CreateBorders(false);
413        MediaPlayer.Play("soundtrack_02");
414        s.Left.Tag = "maa";
415        s.Right.Tag = "maa";
416        s.Top.Tag = "maa";
417        Level.Background.Image = luolatausta;
418        LisaaShell(new Vector(-300, -97), 32, 32);
419        LisaaShell(new Vector(450, -97), 32, 32);
420        LisaaShell(new Vector(250, -97), 32, 32);
421        LisaaLuola(new Vector(0, -80), 140, 120, "viidestaso", new Vector(-300, -85));
422        LisaaLuola(new Vector(-450, -80), 140, 120, "luolataso3", new Vector(-300, -85));
423    }
424    void LuoLuola3()
425    {
426        Level.Height = 360;
427        Level.Width = 1000;
428        Surfaces s = Level.CreateBorders(false);
429
430        s.Left.Tag = "maa";
431        s.Right.Tag = "maa";
432        s.Top.Tag = "maa";
433        Level.Background.Image = luolatausta;
434        LisaaLuola(new Vector(-300, -80), 140, 120, "luolataso2", new Vector(-450, -85));
435        LisaaShell(new Vector(400, -97), 32, 32);
436        LisaaShell(new Vector(450, -97), 32, 32);
437
438
439    }
440    void LuoLuola1 ()
441    {
442   
443        Level.Height = 360;
444        Level.Width = 1000;
445        Surfaces s = Level.CreateBorders(false);
446        MediaPlayer.Play("soundtrack_02");
447        s.Left.Tag = "maa";
448        s.Right.Tag = "maa";
449        s.Top.Tag = "maa";
450        Level.Background.Image = luolatausta;
451        LisaaShell(new Vector(-400, -97), 32, 32);
452        LisaaShell(new Vector(-450, -97), 32, 32);
453        LisaaShell(new Vector(450, -97), 32, 32);
454        LisaaLuola(new Vector(0, -80), 140, 120, "neljästaso", new Vector(-300, -85));
455
456        if (!rahasäkki)
457        {
458            LuorahaSäkki(new Vector(450, -135), 10, 12);
459        }
460    }
461    void LisaaTaso(Vector paikka, double leveys, double korkeus)
462    {
463        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
464        taso.Position = paikka;
465        taso.Color = Color.Green;
466        Add(taso);
467    }
468
469    void LisaaKävelyTaso()
470    {
471        PhysicsObject taso = PhysicsObject.CreateStaticObject(Level.Width, 38);
472        taso.Tag = "maa";
473        taso.Bottom = Level.Bottom;
474        taso.Color = Color.Transparent;
475        Add(taso);
476    }
477
478    void LisaaTahti(Vector paikka, double leveys, double korkeus)
479    {
480        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
481        tahti.IgnoresCollisionResponse = true;
482        tahti.Position = paikka;
483        tahti.Image = tahtiKuva;
484        tahti.Tag = "tahti";
485        Add(tahti);
486    }
487
488    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
489    {
490        pelaaja1 = new PlatformCharacter(leveys * 1.5, korkeus * 1.5);
491        pelaaja1.Position = paikka;
492        pelaaja1.Mass = 4.0;
493        pelaaja1.Image = pelaajanKuva;
494        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
495        UkkeliKävelee = LoadAnimation("ukkelii");
496        pelaaja1.Animation = UkkeliKävelee;
497        pelaaja1.CollisionIgnoreGroup = 2;
498
499        //elämät = new DoubleMeter(100, 0, 100);
500        //AddCollisionHandler(pelaaja1, "kohde", Puhekuplatormaus);
501        pelaaja1.Weapon = new AssaultRifle(4, 4);
502        pelaaja1.Weapon.Ammo.Value = ammuksia;
503        pelaaja1.Weapon.Ammo.MaxValue = 6;
504        pelaaja1.Weapon.FireRate = 1;
505        pelaaja1.Weapon.IsVisible = false;
506        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
507
508        ProgressBar ammustenMäärä = new ProgressBar(23*3, 8*3);
509        ammustenMäärä.X = -600;
510        ammustenMäärä.Y = -420;
511        ammustenMäärä.BindTo(pelaaja1.Weapon.Ammo);
512        Add(ammustenMäärä);
513        ammustenMäärä.Image = LoadImage("Ei ammuksia");
514        ammustenMäärä.BarImage = LoadImage("Ammuksia");
515     
516
517
518
519
520       // pelaaja1.Weapon.Position = new Vector(20,15);
521        käsi = new GameObject(62 * 1.5, 12 * 2);
522        käsi.Image = Käsikuva;
523        käsi.Position = pelaaja1.Position + new Vector(0, 20);
524        Add(käsi, -2);
525        pelaaja1.Destroyed += delegate { käsi.Destroy(); };
526       
527        Timer Ajastin = new Timer();
528        Ajastin.Interval = 0.01;
529        Ajastin.Timeout += delegate
530        {
531            käsi.Position = pelaaja1.Position + new Vector(0, 20);
532            käsi.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
533            ristihius.Position = (Mouse.PositionOnWorld);
534
535            if (pelaaja1.FacingDirection.GetVector().X > 0)
536            {
537                käsi.Image = Käsikuva;
538                if (käsi.AbsoluteAngle.Degrees > 90)
539                    käsi.AbsoluteAngle = Angle.FromDegrees(90);
540                if (käsi.AbsoluteAngle.Degrees < -90)
541                    käsi.AbsoluteAngle = Angle.FromDegrees(-90);
542            }
543            else
544            {
545                käsi.Image = KäsikuvaFlip;
546                if (Math.Abs(käsi.AbsoluteAngle.Degrees) < 90)
547                    käsi.AbsoluteAngle = Angle.FromDegrees(-90);
548            }
549        };
550        Ajastin.Start();
551        ProgressBar revolveri = new ProgressBar(22*6, 11*6);
552        revolveri.Image = LoadImage("revolver");
553        revolveri.Y = Screen.Bottom + 50;
554        revolveri.X = Screen.Left + 80;
555        Add(revolveri);
556
557        ProgressBar elamaPalkki = new ProgressBar(240, 80);
558        elamaPalkki.X = 0;
559        elamaPalkki.Y = -400;
560        elamaPalkki.BindTo(elämät);
561        Add(elamaPalkki);
562        elamaPalkki.Image = LoadImage("healthbar_empty");
563        elamaPalkki.BarImage = LoadImage("healthbar_full");
564        pelaaja1.AnimWalk = new Animation(UkkeliKävelee);
565        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
566        Add(pelaaja1, -1);
567        Timer ajastin = new Timer();
568        ajastin.Interval = 1;
569        ajastin.Timeout += delegate
570        {
571            elämät.Value += elämäregen;
572        };
573        ajastin.Start();
574    }
575
576    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
577    {
578       
579        if (kohde.Tag.Equals("maa"))
580        {
581            ammus.Destroy();
582        }
583
584    }
585
586    void AmmuAseella(PlatformCharacter pelaaja)
587    {
588        pelaaja1.Weapon.AbsoluteAngle = käsi.AbsoluteAngle-Angle.FromDegrees(5);
589        pelaaja1.Weapon.AbsolutePosition = käsi.AbsolutePosition + new Vector(0, 5) + käsi.Angle.GetVector() * 30; 
590        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
591
592        if (ammus != null)
593        {
594            ammuksia = pelaaja1.Weapon.Ammo.Value;
595            ammus.Image = ammusKuva;
596            //ammus.Position = käsi.Position + käsi.Angle.GetVector() * 48;
597
598            ammus.Size *= 0.3;
599            ammus.Tag = "ammus";
600            //ammus.Image = ...
601            ammus.CollisionIgnoreGroup = 0;
602            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
603        }
604    }
605
606    void LisaaNappaimet()
607    {
608        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
609        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
610        Keyboard.Listen(Key.R, ButtonState.Pressed, LataaRevolver, "Lataa Aseen");
611        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
612        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
613        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
614        Keyboard.Listen(Key.E, ButtonState.Pressed, Aktivoi, "Puhuu");
615        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
616        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja1);
617        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
618        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
619        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
620
621        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
622    }
623    void LataaRevolver()
624    {
625        if (lippaat.Value > 0)
626        {
627            pelaaja1.Weapon.Ammo.Value = pelaaja1.Weapon.Ammo.MaxValue;
628            lippaat.Value--;
629        }
630       
631    }
632
633    void Aktivoi()
634    {
635        if (kohdeObjekti != null)
636        {
637            kohdeObjekti.Toiminto();
638        }
639
640        //if (tikasonlahella)
641        //{
642        //    LataaKentta("toinentaso");
643        //}
644    }
645
646    void Liikuta(PlatformCharacter hahmo, double nopeus)
647    {
648        hahmo.Walk(nopeus);
649
650    }
651
652    void Hyppaa(PlatformCharacter hahmo, double nopeus)
653    {
654        hahmo.Jump(nopeus);
655    }
656
657    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
658    {
659        //maaliAani.Play ();
660        //MessageDisplay.Add ("Keräsit tähden!");
661        tahti.Destroy();
662    }
663    void LisaaGorm(Vector paikka, double leveys, double korkeus,Action<PhysicsObject> toiminto)
664    {
665        KaytettavaObjekti gorm = new KaytettavaObjekti(leveys * 1.5, korkeus * 1.5);
666        gorm.Position = paikka;
667        gorm.Käyttöpaikka = new Vector(20, 50);
668        gorm.KäyttöKuva = puheKäyttöKuva;
669        gorm.IgnoresCollisionResponse = true;
670        gorm.IgnoresPhysicsLogics = true;
671        gorm.Tag = "kohde";
672
673        VaihdaGormAnimaatio(gorm, false);
674        Add(gorm,2);
675        gorm.Toiminto += delegate { toiminto(gorm); };
676    }
677
678    void lisääTeksti(PhysicsObject Obj, Image Tekstikuva)
679    {
680        GameObject Puhe = new GameObject(Tekstikuva.Width * 1.5, Tekstikuva.Height * 1.5);
681        Puhe.Image = Tekstikuva;
682        Puhe.Position = Obj.Position + new Vector(-50, 100);
683        Puhe.LifetimeLeft = TimeSpan.FromSeconds(7);
684        Add(Puhe, 3);
685    }
686
687    void VaihdaGormAnimaatio(KaytettavaObjekti gorm, bool aktivoiKieliAnimaatio)
688    {
689        if (aktivoiKieliAnimaatio)
690        {
691            GormAnimaatio = LoadAnimation("GYRM");
692            gorm.Animation = GormAnimaatio;
693            gorm.Animation.Start();
694            Timer.SingleShot(RandomGen.NextDouble(1, 5), delegate
695            {
696                VaihdaGormAnimaatio(gorm, false);
697            });
698
699        }
700        else
701        {
702
703            gorm.Animation = new Animation(gormseisoo);
704            Timer.SingleShot(RandomGen.NextDouble(1, 5), delegate
705            {
706                VaihdaGormAnimaatio(gorm, true);
707            });
708
709        }
710
711    }
712    void LisaaShell(Vector paikka, double leveys, double korkeus)
713    {
714        PlatformCharacter shell = new PlatformCharacter(leveys * 1.5, korkeus * 1.5);
715        shell.Position = paikka;
716        shell.Image = Shellkuva;
717        shell.Tag = "vihollinen";
718        shell.CollisionIgnoreGroup = 2;
719        shell.IgnoresCollisionWith(pelaaja1);
720        ShellJuoksee = LoadAnimation("SHELL");
721        //shell.Animation = ShellJuoksee;
722        shell.AnimWalk = ShellJuoksee;
723        shell.AnimIdle = Shellkuva;
724        //KORJATTU. TESTAA. (ei tarvita tota aliohjelmaa) :------DD -emma
725        FollowerBrain sAivot = new FollowerBrain(pelaaja1);
726        // sAivot.TargetClose +=TapahtuuLähellä;   
727        sAivot.DistanceClose = 40;
728        sAivot.DistanceFar = 200;
729        sAivot.Speed = RandomGen.NextDouble(220, 350);
730        sAivot.TargetClose += TapahtuuOsuessa;
731        shell.Brain = sAivot;
732
733        IntMeter sElämät = new IntMeter(15);
734        sElämät.LowerLimit += delegate
735        {
736            shell.Destroy();
737
738            if (RandomGen.NextInt(0, 100) < 10)
739            {
740                LuoAarre(shell.Position);
741            }
742
743            PhysicsObject ruumis = new PhysicsObject(leveys * 1.5, korkeus * 1.5);
744            ruumis.Image = Shellkuva;
745            ruumis.Position = shell.Position;
746            ruumis.CollisionIgnoreGroup = 2;
747            ruumis.CanRotate = false;
748            Add(ruumis);
749        };
750        Add(shell, 3);
751
752        AddCollisionHandler(shell, "ammus", delegate(IPhysicsObject s,IPhysicsObject ammus)
753        {
754            sElämät.Value-=10;
755            ammus.Destroy();
756        });
757
758        Timer hyppyAjastin = new Timer();
759        hyppyAjastin.Interval = RandomGen.NextDouble(0.5, 5); ;
760        hyppyAjastin.Timeout += delegate
761        {
762            hyppyAjastin.Interval = RandomGen.NextDouble(0.5, 5);
763            if (sAivot.DistanceToTarget < 200)
764            {
765                shell.Jump(500);
766            }
767        };
768        hyppyAjastin.Start();
769
770    }
771    void TapahtuuOsuessa()
772    {
773        otaDamagea(0.6);
774    }
775
776    void otaDamagea(double dmg)
777    {
778        elämät.Value -= dmg;
779
780        if (elämät.Value == 0)
781        {
782            pelaaja1.Destroy();
783        }
784    }
785    void LisääLyhty(Vector paikka, double leveys, double korkeus)
786    {
787        GameObject lyhty = new GameObject(leveys * 1.3, korkeus * 1.3);
788        lyhty.Position = paikka;
789        lyhty.Image = lyhtykuva;
790        LyhtyAnimaatio = LoadAnimation("Lythy");
791        lyhty.Animation = LyhtyAnimaatio;
792        lyhty.Animation.Start();
793        Add(lyhty);
794    }
795
796    void LisaaTikkaat(Vector paikka, double leveys, double korkeus, string uusipaikka, Vector Tulopaikka)
797    {
798        KaytettavaObjekti tikas = new KaytettavaObjekti(leveys, korkeus);
799        tikas.IgnoresPhysicsLogics = true;
800        tikas.Käyttöpaikka = new Vector(30, -70);
801        tikas.KäyttöKuva = tikasKäyttöKuva;
802        tikas.IgnoresCollisionResponse = true;
803        tikas.Tag = "kohde";
804        tikas.Position = paikka;
805        tikas.Image = tikaskuva;
806        tikas.Toiminto += delegate
807        {
808            pelaajanTuloPaikka = Tulopaikka;
809            LataaKentta(uusipaikka);
810        };
811        Add(tikas,2);
812    }
813
814    void TeePuhekupla(PhysicsObject tormattava)
815    {
816        KaytettavaObjekti obj = tormattava as KaytettavaObjekti;
817        if (obj != null )
818        {
819            puhekupla.Position = obj.Position + obj.Käyttöpaikka;
820        }
821
822        puhekupla.IsVisible = true;
823        puhekupla.Image = puhekuva;
824       
825        if (obj.KäyttöKuva !=null)
826        {
827            puhekupla.Image = obj.KäyttöKuva;
828        }
829
830        puhekupla.Width = puhekupla.Image.Width*1.5;
831        puhekupla.Height = puhekupla.Image.Height*1.5;
832    }
833
834    void LisaaTalo(Vector paikka, double leveys, double korkeus, string uusipaikka, Vector Tulopaikka)
835    {
836        KaytettavaObjekti talo = new KaytettavaObjekti(leveys, korkeus);
837        talo.Käyttöpaikka = new Vector(-105, -60);
838        talo.KäyttöKuva = taloAuki? oviKäyttöKuva : lukossa;
839        talo.IgnoresPhysicsLogics = true;
840        talo.IgnoresCollisionResponse = true;
841        talo.Tag = "kohde";
842        talo.Position = paikka;
843        talo.Image = talokuva;
844        talo.Toiminto += delegate
845        {
846            if (taloAuki)
847            {
848                talo.KäyttöKuva = oviKäyttöKuva;
849                checkpoint = uusipaikka;
850                checkpointpaikka = Tulopaikka;
851                pelaajanTuloPaikka = Tulopaikka;
852                LataaKentta(uusipaikka);
853            }
854           
855        };
856        Add(talo, -3);
857    }
858    void LisaaOvi(Vector paikka, double leveys, double korkeus, string uusipaikka, Vector Tulopaikka,Image OvenKuva)
859    {
860        KaytettavaObjekti ovi = new KaytettavaObjekti(leveys, korkeus);
861        ovi.Käyttöpaikka = new Vector(-20, 60);
862        ovi.KäyttöKuva = oviKäyttöKuva;
863        ovi.IgnoresPhysicsLogics = true;
864        ovi.IgnoresCollisionResponse = true;
865        ovi.Color = Color.Transparent;
866        ovi.Tag = "kohde";
867        ovi.Position = paikka;
868        ovi.Image = OvenKuva;
869        ovi.Toiminto += delegate
870        {
871            pelaajanTuloPaikka = Tulopaikka;
872            LataaKentta(uusipaikka);
873        };
874        Add(ovi, -3);
875    }
876    void LisaaLuola (Vector paikka,double leveys, double korkeus, string uusipaikka, Vector Tulopaikka)
877    {
878        KaytettavaObjekti luola = new KaytettavaObjekti(leveys, korkeus);
879        luola.Käyttöpaikka = new Vector(-20, 60);
880        luola.KäyttöKuva = oviKäyttöKuva;
881        luola.IgnoresPhysicsLogics = true;
882        luola.IgnoresCollisionResponse = true;
883        luola.Tag = "kohde";
884        luola.Position = paikka;
885        luola.Image = LuolanKuva;
886        luola.Toiminto += delegate
887        {
888            pelaajanTuloPaikka = Tulopaikka;
889            LataaKentta(uusipaikka);
890        };
891        Add(luola, -3);
892    }
893    void LuorahaSäkki(Vector paikka, double leveys, double korkeus)
894    {
895        KaytettavaObjekti rsäkki = new KaytettavaObjekti(leveys, korkeus);
896        rsäkki.Käyttöpaikka = new Vector(-20, 60);
897        rsäkki.KäyttöKuva = oviKäyttöKuva;
898        rsäkki.IgnoresPhysicsLogics = true;
899        rsäkki.IgnoresCollisionResponse = true;
900        rsäkki.Tag = "kohde";
901        rsäkki.Position = paikka;
902        rsäkki.Image = rahasäkkikuva;
903        rsäkki.Toiminto += delegate
904        {
905            rsäkki.Destroy();
906            rahasäkki = true;
907        };
908        Add(rsäkki, -3);
909    }
910    void LisaaKauppias(Vector paikka, double leveys, double korkeus)
911    {
912        KaytettavaObjekti VaihtajaHizet = new KaytettavaObjekti(leveys * 1.5, korkeus * 1.5);
913        VaihtajaHizet.Position = paikka;
914        VaihtajaHizet.Käyttöpaikka = new Vector(20, 50);
915        VaihtajaHizet.KäyttöKuva = puheKäyttöKuva;
916        VaihtajaHizet.IgnoresCollisionResponse = true;
917        VaihtajaHizet.Image = kauppiasKuva;
918        VaihtajaHizet.IgnoresPhysicsLogics = true;
919        VaihtajaHizet.Tag = "kohde";
920
921        bool ostaAmmuksia = false;
922
923        Add(VaihtajaHizet, 2);
924        VaihtajaHizet.Toiminto += delegate
925        {
926            if (taloAuki)
927            {
928                if (ostaAmmuksia)
929                {
930                    int lippaanHinta = 10;
931
932                    if (rahaa.Value > lippaanHinta)
933                    {
934                       
935                        lisääTeksti(VaihtajaHizet, myyjämöi);
936                        lippaat.Value++;
937                        rahaa.Value -= lippaanHinta;
938                    }
939                    else
940                    {
941
942                        lisääTeksti(VaihtajaHizet, Myyjäeimyynyt);
943                    }
944                }
945                else
946                {
947                    lisääTeksti(VaihtajaHizet, myyjämyy);
948                    ostaAmmuksia = true;
949                }
950            }
951            else if (rahasäkki)
952            {
953                lisääTeksti(VaihtajaHizet, hiisiPuhuu2);
954                avain1 = true;
955            }
956            else
957            {
958                lisääTeksti(VaihtajaHizet, hiisiPuhuu1);
959            }
960        };
961    }
962    void LisaaTeltta(Vector paikka, double leveys, double korkeus, string uusipaikka, Vector Tulopaikka)
963    {
964        KaytettavaObjekti teltta = new KaytettavaObjekti(leveys*2, korkeus*2);
965        teltta.Käyttöpaikka = new Vector(-20, 60);
966        teltta.KäyttöKuva = oviKäyttöKuva;
967        teltta.IgnoresPhysicsLogics = true;
968        teltta.IgnoresCollisionResponse = true;
969        teltta.Tag = "kohde";
970        teltta.Position = paikka;
971        teltta.Image = TeltanKuva;
972        teltta.Toiminto += delegate
973        {
974            pelaajanTuloPaikka = Tulopaikka;
975            LataaKentta(uusipaikka);
976        };
977        Add(teltta, -3);
978}
979    void LuoAarre(Vector paikka)
980    {
981        KaytettavaObjekti aarre = new KaytettavaObjekti(32, 32);
982        aarre.Käyttöpaikka = new Vector(0, 60);
983        aarre.Position = paikka;
984        aarre.Tag = "kohde";
985        aarre.CollisionIgnoreGroup = 2;
986        aarre.Image = arkunKuva;
987        aarre.KäyttöKuva = pickupKuva;
988        aarre.Toiminto += delegate
989        {
990            aarre.Destroy();
991            rahaa.Value += 25;
992        };
993        Add(aarre);
994    }
995
996}
997
Note: See TracBrowser for help on using the repository browser.