コード例 #1
0
 /// <summary>
 /// Suoritetaan kun peliolioon osuu ammus (CollisionHandlerin avulla).
 /// </summary>
 /// <param name="p">Peliolion viite</param>
 /// <param name="a">Ammuksen viite</param>
 private void PeliolioonOsuiAmmus(Peliolio p, Ammus a)
 {
     if (a.Ampuja.Tag != p.Tag && (string)p.Tag != "neutraali" && (string)p.Tag != "immuuniLuodeille")
     {
         a.Destroy();
         p.OtaOsumaa(1);
     }
 }
コード例 #2
0
    /// <summary>
    /// Suoritetaan kun tietty paineaalto osuu peliolioon.
    /// </summary>
    /// <param name="olio">Peliolion viite.</param>
    /// <param name="shokki">Räjähdyksen voimavektori (kai?)</param>
    private void PaineaaltoOsuuPeliolioon(IPhysicsObject olio, Vector shokki)
    {
        Peliolio p = olio as Peliolio;

        if (p == null)
        {
            return;
        }

        p.OtaOsumaa(5);
    }
コード例 #3
0
    /// <summary>
    /// Luo pommeilla rikkuvan seinän peliruutuun.
    /// </summary>
    private void LuoRikkuvaSeina(Vector paikka, double leveys, double korkeus)
    {
        Peliolio seina = new Peliolio(this, leveys, korkeus);

        seina.MakeStatic();
        seina.Hp                   = 1;
        seina.Position             = paikka;
        seina.Color                = Color.Charcoal;
        seina.Image                = Animaatiot.seinaRikkuvaImage;
        seina.Tag                  = "seina";
        seina.CollisionIgnoreGroup = (int)Types.Wall;
        AddCollisionHandler <Peliolio, Ammus>(seina, "ammus", CollisionHandler.DestroyTarget);
        Add(seina);
    }
コード例 #4
0
    /// <summary>
    /// Luo ja lisää peliin laatikon ja palauttaa sen osoittimen
    /// </summary>
    /// <param name="paikka"></param>
    /// <param name="leveys"></param>
    /// <param name="korkeus"></param>
    /// <returns>Laatikon viite.</returns>
    private Peliolio LaatikkoMalli(Vector paikka, double leveys, double korkeus)
    {
        Peliolio laatikko = new Peliolio(this, leveys, korkeus);

        laatikko.Hp             = 5;
        laatikko.Position       = paikka;
        laatikko.LinearDamping  = 0.7;
        laatikko.AngularDamping = 0.7;
        laatikko.CanRotate      = false;
        laatikko.Mass           = 5;
        laatikko.Tag            = "seina";
        laatikko.Image          = Animaatiot.laatikkoImage;
        AddCollisionHandler <Peliolio, Ammus>(laatikko, "ammus", PeliolioonOsuiAmmus);
        AddCollisionHandler <Peliolio, Ammus>(laatikko, "ammus", CollisionHandler.DestroyTarget);
        Add(laatikko);
        return(laatikko);
    }
コード例 #5
0
 /// <summary>
 /// Tiedot, jotka ovat samat useilla peliolioilla. Asettaa collisionin ammuksia kohtaan ja
 /// halutessa myös olion paikan toisena parametrina.
 /// </summary>
 /// <param name="p">Peliolion viite.</param>
 /// <param name="paikka">Peliolion paikka.</param>
 private void PeliolionPerustiedot(Peliolio p, Vector paikka)
 {
     PeliolionPerustiedot(p);
     p.Position = paikka;
 }
コード例 #6
0
 /// <summary>
 /// Tiedot, jotka ovat samat useilla pelioliolla.
 /// </summary>
 /// <param name="p">Peliolion viite.</param>
 private void PeliolionPerustiedot(Peliolio p)
 {
     AddCollisionHandler <Peliolio, Ammus>(p, "ammus", PeliolioonOsuiAmmus);
     AddCollisionHandler <Peliolio, Ammus>(p, "ammusKimpoileva", PeliolioonOsuiAmmus);
 }
コード例 #7
0
    //Luo laatikon peliruutuun, jonka sisällä on avain
    private void LuoLaatikkoAvain(Vector paikka, double leveys, double korkeus)
    {
        Peliolio laatikko = LaatikkoMalli(paikka, leveys, korkeus);

        laatikko.Tavarat.LisaaTavara((int)TavaraTyypit.Avaimet, 1);
    }
