示例#1
0
    /// <summary>
    /// Rakentaja, jossa pelaajan tiedot asetetaan.
    /// </summary>
    /// <param name="peli">Pelin viite.</param>
    /// <param name="width">Pelaajan korkeus.</param>
    /// <param name="height">Pelaajan leveys.</param>
    /// <param name="tiedot">Pelaajan tiedot.</param>
    public Pelaaja(LegendOfPallo peli, double width, double height, PelaajanTiedot tiedot) : base(peli, width, height)
    {
        Hp        = tiedot.MaxHp;
        CurrentHp = Math.Min(Math.Max(1, tiedot.CurrentHp), tiedot.MaxHp);
        Tavarat.LisaaTavara((int)TavaraTyypit.Pommit, (byte)tiedot.Pommit);
        Tavarat.LisaaTavara((int)TavaraTyypit.Elama, (byte)tiedot.Elamat);
        Image = Animaatiot.pelaajanKuvaN;

        Width                = 56;
        Height               = 56;
        Shape                = Shape.Ellipse;
        Color                = Color.Red;
        Restitution          = 0.0;
        CanRotate            = false;
        MaxVelocity          = 160;
        LinearDamping        = 0.7;
        IsUpdated            = true;
        Tag                  = "pelaaja";
        CollisionIgnoreGroup = (int)Types.Player;

        AmpumisAjastin          = new Timer();
        AmpumisAjastin.Interval = AmpumisVali;

        KranaattiAjastin          = new Timer();
        KranaattiAjastin.Interval = KranaatinHeittoVali;
    }
示例#2
0
    public VihollinenSeuraajaKummitus(LegendOfPallo peli, double width, double height) : base(peli, 48, 44)
    {
        Score = 40;
        List <string> tagit = new List <string>()
        {
            "pelaaja"
        };

        Color = Color.OrangeRed;

        FollowerBrain aivot = new FollowerBrain();

        aivot.TagsToFollow = tagit;
        aivot.DistanceFar  = 896;
        aivot.Speed        = 90;

        Brain = aivot;

        IgnoresCollisionResponse = true;
        Animation     = new Animation(Animaatiot.GhostImages);
        Animation.FPS = 3;
        Animation.Start();
        Mass          = 0.3;
        Hp            = 5;
        LinearDamping = 0.7;

        LinearDamping = 0.7;
        CanRotate     = false;

        Tag = "immuuniLuodeille";
        Hp  = 5;
    }
