示例#1
0
    /// <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();
        }
    }
示例#2
0
    /// <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++;
        }
    }
示例#3
0
        /// <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);
        }
示例#4
0
    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();
    }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#7
0
 void osui(IPhysicsObject omena)
 {
     omena.Destroy();
 }