Spending/Upgrades/Strike/IUpgradeableStrike.cs
namespace PlanetMeat;
public interface IUpgradeableStrike : IUpradeableSize
{
ValueAggregator<float> AggregateAccuracy { get; }
ValueAggregator<float> AggregateSpeed { get; }
}
public static partial class Extensions
{
public static float GetStrikeAccuracy( this IUpgradeableStrike strike ) => strike.AggregateAccuracy.Total;
public static float GetStrikeSpeed( this IUpgradeableStrike strike ) => strike.AggregateSpeed.Total;
public static float GetStrikeScatterDistance( this IUpgradeableStrike strike ) => 2 * strike.GetStrikeSize() * (1.0f - strike.GetStrikeAccuracy());
public static Vector3 GetNextStrikeScatter( this IUpgradeableStrike strike ) => Game.Random.VectorInCircle( strike.GetStrikeScatterDistance() );
}