示例#3
0
    public VihollinenSplortsi(LegendOfPallo peli, Vector paikka, double leveys, double korkeus) : base(peli, leveys, korkeus)
    {
        Score    = 1000;
        Hp       = 150;
        Tag      = "vihollinen";
        Position = paikka;

        Width  = Animaatiot.SplortsiImages[0].Width * 4;
        Height = Animaatiot.SplortsiImages[0].Height * 4;

        aivot                        = new LabyrinthWandererBrain(64);
        aivot.Speed                  = 300.0;
        aivot.LabyrinthWallTag       = "seina";
        aivot.DirectionChangeTimeout = 0.5;

        Mass          = 10000;
        Brain         = aivot;
        LinearDamping = 0.7;
        CanRotate     = false;

        Animation = new Animation(Animaatiot.SplortsiImages);
        Animation.Start();
        Animation.FPS = 5;

        Tavarat.LisaaTavara((int)TavaraTyypit.Avaimet, 1);
        Tavarat.LisaaTavara((int)TavaraTyypit.Raha, 10);
        Tavarat.LisaaTavara((int)TavaraTyypit.Sydan, 10);

        LuoSplortsilleKanuunaTavallinen(peli, new Vector(96, 96), 1, true);
        LuoSplortsilleKanuunaTavallinen(peli, new Vector(-96, -96), 3, true);
        LuoSplortsilleKanuunaTavallinen(peli, new Vector(-96, 96), 2, false);
        LuoSplortsilleKanuunaTavallinen(peli, new Vector(96, -96), 4, false);
        kanuunaHakeutuva = LuoSplortsilleKanuunaHakeutuva(peli);
    }
    public VihollinenSeuraaja(LegendOfPallo peli, double width, double height) : base(peli, width, height)
    {
        Score = 60;
        List <string> tagit = new List <string>()
        {
            "pelaaja"
        };

        Color = Color.OrangeRed;

        aivot2                        = new LabyrinthWandererBrain(64);
        aivot2.Speed                  = 150.0;
        aivot2.LabyrinthWallTag       = "seina";
        aivot2.DirectionChangeTimeout = 2.0;

        aivot              = new FollowerBrain();
        aivot.DistanceFar  = 500;
        aivot.Speed        = 200.0;
        aivot.TagsToFollow = tagit;
        aivot.FarBrain     = aivot2;

        Mass          = 0.3;
        Brain         = aivot;
        CanRotate     = false;
        LinearDamping = 0.7;
        IsUpdated     = true;

        AsetaTiedot();

        KuolemaAjastin          = new Timer();
        KuolemaAjastin.Interval = 10;
        KuolemaAjastin.Timeout += HeraaEloon;
    }
    public VihollinenHumanoidi(LegendOfPallo peli, Vector paikka, double width, double height) : base(peli, width, height)
    {
        Score       = 60;
        spawnPaikka = paikka;
        Image       = Animaatiot.HumanoidImage;
        MakeStatic();
        CanRotate = false;
        Tag       = "vihollinen";
        IsVisible = false;
        IsUpdated = true;
        IgnoresCollisionResponse = true;

        ajastin          = new Timer();
        ajastin.Interval = 7;
        ajastin.Timeout += KatoaNakyvista;

        ase           = new Kanuuna <Ammus>(Peli, 1, 1);
        ase.IsVisible = false;
        ase.Tag       = "neutraali";
        ase.Position  = new Vector(0, 0);
        ase.IgnoresCollisionResponse = true;
        ase.ammus                += Peli.AmmusLuoti1Malli;
        ase.AmpumisKohde          = Peli.pelaaja;
        ase.MaxEtaisyysKohteeseen = 1200;
        Add(ase);

        KatoaNakyvista();
    }
示例#6
0
 /// <summary>
 /// Luo peliolion
 /// </summary>
 /// <param name="p">Peli, johon olio luodaan</param>
 /// <param name="width"></param>
 /// <param name="height"></param>
 public Peliolio(LegendOfPallo p, double leveys, double korkeus) : base(leveys, korkeus)
 {
     Peli    = p;
     Tavarat = new TavaraLista(this);
     Hp      = 1;
     Score   = 20;
 }
示例#7
0
 /// <summary>
 /// Asennetaan piikit
 /// </summary>
 /// <param name="p">Pelin viite.</param>
 /// <param name="paikka">Piikin paikka maailmassa.</param>
 public Piikit(LegendOfPallo p, Vector paikka) : base(64, 64)
 {
     peli      = p;
     IsUpdated = true;
     MakeStatic();
     Animation = animaatio;
     IgnoresCollisionResponse = true;
     Position = paikka;
 }
