private Rarity SimulateRollRarity(double random, SimulateConfig config) { float ongoingSum = 0; ongoingSum += config.RarityWeightUnique; if (config.RarityWeightUnique > 0 && random <= ongoingSum) { return(Rarity.Unique); } ongoingSum += config.RarityWeightLegendary; if (config.RarityWeightLegendary > 0 && random <= ongoingSum) { return(Rarity.Legendary); } ongoingSum += config.RarityWeightEpic; if (config.RarityWeightEpic > 0 && random <= ongoingSum) { return(Rarity.Epic); } ongoingSum += config.RarityWeightRare; if (config.RarityWeightRare > 0 && random <= ongoingSum) { return(Rarity.Rare); } ongoingSum += config.RarityWeightMagic; if (config.RarityWeightMagic > 0 && random <= ongoingSum) { return(Rarity.Magic); } return(Rarity.None); }
public void RollRarityShouldNotReturnRarityWithWeightZero() { // Arrange SimulateConfig config = new SimulateConfig(); config.RarityWeightUnique = 0; config.RarityWeightMagic = 100; var random = 0; float sumWeight = config.RarityWeightNone + config.RarityWeightMagic + config.RarityWeightRare + config.RarityWeightEpic + config.RarityWeightLegendary + config.RarityWeightUnique; // Act Rarity result = SimulateRollRarity(random, config); // Assert Assert.AreEqual(Rarity.Magic, result); }