/// <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); } }
/// <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); }
/// <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); }
/// <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); }
/// <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; }
/// <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); }
//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); }
//Luo tyhjän laatikon peliruutuun private void LuoLaatikkoTyhja(Vector paikka, double leveys, double korkeus) { Peliolio laatikko = LaatikkoMalli(paikka, leveys, korkeus); }
public TavaraLista(Peliolio peliolio) { omistaja = peliolio; tavarat = new byte[(int)TavaraTyypit.MaxTavarat, 2]; }
/// <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); }
/// <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); }
/// <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); }
/// <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; } }