예제 #1
0
    public void SetProjectileSpecialParameters(ProjectileSpecialParameters specialParameters)
    {
        projectileSpecialParameters =
            new ProjectileSpecialParameters(
                new ShipSpeedModifier(specialParameters.GetSpeedModifier),
                new ProjectilePiercingParameters(specialParameters.GetPiercingParameters),
                new ProjectileSkeweringParameters(specialParameters.GetSkeweringParameters),
                specialParameters.GetExplosionParameters,
                new SmokeZoneParameters(specialParameters.GetSmokeZoneParameters),
                new SlowingZoneParameters(specialParameters.GetSlowingZoneParameters));

        projectileSpecialParameters.SetRelatedProjectile(this);
    }
예제 #2
0
 public void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
 {
 }
예제 #3
0
    /// <summary>
    /// Used to receive the attack from the inputed source
    /// </summary>
    /// <param name="attackSource">The attack source that touched this attack receiver</param>
    /// <param name="attackParameters">The parameters of the received attack</param>
    public virtual void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
    {
        if (relatedShip.IsLifeProtected)
        {
            return;
        }

        relatedShip.LfManager.Damage(damagesParameters.GetDamageAmount, damagesParameters.GetRecoveringTime, damagesParameters.GetRecoveringType);

        #region Damage Feedback
        DamageSourceRelativePosition damageSourceRelativePosition = DamageSourceRelativePosition.Right;

        if (damageSource != null)
        {
            Vector3 attackSourceRelativePos = (damageSource.GetDamageSourcePosition - transform.position).normalized;
            Vector3 selfDirection           = relatedShip.GetShipVelocity;
            if (Vector3.Dot(attackSourceRelativePos, selfDirection.GetLeftOrthogonalVectorXZ()) > 0)
            {
                damageSourceRelativePosition = DamageSourceRelativePosition.Left;
            }
        }
        else
        {
            int random = Random.Range(0, 2);
            if (random == 1)
            {
                damageSourceRelativePosition = DamageSourceRelativePosition.Left;
            }
        }

        relatedShip.StartDamageShipAnim(damagesParameters.GetDamageAmount, damageSourceRelativePosition);
        #endregion

        if (projSpecialParameters != null)
        {
            if (projSpecialParameters.GetSpeedModifier != null)
            {
                relatedShip.ShipMvt.StartNewSpeedModifier(projSpecialParameters.GetSpeedModifier);
            }

            if (projSpecialParameters.GetSkeweringParameters.Skewering)
            {
                relatedShip.SetCurrentSkeweringProjectile(projSpecialParameters.GetSkeweringParameters.GetSourceProjectile);
            }
        }
    }
예제 #4
0
 public void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
 {
     lifeManager.Damage(damagesParameters.GetDamageAmount, damagesParameters.GetRecoveringTime, damagesParameters.GetRecoveringType);
 }
예제 #5
0
 public override void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters)
 {
     if (damageSource.GetDamageTag == AttackTag.Player)
     {
         if (!GameManager.gameManager.CinematicMng.CinematicProcessing)
         {
             IntroControler dialogue = dialoguesToLaunchOnFleeingEnemyHitByShot[Random.Range(0, dialoguesToLaunchOnFleeingEnemyHitByShot.Length)];
             dialogue.PlayCinematic();
         }
     }
 }
예제 #6
0
 public override void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameter, ProjectileSpecialParameters projSpecialParameterss)
 {
     if (!GameManager.gameManager.Won && GameManager.gameManager.StartedFight)
     {
         base.ReceiveDamage(damageSource, damagesParameter, projSpecialParameterss);
     }
 }
예제 #7
0
 /// <summary>
 /// Commence un tir sur cet équipement
 /// </summary>
 /// <param name="shootParameters">Paramètres du tir</param>
 /// <param name="aimPos">Position visée</param>
 public void Shoot(ShootParameters shootParameters, Vector3 aimPos, bool lockPosition, ProjectileSpecialParameters projectileSpecialParameters)
 {
     foreach (ShootOrigin shootOrigin in shootOrigins)
     {
         shootOrigin.SetProjectileSpecialParameters(projectileSpecialParameters);
         shootOrigin.StartShooting(shootParameters, aimPos, lockPosition);
     }
 }
예제 #8
0
 public void SetProjectileSpecialParameters(ProjectileSpecialParameters projSpecialParameters)
 {
     projectileSpecialParameters = projSpecialParameters;
 }