source: 2012/23/JimB/FPS/FPS/FPS/FPS/FPS.cs @ 2898

Revision 2898, 20.3 KB checked in by jijoback, 7 years ago (diff)

Noin, nyt fullscreen korjattu, hp mittarit liikkuvat mukana

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8/// <summary>
9/// Pelaajan luokka -> Pelihahmon asetuksia voi lisätä tänne.
10/// </summary>
11class PeliUkko : PhysicsObject
12{
13    public IntMeter Elamat; //Antaa PeliUkko luokalle mittarin nimellä elmät.
14    public Explosion ViimeisinRajahdys = null; //Estää monen räjähdyksen tulemisen samaan aikaan bugin takia.
15    public bool aseValmiina = true; //->Ei supersarjatulta.
16    public bool naattiValmiina = true; //->Ei naattispämmiä
17    public PeliUkko(double leveys, double korkeus) //double = desimaaliluku
18        : base(leveys, korkeus) //ottaa PeliUkon koon desimaaleina
19    {
20        Elamat = new IntMeter(50, 0, 100); //Default HP, Min HP, Max HP
21    }
22}
23public class FPS : PhysicsGame
24{
25
26    PeliUkko pelaaja1, pelaaja2, pelaaja3, pelaaja4; //määrittää pelaajat attribuuteiksi jotta niitä voi käyttää kaikissa aliohjelmissa
27    double ampumisnopeus = 450; //<-
28    ExplosionSystem NaattiPoks; //räjähdyksen partikkelit
29    IntMeter Pelaajat = new IntMeter(4); //Hengissä olevien pelaajien lukumäärä.
30    ExplosionSystem veri; //veripartikkelit
31    Dictionary<Color, Label> PlayerX = new Dictionary<Color, Label>();
32    bool onkoPeliFullS = false; //fullscreen, 0 false, 1 true.
33    void ResetPelaajat() //resetoi pelaajien määrän neljään uuden pelin aloituksessa.
34    {
35        Pelaajat = new IntMeter(4);
36    }
37
38    /// <summary>
39    /// ylikirjoittaa oletus  PhysicsGame:n Begin metodin
40    /// </summary>
41    public override void Begin()
42    {
43        NaattiPoks = new ExplosionSystem(LoadImage("naattishard"), 1500); //määritetään räjähdyksen partikkelikuva ja niiden maximi määrä
44        Add(NaattiPoks); //lisätään räjähdys peliin (ei näkyviin, mutta niin että se on olemassa)
45        if (onkoPeliFullS == false)
46        {
47            SetWindowSize(1024, 768, false); //false=ei Full, true = full
48        }
49
50        PlayerX.Add(Color.Blue, new Label());
51        PlayerX.Add(Color.Yellow, new Label());
52        PlayerX.Add(Color.Red, new Label());
53        PlayerX.Add(Color.Purple, new Label());
54
55        LuoKentta(); //kutsutaan kentänluonti
56        Veri(); //kutsutaan veripartikkelit
57
58        MediaPlayer.Play(RandomGen.SelectOne<string>("music\\M1","music\\M2", "music\\M3", "music\\M4", "music\\M5", "music\\M6", "music\\M7", "music\\M8"));
59        MediaPlayer.Volume = 0.5;
60
61        MessageDisplay.Add("    F1 - Näytä Ohjaimet"); //lisätään viestilaatikkoon ohje.
62        Keyboard.Listen(Key.F1, ButtonState.Pressed, Ohjeet, "Näytä ohjaimet"); //Kutsutaan Ohjeet
63        Keyboard.Listen(Key.F11, ButtonState.Pressed, Fullscreen,null);
64        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
65    }
66
67    void Fullscreen()
68    {
69        if (onkoPeliFullS) // jos on koko ruutu
70        {
71            SetWindowSize(1024, 768, false); onkoPeliFullS = false;
72            Camera.ZoomToLevel();
73            UpdateAllHP();
74            return;
75        }
76        int w = Microsoft.Xna.Framework.Graphics.GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
77        int h = Microsoft.Xna.Framework.Graphics.GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
78        SetWindowSize(w, h, true); onkoPeliFullS = true;
79        Camera.ZoomToLevel();
80        UpdateAllHP();
81    }
82    void LuoHPNaytot()
83    {
84        LuoHPNaytto(Screen.Left + 10, Screen.Top - 10, pelaaja1.Elamat, Color.Blue);
85        LuoHPNaytto(Screen.Right - 10, Screen.Top - 10, pelaaja2.Elamat, Color.Yellow);
86        LuoHPNaytto(Screen.Right - 10, Screen.Bottom + 10, pelaaja3.Elamat, Color.Red);
87        LuoHPNaytto(Screen.Left + 10, Screen.Bottom + 10, pelaaja4.Elamat, Color.Purple);
88
89    }
90    void UpdateAllHP()
91    {
92        UpdateHP(Screen.Left + 10 , Screen.Top - 10, Color.Blue);
93        UpdateHP(Screen.Right - 10, Screen.Top - 10, Color.Yellow);
94        UpdateHP(Screen.Right - 10, Screen.Bottom + 10, Color.Red);
95        UpdateHP(Screen.Left + 10, Screen.Bottom + 10, Color.Purple);
96
97    }
98    void Ohjeet()
99    {
100        MessageDisplay.Add("Pelaaja 1 - WASD - Q ampuminen - E Kranaatti");
101        MessageDisplay.Add("Pelaaja 2 - Nuolet - Numpad0 ampuminen - CTRL Kranaatti");
102        MessageDisplay.Add("Pelaaja 3 - TFGH - R ampuminen - Y Kranaatti");
103        MessageDisplay.Add("Pelaaja 4 - IJKL - U ampuminen - O Kranaatti");
104        MessageDisplay.Add("F11 -> Fullscreen/Windowed");
105    }
106    void LuoKentta()
107    {
108        TileMap ruudut = TileMap.FromLevelAsset("level"); //ladataan kenttä level.txt tiedostosta.
109        ruudut.SetTileMethod('=', LuoPalikka); //säädetään mitä mikäkin merkki tekstissä on pelissä
110        ruudut.SetTileMethod('s', LuoPalikka); //                                                 |
111        ruudut.SetTileMethod('1', LuoPelaaja1);//                                                 |
112        ruudut.SetTileMethod('2', LuoPelaaja2);//                                                 |
113        ruudut.SetTileMethod('3', LuoPelaaja3);//                                                 |
114        ruudut.SetTileMethod('4', LuoPelaaja4);//                                                 V
115        ruudut.Execute(25, 25); //Kutsutaan ruudut 25x25 kokoisina.
116
117        Level.Background.Image = LoadImage("bg"); //Määritetään taustakuva.
118        Camera.ZoomToLevel();
119        LuoHPNaytot();
120    }
121    void LuoPalikka(Vector paikka, double leveys, double korkeus)
122    {
123        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus); //staattinen objekti->ei liiku.
124        palikka.Position = paikka;
125        palikka.Image = LoadImage("seinaTekstuuri");
126        palikka.Tag = "Seinä";
127        palikka.Restitution = 0; //kimmoisuus 0
128        palikka.Shape = Shape.Rectangle;
129        palikka.Color = Color.White;
130        Add(palikka);
131    }
132    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
133    {
134
135        pelaaja1 = LuoPelaaja(paikka);
136        pelaaja1.Image = LoadImage("Pelaaja1");
137        pelaaja1.CollisionIgnoreGroup = 1; //omat luodit eivät osu -> tämän pelaajan luodit ovat collisonignoregroup 1:ssä myös + kranaatit.
138        //LuoHPNaytto(Level.Left - 125, Level.Top + 100, pelaaja1.Elamat, Color.Blue);
139
140        //Kontrollit:
141        Keyboard.Listen(Key.A, ButtonState.Down, Liike, null, pelaaja1, new Vector(-200, 0));
142        Keyboard.Listen(Key.A, ButtonState.Released, Liike, null, pelaaja1, new Vector(0, 0));
143        Keyboard.Listen(Key.D, ButtonState.Down, Liike, null, pelaaja1, new Vector(200, 0));
144        Keyboard.Listen(Key.D, ButtonState.Released, Liike, null, pelaaja1, new Vector(0, 0));
145        Keyboard.Listen(Key.S, ButtonState.Down, Liike, null, pelaaja1, new Vector(0, -200));
146        Keyboard.Listen(Key.S, ButtonState.Released, Liike, null, pelaaja1, new Vector(0, 0));
147        Keyboard.Listen(Key.W, ButtonState.Down, Liike, null, pelaaja1, new Vector(0, 200));
148        Keyboard.Listen(Key.W, ButtonState.Released, Liike, null, pelaaja1, new Vector(0, 0));
149        Keyboard.Listen(Key.Q, ButtonState.Down, Ammu, null, pelaaja1);
150        Keyboard.Listen(Key.E, ButtonState.Down, Heita, null, pelaaja1);
151    }
152    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
153    {
154
155        pelaaja2 = LuoPelaaja(paikka);
156        pelaaja2.Image = LoadImage("Pelaaja2");
157        pelaaja2.CollisionIgnoreGroup = 2;
158        //LuoHPNaytto(Level.Right + 125, Level.Top + 100, pelaaja2.Elamat, Color.Yellow);
159
160
161        Keyboard.Listen(Key.Left, ButtonState.Down, Liike, null, pelaaja2, new Vector(-200, 0));
162        Keyboard.Listen(Key.Left, ButtonState.Released, Liike, null, pelaaja2, new Vector(0, 0));
163        Keyboard.Listen(Key.Right, ButtonState.Down, Liike, null, pelaaja2, new Vector(200, 0));
164        Keyboard.Listen(Key.Right, ButtonState.Released, Liike, null, pelaaja2, new Vector(0, 0));
165        Keyboard.Listen(Key.Down, ButtonState.Down, Liike, null, pelaaja2, new Vector(0, -200));
166        Keyboard.Listen(Key.Down, ButtonState.Released, Liike, null, pelaaja2, new Vector(0, 0));
167        Keyboard.Listen(Key.Up, ButtonState.Down, Liike, null, pelaaja2, new Vector(0, 200));
168        Keyboard.Listen(Key.Up, ButtonState.Released, Liike, null, pelaaja2, new Vector(0, 0));
169        Keyboard.Listen(Key.NumPad0, ButtonState.Down, Ammu, null, pelaaja2);
170        Keyboard.Listen(Key.RightControl, ButtonState.Down, Heita, null, pelaaja2);
171    }
172    void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
173    {
174
175        pelaaja3 = LuoPelaaja(paikka);
176        pelaaja3.Image = LoadImage("Pelaaja3");
177        pelaaja3.CollisionIgnoreGroup = 3;
178        //LuoHPNaytto(Level.Right + 125, Level.Bottom - 100, pelaaja3.Elamat, Color.Red);
179
180
181        Keyboard.Listen(Key.F, ButtonState.Down, Liike, null, pelaaja3, new Vector(-200, 0));
182        Keyboard.Listen(Key.F, ButtonState.Released, Liike, null, pelaaja3, new Vector(0, 0));
183        Keyboard.Listen(Key.H, ButtonState.Down, Liike, null, pelaaja3, new Vector(200, 0));
184        Keyboard.Listen(Key.H, ButtonState.Released, Liike, null, pelaaja3, new Vector(0, 0));
185        Keyboard.Listen(Key.G, ButtonState.Down, Liike, null, pelaaja3, new Vector(0, -200));
186        Keyboard.Listen(Key.G, ButtonState.Released, Liike, null, pelaaja3, new Vector(0, 0));
187        Keyboard.Listen(Key.T, ButtonState.Down, Liike, null, pelaaja3, new Vector(0, 200));
188        Keyboard.Listen(Key.T, ButtonState.Released, Liike, null, pelaaja3, new Vector(0, 0));
189        Keyboard.Listen(Key.R, ButtonState.Down, Ammu, null, pelaaja3);
190        Keyboard.Listen(Key.Y, ButtonState.Down, Heita, null, pelaaja3);
191    }
192    void LuoPelaaja4(Vector paikka, double leveys, double korkeus)
193    {
194
195        pelaaja4 = LuoPelaaja(paikka);
196        pelaaja4.Image = LoadImage("Pelaaja4");
197        pelaaja4.CollisionIgnoreGroup = 4;
198        //LuoHPNaytto(Level.Left - 125, Level.Bottom - 100, pelaaja4.Elamat, Color.Purple);
199
200
201
202
203        Keyboard.Listen(Key.J, ButtonState.Down, Liike, null, pelaaja4, new Vector(-200, 0));
204        Keyboard.Listen(Key.J, ButtonState.Released, Liike, null, pelaaja4, new Vector(0, 0));
205        Keyboard.Listen(Key.L, ButtonState.Down, Liike, null, pelaaja4, new Vector(200, 0));
206        Keyboard.Listen(Key.L, ButtonState.Released, Liike, null, pelaaja4, new Vector(0, 0));
207        Keyboard.Listen(Key.K, ButtonState.Down, Liike, null, pelaaja4, new Vector(0, -200));
208        Keyboard.Listen(Key.K, ButtonState.Released, Liike, null, pelaaja4, new Vector(0, 0));
209        Keyboard.Listen(Key.I, ButtonState.Down, Liike, null, pelaaja4, new Vector(0, 200));
210        Keyboard.Listen(Key.I, ButtonState.Released, Liike, null, pelaaja4, new Vector(0, 0));
211        Keyboard.Listen(Key.U, ButtonState.Down, Ammu, null, pelaaja4);
212        Keyboard.Listen(Key.O, ButtonState.Down, Heita, null, pelaaja4);
213    }
214    PeliUkko LuoPelaaja(Vector paikka)
215    {
216        PeliUkko pelaaja = new PeliUkko(18, 18);
217        pelaaja.Restitution = 0;
218        pelaaja.AngularDamping = Double.Epsilon; //pelaaja ei pyöri törmätessään kulmiin, 0 ei toimi, joten Double.Epsilon on pienin mahdollinen luku.
219        pelaaja.Position = paikka; //Vector paikka -> katsoo ketä pelaajaa luodaan ja pistää sen sen pelaajan sijaintiin level.txt:ssä.
220        pelaaja.Shape = Shape.Circle; //pelaaja on pallo tekstuurin alla :P
221        Add(pelaaja);
222        AddCollisionHandler<PeliUkko, PhysicsObject>(pelaaja, "bullet", Osuma); //jos pelaajaan osuu luoti, kutsutaan osuma, joka vähentää pelaajan HP.
223
224        return pelaaja; //palautetaan luotu pelaaja LuoPelaajaX:lle
225
226    }
227    void KukaKuoli(PeliUkko ukko)
228    {
229        int PelaajanNumero = 1337; //noh, niin :D
230        Pelaajat.Value -= 1; //vähennetään yksi pelaajien lukumäärästä kun joku kuolee. Tämä siksi että peli tietää katsoa kuka on viimeinen hengissä ja ilmoittaa voitosta.
231        if (ukko == pelaaja1)
232        {
233            MessageDisplay.Add("Pelaaja 1 kuoli!"); //Jos ukko (tässä tapauksessa kuolija -> määritetty kuolintapahtumassa) on pelaaja 1, Se ilmoitetaan.
234        }
235        else if (ukko == pelaaja2)
236        {
237            MessageDisplay.Add("Pelaaja 2 kuoli!");
238        }
239        else if (ukko == pelaaja3)
240        {
241            MessageDisplay.Add("Pelaaja 3 kuoli!");
242        }
243        else if (ukko == pelaaja4)
244        {
245            MessageDisplay.Add("Pelaaja 4 kuoli!");
246        }
247        else MessageDisplay.Add("WTF?"); //älkää kysykö ;)
248
249        //jos pelaajia on 1 tai vähemmän...
250        if (Pelaajat.Value <= 1)
251        {
252            if (!pelaaja1.IsDestroyed) PelaajanNumero = 1;  //tarkistetaa onko pelaaja "EI" tuhottu->
253            else if (!pelaaja2.IsDestroyed) PelaajanNumero = 2; //else tarkistetaan onko se pelaaja 2.
254            else if (!pelaaja3.IsDestroyed) PelaajanNumero = 3;
255            else if (!pelaaja4.IsDestroyed) PelaajanNumero = 4;
256            Label Voitto = new Label("Pelaaja" + PelaajanNumero + "Voittaa!"); //teksti keskelle ruutua. "Pelaaja" + Sen pelaajan numero joka ei ollut tuhottu + "Voittaa!"
257            Voitto.TextColor = Color.Crimson;
258            Add(Voitto); //lisätään se viellä näytölle.
259            Timer.SingleShot(2.5, delegate { UusiPeli(); }); //ajastin ennenkuin promptataan uuden pelin alkua. delegate -> saadaan ns. aliohjelma ilman aliohjelmaa, yhdelle riville.
260
261        }
262    }
263    void UusiPeli()
264    {
265        MultiSelectWindow UusiPeli = new MultiSelectWindow("Pelataanko uusi peli?", "Kyllä", "Ei");
266        UusiPeli.ItemSelected += PainettiinValikonNappia; //mitä painettiin? Lisätään muuttujaan monesko nappi. 1 nappi = 0. 2 nappi on 1.
267        Add(UusiPeli);
268    }
269    void PainettiinValikonNappia(int valinta)
270    {
271        switch (valinta)
272        {
273            case 0: //Jos muuttuja oli 0, eli ensimmäinen nappi, aloitetaan uusi peli
274                ClearAll(); //puhdistetaan "melkein kaikki
275                ResetPelaajat(); //nollataan pelaajat takaisin neljään, koska muuten heitä olisi enään 1
276                Begin(); //aloitetaan peli
277                break;
278            case 1: //poistutaan jos toinen nappi.
279                Exit();
280                break;
281        }
282    }
283    void LuoHPNaytto(double x, double y, IntMeter sidottavaMittari, Color taustavari)
284    {
285        Label hp = PlayerX[taustavari];
286        hp.Color = taustavari;
287        hp.BindTo(sidottavaMittari);
288        hp.Position = new Vector(x, y);
289        Add(hp);
290    }
291    void UpdateHP(double x, double y, Color taustavari)
292    {
293        Label hp = PlayerX[taustavari];
294        hp.Position = new Vector (x,y);
295    }
296    void Osuma(PeliUkko tormaaja, PhysicsObject ammus)
297    {
298        tormaaja.Elamat.Value -= 3; //kun tormaaja (pelaaja) osuu luotiin, vähennetään 3hp.
299        if (tormaaja.Elamat.Value <= 0)
300        {
301            tormaaja.Destroy(); //jos hp 0 tai pienempi, tuhotaan pelaaja
302            KukaKuoli(tormaaja); //ja tarkistetaan kuka kuoli +ilmoitetaan siitä
303        }
304        veri.AddEffect(tormaaja.Position, 15); //osumasta lentää myös verta, pelaajan kohdalta.
305        ammus.Destroy(); //tuhotaan panos. (ei hylsyjä ;___;)
306    }
307    void Veri()
308    {
309        veri = new ExplosionSystem(LoadImage("blood"), 500); //luodaan veri "räjähdys" ja ladataan kuva, säädetään maksimi määrä partikkeleita(verta)
310        veri.MaxScale = 1.5;
311        veri.MaxLifetime = 0.4; //ei veri lennä liian kauas.
312        veri.MaxVelocity = 0.8; //eikä liian nopeaa ettei se ehdi liian kauas.
313        Add(veri); //lisätään se.
314
315    }
316    void Ammu(PeliUkko pelaaja)
317    {
318        if (pelaaja.IsDestroyed) return; //Ei kuolleet saa ampua!
319        if (pelaaja.aseValmiina) //jos aseella ei ole cd menossa
320        {
321            PhysicsObject bullet = new PhysicsObject(LoadImage("bullet"));
322            Add(bullet);
323            bullet.Tag = "bullet";
324            bullet.Restitution = 0; //eipä kimpoile luoti, bugien varalta tämä tässä, ei mitään järkevää syytä ottaa poiskaan.
325            AddCollisionHandler(bullet, "Seinä", CollisionHandler.DestroyObject); //luoti katoaa maagisesti seinään osuessaan.
326            bullet.Position = pelaaja.Position;
327            bullet.Angle = pelaaja.Angle; //luoti lähtee pelaajan katsomaaan suuntaan.
328            bullet.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup; //pistetään luoti samaan collision ignoreen kuin sen ampunut pelaaja, ettei ammuta itseään.
329            Vector suunta = Vector.FromLengthAndAngle(ampumisnopeus, pelaaja.Angle + Angle.RightAngle); //käännellään luotia viellä että sen tekstuurikin on oikenpäin.
330            bullet.Hit(suunta); //tökkäistään luoti liikkeelle.
331            SoundEffect pistolshot = LoadSoundEffect("pistol1"); //mahtava ääni!!
332            pistolshot.Play(); //aivan uskomaton ;D
333            pelaaja.aseValmiina = false; //pistetään cd käyntiin
334            Timer.SingleShot(0.4, delegate { pelaaja.aseValmiina = true; }); //poistetaan cd
335        }
336    }
337    void Heita(PeliUkko pelaaja)
338    {
339        if (pelaaja.IsDestroyed) return;
340        if (pelaaja.naattiValmiina) //jos ei ole naatti cd active.
341        {
342            PhysicsObject naatti = new PhysicsObject(LoadImage("naatti"));
343            Add(naatti);
344            naatti.Tag = "naatti";
345            naatti.Restitution = 0.8; //naatti saa kimpoilla vähän
346            naatti.Position = pelaaja.Position;
347            naatti.Angle = pelaaja.Angle;
348            naatti.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
349            Vector suunta = Vector.FromLengthAndAngle(ampumisnopeus, pelaaja.Angle + Angle.RightAngle);
350            naatti.Hit(suunta);
351            SoundEffect naattiheitto = LoadSoundEffect("Naattiheitto");
352            naattiheitto.Play();
353            pelaaja.naattiValmiina = false;
354            Timer.SingleShot(1.5, delegate { KranaattiRajahti(naatti.X, naatti.Y, 375); naatti.Destroy(); }); //räjähdys<-aika heitosta
355            Timer.SingleShot(8, delegate { pelaaja.naattiValmiina = true; });
356        }
357
358    }
359    void KranaattiRajahti(double x, double y, int numberOfParticles)
360    {
361        NaattiPoks.X = x; //pistetään räjähdysefetki naatin sijaintiin
362        NaattiPoks.Y = y; 
363        NaattiPoks.MinScale = 1; //partikkeleiden min/max koot
364        NaattiPoks.MaxScale = 10;
365        NaattiPoks.AddEffect(x, y, numberOfParticles);
366        Explosion e = new Explosion(65); //pakko käyttää myös tätä koska ExplosionSystemistä ei saa paineaaltoa.
367        Add(e);
368        e.Position = new Vector(x, y);
369
370        //IPhysicsObject = Kohde johon paineaalto osuu. vektori suuntaa ei tarvita missään, mutta se on silti pakollinen. sitten kutsutaan shockhit näillä arvoilla.
371        e.ShockwaveReachesObject += delegate(IPhysicsObject kohde, Vector suunta) { ShockHit(kohde, suunta, e); }; 
372    }
373    void ShockHit(IPhysicsObject kohde, Vector suunta, Explosion rajahdys)
374    {
375        if (!(kohde is PeliUkko)) return; //jos paineaalto osuu johonkin muuhun kuin pelaajaan, poistutaan.
376        PeliUkko ukko = kohde as PeliUkko; //jos kohde oli pelaajaluokkaa, jatketaan.
377        if (ukko.ViimeisinRajahdys == rajahdys) return; //tarkistetaan että tämä paineealto ei ole osunut ukkoon juuri äsken. Peli bugasi niin että paineaalto osu monta kertaa.
378
379        double etaisyys = Vector.Distance(ukko.Position, rajahdys.Position); //katsotaan kuinka kaukana pelaaja on räjähdyksen keskipisteestä. Pistetään tämä desimaalilukuna muutujaan
380        ukko.Elamat.Value -= (int)Math.Floor(1500 / etaisyys); //pyöristetään etäisyys kokonaislukuihin, int ei ota desimaaleja. Base dmg räjähdyksestä 1500. se jaetaan etäisyydellä.
381        if (ukko.Elamat.Value <= 0)
382        {
383            ukko.Destroy();
384            KukaKuoli(ukko);
385        }
386        ukko.ViimeisinRajahdys = rajahdys; //pistetään viimeisin räjähdys olemaan juuri tämä räjähdys (paineaalto)
387    }
388    void Liike(PeliUkko pelaaja, Vector nopeus)
389    {
390        pelaaja.Velocity = nopeus; //nopeus=tässä käytetään osoittamaan pelaajan liikkumissuuntaa, joten pelaajan tekstuuri kääntyy liikesuuntaan.
391        if (nopeus.Magnitude != 0) //jos pelaaja ei liiku
392        {
393            pelaaja.Angle = nopeus.Angle - Angle.RightAngle; //ei käännetä pelaajaa takaisin oletussuuntaan.
394        }
395    }
396}
Note: See TracBrowser for help on using the repository browser.