コード例 #8
0
 //Luo tyhjän laatikon peliruutuun
 private void LuoLaatikkoTyhja(Vector paikka, double leveys, double korkeus)
 {
     Peliolio laatikko = LaatikkoMalli(paikka, leveys, korkeus);
 }
コード例 #9
0
 public TavaraLista(Peliolio peliolio)
 {
     omistaja = peliolio;
     tavarat = new byte[(int)TavaraTyypit.MaxTavarat, 2];
 }
コード例 #10
0
 /// <summary>
 /// Teleporttaa peliolion teleportin uloskäyntipaikkaan.
 /// </summary>
 /// <param name="t">Teleportin viite.</param>
 /// <param name="o">Peliolion viite.</param>
 private void Teleporttaa(Teleportti t, Peliolio o)
 {
     t.Teleporttaa(o);
 }
コード例 #11
0
 /// <summary>
 /// Suoritetaan kun peliolioon osuu toinen peliolio. (CollisionHandlerin avulla).
 /// Seuraa välitön kuolema.
 /// </summary>
 /// <param name="p">Peliolion 1 viite.</param>
 /// <param name="o">Peliolion 2 viite.</param>
 private void PeliolioonOsuiPeliolioValitonKuolema(Peliolio p, Peliolio o)
 {
     o.OtaOsumaa(o.CurrentHp);
 }
コード例 #12
0
 /// <summary>
 /// Suoritetaan kun peliolioon osuu toinen peliolio (CollisionHandlerin avulla).
 /// </summary>
 /// <param name="p">Peliolion 1 viite</param>
 /// <param name="o">Peliolion 2 viite</param>
 private void PeliolioonOsuiPeliolio(Peliolio p, Peliolio o)
 {
     p.OtaOsumaa(1);
 }
コード例 #13
0
    /// <summary>
    /// Määrittelee mitä tapahtuu kun peliolio (joko pelaaja tai vihollinen) koskettaa eri tavaroita. Tavarat erotellaan niiden
    /// Tägin avulla toisistaan.
    /// </summary>
    /// <param name="tavara">Tavaran viite</param>
    /// <param name="p">Pelaajan viite</param>
    private void NostaTavara(PhysicsObject tavara, Peliolio p)
    {
        switch (tavara.Tag)
        {
        case "pommiNostettava":

            if (p.Tavarat.TavaranMaara((int)TavaraTyypit.Pommit) < 10)
            {
                p.Tavarat.LisaaTavara((int)TavaraTyypit.Pommit, 1);
                tavara.Destroy();
            }
            break;

        case "avainNostettava":
            if ((string)p.Tag != "pelaaja")
            {
                PhysicsObject dumpKey = new PhysicsObject(32, 44);
                dumpKey.Image    = Animaatiot.KeyPickupImage;
                dumpKey.Position = new Vector(16, -8);
                dumpKey.IgnoresCollisionResponse = true;
                p.Add(dumpKey);
            }
            p.Tavarat.LisaaTavara((int)TavaraTyypit.Avaimet, 1);
            tavara.Destroy();
            break;

        case "kolikkoNostettava":
            p.Tavarat.LisaaTavara((int)TavaraTyypit.Raha, 1);
            tavara.Destroy();
            break;

        case "sydanNostettava":
            if ((string)p.Tag == "pelaaja")
            {
                if (p.AnnaElamaa(1))
                {
                    tavara.Destroy();
                }
            }
            else
            {
                p.Tavarat.LisaaTavara((int)TavaraTyypit.Sydan, 1);
                tavara.Destroy();
            }
            break;

        case "potioniNostettava":
            if ((string)p.Tag == "pelaaja")
            {
                if (p.AnnaElamaa(100))
                {
                    tavara.Destroy();
                }
            }
            else
            {
                p.Tavarat.LisaaTavara((int)TavaraTyypit.Potioni, 1);
                tavara.Destroy();
            }
            break;

        case "pommiAareton":
            p.Tavarat.LisaaTavara((int)TavaraTyypit.Pommit, Byte.MaxValue);
            break;

        case "elamaNostettava":
            p.Tavarat.LisaaTavara((int)TavaraTyypit.Elama, 1);
            tavara.Destroy();
            break;

        default:
            break;
        }
    }