RiftMayhem/Assets/Scripts/Networking/NetworkMultipleProjectileChainReaction.cs

68 lines
2.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NetworkMultipleProjectileChainReaction : NetworkAbilityChainReaction
{
public List<NetworkedProjectile> projectiles = new List<NetworkedProjectile>();
public bool delayedRelease = false;
public float delay = 0f;
public bool oneByOne = false;
public float releaseInterval = 0f;
ProjectileAbility projectileAbility;
public override void ExecuteAbilityChainReaction(Taggable owner, List<Taggable> targets)
{
StartCoroutine(ReleaseProjectiles(owner, delayedRelease, delay, oneByOne, releaseInterval));
/* projectileAbility = (ProjectileAbility)ability;
foreach (NetworkedProjectile projectile in projectiles)
{
projectile.speed = projectileAbility.projectileSpeed;
projectile.ownerTag = owner;
projectile.ability = projectileAbility;
projectile.lifeSpan = projectileAbility.lifeSpan;
projectile.canPierce = projectileAbility.canPierce;
projectile.canHitSelf = projectileAbility.canHitSelf;
projectile.gameObject.SetActive(true);
projectile.Init();
}*/
}
IEnumerator ReleaseProjectiles(Taggable owner,bool delayedRelease = false, float delay = 0f, bool oneByOne = true, float releaseInterval = 0f)
{
if (delayedRelease) yield return new WaitForSeconds(delay);
projectileAbility = (ProjectileAbility)ability;
foreach (NetworkedProjectile projectile in projectiles)
{
projectile.speed = projectileAbility.projectileSpeed;
projectile.ownerTag = owner;
projectile.ability = projectileAbility;
projectile.lifeSpan = projectileAbility.lifeSpan;
projectile.canPierce = projectileAbility.canPierce;
projectile.canHitSelf = projectileAbility.canHitSelf;
projectile.speedOverLifetime = projectileAbility.speedOverLifetime;
projectile.useSpeedCurve = projectileAbility.useSpeedCurve;
projectile.enableCurving = projectileAbility.enableCurving;
projectile.curveAxis = projectileAbility.curveAxis;
projectile.curveStrength = projectileAbility.curveStrength;
projectile.curveAmplitude = projectileAbility.curveAmplitude;
projectile.enableRicochet = projectileAbility.enableRicochet;
projectile.maxRicochets = projectileAbility.maxRicochets;
projectile.ricochetSpread = projectileAbility.ricochetSpread;
projectile.gameObject.SetActive(true);
projectile.Init();
if (oneByOne) yield return new WaitForSeconds(releaseInterval);
}
}
}