source: 2016/24/JimiR/MultiFuse/MultiFuse/MultiFuse/MultiFuse.cs @ 7372

Revision 7372, 24.9 KB checked in by jijaolri, 6 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 MultiFuse : PhysicsGame
10{
11
12
13
14    [Save]
15    int level = 5;
16    [Save]
17    string nimi;
18
19    DoubleMeter nopeus = new DoubleMeter(100, 100, 200);
20    IntMeter rahaMittari = new IntMeter(0);
21
22
23    PhysicsObject palikka;
24    PhysicsObject wiseguy;
25    PhysicsObject kauppias;
26    PhysicsObject pelaaja;
27    PhysicsObject teleporter;
28    PhysicsObject questguy;
29
30
31    DoubleMeter attacklvl = new DoubleMeter(1);
32    DoubleMeter healthlvl = new DoubleMeter(10, 0, 10);
33    DoubleMeter ranged = new DoubleMeter(1);
34    DoubleMeter tuliskillimittari = new DoubleMeter(100, 0, 100);
35    GameObject cursor;
36    Image alkuvalikonKuva = LoadImage("grass");
37    Image cursorinKuva = LoadImage("cursor");
38    Image puunKuva = LoadImage("tree");
39    Image tuliskillinKuva = LoadImage("ultikuva");
40    Image miekanKuva = LoadImage("miekka");
41    Image healthinKuva = LoadImage("sydän");
42    Image paperinKuva = LoadImage("paper");
43    Image rahanKuva = LoadImage("rahea");
44    Image marketinKuva = LoadImage("lattia");
45    Image dungeoninlattia = LoadImage("dungeonladdi");
46    Image fireballinKuva = LoadImage("fireball");
47    private Image[] destroyerinKavely = LoadImages("anim1", "anim2", "anim3", "anim4", "anim5");
48    private Image[] pelaajaWalk = LoadImages("walk1", "walk2", "walk3", "walk4", "walk5", "walk6", "walk4", "walk3", "walk2", "walk1", "walk7", "walk8", "walk9", "walk10", "walk11", "walk12", "walk11", "walk10", "walk9", "walk8", "walk7");
49
50    public override void Begin()
51    {
52
53        LuoAlkuValikko();
54        // TODO: Kirjoita ohjelmakoodisi tähän
55
56        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
57        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
58    }
59   
60    void AloitaPeli()
61    {
62        TileMap level = TileMap.FromLevelAsset("test");
63        level.SetTileMethod('#', LuoPalikka);
64        level.SetTileMethod('P', LuoPelaaja);
65        level.SetTileMethod('W', LuoWiseGuy);
66        level.SetTileMethod('T', LuoTeleporter);
67        level.Execute(50, 50);
68        IsMouseVisible = false;
69        IsFullScreen = false;
70        LuoCursor();
71    }
72
73    void Options()
74    {
75
76        //Healthit pelaaja = new Healthit(50, 50);
77        //pelaaja.Attack.Value = 2;
78
79    }
80
81    void LuoAlkuValikko()
82    {
83        MultiSelectWindow alkuValikko = new MultiSelectWindow("MultiFuse",
84"Start", "Options", "Quit");
85        Add(alkuValikko);
86        alkuValikko.AddItemHandler(0, KysyNimi);
87        alkuValikko.AddItemHandler(1, Options);
88        alkuValikko.AddItemHandler(2, Exit);
89        alkuValikko.Color = Color.Transparent;
90        Level.Background.Image = alkuvalikonKuva;
91        Level.Background.TileToLevel();
92        Camera.ZoomToLevel();
93    }
94
95    void LuoPuu(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject puu = PhysicsObject.CreateStaticObject(100, 100);
98        puu.Position = paikka; puu.Image = puunKuva;
99    }
100
101    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        pelaaja = new PhysicsObject(50, 75);
104        pelaaja.Position = paikka;
105        pelaaja.CanRotate = false;
106        pelaaja.AngularDamping = 0.95;
107        pelaaja.LinearDamping = 0.7;
108        pelaaja.Tag = "pelaaja";
109        pelaaja.Animation = new Animation(pelaajaWalk);
110        Add(pelaaja);
111
112        Label nimilabel = new Label(nimi + " ");
113
114
115        PushButton juoksupainike = new PushButton("Run");
116        Add(juoksupainike);
117        juoksupainike.Clicked += Juoksee;
118        juoksupainike.X = Screen.Right - 150;
119        juoksupainike.Y = Screen.Bottom + 800;
120
121        ProgressBar elamaPalkki = new ProgressBar(200, 40);
122        elamaPalkki.X = Screen.Right - 150;
123        elamaPalkki.Y = Screen.Top - 100;
124        elamaPalkki.BindTo(healthlvl);
125        Add(elamaPalkki);
126
127        healthlvl.LowerLimit += PelaajaKuolee;
128
129        LuoPaper();
130
131        LuoSkill(rahanKuva, rahaMittari, new Vector(Screen.Right - 200, Screen.Bottom + 650));
132
133        LuoSkill(miekanKuva, attacklvl, new Vector(Screen.Right - 200, Screen.Bottom + 750));
134        Label healthLabel = LuoSkill(healthinKuva, null, new Vector(Screen.Right - 200, Screen.Bottom + 700));
135
136        Label tuliskilll = new Label();
137        tuliskilll.Image = tuliskillinKuva;
138        tuliskilll.Size = new Vector(30, 30);
139        tuliskilll.Position = new Vector(Screen.Right - 200, Screen.Bottom + 600);
140        Add(tuliskilll);
141       
142       
143        ProgressBar tulipalkki = new ProgressBar(100, 20);
144        tulipalkki.X = Screen.Right - 120;
145        tulipalkki.Y = Screen.Bottom + 600;
146        tulipalkki.BindTo(tuliskillimittari);
147        Add(tulipalkki);
148
149        Timer ajastin = new Timer();
150        ajastin.Interval = 0.01;
151        ajastin.Timeout += () =>
152        {
153            nimilabel.Position = Camera.WorldToScreen(pelaaja.Position + new Vector(0, 50));
154            healthLabel.Text = "" + healthlvl.MaxValue;
155            tuliskillimittari.Value += 0.1;
156        };
157        ajastin.Start();
158        Add(nimilabel);
159
160        //Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-1000, 0));
161        //Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(1000, 0));
162        //Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 1000));
163        //Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -1000));
164
165        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Lyo, "Lyö");
166        Mouse.Listen(MouseButton.Middle, ButtonState.Pressed, FireBall, "Ultimate");
167        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, Liiku, "Liikkuu");
168        Keyboard.Listen(Key.Q, ButtonState.Pressed, Heal, "Healaa pelaajaa");
169
170        AddCollisionHandler(pelaaja, "wiseguy", Luowiseguyvalikko);
171        AddCollisionHandler(pelaaja, "kauppias", Luokauppa);
172        AddCollisionHandler(pelaaja, "teleporter", LuoTeleporttausvalikko);
173    }
174     void PelaajaKuolee()
175    {
176        ClearAll();
177        LuoAlkuValikko();
178
179    }
180    void Juoksee()
181    {
182        if (nopeus.Value == nopeus.MinValue)
183        {
184            nopeus.Value = nopeus.MaxValue;
185        }
186        else
187        {
188            nopeus.Value = nopeus.MinValue;
189        }
190
191    }
192    void Liiku()
193    {
194        pelaaja.MoveTo(Mouse.PositionOnWorld, nopeus.Value, pelaaja.Animation.Stop);
195        pelaaja.Animation.Start();
196    }
197
198    void LuoPalikka(Vector paikka, double leveys, double korkeus)
199    {
200        palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
201        palikka.Position = paikka;
202        palikka.Color = Color.Black;
203        Add(palikka);
204
205    }
206
207
208    void KysyNimi()
209    {
210        InputWindow kysymysIkkuna = new InputWindow("This tale of");
211        kysymysIkkuna.TextEntered += ProcessInput;
212        Add(kysymysIkkuna);
213
214    }
215
216    void ProcessInput(InputWindow ikkuna)
217    {
218        string vastaus = ikkuna.InputBox.Text;
219        MessageDisplay.Add(vastaus);
220        nimi = vastaus;
221        AloitaPeli();
222    }
223
224    void LiikutaPelaajaa(Vector vektori)
225    {
226        pelaaja.Push(vektori);
227    }
228
229    void LuoWiseGuy(Vector paikka, double leveys, double korkeus)
230    {
231        wiseguy = new PhysicsObject(50, 50);
232        wiseguy.Position = paikka;
233        wiseguy.AngularDamping = 0.95;
234        wiseguy.LinearDamping = 0.7;
235        wiseguy.Tag = "wiseguy";
236        Add(wiseguy);
237    }
238
239    void LuoCursor()
240    {
241        cursor = new GameObject(15, 15);
242        cursor.Image = cursorinKuva;
243        //cursor.Position = Mouse.PositionOnScreen;
244        Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
245        Add(cursor, 2);
246    }
247
248    Label LuoSkill(Image kuva, Meter mittari, Vector Position)
249    {
250        Label label = new Label();
251        label.Image = kuva;
252        label.Size = new Vector(30, 30);
253        label.Position = Position;
254        Add(label);
255
256        Label numero = new Label();
257        if (mittari != null)
258        {
259            numero.BindTo(mittari);
260        }
261        numero.Position = Position + new Vector(60, 0);
262        numero.DoubleFormatString = "{0:0}";
263        Add(numero);
264        return numero;
265    }
266
267    void Luowiseguyvalikko(PhysicsObject tormaaja, PhysicsObject kohde)
268    {
269        wiseguyvalikko();
270    }
271
272    void KuunteleLiiketta(AnalogState hiirenTila)
273    {
274        cursor.X = Mouse.PositionOnWorld.X;
275        cursor.Y = Mouse.PositionOnWorld.Y;
276
277        pelaaja.Angle = (cursor.Position - pelaaja.Position).Angle;
278
279        Vector hiirenLiike = hiirenTila.MouseMovement;
280    }
281
282    void TeleportValikko()
283    {
284        MultiSelectWindow teleportvalikko = new MultiSelectWindow("Where do you want to teleport?",
285        "Markeplace", "asdasdasd", "Back");
286        teleportvalikko.AddItemHandler(0, MarketPlace);
287        teleportvalikko.AddItemHandler(1, TeleportValikko);
288        teleportvalikko.AddItemHandler(2, wiseguyvalikko);
289        Add(teleportvalikko);
290    }
291
292    void wiseguyvalikko()
293    {
294        MessageDisplay.Add("Bump!");
295        MultiSelectWindow wiseguyvalikko = new MultiSelectWindow("What do you want?",
296        "Have you got anything for me?", "Where can i teleport?", "See you again!");
297        Add(wiseguyvalikko);
298        wiseguyvalikko.AddItemHandler(0, AloitaPeli);
299        wiseguyvalikko.AddItemHandler(1, TeleportValikko);
300        wiseguyvalikko.AddItemHandler(2, Exit);
301    }
302
303    void MarketPlace()
304    {
305        ClearAll();
306        TileMap marketplace = TileMap.FromLevelAsset("marketplace");
307        marketplace.SetTileMethod('#', LuoPalikka);
308        marketplace.SetTileMethod('P', LuoPelaaja);
309        marketplace.SetTileMethod('W', LuoWiseGuy);
310        marketplace.SetTileMethod('T', LuoTeleporter);
311        marketplace.SetTileMethod('K', LuoKauppias);
312        marketplace.SetTileMethod('Q', LuoQuestGuy);
313        marketplace.Execute(50, 50);
314        IsMouseVisible = false;
315        IsFullScreen = true;
316        LuoCursor();
317        Camera.ZoomToLevel();
318        Level.Background.Image = marketinKuva;
319        Level.Background.TileToLevel();
320        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
321        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
322    }
323
324    void LuoKauppias(Vector paikka, double leveys, double korkeus)
325    {
326        kauppias = PhysicsObject.CreateStaticObject(50, 50);
327        kauppias.Shape = Shape.Circle;
328        kauppias.Tag = "kauppias";
329        kauppias.Position = paikka;
330        Add(kauppias);
331    }
332
333    void Luokauppa(PhysicsObject tormaaja, PhysicsObject kohde)
334    {
335        MultiSelectWindow kauppavalikko = new MultiSelectWindow("S Market",
336       "Attacklevel - 10", "healthlevel - 10", "exit");
337        Add(kauppavalikko);
338
339        kauppavalikko.AddItemHandler(0, ostaaattacklevun);
340        kauppavalikko.AddItemHandler(1, ostaahealthlevun);
341        kauppavalikko.AddItemHandler(2, Exit);
342    }
343
344    void ostaaattacklevun()
345    {
346        rahaMittari.Value -= 10;
347        attacklvl.Value += 10;
348    }
349
350    void ostaahealthlevun()
351    {
352        rahaMittari.Value -= 10;
353        healthlvl.Value += 10; 
354    }
355
356    void LuoTeleporter(Vector paikka, double leveys, double korkeus)
357    {
358        teleporter = PhysicsObject.CreateStaticObject(100, 100);
359        teleporter.Position = paikka;
360        teleporter.Shape = Shape.Circle;
361        teleporter.Color = Color.Violet;
362        teleporter.Tag = "teleporter";
363        Add(teleporter);
364    }
365
366    void LuoTeleporttausvalikko(PhysicsObject tormaaja, PhysicsObject kohde)
367    {
368        MultiSelectWindow teleportaatioValikko = new MultiSelectWindow("Where would you like to go?",
369        "Dungeons", "Bosses", "TutorialPlace", "MarketPlace");
370        Add(teleportaatioValikko);
371
372        teleportaatioValikko.AddItemHandler(0, Dungeons);
373        teleportaatioValikko.AddItemHandler(1, Bosses);
374        teleportaatioValikko.AddItemHandler(2, TutorialPlace);
375        teleportaatioValikko.AddItemHandler(3, MarketPlace);
376    }
377
378    void Dungeons()
379
380    {
381        MultiSelectWindow dungeonsValikko = new MultiSelectWindow("Dungeons",
382        "Dungeon lvl 1-100", "Dungeon lvl 100-1000", "Dungeon lvl 1000-10000");
383        Add(dungeonsValikko);
384        dungeonsValikko.AddItemHandler(0, Dungeon1);
385        dungeonsValikko.AddItemHandler(1, Dungeon2);
386        dungeonsValikko.AddItemHandler(2, Dungeon3);
387    }
388    void Bosses()
389
390    {
391        MultiSelectWindow bossesValikko = new MultiSelectWindow("Dungeons",
392        "Bosses lvl 1-100", "Bosses lvl 100-1000", "Bosses lvl 1000-10000");
393        Add(bossesValikko);
394        bossesValikko.AddItemHandler(0, Bosses1);
395        bossesValikko.AddItemHandler(1, Bosses2);
396        bossesValikko.AddItemHandler(2, Bosses3);
397    }
398    void TutorialPlace()
399
400    {
401        ClearAll();
402        AloitaPeli();
403    }
404
405    void Dungeon1()
406    {
407        ClearAll();
408        TileMap dungeon1 = TileMap.FromLevelAsset("dungeon1");
409        dungeon1.SetTileMethod('#', LuoPalikka);
410        dungeon1.SetTileMethod('P', LuoPelaaja);
411        dungeon1.SetTileMethod('W', LuoWiseGuy);
412        dungeon1.SetTileMethod('S', LuoSkeleton);
413        dungeon1.SetTileMethod('T', LuoTeleporter);
414        dungeon1.SetTileMethod('K', LuoKauppias);
415        Level.Background.Image = dungeoninlattia;
416        Level.Background.TileToLevel();
417        dungeon1.Execute(50, 50);
418        IsMouseVisible = false;
419        IsFullScreen = true;
420        LuoCursor();
421        Camera.ZoomToLevel();
422        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
423        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
424    }
425    void Dungeon2()
426    {
427        ClearAll();
428        TileMap dungeon2 = TileMap.FromLevelAsset("dungeon2");
429        dungeon2.SetTileMethod('#', LuoPalikka);
430        dungeon2.SetTileMethod('P', LuoPelaaja);
431        dungeon2.SetTileMethod('W', LuoWiseGuy);
432        dungeon2.SetTileMethod('T', LuoTeleporter);
433        dungeon2.SetTileMethod('K', LuoKauppias);
434        dungeon2.SetTileMethod('G', LuoGiant);
435        Level.Background.Image = dungeoninlattia;
436        Level.Background.TileToLevel();
437        dungeon2.Execute(50, 50);
438        IsMouseVisible = false;
439        IsFullScreen = true;
440        LuoCursor();
441        Camera.ZoomToLevel();
442        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
443        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
444    }
445    void Dungeon3()
446    {
447        ClearAll();
448        TileMap dungeon3 = TileMap.FromLevelAsset("marketplace");
449        dungeon3.SetTileMethod('#', LuoPalikka);
450        dungeon3.SetTileMethod('P', LuoPelaaja);
451        dungeon3.SetTileMethod('W', LuoWiseGuy);
452        dungeon3.SetTileMethod('T', LuoTeleporter);
453        dungeon3.SetTileMethod('K', LuoKauppias);
454        Level.Background.Image = dungeoninlattia;
455        Level.Background.TileToLevel();
456        dungeon3.Execute(50, 50);
457        IsMouseVisible = false;
458        IsFullScreen = true;
459        LuoCursor();
460        Camera.ZoomToLevel();
461        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
462        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
463    }
464
465    void Bosses1()
466    {
467        ClearAll();
468        TileMap bosses1 = TileMap.FromLevelAsset("bosses1");
469        bosses1.SetTileMethod('#', LuoPalikka);
470        bosses1.SetTileMethod('P', LuoPelaaja);
471        bosses1.SetTileMethod('W', LuoWiseGuy);
472        bosses1.SetTileMethod('S', LuoSkeleton);
473        bosses1.SetTileMethod('T', LuoTeleporter);
474        bosses1.SetTileMethod('K', LuoKauppias);
475        bosses1.SetTileMethod('B', LuoDestroyer);
476        bosses1.Execute(50, 50);
477        IsMouseVisible = false;
478        IsFullScreen = true;
479        Level.Background.Image = dungeoninlattia;
480        Level.Background.TileToLevel();
481        LuoCursor();
482        Camera.ZoomToLevel();
483        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
484        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
485    }
486    void Bosses2()
487    {
488
489    }
490    void Bosses3()
491    {
492
493    }
494
495    void LuoSkeleton(Vector paikka, double leveys, double korkeus)
496    {
497        Vihu skeleton = new Vihu(50, 50);
498        skeleton.Position = paikka;
499        skeleton.Shape = Shape.Circle;
500        skeleton.Tag = "skeleton";
501        skeleton.CanRotate = false;
502        //skeleton.AngularDamping = 0.95;
503        //skeleton.LinearDamping = 0.7;
504        Add(skeleton);
505
506        ProgressBar elamaPalkki = new ProgressBar(75, 15);
507        //elamaPalkki.X = Screen.Right - 150;
508        elamaPalkki.Y = 50;
509        elamaPalkki.BindTo(skeleton.ElamaLaskuri);
510        skeleton.Add(elamaPalkki);
511
512        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
513        // satunnaisAivot.ChangeMovementSeconds = 3;//Ominaisuuksien muokkaaminen
514
515        //AddCollisionHandler(skeleton, pelaaja, LyoPelaajaa);
516
517        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
518        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
519        seuraajanAivot.DistanceFar = 200;           // Etäisyys jolla aletaan seurata kohdetta
520        seuraajanAivot.DistanceClose = 50;         // Etäisyys jolloin ollaan lähellä kohdetta
521        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
522        seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
523        skeleton.Brain = seuraajanAivot;
524
525        //seuraajanAivot.TargetClose += LyoPelaajaa;
526
527        Timer lyontiajastin = new Timer();
528        lyontiajastin.Interval = 2.0;
529        lyontiajastin.Timeout += delegate
530        {
531            if (Vector.Distance(skeleton.Position, pelaaja.Position) < 70)
532            {
533                LyoPelaajaa(1);
534            }
535        };
536        lyontiajastin.Start();
537        skeleton.Destroyed += lyontiajastin.Stop;
538
539        AddCollisionHandler(skeleton, "ase", VihuOttaaDamagea);
540        AddCollisionHandler(skeleton, "ase1", VihuOttaaDamagea1);
541
542    }
543
544    void Lyo()
545    {
546        PhysicsObject ase = new PhysicsObject(60, 20);
547        Vector suunta = (cursor.Position - pelaaja.Position).Normalize();
548        ase.Position = pelaaja.Position + suunta * 50;
549        ase.LifetimeLeft = TimeSpan.FromSeconds(0.1);
550        ase.Angle = pelaaja.Angle;
551        ase.Tag = "ase";
552        Add(ase);
553    }
554
555    //void LyoPelaajaa(PhysicsObject tormaaja, PhysicsObject kohde)
556    void LyoPelaajaa(int damage)
557    {
558        healthlvl.Value -= damage;
559
560        healthlvl.MaxValue += 1;
561    }
562
563    void FireBall()
564    {
565        if (tuliskillimittari.Value == tuliskillimittari.MaxValue)
566        {
567        PhysicsObject fireball = new PhysicsObject(500, 100);
568        Vector suunta = (cursor.Position - pelaaja.Position).Normalize();
569        fireball.Position = pelaaja.Position + suunta * 350;
570        fireball.LifetimeLeft = TimeSpan.FromSeconds(1.0);
571        fireball.Image = fireballinKuva;
572        fireball.Angle = pelaaja.Angle;
573        fireball.Tag = "ase1";
574        Add(fireball);
575
576            tuliskillimittari.Value = 0;
577
578        }
579    }
580    //void ElectricBolt()
581    //{
582    //    PhysicsObject electricbolt = new PhysicsObject(60, 20);
583    //    Vector suunta = (pelaaja.Position - destroyer.Position).Normalize();
584    //    electricbolt.Position = pelaaja.Position + suunta * 50;
585    //    electricbolt.LifetimeLeft = TimeSpan.FromSeconds(0.1);
586    //    electricbolt.Angle = pelaaja.Angle;
587    //    electricbolt.Tag = "ase";
588    //    Add(electricbolt);
589    //}
590
591
592
593    void VihuOttaaDamagea(PhysicsObject tormaaja, PhysicsObject kohde)
594    {
595        Vihu vihu = tormaaja as Vihu;
596
597        vihu.ElamaLaskuri.Value -= (int)attacklvl.Value;
598        attacklvl.Value += 1;
599        rahaMittari.Value += 10;
600    }
601
602    void VihuOttaaDamagea1(PhysicsObject tormaaja, PhysicsObject kohde)
603    {
604        Vihu vihu = tormaaja as Vihu;
605
606        vihu.ElamaLaskuri.Value -= (int)attacklvl.Value * 5;
607    }
608
609    void LuoDestroyer(Vector paikka, double leveys, double korkeus)
610    {
611        PhysicsObject destroyer = new PhysicsObject(80, 80);
612        destroyer.Position = paikka;
613        destroyer.Shape = Shape.Circle;
614        destroyer.Animation = new Animation(destroyerinKavely);
615        destroyer.Animation.Start();
616        Add(destroyer);
617
618        AddCollisionHandler(destroyer, pelaaja, Destroyertekeedamagia);
619       
620
621        RandomMoverBrain satunnaisAivotboss = new RandomMoverBrain(200);
622
623        //Ominaisuuksien muokkaaminen
624        satunnaisAivotboss.ChangeMovementSeconds = 0.5;
625
626        //Aivot käyttöön oliolle
627        destroyer.Brain = satunnaisAivotboss;
628
629        satunnaisAivotboss.Speed = 800;
630
631        satunnaisAivotboss.Active = true;
632
633       
634    }
635
636    void Heal()
637    {
638        healthlvl.Value += 1;
639    }
640
641    void Destroyertekeedamagia(PhysicsObject tormaaja, PhysicsObject kohde)
642    {
643        healthlvl.Value -= 1;
644    }
645
646    void LuoPaper()
647    {
648        Label paperi = new Label(245,400);
649        paperi.Position = new Vector(Screen.Right - 330, Screen.Bottom + 680);
650        paperi.Image = paperinKuva;
651        Add(paperi, 0);
652    }
653
654    void LuoQuestGuy(Vector paikka, double leveys, double korkeus)
655    {
656        questguy = new PhysicsObject(50,75);
657        questguy.Position = paikka;
658        Add(questguy);
659
660        //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200
661        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(25);
662
663        //Ominaisuuksien muokkaaminen
664        satunnaisAivot.ChangeMovementSeconds = 2;
665
666        //Aivot käyttöön oliolle
667        questguy.Brain = satunnaisAivot;
668
669        AddCollisionHandler(questguy, "pelaaja", QuestValikko);
670    }
671
672    void QuestValikko(PhysicsObject tormaaja, PhysicsObject kohde)
673    {
674        MultiSelectWindow QuestValikko = new MultiSelectWindow("Hello!",
675        "U got anything for me?");
676        Add(QuestValikko);
677        QuestValikko.AddItemHandler(0, Quest1);
678    }
679
680    void Quest1()
681    {
682        MultiSelectWindow Quest1Valikko = new MultiSelectWindow("YES can you kill a monster for me?",
683"YEYE");
684        Add(Quest1Valikko);
685        Quest1Valikko.AddItemHandler(0, Quest2);
686
687    }
688
689    void Quest2()
690    {
691        LuoQuestBossiMappi();
692    }
693
694    void LuoQuestBossiMappi()
695    {
696
697    }
698
699    void LuoGiant(Vector paikka, double leveys, double korkeus)
700    {
701        Vihu giant = new Vihu(80,80);
702        giant.ElamaLaskuri.MaxValue = 250;
703        giant.ElamaLaskuri.Value = 250;
704        giant.CanRotate = false;
705        giant.Position = paikka;
706        Add(giant);
707
708        ProgressBar elamaPalkki = new ProgressBar(75, 15);
709        //elamaPalkki.X = Screen.Right - 150;
710        elamaPalkki.Y = 50;
711        elamaPalkki.BindTo(giant.ElamaLaskuri);
712        giant.Add(elamaPalkki);
713
714        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
715        // satunnaisAivot.ChangeMovementSeconds = 3;//Ominaisuuksien muokkaaminen
716
717        //AddCollisionHandler(skeleton, pelaaja, LyoPelaajaa);
718
719        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
720        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
721        seuraajanAivot.DistanceFar = 200;           // Etäisyys jolla aletaan seurata kohdetta
722        seuraajanAivot.DistanceClose = 50;         // Etäisyys jolloin ollaan lähellä kohdetta
723        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
724        seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
725
726        AddCollisionHandler(giant, "ase", VihuOttaaDamagea);
727        AddCollisionHandler(giant, "ase1", VihuOttaaDamagea1);
728        giant.Brain = seuraajanAivot;
729
730        //seuraajanAivot.TargetClose += LyoPelaajaa;
731
732        Timer lyontiajastin = new Timer();
733        lyontiajastin.Interval = 2.0;
734        lyontiajastin.Timeout += delegate
735        {
736            if (Vector.Distance(giant.Position, pelaaja.Position) < 70)
737            {
738                LyoPelaajaa(20);
739            }
740        };
741        lyontiajastin.Start();
742        giant.Destroyed += lyontiajastin.Stop;
743
744    }
745}
746class Skills : PhysicsObject
747{
748    public DoubleMeter Attack { get; set; }
749
750    //public DoubleMeter Ranged { get; set; }
751
752    public Skills(double leveys, double korkeus)
753        : base(leveys, korkeus)
754    {
755        Attack = new DoubleMeter(1);
756    }
757}
758
759class Vihu : PhysicsObject
760{
761    private IntMeter elamaLaskuri = new IntMeter(20, 0, 20);
762    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
763
764    public Vihu(double leveys, double korkeus)
765        : base(leveys, korkeus)
766    {
767        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
768    }
769}
Note: See TracBrowser for help on using the repository browser.