示例#8
0
 /// <summary>
 /// Päivittää UI:n koon näytöllä (esim. resoluution vaihtamisen takia voidaan suorittaa tämä aliohjelma)
 /// </summary>
 /// <param name="p"></param>
 public static void PaivitaKoko(LegendOfPallo p)
 {
     if (Paalla)
     {
         Piilota();
         Luo(p, hp);
     }
     else
     {
         throw new Exception("UI hasn't been created yet.");
     }
 }
    public VihollinenAmpuja(LegendOfPallo peli, double leveys, double korkeus) : base(peli, leveys, korkeus)
    {
        Score = 80;
        List <string> tagit = new List <string>()
        {
            "pelaaja"
        };

        Color = Color.MediumPurple;

        LabyrinthWandererBrain aivot2 = new LabyrinthWandererBrain(64);

        aivot2.Speed                  = 150.0;
        aivot2.LabyrinthWallTag       = "seina";
        aivot2.DirectionChangeTimeout = 2.0;

        aivot              = new FollowerBrain();
        aivot.DistanceFar  = 500;
        aivot.Speed        = 200.0;
        aivot.TagsToFollow = tagit;
        aivot.FarBrain     = aivot2;

        aivot.StopWhenTargetClose = true;
        aivot.DistanceClose       = 400;

        Mass          = 0.3;
        Hp            = 10;
        Brain         = aivot;
        CanRotate     = false;
        LinearDamping = 0.7;
        IsUpdated     = true;
        Tag           = "vihollinen";

        Animation     = new Animation(Animaatiot.DemonImages);
        Animation.FPS = 4;
        Animation.Start();

        kanuuna               = new Kanuuna <Ammus>(Peli, 10, 10);
        kanuuna.IsVisible     = false;
        kanuuna.AloitaTyhjana = false;
        kanuuna.AsetaKanuuna(0.2, 5.0, 3);
        kanuuna.Tag                      = "neutraali";
        kanuuna.AmpumisKohde             = null;
        kanuuna.MaxEtaisyysKohteeseen    = 500;
        kanuuna.IgnoresCollisionResponse = true;
        kanuuna.Position                 = new Vector(0, 0);
        kanuuna.ammus                   += Peli.AmmusKimpoileva1Malli;
        Add(kanuuna);

        Tavarat.LisaaTavara((int)TavaraTyypit.Raha, 1);
    }
示例#10
0
    /// <summary>
    /// Splörtsin kanuuna, joka ampuu "tavallisia" ammuksia pelaajaa kohti.
    /// </summary>
    /// <param name="peli">Pelin viite.</param>
    /// <param name="paikka">Kanuunan paikka suhteessa Splörtsin keskipisteeseen.</param>
    /// <param name="latausAika">Kuinka monen sekunnin päästä kanuuna alkaa ampumaan.</param>
    /// <param name="ennakoi">Ennakoiko kanuuna pelaajan liikettä ja ampuu kohtaan, johon pelaaja on kulkemassa.</param>
    private void LuoSplortsilleKanuunaTavallinen(LegendOfPallo peli, Vector paikka, double latausAika, bool ennakoi)
    {
        Kanuuna <Ammus> kanuuna = new Kanuuna <Ammus>(peli, 10, 10);

        kanuuna.ammus                   += Peli.AmmusLuoti1Malli;
        kanuuna.Ennakoi                  = ennakoi;
        kanuuna.IsVisible                = false;
        kanuuna.IgnoresExplosions        = false;
        kanuuna.IgnoresCollisionResponse = true;
        kanuuna.Tag = "neutraali";
        kanuuna.AsetaKanuuna(4, latausAika, short.MaxValue);
        kanuuna.AmpumisKohde = Peli.pelaaja;
        kanuuna.Position     = paikka;
        Add(kanuuna);
    }
示例#11
0
    /// <summary>
    /// Splortsin kanuuna, jonka luodit hakeutuvat pelaajaa kohti.
    /// </summary>
    /// <param name="peli">Pelin viite.</param>
    /// <returns>Kanuunan viite.</returns>
    private Kanuuna <Ammus> LuoSplortsilleKanuunaHakeutuva(LegendOfPallo peli)
    {
        Kanuuna <Ammus> kanuuna5 = new Kanuuna <Ammus>(peli, 10, 10);

        kanuuna5.ammus            += Peli.AmmusHakeutuva1Malli;
        kanuuna5.IsVisible         = false;
        kanuuna5.IgnoresExplosions = false;
        kanuuna5.AsetaKanuuna(1, 20, 6);
        kanuuna5.AmpumisKohde             = Peli.pelaaja;
        kanuuna5.Tag                      = "neutraali";
        kanuuna5.IgnoresCollisionResponse = true;
        Add(kanuuna5);
        kanuuna5.Position = new Vector(0, 0);

        return(kanuuna5);
    }
    public Kimpoilija(LegendOfPallo peli, double width, double height) : base(peli, width, height)
    {
        Score     = 20;
        IsUpdated = true;

        Shape         = Shape.Rectangle;
        Color         = Color.Red;
        Mass          = 0.1;
        Restitution   = 1.0;
        CanRotate     = false;
        MaxVelocity   = 500;
        LinearDamping = 1.0;
        Tag           = "vihollinen";

        //Olio aloittaa liikkumisen satunnaiseen suuntaan.
        Hit(RandomGen.NextVector(500, 500));

        Animation     = new Animation(Animaatiot.BatImages);
        Animation.FPS = 8;
        Animation.Start();
    }
