source: 2017/27/MillaK/RPG/RPG/RPG/RPG.cs @ 9003

Revision 9003, 20.2 KB checked in by npo17_53, 2 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 RPG : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    PhysicsObject kerjalainen;
13    PhysicsObject merenneito;
14    Vector NopeusYlos = new Vector(0, 200);
15    Vector NopeusAlas = new Vector(0, -200);
16    Vector NopeusVasemmalle = new Vector(-200, 0);
17    Vector NopeusOikealle = new Vector(200, 0);
18    Label tekstiKentta1;
19    String teksti2 = "tekstiä jww";
20    Image kerjalaisenPuhekupla = LoadImage("puheker");
21    Image pelaajanPuhekupla = LoadImage("puhepel");
22    Image merenneidonPuhekupla = LoadImage("puhemer");
23    int keskustelu1puheenaihe = 1;
24    int sanoitjoo = 1;
25    double puhekuplansiirtyma = 88;
26    bool PaastitKerjalaisen = false;
27    bool puhuitNatisti = false;
28    GameObject ruutu;
29    GameObject musta;
30    Timer mustutin;
31    int tapahtumat;
32    byte tummuus = 0;
33    public override void Begin()
34    {
35        Alkuvalikko();
36    }
37
38    void Alkuvalikko()
39    {
40
41        MultiSelectWindow alkuValikko = new MultiSelectWindow("I Just Wanted to Live in Peace...", "Uusi peli", "Lopeta");
42        Add(alkuValikko);
43        alkuValikko.AddItemHandler(0, AloitaPeli);
44        alkuValikko.AddItemHandler(1, Exit);
45    }
46
47    void AloitaPeli()
48    {
49        ClearAll();
50        LuoHahmot();
51        LisaaOhjaimet();
52        LuoKentta();
53    }
54
55    void LuoKentta()
56    {
57        Level.Background.Image = LoadImage("tausta");
58
59        Level.Width = Window.Width;
60        Level.Height = Window.Height;
61        Level.Background.Size = Level.Size;
62        Level.CreateBorders(1.0, false);
63
64        //tekee rannasta luoksepääsemättömän
65        PhysicsObject ranta = PhysicsObject.CreateStaticObject(Level.Width, Level.Height);
66        ranta.Shape = Shape.FromImage(LoadImage("taustahitbox"));
67        ranta.IsVisible = false;
68        Add(ranta);
69
70        LuoSeinat();
71        LuoHuonekalut();
72        LuoPuut();
73
74
75
76    }
77
78    void LuoPuut()
79    {
80        PhysicsObject kuusi = PhysicsObject.CreateStaticObject(120, 230);
81        Add(kuusi);
82        kuusi.Shape = Shape.Triangle;
83        kuusi.Image = LoadImage("kuusi");
84        kuusi.X = 0;
85        kuusi.Y = 400;
86
87        PhysicsObject kuusi2 = PhysicsObject.CreateStaticObject(120, 230);
88        Add(kuusi2);
89        kuusi2.Shape = Shape.Triangle;
90        kuusi2.Image = LoadImage("kuusi");
91        kuusi2.X = 90;
92        kuusi2.Y = 360;
93
94        PhysicsObject kuusi3 = PhysicsObject.CreateStaticObject(120, 230);
95        Add(kuusi3);
96        kuusi3.Shape = Shape.Triangle;
97        kuusi3.Image = LoadImage("kuusi");
98        kuusi3.X = -100;
99        kuusi3.Y = 350;
100
101        PhysicsObject kuusi4 = PhysicsObject.CreateStaticObject(120, 230);
102        Add(kuusi4);
103        kuusi4.Shape = Shape.Triangle;
104        kuusi4.Image = LoadImage("kuusi");
105        kuusi4.X = 300;
106        kuusi4.Y = 250;
107
108        PhysicsObject kuusi5 = PhysicsObject.CreateStaticObject(120, 230);
109        Add(kuusi5);
110        kuusi5.Shape = Shape.Triangle;
111        kuusi5.Image = LoadImage("kuusi");
112        kuusi5.X = 450;
113        kuusi5.Y = 425;
114    }
115
116    void LuoHuonekalut()
117
118    {
119
120        //keittiön mööpelit
121        LuoHuonekalu(-260, -320, 90, 260);
122        LuoHuonekalu(-370, -400, 280, 100);
123
124        //sohva
125        LuoHuonekalu(-726, -297, 100, 30);
126        LuoHuonekalu(-726, -60, 110, 30);
127        LuoHuonekalu(-763, -190, 40, 245);
128
129        //suihku
130        LuoHuonekalu(-740, 216, 75, 82);
131
132        //pöytä
133        PhysicsObject poyta = new PhysicsObject(155, 169);
134        poyta.Shape = Shape.Circle;
135        poyta.MakeStatic();
136        poyta.IsVisible = false;
137        poyta.X = -556;
138        poyta.Y = -178;
139        Add(poyta);
140
141
142    }
143    void LuoSeinat()
144    {
145        //ulkoseinät
146        LuoSeina(-214, 195, 10, 424);
147        LuoSeina(-214, -280, 10, 349);
148
149        LuoSeina(-497, 405, 576, 10);
150        LuoSeina(-497, -453, 576, 10);
151
152        LuoSeina(-780, -24, 10, 862);
153
154        //sisäseinät
155        LuoSeina(-565, 360, 10, 95);
156        LuoSeina(-565, 175, 10, 130);
157
158        LuoSeina(-535, 110, 235, 10);
159        LuoSeina(-748, 110, 73, 10);
160        LuoSeina(-280, 110, 140, 10);
161
162    }
163
164    void LuoSeina(double x, double y, double leveys, double korkeus)
165    {
166        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
167        seina.X = x;
168        seina.Y = y;
169        seina.IsVisible = false;
170        Add(seina);
171    }
172
173    void LuoHuonekalu(double x, double y, double leveys, double korkeus)
174    {
175        PhysicsObject huone = PhysicsObject.CreateStaticObject(leveys, korkeus);
176        huone.X = x;
177        huone.Y = y;
178        huone.IsVisible = false;
179        Add(huone);
180    }
181    void LuoHahmot()
182    {
183        //luo pelaajan
184        pelaaja = new PhysicsObject(40, 60);
185        pelaaja.Image = LoadImage("hemmo");
186        pelaaja.Shape = Shape.Circle;
187        pelaaja.X = -265;
188        pelaaja.Y = 350;
189        pelaaja.CanRotate = false;
190        pelaaja.Restitution = 0;
191        pelaaja.CollisionIgnoreGroup = 1;
192        Add(pelaaja);
193
194        AddCollisionHandler(pelaaja, "mia", AloitaKeskustelu);
195
196        //luo merenneidon
197        merenneito = new PhysicsObject(90, 50);
198        merenneito.Image = LoadImage("mermaid");
199        merenneito.MakeStatic();
200        merenneito.Restitution = 0;
201        merenneito.X = 650;
202        merenneito.Y = -150;
203        merenneito.IsVisible = false;
204        Add(merenneito);
205
206        //luo kerjalaisen
207        kerjalainen = new PhysicsObject(40, 60);
208        kerjalainen.Tag = "mia";
209        kerjalainen.Image = LoadImage("kerjalainen");
210        kerjalainen.Mass = 20;
211        kerjalainen.CanRotate = false;
212        kerjalainen.Restitution = 0;
213        kerjalainen.X = 350;
214        kerjalainen.Y = -50;
215        Add(kerjalainen);
216
217        List<Vector> polku = new List<Vector>();
218        polku.Add(new Vector(-50, -50));
219        polku.Add(new Vector(-30, 200));
220        polku.Add(new Vector(-100, -50));
221
222        PathFollowerBrain polkuAivot = new PathFollowerBrain();
223        polkuAivot.Path = polku;
224        polkuAivot.Speed = 20;
225        kerjalainen.Brain = polkuAivot;
226
227
228
229
230    }
231    //    void tapahtumia()
232    //    {
233    //     if(pelaaja.X = )
234    //{
235    //            tavataanKerjalainen();
236    //}
237    //    }
238
239
240    //    void tavataanKerjalainen()
241    //    {
242    //       Keyboard.Listen(Key.Space, ButtonState.Down, Puhe, "puhu", pelaaja, kerjalainen);
243    //    }
244
245
246
247    void AloitaKeskustelu(PhysicsObject pelaaja, PhysicsObject kerjalainen)
248    {
249        Keyboard.Disable(Key.Right);
250        Keyboard.Disable(Key.Left);
251        Keyboard.Disable(Key.Up);
252        Keyboard.Disable(Key.Down);
253
254        if (ruutu != null)
255        {
256
257            return;
258        }
259        ruutu = new GameObject(200, 100);
260        ruutu.Y = kerjalainen.Y + 90;
261        ruutu.X = kerjalainen.X - 100;
262        tekstiKentta1 = new Label();
263        tekstiKentta1.Font = Font.DefaultSmall;
264
265
266
267        Add(ruutu, 2);
268        Add(tekstiKentta1, 3);
269
270        //kerjalainen.MakeStatic();
271        kerjalainen.Brain.Active = false;
272        kerjalainen.Stop();
273        pelaaja.Velocity = Vector.Zero;
274        kerjalainen.Velocity = new Vector(0, 0);
275
276        KerjalainenPuhuu("Hello there.");
277    }
278
279    void KerjalainenPuhuu(String teksti)
280    {
281        tekstiKentta1.Text = teksti;
282        tekstiKentta1.Y = kerjalainen.Y + 90;
283        tekstiKentta1.X = kerjalainen.X - 100;
284        ruutu.Image = kerjalaisenPuhekupla;
285        ruutu.X = kerjalainen.X - 100;
286        ruutu.Y = kerjalainen.Y + 90;
287
288    }
289
290    void PelaajaPuhuu(String teksti)
291    {
292        tekstiKentta1.Text = teksti;
293        ruutu.X = pelaaja.X + puhekuplansiirtyma;
294        ruutu.Y = pelaaja.Y + 88;
295
296        tekstiKentta1.Y = pelaaja.Y + 88;
297        tekstiKentta1.X = pelaaja.X + puhekuplansiirtyma;
298        ruutu.Image = pelaajanPuhekupla;
299    }
300
301    void MerenneitoPuhuu(String teksti)
302
303    {
304        tekstiKentta1.Text = teksti;
305
306        ruutu.Image = merenneidonPuhekupla;
307        ruutu.X = merenneito.X - 150;
308        ruutu.Y = merenneito.Y + 90;
309
310        tekstiKentta1.X = merenneito.X - 150;
311        tekstiKentta1.Y = merenneito.Y + 90;
312
313
314
315    }
316    void PuheVaihtuu(PhysicsObject kohde)
317    {
318
319        switch (keskustelu1puheenaihe)
320        {
321            case 0:
322                return;
323                break;
324            case 1:
325                PelaajaPuhuu("Hi...");
326                keskustelu1puheenaihe++;
327                break;
328
329            case 2:
330                PelaajaPuhuu("Um.");
331                keskustelu1puheenaihe++;
332                break;
333
334            case 3:
335                PelaajaPuhuu("What are you \ndoing in my yard?");
336                keskustelu1puheenaihe++;
337                break;
338
339            case 4:
340                KerjalainenPuhuu("I have been \ntrough a lot.");
341                keskustelu1puheenaihe++;
342                break;
343
344            case 5:
345                KerjalainenPuhuu("My house \nburned down.");
346                keskustelu1puheenaihe++;
347                break;
348
349            case 6:
350                KerjalainenPuhuu("I don't have \na place to live.");
351                keskustelu1puheenaihe++;
352                break;
353
354            case 7:
355                KerjalainenPuhuu("And this place \nlooked friendly...");
356                keskustelu1puheenaihe++;
357                break;
358
359            case 8:
360                KerjalainenPuhuu("Could I stay\n for a while?");
361                keskustelu1puheenaihe++;
362                break;
363
364            case 9:
365                MultiSelectWindow valikko = new MultiSelectWindow("Can she?", "Yes", "No");
366                valikko.ItemSelected += PainettiinValikonNappia;
367                Add(valikko);
368                break;
369
370            case 10:
371                PaastitKerjalaisen = true;
372                KerjalainenPuhuu("Thank you kindly!");
373                keskustelu1puheenaihe = 13;
374                break;
375
376
377            case 12:
378                PaastitKerjalaisen = false;
379                KerjalainenPuhuu("Do you have a heart?");
380                keskustelu1puheenaihe = 14;
381                break;
382
383            case 13: // vastaus joohon eli 10
384                Keyboard.EnableAll();
385                ruutu.IsVisible = false;
386                tekstiKentta1.IsVisible = false;
387                kerjalainen.CollisionIgnoreGroup = 1;
388                kerjalainen.MoveTo(new Vector(-300, kerjalainen.Y), 100, kerjalainenSisalle);
389                keskustelu1puheenaihe = 17;
390                break;
391
392
393            case 14: // vastaus eihin
394                KerjalainenPuhuu("Because I don't think so.");
395                keskustelu1puheenaihe++;
396                break;
397
398            case 15:
399                Keyboard.EnableAll();
400                ruutu.IsVisible = false;
401                tekstiKentta1.IsVisible = false;
402                kerjalainen.CollisionIgnoreGroup = 1;
403                kerjalainen.MoveTo(new Vector(323, kerjalainen.Y), 100, kerjalainenPois);
404                keskustelu1puheenaihe++;
405                break;
406
407            case 16:
408                kerjalainen.IsVisible = false;
409                keskustelu1puheenaihe++;
410                break;
411
412            case 17:
413
414                MerenneitoPuhuu("Hey! Pst!");
415                ruutu.IsVisible = true;
416                tekstiKentta1.IsVisible = true;
417                keskustelu1puheenaihe++;
418                break;
419
420            case 18:
421                merenneito.IsVisible = true;
422                ruutu.IsVisible = false;
423                tekstiKentta1.IsVisible = false;
424                keskustelu1puheenaihe++;
425                break;
426
427            case 19:
428                MerenneitoPuhuu("Come here!");
429                ruutu.IsVisible = true;
430                tekstiKentta1.IsVisible = true;
431                keskustelu1puheenaihe++;
432                break;
433
434            case 20:
435                PelaajaPuhuu("What on earth are you?");
436                keskustelu1puheenaihe++;
437                break;
438
439            case 21:
440                PelaajaPuhuu("And what on earth are\n you doing in my lake?");
441
442                keskustelu1puheenaihe++;
443                break;
444
445            case 22:
446                MerenneitoPuhuu("Nothing on earth,\nreally...");
447
448                keskustelu1puheenaihe++;
449                break;
450
451            case 23:
452                //if (puhuitNatisti) MerenneitoPuhuu("...'cause I'm a mermaid.");
453                //else MerenneitoPuhuu("...'cause I'm a mermaid.");
454                MerenneitoPuhuu("...'cause I'm a mermaid");
455                keskustelu1puheenaihe++;
456                break;
457
458            case 24:
459                MerenneitoPuhuu("...And you just don't go\nasking pretty mermaids \nwhat they are.");
460
461                keskustelu1puheenaihe++;
462                break;
463
464            case 25:
465                MerenneitoPuhuu("Or anyone for\n that matter.");
466
467                keskustelu1puheenaihe++;
468                break;
469
470            case 26:
471                MerenneitoPuhuu("The correct \nphrase would be:\n 'WHO are you'.");
472
473                keskustelu1puheenaihe++;
474                break;
475
476            case 27:
477                PelaajaPuhuu("Who are you, then?");
478
479                keskustelu1puheenaihe++;
480                break;
481
482            case 28:
483                PelaajaPuhuu("And what are you \ndoing in my lake?");
484
485                keskustelu1puheenaihe++;
486                break;
487
488            case 29:
489                MerenneitoPuhuu("May will do.");
490
491                keskustelu1puheenaihe++;
492                break;
493
494            case 30:
495                MerenneitoPuhuu("And I actually \nlost my pack.");
496
497                keskustelu1puheenaihe++;
498                break;
499
500            case 31:
501                MerenneitoPuhuu("You see, \nwe travel in packs.");
502
503                keskustelu1puheenaihe++;
504                break;
505
506            case 32:
507                MerenneitoPuhuu("And I know they'll\n pass this lake later \nthis week. So.");
508                keskustelu1puheenaihe++;
509                break;
510
511            case 33:
512                PelaajaPuhuu("Okay...");
513
514                keskustelu1puheenaihe++;
515                break;
516
517            case 34:
518                MerenneitoPuhuu("Usually when i get lost \n(and do I get lost) -");
519
520                keskustelu1puheenaihe++;
521                break;
522
523            case 35:
524                MerenneitoPuhuu("I come here to wait.");
525
526                keskustelu1puheenaihe++;
527                break;
528
529            case 36:
530                MerenneitoPuhuu("You're not very scary.");
531
532                keskustelu1puheenaihe++;
533                break;
534
535            case 37:
536                MerenneitoPuhuu("And you never \nhave visitors...");
537
538                keskustelu1puheenaihe++;
539                break;
540
541            case 38:
542                PelaajaPuhuu("Yea, real nice...");
543
544                keskustelu1puheenaihe++;
545                break;
546
547            case 39:
548                MerenneitoPuhuu("But now, \nthere was someone!");
549
550                keskustelu1puheenaihe++;
551                break;
552
553            case 40:
554                MerenneitoPuhuu("And I'm a \nlittle scared.");
555
556                keskustelu1puheenaihe++;
557                break;
558
559            case 41:
560                MerenneitoPuhuu("Some people like \nto kidnap mermaids.");
561
562                keskustelu1puheenaihe++;
563                break;
564
565            case 42:
566                MerenneitoPuhuu("And do some \nnasty stuff.");
567
568                keskustelu1puheenaihe++;
569                break;
570
571            case 43:
572                MerenneitoPuhuu("So.");
573
574                keskustelu1puheenaihe++;
575                break;
576
577            case 44:
578                MerenneitoPuhuu("Yea.");
579                keskustelu1puheenaihe++;
580                break;
581
582            case 45:
583                MerenneitoPuhuu("Could you keep an \neye on her for me?");
584                if (PaastitKerjalaisen == true)
585                {
586                    keskustelu1puheenaihe = 46;
587                }
588                else 
589                {
590                    keskustelu1puheenaihe = 47;
591                }
592                break;
593
594            case 46:
595                PelaajaPuhuu("She seems \nharmless to me.");
596                keskustelu1puheenaihe = 48;
597                break;
598
599            case 47:
600                PelaajaPuhuu("Yea, I already \ntold her to leave.");
601                keskustelu1puheenaihe = 48;
602                break;
603
604            case 48:
605                PelaajaPuhuu("But sure.");
606                keskustelu1puheenaihe++;
607                break;
608
609            case 49:
610                MerenneitoPuhuu("Thank you!");
611                keskustelu1puheenaihe++;
612                break;
613
614            case 50:
615                merenneito.IsVisible = false;
616                ruutu.IsVisible = false;
617                tekstiKentta1.IsVisible = false;
618                keskustelu1puheenaihe++;
619                break;
620
621            case 51:
622                keskustelu1puheenaihe = 0;
623                LuoBlackariAliohjelma();
624                break;
625        }
626    }
627
628   
629    void PainettiinValikonNappia(int valinta)
630    {
631        switch (valinta)
632        {
633            case 0:
634                // yes
635                PaastitKerjalaisen = true;
636                keskustelu1puheenaihe = 10;
637                PuheVaihtuu(null);
638                break;
639            case 1:
640                // no
641                PaastitKerjalaisen = false;
642                keskustelu1puheenaihe = 12;
643                PuheVaihtuu(null);
644                break;
645        }
646    }
647    void kerjalainenPois()
648    {
649        kerjalainen.MoveTo(new Vector(kerjalainen.X, -700), 100);
650    }
651    void kerjalainenSisalle()
652    {
653        kerjalainen.MoveTo(new Vector(kerjalainen.X, -200), 100);
654    }
655
656    void LuoBlackariAliohjelma()
657    {
658        musta = new GameObject(Screen.Width, Screen.Height);
659        musta.Color = new Color(Color.Black, tummuus);
660        Add(musta, 3);
661        mustutin = new Timer();
662        mustutin.Interval = 0.05;
663        mustutin.Timeout += haivyttyyMustaan;
664        mustutin.Start();
665    }
666    void haivyttyyMustaan()
667    {
668        tummuus += 10;
669        musta.Color = new Color(Color.Black, tummuus);
670        if (tummuus > 240)
671        {
672
673            mustutin.Stop();
674            mustutin.Timeout -= haivyttyyMustaan;
675            mustutin.Timeout += kirkastaMaailma;
676            mustutin.Start();
677        }
678    }
679
680    void kirkastaMaailma()
681    {
682        tummuus -= 10;
683        musta.Color = new Color(Color.Black, tummuus);
684        if (tummuus < 30)
685        {
686            musta.Color = Color.Transparent;
687            mustutin.Stop();
688        }
689    }
690    void LisaaOhjaimet()
691    {
692
693        //liikuttaa pelaajaa
694        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "liikuta pelaajaa ylös", pelaaja, NopeusYlos);
695        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
696
697        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "liikuta pelaajaa alas", pelaaja, NopeusAlas);
698        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
699
700        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "liikuta pelaajaa vasemmalle", pelaaja, NopeusVasemmalle);
701        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
702
703        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "liikuta pelaajaa oikealle", pelaaja, NopeusOikealle);
704        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
705
706        Keyboard.Listen(Key.Space, ButtonState.Pressed, PuheVaihtuu, "vaihtaa puhekuplan tekstiä", kerjalainen);
707
708        //exit
709        PhoneBackButton.Listen(Alkuvalikko, "Lopeta peli");
710        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Alkuvalikko, "Lopeta peli");
711
712    }
713    void AsetaNopeus(PhysicsObject joku, Vector nopeus)
714    {
715        pelaaja.Velocity = nopeus;
716    }
717
718
719}
Note: See TracBrowser for help on using the repository browser.