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