Spending/Upgrades/Meat/BaseMeatUpgrade.cs
namespace PlanetMeat;
public abstract class PercentageMeatUpgrade : BaseComponentUpgrade<MeatImprover, float>
{
protected abstract ValueAggregator<float> Agg { get; }
protected override float EffectBase => TargetComponent?.GetWithout( Agg ) ?? 0.0f;
protected override float GetEffectAt( int rank ) => EffectPerRank.MultiplyCapped( rank );
protected override void OnRankChanged()
{
TargetComponent?.Contribute( Agg, CurrentEffect );
}
public override string GetDisplayedEffectAt( int rank ) => PercentageEffectImprovement.GetDisplayedPercentage( GetOveralEffect( rank ), DecimalPlaces );
}
public abstract class IntMeatUpgrade : BaseComponentUpgrade<MeatImprover, int>
{
protected abstract ValueAggregator<int> Agg { get; }
protected override int EffectBase => TargetComponent?.GetWithout( Agg ) ?? 0;
protected override int GetEffectAt( int rank ) => EffectPerRank.MultiplyCapped( rank );
protected override void OnRankChanged()
{
TargetComponent?.Contribute( Agg, CurrentEffect );
}
}