/// <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); //} }
/// <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); }