source: 2015/24/EemeliK/Nettipelijuttupelihymynaama/Nettipelijuttupelihymynaama/Nettipelijuttupelihymynaama/Nettipelijuttupelihymynaama.cs @ 7329

Revision 7329, 24.3 KB checked in by taeekotr, 7 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
9[Serializable]
10class Paketti
11{
12    public double X;
13    public double Y;
14    public double VX;
15    public double VY;
16    public double nopeus;
17    public string paikka;
18}
19
20[Serializable]
21class AmmusPaketti
22{
23    public double X;
24    public double Y;
25    public double VX;
26    public double VY;
27    public string paikka;
28}
29
30[Serializable]
31class KuoliPaketti
32{
33}
34
35
36class Pelaaja : PlatformCharacter
37{
38    public double nopeus;
39
40
41    public Pelaaja(double leveys, double korkeus)
42        : base(leveys, korkeus)
43    {
44    }
45}
46
47public class Nettipelijuttupelihymynaama : PhysicsGame
48{
49    IntMeter rahet;
50
51    NetworkConnection yhteys;
52    GameObject cursor;
53    GameObject asecursor;
54    GameObject E;
55    PhysicsObject KauppaanMeno;
56    Timer KauppaAjastin;
57    PlatformCharacter kauppaseta;
58    PhysicsObject poiskaupastapalikka;
59    Timer PoiskaupastaAjastin;
60
61    const double nopeus = 1000;
62    const double hyppyNopeus = 1450;
63    const int RUUDUN_KOKO = 40;
64
65    double hahmonopeus = 0;
66
67    Pelaaja pelaaja;
68    bool onAse = false;
69    bool onKauppaE = false;
70    bool KaupastaPois = false;
71
72    string nykyinenPaikka = "";
73
74    Image pelaajanKuva = LoadImage("Idle");
75    Image kauppeseta = LoadImage("Kauppaseta");
76    Image Aajii = LoadImage("Aajii");
77    Image viisidollaria = LoadImage("5Dollars");
78    Image aseKursorinKuva = LoadImage("cursori");
79    Image kursorinKuva = LoadImage("Windows_Cursor");
80    Image alkuTausta = LoadImage("Tausta1");
81    Image satadollariakuva = LoadImage("satadollaria");
82    Image Ekuva = LoadImage("e");
83    Image kauppaTausta = LoadImage("Kauppe");
84
85    SoundEffect maaliAani = LoadSoundEffect("maali");
86    Dictionary<Guid, Pelaaja> muutPelaajat = new Dictionary<Guid, Pelaaja>();
87
88    List<Guid> kuolleet = new List<Guid>();
89
90    Vector ruudunKoko = new Vector(1920, 1037);
91
92    DoubleMeter elamaLaskuri;
93    private Animation ukkelinKavely;
94
95    public override void Begin()
96    {
97        elamaLaskuri = new DoubleMeter(10);
98        elamaLaskuri.MaxValue = 10;
99        elamaLaskuri.LowerLimit += ElamaLoppui;
100
101        Camera.ZoomFactor = 1.2;
102        Camera.StayInLevel = true;
103        LuoKentta("kentta1");
104        LisaaNappaimet();
105        LuoKursori();
106        LuoTausta();
107        LuoRahaLaskuri();
108
109        KaynnistaKauppaAjastin();
110
111        yhteys = new NetworkConnection("Tasoloikka22");
112        yhteys.OnMessageReceive += UusiViesti;
113        yhteys.OnConnect += UusiPelaaja;
114        yhteys.OnDisconnect += PoistaPelaaja;
115        if (!yhteys.Connect("130.234.162.86", 3074))
116        {
117            MessageWindow mw = new MessageWindow("Yhdistäminen epäonnistui");
118            mw.Closed += delegate { Exit(); };
119            Add(mw);
120            return;
121        }
122        Exiting += yhteys.Close;
123
124        Timer pakettiajastin = new Timer();
125        pakettiajastin.Interval = 0.05;
126        pakettiajastin.Timeout += PaivitaPaketti;
127        pakettiajastin.Start();
128
129        Window.Width = 800;
130        Window.Height = 600;
131
132        //IsFullSlcreen = true;
133        IsMouseVisible = false;
134
135        LuoElamaLaskuri();
136
137        Camera.Follow(pelaaja);
138
139
140    }
141
142    protected override void Update(Time time)
143    {
144        foreach (var pari in muutPelaajat)
145        {
146            if (pari.Value.nopeus != 0.0)
147                pari.Value.Walk(pari.Value.nopeus);
148        }
149        base.Update(time);
150    }
151    /*   void LuoKauppa()
152       {
153
154           TileMap kauppa = TileMap.FromLevelAsset("kauppa");
155           kauppa.SetTileMethod('#', LisaaTaso);
156           kauppa.SetTileMethod('K', LisaaKauppaanMeno);
157           kauppa.SetTileMethod('*', LisaaViisiDollaria);
158           kauppa.SetTileMethod('N', LisaaPelaaja);
159           kauppa.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
160           Level.CreateBorders();
161           Level.Background.CreateGradient(Color.White, Color.SkyBlue);
162       }*/
163
164    void KaynnistaKauppaAjastin()
165    {
166        KauppaAjastin = new Timer();
167        KauppaAjastin.Interval = 0.1;
168        KauppaAjastin.Timeout += KauppaEPois;
169        KauppaAjastin.Start();
170    }
171    void LuoRahaLaskuri()
172    {
173        rahet = new IntMeter(0);
174
175        PiirraRahaLaskuri();
176    }
177    void LuoAseKursori()
178    {
179        cursor.Destroy();
180
181        asecursor = new GameObject(15, 15);
182        asecursor.Image = aseKursorinKuva;
183        Mouse.ListenMovement(0.0, KuunteleAseLiiketta, null);
184        Add(asecursor);
185    }
186    void LuoTausta()
187    {
188        GameObject alkutausta = new GameObject(ruudunKoko.X, ruudunKoko.Y / 2); //Screen.Width, Screen.Height/2
189        alkutausta.Image = alkuTausta;
190        Add(alkutausta, -3);
191        Layers[-3].RelativeTransition = new Vector(0.5, 0.0);
192    }
193    void KuunteleAseLiiketta(AnalogState hiirenTila)
194    {
195        asecursor.X = Mouse.PositionOnWorld.X;
196        asecursor.Y = Mouse.PositionOnWorld.Y;
197
198        Vector hiirenLiike = hiirenTila.MouseMovement;
199    }
200    void LuoKursori()
201    {
202        if (onAse != true)
203        {
204            cursor = new GameObject(10, 15);
205            cursor.Image = kursorinKuva;
206            Mouse.ListenMovement(0.1, KuunteleLiiketta, null);
207            Add(cursor);
208        }
209        else
210        {
211            LuoAseKursori();
212        }
213    }
214    void KuunteleLiiketta(AnalogState hiirenTila)
215    {
216        cursor.X = Mouse.PositionOnWorld.X;
217        cursor.Y = Mouse.PositionOnWorld.Y;
218
219        Vector hiirenLiike = hiirenTila.MouseMovement;
220    }
221    void PoisKaupasta(Vector paikka, double leveys, double korkeus)
222    {
223        poiskaupastapalikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
224        poiskaupastapalikka.Position = paikka;
225        poiskaupastapalikka.Color = Color.Black;
226        poiskaupastapalikka.Tag = "poiskaupastapalikka";
227        Add(poiskaupastapalikka);
228
229        E = new GameObject(20, 20);
230        E.Image = Ekuva;
231        E.X = poiskaupastapalikka.X;
232        E.Y = poiskaupastapalikka.Y + 150;
233        Add(E);
234    }
235    void LuoElamaLaskuri()
236    {
237       
238        ProgressBar elamaPalkki = new ProgressBar(150, 20);
239        elamaPalkki.X = -Window.Width / 2 + 150;
240        elamaPalkki.Y = Window.Height / 2 - 20;
241        elamaPalkki.BarColor = Color.Red;
242        elamaPalkki.BindTo(elamaLaskuri);
243        Add(elamaPalkki);
244    }
245    void ElamaLoppui()
246    {
247        pelaaja.Destroy();
248
249        yhteys.SendObject(new KuoliPaketti());
250    }
251
252    void UusiViesti(Guid id, string viesti)
253    {
254        if (kuolleet.Contains(id))
255        {
256            return;
257        }
258
259        if (!muutPelaajat.ContainsKey(id))
260        {
261            muutPelaajat.Add(id, LuoPelaaja());
262        }
263
264        try
265        {
266            Paketti paketti = yhteys.DeserializeFromString<Paketti>(viesti);
267            muutPelaajat[id].Position = new Vector(paketti.X, paketti.Y);
268            muutPelaajat[id].Velocity = new Vector(paketti.VX, paketti.VY);
269            muutPelaajat[id].nopeus = paketti.nopeus;
270
271
272            if (paketti.paikka == nykyinenPaikka)
273            {
274                muutPelaajat[id].IsVisible = true;
275                muutPelaajat[id].IgnoresCollisionResponse = false;
276            }
277            else
278            {
279                muutPelaajat[id].IsVisible = false;
280                muutPelaajat[id].IgnoresCollisionResponse = true;
281            }
282
283
284            return;
285        }
286        catch (Exception)
287        {
288
289        }
290
291        try
292        {
293            AmmusPaketti paketti = yhteys.DeserializeFromString<AmmusPaketti>(viesti);
294            if (paketti.paikka == nykyinenPaikka)
295            {
296                LuoAmmus(new Vector(paketti.X, paketti.Y), new Vector(paketti.VX, paketti.VY));
297            }
298            return;
299        }
300        catch (Exception)
301        {
302
303        }
304
305        try
306        {
307            KuoliPaketti paketti = yhteys.DeserializeFromString<KuoliPaketti>(viesti);
308            muutPelaajat[id].Destroy();
309            muutPelaajat.Remove(id);
310            kuolleet.Add(id);
311            return;
312        }
313        catch (Exception)
314        {
315
316        }
317
318        if (viesti.Length > 0)
319        {
320            MessageDisplay.Add(viesti);
321            TulkitseKomento(id, viesti);
322        }
323    }
324    void UusiPelaaja(Guid id)
325    {
326        MessageDisplay.Add("Uusi pelaaja yhdisti peliin.");
327        muutPelaajat.Add(id, LuoPelaaja());
328    }
329
330    void PoistaPelaaja(Guid id)
331    {
332        if (muutPelaajat.ContainsKey(id))
333        {
334            MessageDisplay.Add("Pelaaja poistui pelistä.");
335            muutPelaajat[id].Destroy();
336            muutPelaajat.Remove(id);
337        }
338    }
339    void LuoKentta(String nimi)
340    {
341        nykyinenPaikka = nimi;
342
343        TileMap kentta = TileMap.FromLevelAsset(nimi);
344        kentta.SetTileMethod('#', LisaaTaso);
345        kentta.SetTileMethod('K', LisaaKauppaanMeno);
346        kentta.SetTileMethod('*', LisaaViisiDollaria);
347        kentta.SetTileMethod('N', LisaaPelaaja);
348        kentta.SetTileMethod('S', LuoKauppaSeta);
349        kentta.SetTileMethod('P', PoisKaupasta);
350        //kentta.SetTileMethod('N', Pelasta);
351        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
352        Level.CreateBorders();
353        Gravity = new Vector(0, -1000);
354
355        if (nimi == "kauppa")
356        {
357            nykyinenPaikka = "kauppa" + RandomGen.NextInt(0, 99999);
358
359            LuoKauppaTausta();
360
361            PoiskaupastaAjastin = new Timer();
362            PoiskaupastaAjastin.Interval = 0.1;
363            PoiskaupastaAjastin.Timeout += EKaupastaPois;
364            PoiskaupastaAjastin.Start();
365        }
366        else
367        {
368            Level.Background.CreateGradient(Color.White, Color.SkyBlue);
369
370            KauppaAjastin = new Timer();
371            KauppaAjastin.Interval = 0.1;
372            KauppaAjastin.Timeout += KauppaEPois;
373            KauppaAjastin.Start();
374
375            /*
376            yhteys = new NetworkConnection("Tasoloikka22");
377            yhteys.OnMessageReceive += UusiViesti;
378            yhteys.OnConnect += UusiPelaaja;
379            yhteys.OnDisconnect += PoistaPelaaja;
380            if (!yhteys.Connect("130.234.162.86", 3074))
381            {
382                MessageWindow mw = new MessageWindow("Yhdistäminen epäonnistui");
383                mw.Closed += delegate { Exit(); };
384                Add(mw);
385                return;
386            }
387            Exiting += yhteys.Close;
388
389            Timer pakettiajastin = new Timer();
390            pakettiajastin.Interval = 0.05;
391            pakettiajastin.Timeout += PaivitaPaketti;
392            pakettiajastin.Start();
393            */
394        }
395    }
396    void EKaupastaPois()
397    {
398        if (Vector.Distance(pelaaja.Position, poiskaupastapalikka.Position) < 100)
399        {
400            KaupastaPois = true;
401            E.IsVisible = true;
402        }
403        else
404        {
405            KaupastaPois = false;
406            E.IsVisible = false;
407        }
408    }
409    void PoisKaupasta()
410    {
411        muutPelaajat.Clear();
412        ClearAll();
413        LuoKentta("kentta1");
414        LisaaNappaimet();
415        LuoTausta();
416        LuoKursori();
417        LuoElamaLaskuri();
418        PiirraRahaLaskuri();
419        //LuoKauppaTausta();
420        Camera.Follow(pelaaja);
421        Camera.ZoomFactor = 1.2;
422        Camera.StayInLevel = true;
423    }
424    void LuoKauppaSeta(Vector paikka, double leveys, double korkeus)
425    {
426        kauppaseta = new PlatformCharacter(75, 100);
427        kauppaseta.Position = paikka;
428        kauppaseta.Image = kauppeseta;
429        kauppaseta.Tag = "kauppesete";
430        Add(kauppaseta);
431
432        RandomMoverBrain tasoAivot = new RandomMoverBrain();
433        tasoAivot.Speed = 500;
434        kauppaseta.Brain = tasoAivot;
435    }
436    void Pelasta(Vector paikka, double leveys, double korkeus)
437    {
438        Add(pelaaja);
439        pelaaja.Position = paikka;
440    }
441
442    void LisaaKauppaanMeno(Vector paikka, double leveys, double korkeus)
443    {
444        KauppaanMeno = PhysicsObject.CreateStaticObject(leveys, korkeus);
445        KauppaanMeno.Position = paikka;
446        KauppaanMeno.Color = Color.Black;
447        KauppaanMeno.Tag = "Kauppaanmeno";
448        Add(KauppaanMeno);
449
450        E = new GameObject(20, 20);
451        E.Image = Ekuva;
452        E.X = KauppaanMeno.X;
453        E.Y = KauppaanMeno.Y + 150;
454        Add(E);
455    }
456
457    void KauppaEPois()
458    {
459        if (Vector.Distance(pelaaja.Position, KauppaanMeno.Position) < 100)
460        {
461            onKauppaE = true;
462            E.IsVisible = true;
463        }
464        else
465        {
466            onKauppaE = false;
467            E.IsVisible = false;
468        }
469    }
470    void LisaaTaso(Vector paikka, double leveys, double korkeus)
471    {
472        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
473        taso.Position = paikka;
474        taso.Color = Color.Green;
475        taso.Tag = "taso";
476        Add(taso);
477    }
478
479    void LisaaViisiDollaria(Vector paikka, double leveys, double korkeus)
480    {
481        PhysicsObject fivedollars = PhysicsObject.CreateStaticObject(60, 30);
482        fivedollars.IgnoresCollisionResponse = true;
483        fivedollars.Position = paikka;
484        fivedollars.Image = viisidollaria;
485        fivedollars.Tag = "5dollars";
486        Add(fivedollars);
487    }
488
489    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
490    {
491        pelaaja = pelaaja == null ? LuoPelaaja() : KopioiPelaaja(pelaaja);
492        pelaaja.Position = paikka;
493    }
494    Pelaaja KopioiPelaaja(Pelaaja vanha)
495    {
496        Pelaaja uusi = LuoPelaaja();
497        uusi.nopeus = vanha.nopeus;
498        return uusi;
499    }
500
501    Pelaaja LuoPelaaja()
502    {
503        ukkelinKavely = LoadAnimation("ukkeli");
504
505        Pelaaja pelaaja = new Pelaaja(75, 100);
506        pelaaja.Mass = 4.0;
507        pelaaja.Tag = "pelaaja";
508        pelaaja.Image = pelaajanKuva;
509        AddCollisionHandler(pelaaja, "5dollars", TormaaViiteenDollariin);
510        AddCollisionHandler(pelaaja, "satadollaria", TormaaSataanDollareihin);
511        //pelaaja.Animation = new Animation(ukkelinKavely);
512        pelaaja.AnimWalk = new Animation(ukkelinKavely);
513        pelaaja.AnimIdle = new Animation(pelaajanKuva);
514        Add(pelaaja);
515
516        return pelaaja;
517    }
518    void TormaaSataanDollareihin(PhysicsObject hahmo, PhysicsObject satadollaria)
519    {
520        rahet.Value += 100;
521        satadollaria.Destroy();
522    }
523    void LisaaNappaimet()
524    {
525        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
526        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
527
528        //Keyboard.Listen(Key.Left, ButtonState.Pressed, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
529        //Keyboard.Listen(Key.Right, ButtonState.Pressed, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
530
531        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta3, "Liikkuu vasemmalle", pelaaja, -nopeus);
532        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta3, "Liikkuu vasemmalle", pelaaja, nopeus);
533
534        //Keyboard.Listen(Key.Left, ButtonState.Pressed, Liikuta2, "Liikkuu vasemmalle", pelaaja, -nopeus);
535        //Keyboard.Listen(Key.Right, ButtonState.Pressed, Liikuta2, "Liikkuu vasemmalle", pelaaja, nopeus);
536
537        Keyboard.Listen(Key.Left, ButtonState.Released, Liikuta3, "Liikkuu vasemmalle", pelaaja, 0.0);
538        Keyboard.Listen(Key.Right, ButtonState.Released, Liikuta3, "Liikkuu vasemmalle", pelaaja, 0.0);
539
540        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
541
542        Keyboard.Listen(Key.E, ButtonState.Pressed, ENapit, "Rakennuksiin meno");
543
544        Keyboard.Listen(Key.T, ButtonState.Pressed, LahetaViesti, "Helou");
545
546        Mouse.Listen(MouseButton.Left, ButtonState.Released, Ammu, "oaisd", pelaaja);
547
548        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
549
550        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta3, "Pelaaja liikkuu vasemmalle", pelaaja, -nopeus);
551        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta3, "Pelaaja liikkuu oikealle", pelaaja, nopeus);
552        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
553
554        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
555    }
556    void ENapit()
557    {
558        if (onKauppaE == true)
559        {
560            Menekauppaan();
561            onKauppaE = false;
562        }
563        else if (KaupastaPois == true)
564        {
565            PoisKaupasta();
566        }
567    }
568    void Menekauppaan()
569    {
570        pelaaja.Destroy();
571        muutPelaajat.Clear();
572        ClearAll();
573        LuoKentta("kauppa");
574        LisaaNappaimet();
575        LuoKursori();
576        LuoElamaLaskuri();
577        PiirraRahaLaskuri();
578        //LuoKauppaTausta();
579        Camera.Follow(pelaaja);
580        Camera.ZoomFactor = 1.2;
581        Camera.StayInLevel = true;
582
583    }
584    void PiirraRahaLaskuri()
585    {
586        Label rahanaytto = new Label();
587        //Vector pos = pelaaja.Position + new Vector(250, 250);
588        Vector res = new Vector(250, 250);//Camera.WorldToScreen(pos);
589        rahanaytto.X = res.X;//Window.Left + 350;
590        rahanaytto.Y = res.Y;//Window.Top + 250;
591        rahanaytto.TextColor = Color.Black;
592        rahanaytto.Color = Color.White;
593        rahanaytto.IntFormatString = "Rahet: {0:D1}";
594        Add(rahanaytto);
595
596        rahanaytto.BindTo(rahet);
597        Add(rahanaytto);
598    }
599    void LuoKauppaTausta()
600    {
601        Level.Width -= 1400;
602
603        GameObject kauppatausta = new GameObject(ruudunKoko.X / 2, ruudunKoko.Y / 4); //Screen.Width, Screen.Height/2
604        kauppatausta.Image = kauppaTausta;
605        kauppatausta.Y = -Window.Height / 4;
606        Add(kauppatausta, -3);
607        Layers[-3].RelativeTransition = new Vector(0.5, 0.0);
608
609        PhysicsObject oikeaReuna = Level.CreateRightBorder();
610        //oikeaReuna.X = Window.Right - 300;
611        oikeaReuna.IsVisible = false;
612
613        PhysicsObject vasenReuna = Level.CreateLeftBorder();
614        //vasenReuna.X = Window.Left - 1600;
615        vasenReuna.IsVisible = false;
616
617        Level.Background.Color = new Color(249, 178, 52);
618
619    }
620    void Ammu(PlatformCharacter pelaaja)
621    {
622        if (!onAse || pelaaja.IsDestroyed)
623            return;
624
625        Vector suunta = (Mouse.PositionOnWorld - pelaaja.Position).Normalize();
626        Vector nopeus = suunta * 400;
627        Vector paikka = pelaaja.Position + suunta * RUUDUN_KOKO;
628        LuoOmaAmmus(paikka, nopeus);
629
630        AmmusPaketti paketti = new AmmusPaketti();
631        paketti.X = paikka.X;
632        paketti.Y = paikka.Y;
633        paketti.VX = nopeus.X;
634        paketti.VY = nopeus.Y;
635        paketti.paikka = nykyinenPaikka;
636        yhteys.SendObject(paketti);
637    }
638    void LuoAmmus(Vector paikka, Vector nopeus)
639    {
640        PhysicsObject Ammus = new PhysicsObject(10, 10);
641        Ammus.Position = paikka;
642        //Ammus.X = pelaaja.X + 50;
643        //Ammus.Y = pelaaja.Y;
644        Ammus.Velocity = nopeus;
645        Ammus.IgnoresGravity = true;
646        Ammus.LifetimeLeft = TimeSpan.FromSeconds(3);
647        Ammus.IgnoresCollisionResponse = true;
648        //Ammus.IgnoresCollisionWith(pelaaja);
649        Add(Ammus);
650
651        AddCollisionHandler(Ammus, "pelaaja", AmmusOsuuPelaajaan);
652
653        AddCollisionHandler(Ammus, "taso", AmmusOsuu);
654    }
655    void AmmusOsuuSetaan(PhysicsObject Ammus, PhysicsObject kohde)
656    {
657        Ammus.Destroy();
658
659        SetaRahet(12500, 12500);
660        SetaRahet(-12500, -12500);
661        SetaRahet(0, 1250);
662        SetaRahet(10000, 12500);
663
664        kauppaseta.Destroy();
665    }
666    void SetaRahet(double x, double y)
667    {
668        PhysicsObject satadollaria = new PhysicsObject(60, 30);
669        //fivedollars.IgnoresCollisionResponse = true;
670        satadollaria.Y = kauppaseta.Y + 10;
671        satadollaria.X = kauppaseta.X + 10;
672        satadollaria.Image = satadollariakuva;
673        satadollaria.Tag = "satadollaria";
674        Add(satadollaria);
675        satadollaria.Push(new Vector(x, y));
676    }
677    void LuoOmaAmmus(Vector paikka, Vector nopeus)
678    {
679        PhysicsObject Ammus = new PhysicsObject(10, 10);
680        Ammus.Position = paikka;
681        //Ammus.X = pelaaja.X + 50;
682        //Ammus.Y = pelaaja.Y;
683        Ammus.Velocity = nopeus;
684        Ammus.IgnoresGravity = true;
685        Ammus.LifetimeLeft = TimeSpan.FromSeconds(3);
686        Ammus.IgnoresCollisionResponse = true;
687        //Ammus.IgnoresCollisionWith(pelaaja);
688        Add(Ammus);
689
690        //AddCollisionHandler(Ammus, "pelaaja", AmmusOsuuPelaajaan);
691        AddCollisionHandler(Ammus, "kauppesete", AmmusOsuuSetaan);
692        AddCollisionHandler(Ammus, "taso", AmmusOsuu);
693    }
694
695    void AmmusOsuu(PhysicsObject Ammus, PhysicsObject kohde)
696    {
697        Ammus.Destroy();
698    }
699
700    void AmmusOsuuPelaajaan(PhysicsObject Ammus, PhysicsObject kohde)
701    {
702        //if (kohde is Pelaaja)
703        if (kohde == pelaaja)
704        {
705            elamaLaskuri.Value -= 1;
706        }
707    }
708
709    void LahetaViesti()
710    {
711        InputWindow kysymysIkkuna = new InputWindow("Lähetä Viesti");
712        kysymysIkkuna.TextEntered += ProcessInput;
713        Add(kysymysIkkuna);
714    }
715    void ProcessInput(InputWindow ikkuna)
716    {
717        string vastaus = ikkuna.InputBox.Text;
718        if (vastaus != "console")
719        {
720            MessageDisplay.Add(vastaus);
721            yhteys.SendMessage(vastaus);
722        }
723        else
724        {
725            LahetaConsoleViesti();
726        }
727    }
728    void LahetaConsoleViesti()
729    {
730        InputWindow ConsoleIkkuna = new InputWindow("CMD");
731        ConsoleIkkuna.TextEntered += CmdProcessInput;
732        Add(ConsoleIkkuna);
733    }
734    void CmdProcessInput(InputWindow ikkuna)
735    {
736        TulkitseKomento(yhteys.guid, ikkuna.InputBox.Text);
737        //yhteys.SendMessage(ikkuna.InputBox.Text);
738    }
739
740    Pelaaja HaePelaaja(Guid id)
741    {
742        if (muutPelaajat.ContainsKey(id))
743        {
744            return muutPelaajat[id];
745        }
746        return pelaaja;
747    }
748
749    void TulkitseKomento(Guid id, string vastaus)
750    {
751        char[] delimiterChars = { ' ' };
752        string[] komento = vastaus.Split(delimiterChars);
753        if (vastaus == "A-j")
754        {
755            LuoAj(id);
756        }
757        if (vastaus == "AjSkin")
758        {
759            LuoAjSkin(id);
760        }
761        if (vastaus == "Ase")
762        {
763            LuoAseKursori();
764            onAse = true;
765        }
766        if (vastaus == "VisibleCursor")
767        {
768            IsMouseVisible = true;
769        }
770        if (vastaus == "UnVisibleCursor")
771        {
772            IsMouseVisible = false;
773        }
774        if (komento[0] == "Gravity")
775        {
776            if (komento.Length >= 3)
777            {
778                double x, y;
779                try
780                {
781                    x = double.Parse(komento[1]);
782                    y = double.Parse(komento[2]);
783                    Gravitymuutos(x, y);
784                }
785                catch (Exception e)
786                {
787                    // ei onnistu
788                }
789            }
790        }
791    }
792    void LuoAjSkin(Guid id)
793    {
794        HaePelaaja(id).Image = Aajii;
795    }
796    void Gravitymuutos(double x, double y)
797    {
798        Gravity = new Vector(x, y);
799    }
800
801    void LuoAj(Guid id)
802    {
803        Pelaaja pelaaja = HaePelaaja(id);
804
805        PhysicsObject Aj = new PhysicsObject(50, 50);
806        Aj.Position = pelaaja.Position;
807        Aj.Image = Aajii;
808        Add(Aj);
809    }
810
811    void Liikuta3(Pelaaja hahmo, double nopeus)
812    {
813        hahmo.Walk(nopeus);
814        hahmonopeus = nopeus;
815        PaivitaPaketti();
816    }
817
818    void PaivitaPaketti()
819    {
820        Paketti paketti = new Paketti();
821        paketti.X = pelaaja.X;
822        paketti.Y = pelaaja.Y;
823        paketti.VX = pelaaja.Velocity.X;
824        paketti.VY = pelaaja.Velocity.Y;
825        paketti.nopeus = hahmonopeus;
826        paketti.paikka = nykyinenPaikka;
827
828        yhteys.SendObject(paketti);
829    }
830    void Hyppaa(Pelaaja hahmo, double nopeus)
831    {
832        hahmo.Jump(nopeus);
833    }
834
835    void TormaaViiteenDollariin(PhysicsObject hahmo, PhysicsObject fivedollars)
836    {
837        MessageDisplay.Add("Yo! U got some money!");
838        fivedollars.Destroy();
839    }
840}
Note: See TracBrowser for help on using the repository browser.