コード例 #1
0
        /// <summary>
        /// Recicla uma bala que é necessária para o jogo
        /// </summary>
        /// <param name="assetname">Nome da textura a utilizar</param>
        /// <param name="direcao">Direção do ecrã em que a bala se movimenta</param>
        /// <param name="origemBala">Entidade que originou a bala</param>
        /// <param name="direcaoBala">Tipo de bala - Em frente, cima ou baixo</param>
        /// <param name="parent">Turret que disparou a bala</param>
        /// <returns>Uma bala reciclada</returns>
        public static Bala addBala(string assetname, int direcao, OrigemBala origemBala, DireccaoBala direcaoBala, Defence parent = null)
        {
            balaTemp = balasMortas.First();
            if (assetname == "balaplayer")
            {
                balaTemp.image = balaplayer;
            }
            else if (assetname == "baladefesas")
            {
                balaTemp.image = baladefesas;
            }
            else
            {
                balaTemp.image = balainimigo;
            }

            balaTemp.parent = parent;

            vectorTemp.X           = 1f;
            vectorTemp.Y           = (float)balaTemp.image.Height / (float)balaTemp.image.Width;
            balaTemp.size          = vectorTemp;
            balaTemp.spriteEffects = direcao > 0 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
            balaTemp.direccao      = direcao;
            balaTemp.origemBala    = origemBala;
            balaTemp.direccaobala  = direcaoBala;
            balaTemp.direction     = Vector2.Zero;
            balasAtivas.Add(balaTemp);
            balasMortas.Remove(balaTemp);
            return(balaTemp);
        }
コード例 #2
0
 /// <summary>
 /// Construtor do Missil
 /// </summary>
 /// <param name="contents">Instância de ContenteManager</param>
 /// <param name="assetName">Nome da textura a utilizar</param>
 /// <param name="tipoMissil">Tipo de missil - simples ou teleguiado</param>
 /// <param name="direccao">Direção do ecrã em que o missil se desloca</param>
 /// <param name="origemBala">Entidade que originou o missil</param>
 /// <param name="alvo">Alvo a atingir</param>
 public Missil(ContentManager contents, string assetName, TipoMissil tipoMissil, int direccao, OrigemBala origemBala, FlyingEntity alvo = null)
     : base(contents, assetName)
 {
     base.spriteEffects  = direccao > 0 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
     this.tipoMissil     = tipoMissil;
     this.speed          = Camera.velocidadegeral * 5;
     this.speedInicial   = this.speed;
     this.aceleracao     = this.speed / 20;
     this.direccao       = direccao;
     this.alvo           = alvo;
     this.passouPeloAlvo = false;
     this.origemBala     = origemBala;
     this.EnableCollisions();
 }
コード例 #3
0
        /// <summary>
        ///Construtor da classe "Bala".
        ///É responsavável por todas as variáveis que definem uma bala
        /// </summary>
        /// <param name="contents">Instâcia de ContentManager</param>
        /// <param name="assetName">Nome da textura da bala</param>
        /// <param name="direccao">Direção do ecrã em que a bala se move</param>
        /// <param name="origemBala">Entidade que disparou a bala</param>
        /// <param name="direccaobala">Tipo de bala - frente, cima, baixo</param>
        /// <param name="parent">Turret que originou a bala</param>
        public Bala(ContentManager contents, string assetName, int direccao, OrigemBala origemBala, DireccaoBala direccaobala, Defence parent = null)
            : base(contents, assetName)
        {
            base.spriteEffects = direccao > 0 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
            this.speed         = Camera.velocidadegeral;
            this.direccaobala  = direccaobala;
            this.direccao      = direccao;
            this.origemBala    = origemBala;
            this.parent        = parent;
            direction          = Vector2.Zero;

            this.EnableCollisions();
            //else
            //{
            //    som.playTiroEnimigo(contents);
            //}
        }
コード例 #4
0
        /// <summary>
        /// Verifica a existência de colisões pixel a pixel
        /// </summary>
        /// <param name="cManager">Instância de ContentManager</param>
        /// <param name="scene">Instância de scene</param>
        /// <param name="sprite">Sprite a verificar</param>
        /// <param name="origemBala">Entidade que deu origem à bala</param>
        static public void Colision(ContentManager cManager, Scene scene, Sprite sprite, OrigemBala origemBala)
        {
            //Colisao com enimigos
            if (scene.Collides(sprite, out collided, out collisionPoint, scene.inimigos))
            {
                if (origemBala == OrigemBala.player)
                {
                    if (sprite is Missil)
                    {
                        Missil missil = (Missil)sprite;
                        missil.thrust.Destroy();
                        missil.Destroy();
                    }

                    //cria explosao
                    scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f));

                    if (collided is NPC)
                    {
                        NPC inimigo = (NPC)collided;
                        if (sprite is Missil)
                        {
                            scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.9f));
                            inimigo.Destroy();
                        }
                        else
                        {
                            inimigo.Vida--;
                        }
                    }

                    if (collided is Boss)
                    {
                        Boss boss = (Boss)collided;
                        if (sprite is Missil)
                        {
                            scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.9f));
                            boss.Vida -= 10;
                        }
                        else
                        {
                            boss.Vida--;
                        }
                    }

                    sprite.Destroy();
                }

                if (collided is Missil)
                {
                    Missil missil = (Missil)collided;
                    scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f));

                    if (missil.thrust != null)
                    {
                        missil.thrust.Destroy();
                    }
                    missil.Destroy();
                }
            }


            if (scene.Collides(sprite, out collided, out collisionPoint, scene.sprites))
            {
                if (collided is Cenario && sprite is Bala)
                {
                    scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f));
                }

                if (collided is Player)
                {
                    Player player = (Player)collided;
                    if (sprite is Missil)
                    {
                        Missil missil = (Missil)sprite;
                        missil.thrust.Destroy();
                        missil.Destroy();
                        player.Vida -= 2;
                        scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.4f));
                    }
                    else
                    {
                        player.Vida--;
                        scene.AddExplosao(new AnimatedSprite(cManager, "explosao", 9, 9, false, sprite.position, 0.2f));
                    }
                }

                if (!(collided is Bala))
                {
                    sprite.Destroy();
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Recicla um missil que é necessário para o jogo
        /// </summary>
        /// <param name="assetname">Textura do missil a utilizar</param>
        /// <param name="tipoMissil">Tipo de missil - inimigo ou jogador</param>
        /// <param name="direcao">Direção do ecrã em que o missil se move</param>
        /// <param name="origemBala">Entidade que originou o missil</param>
        /// <param name="alvo">Alvo do missil teleguiado</param>
        /// <returns>Missil reciclado</returns>
        public static Missil addMissil(string assetname, TipoMissil tipoMissil, int direcao, OrigemBala origemBala, FlyingEntity alvo = null)
        {
            missilTemp = misseisMortos.First();
            if (assetname == "missilPlayer")
            {
                missilTemp.image = missilplayer;
            }
            else
            {
                missilTemp.image = missilinimigo;
            }
            vectorTemp.X             = 1f;
            vectorTemp.Y             = (float)missilTemp.image.Height / (float)missilTemp.image.Width;
            missilTemp.size          = vectorTemp;
            missilTemp.spriteEffects = direcao > 0 ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
            missilTemp.tipoMissil    = tipoMissil;
            missilTemp.direccao      = direcao;
            missilTemp.alvo          = alvo;
            missilTemp.origemBala    = origemBala;

            misseisAtivos.Add(missilTemp);
            misseisMortos.Remove(missilTemp);
            return(missilTemp);
        }