示例#13
0
    public VihollinenKuljeksiva(LegendOfPallo peli, double width, double height) : base(peli, width, height)
    {
        Score = 20;
        Color = Color.BloodRed;
        LabyrinthWandererBrain aivot = new LabyrinthWandererBrain(64);

        aivot.Speed                  = 300.0;
        aivot.LabyrinthWallTag       = "seina";
        aivot.DirectionChangeTimeout = 0.5;

        Mass          = 0.3;
        Hp            = 1;
        Brain         = aivot;
        LinearDamping = 0.7;
        CanRotate     = false;
        Tag           = "vihollinen";

        Animation = new Animation(Animaatiot.SplotsImages);
        Animation.Start();
        Animation.FPS = 5;
    }
示例#14
0
    /// <summary>
    /// Luo ja asentaa HUD:n ruudulle.
    /// </summary>
    /// <param name="p">Pelin viite</param>
    /// <param name="sydantenMaara">Sydänten lukumäärä ruudulla</param>
    public static void Luo(LegendOfPallo p, int sydantenMaara)
    {
        Paalla = true;

        if (sydantenMaara >= 0) //Jos olio ei ole tuhoutumaton
        {
            hp = sydantenMaara;
        }


        HorizontalLayout asettelu = new HorizontalLayout();

        asettelu.Spacing      = 8;
        asettelu.LeftPadding  = 8;
        asettelu.RightPadding = 8;

        HorizontalLayout asetteluB = new HorizontalLayout();

        asetteluB.Spacing      = 8;
        asetteluB.LeftPadding  = 8;
        asetteluB.RightPadding = 48;


        sydamet       = new Widget(asettelu);
        sydamet.Color = Color.Black;
        p.Add(sydamet);

        pommit  = LuoTavaranWidget(asettelu, Animaatiot.BombPickupImage, pommiLaskuri);
        avaimet = LuoTavaranWidget(asettelu, Animaatiot.KeyPickupImage, avainLaskuri);
        kolikot = LuoTavaranWidget(asettelu, Animaatiot.CoinPickupImage, kolikkoLaskuri);
        elamat  = LuoTavaranWidget(asettelu, Animaatiot.LivesImage, elamaLaskuri);
        score   = LuoTavaranWidget(asetteluB, "Score: ", pisteLaskuri);
        level   = LuoTavaranWidget(asetteluB, "Level: ", kenttaLaskuri);

        p.Add(pommit);
        p.Add(avaimet);
        p.Add(kolikot);
        p.Add(elamat);
        p.Add(score);
        p.Add(level);

        for (int i = 0; i < hp; ++i)
        {
            Widget sydanKuva = new Widget(32, 32);
            sydanKuva.Image = Animaatiot.HeartPickupImage;
            healthBar.Add(sydanKuva);
            sydamet.Add(healthBar[i]);
        }


        sydamet.Bottom = Game.Screen.Bottom + 8;
        sydamet.X      = Game.Screen.Center.X;

        elamat.Left    = Game.Screen.Left;
        elamat.Bottom  = Game.Screen.Bottom + 8;
        pommit.Left    = elamat.Right;
        pommit.Bottom  = elamat.Bottom;
        avaimet.Left   = pommit.Right;
        avaimet.Bottom = elamat.Bottom;
        kolikot.Left   = avaimet.Right;
        kolikot.Bottom = elamat.Bottom;

        score.Right  = Game.Screen.Right;
        score.Bottom = elamat.Bottom;
        level.Right  = score.Left - 64;
        level.Bottom = elamat.Bottom;
    }
示例#15
0
 static void Main()
 {
     using (var game = new LegendOfPallo())
         game.Run();
 }
示例#16
0
 public Ase(LegendOfPallo peli, string kohde) : base(0, 0)
 {
     oliot = peli.GetObjectsWithTag(kohde);
 }