49 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|