geometry-tower-defense-base/src-ref/Definition/Event/EventEffect/AddRandomCompsEffect.cs

49 lines
1.6 KiB
C#

namespace GeometryTD.Definition
{
public class AddRandomCompsEffect : EventEffectBase
{
public override EventEffectType EffectType => EventEffectType.AddRandomComps;
public override EventEffectParam Param => _param;
private AddRandomCompsParam _param;
public AddRandomCompsEffect(AddRandomCompsParam param, float? probability = null)
{
_param = param;
Probability = probability;
}
}
public class AddRandomCompsParam : EventEffectParam
{
public int Count;
public RarityType Rarity;
public RarityType MinRarity;
public RarityType MaxRarity;
public AddRandomCompsParam(int count, RarityType rarity)
{
Count = count;
RarityType normalizedRarity = InventoryRarityRuleService.NormalizeComponentRarity(rarity);
Rarity = normalizedRarity;
MinRarity = normalizedRarity;
MaxRarity = normalizedRarity;
}
public AddRandomCompsParam(int count, RarityType minRarity, RarityType maxRarity)
{
Count = count;
MinRarity = InventoryRarityRuleService.NormalizeComponentRarity(minRarity);
MaxRarity = InventoryRarityRuleService.NormalizeComponentRarity(maxRarity);
if (MinRarity > MaxRarity)
{
throw new System.ArgumentOutOfRangeException(
nameof(minRarity),
$"AddRandomComps rarity range is invalid: {MinRarity} > {MaxRarity}.");
}
Rarity = MinRarity == MaxRarity ? MinRarity : RarityType.None;
}
}
}