/// <summary> /// Pelaajan törmäykset toteutetaan tässä. /// </summary> /// <param name="pelaaja">IPhysicsObject joka törmää.</param> /// <param name="kohde">IPhysicsObject johon törmätään.</param> private void PelaajaTormaa(IPhysicsObject pelaaja, IPhysicsObject kohde) { if (kohde.Tag == "vesi" && (pelaaja.Bottom - kohde.Top) < 10) //if (pelaaja.Bottom < vesi.Y + vesi.Height / 2 + 20 || pelaaja.Y < vedenpinta) { if (pelaaja != null) { pelaaja.Destroy(); //Remove(pelaaja); MessageDisplay.Add(pelaaja.Tag + " kuoli!"); PeliPaattyy(); } } if (kohde.Tag == "kotka") { pelaaja.Destroy(); //Remove(pelaaja); MessageDisplay.Add("Kotka söi " + pelaaja.Tag + ":n!!!"); PeliPaattyy(); } if (kohde.Tag == "tnt") { //if (kohde.Y < 0) return; //Explosion rajahdys = new Explosion(kohde.Width); //rajahdys.Position = kohde.Position; int pMax = 200; Explosion rajahdys = new Explosion(pMax); rajahdys.Position = new Vector(kohde.X, kohde.Y); //Add(rajahdys); rajahdys.Speed = 500.0; rajahdys.Force = 10000; kohde.Destroy(); pelaaja.Hit(new Vector(0, 10000)); } //Kaksinpeliin alla oleva... if (pelaaja.Y < Camera.Y - KENTAN_KORKEUS / 2 && pelaajat.Count > 1) { //Remove(pelaaja); pelaaja.Destroy(); MessageDisplay.Add(pelaaja.Tag + " kuoli!"); PeliPaattyy(); } }
/// <summary> /// Aliohjelma joka käsittelee pelaajan törmäyksen oikeat kuvat sisältävän /// fysiikkaolion kanssa: kasvattaa pelaajan pisteitä yhdellä /// </summary> /// <param name="pelaaja">pelaaja joka törmää</param> /// <param name="kirjain">kirjain johon pelaaja törmää</param> void KirjainPoimittu(IPhysicsObject pelaaja, IPhysicsObject kirjain) { pelaajanPisteet.Value++; kirjain.Destroy(); if (pelaajanPisteet.Value == kenttienOikeatKerattavat[tasoMissaOllaan].Length) { MultiSelectWindow valintaIkkuna = new MultiSelectWindow("Correct! The word was indeed " + kenttaSanat[tasoMissaOllaan] + ". Click OK to move forward", "OK"); valintaIkkuna.ItemSelected += new Action <int>(KenttaValiStop); IsMouseVisible = true; Add(valintaIkkuna); foreach (PhysicsObject apuope in apuopeLista) { Explosion rajahdys = new Explosion(300); rajahdys.Position = apuope.Position; Add(rajahdys); apuope.Destroy(); } foreach (PhysicsObject kerattavaKama in kerattavaKamaLista) { Explosion rajahdys = new Explosion(50); rajahdys.Position = kerattavaKama.Position; Add(rajahdys); kerattavaKama.Destroy(); } tasoMissaOllaan++; } }
/// <summary> /// Apualiohjelma vihollisen räjäyttämiseksi ja poistamiseksi /// </summary> /// <param name="olio">olio joka possautetaan</param> /// <param name="useShock">Käyteäänkö shokkiaaltoa</param> /// <param name="kerroin">minkä kokoinen verrattuna olioon</param> private void Possauta(IPhysicsObject olio, bool useShock = false, double kerroin = 10) { Tarise(200); Explosion rajahdys = new Explosion(olio.Width * kerroin); rajahdys.Position = olio.Position; rajahdys.UseShockWave = useShock; Add(rajahdys); olio.Destroy(); Remove(olio); }
void KranuOsui(IPhysicsObject rajahdyksenKohde, Vector v) { bool x = RandomGen.NextBool(); if (x) { LuoVihollinen(new Vector(Level.Right - 40, Level.Bottom + 70), 30, 30); } else { LuoVihollinen(new Vector(Level.Left + 40, Level.Bottom + 70), 30, 30); } LuoAivot(); rajahdyksenKohde.Destroy(); }
/// <summary> /// Apualiohjelma hävittämiseksi ja savun luomiseksi samaan paikaan /// </summary> /// <param name="olio">olio savutetaan</param> /// <param name="useShock">Käytetäänkö shokkiaaltoa</param> /// <param name="kerroin">minkä kokoinen verrattuna olioon</param> private void Savuta(IPhysicsObject olio, bool useShock = false, double kerroin = 10) { Smoke savu = new Smoke(); savu.MaximumLifetime = TimeSpan.FromSeconds(3); savu.Position = olio.Position; Add(savu); olio.Destroy(); // savu.FadeOut(5); // ei tuhoa oliota efektin jälkeen Timer timer = new Timer(); timer.Interval = 3; timer.Start(); timer.Timeout += delegate() { savu.Destroy(); timer.Stop(); }; SoitaAani(savunAani); }
/// <summary> /// Apualiohjelma hävittämiseksi ja savun luomiseksi samaan paikaan /// </summary> /// <param name="olio">olio savutetaan</param> /// <param name="useShock">Käytetäänkö shokkiaaltoa</param> /// <param name="kerroin">minkä kokoinen verrattuna olioon</param> private void Liekita(IPhysicsObject olio, bool useShock = false, double kerroin = 10) { Flame liekki = new Flame(pallonKuva2); liekki.MaximumLifetime = TimeSpan.FromSeconds(3); liekki.Position = olio.Position; liekki.MinVelocity = 5; liekki.MaxVelocity = 30; Add(liekki); olio.Destroy(); // liekki.FadeOut(5); Timer timer = new Timer(); timer.Interval = 3; timer.Start(); timer.Timeout += delegate() { liekki.Destroy(); timer.Stop(); }; SoitaAani(liekinAani); }
void osui(IPhysicsObject omena) { omena.Destroy(); }