public static AuctionAwardConfig RandAuctionAwardConfig() { try { lock (GoldAuctionConfigModel.AuctionAwardList) { if (GoldAuctionConfigModel.AuctionAwardList.Count < 1) { LogManager.WriteLog(LogTypes.Error, "[ljl]AuctionAwardList.Count < 1", null, true); return(null); } List <int> weight = new List <int>(); foreach (AuctionAwardConfig item in GoldAuctionConfigModel.AuctionAwardList) { int temp = item.EndValues - item.StartValues + 1; if (1 == temp && 0 == item.EndValues) { temp = 0; } else if (temp < 0) { temp = 0; } weight.Add(temp); } return(GoldAuctionConfigModel.AuctionAwardList[RandomWeight.GetWeightIndex(weight, "金团随机")]); } } catch (Exception ex) { LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl]{0}", ex.ToString()), null, true); } return(null); }
public void Add(float weight, T obj) { RandomWeight new_weight = new RandomWeight(); new_weight.result = obj; new_weight.min = CurrentMax; CurrentMax = new_weight.max = CurrentMax + weight; weights_list.Add(new_weight); }
void setupStarWeights() { starWeights = new RandomWeight <StarColor>(); // 3 yellow + 4 red + 4 green + 3 blue + 1 purple + 1 white = 16 starWeights.AddWeight(StarColor.YELLOW, 3); starWeights.AddWeight(StarColor.RED, 4); starWeights.AddWeight(StarColor.GREEN, 4); starWeights.AddWeight(StarColor.BLUE, 3); starWeights.AddWeight(StarColor.PURPLE, 1); starWeights.AddWeight(StarColor.WHITE, 1); }
private static PlanetTypes GetRandomPlanetType(StarColor color) { RandomWeight <PlanetTypes> typeGenerator = new RandomWeight <PlanetTypes>(); switch (color) { case StarColor.BLUE: typeGenerator.AddWeight(PlanetTypes.BARREN, 3); typeGenerator.AddWeight(PlanetTypes.DEAD, 2); typeGenerator.AddWeight(PlanetTypes.INFERNO, 2); typeGenerator.AddWeight(PlanetTypes.RADIATED, 1); typeGenerator.AddWeight(PlanetTypes.TOXIC, 1); break; case StarColor.GREEN: typeGenerator.AddWeight(PlanetTypes.ARID, 2); typeGenerator.AddWeight(PlanetTypes.BARREN, 1); typeGenerator.AddWeight(PlanetTypes.DESERT, 2); typeGenerator.AddWeight(PlanetTypes.JUNGLE, 1); typeGenerator.AddWeight(PlanetTypes.OCEAN, 1); typeGenerator.AddWeight(PlanetTypes.STEPPE, 2); typeGenerator.AddWeight(PlanetTypes.TERRAN, 1); typeGenerator.AddWeight(PlanetTypes.TUNDRA, 1); break; case StarColor.PURPLE: typeGenerator.AddWeight(PlanetTypes.BARREN, 1); typeGenerator.AddWeight(PlanetTypes.DEAD, 1); typeGenerator.AddWeight(PlanetTypes.INFERNO, 1); typeGenerator.AddWeight(PlanetTypes.RADIATED, 3); typeGenerator.AddWeight(PlanetTypes.TOXIC, 2); break; case StarColor.RED: typeGenerator.AddWeight(PlanetTypes.ARID, 1); typeGenerator.AddWeight(PlanetTypes.BARREN, 2); typeGenerator.AddWeight(PlanetTypes.DESERT, 3); typeGenerator.AddWeight(PlanetTypes.OCEAN, 1); typeGenerator.AddWeight(PlanetTypes.STEPPE, 3); typeGenerator.AddWeight(PlanetTypes.TUNDRA, 2); break; case StarColor.WHITE: typeGenerator.AddWeight(PlanetTypes.BARREN, 3); typeGenerator.AddWeight(PlanetTypes.DEAD, 2); typeGenerator.AddWeight(PlanetTypes.DESERT, 2); typeGenerator.AddWeight(PlanetTypes.INFERNO, 2); typeGenerator.AddWeight(PlanetTypes.RADIATED, 1); typeGenerator.AddWeight(PlanetTypes.TOXIC, 1); break; case StarColor.YELLOW: typeGenerator.AddWeight(PlanetTypes.ARID, 2); typeGenerator.AddWeight(PlanetTypes.DESERT, 1); typeGenerator.AddWeight(PlanetTypes.JUNGLE, 3); typeGenerator.AddWeight(PlanetTypes.OCEAN, 3); typeGenerator.AddWeight(PlanetTypes.STEPPE, 2); typeGenerator.AddWeight(PlanetTypes.TERRAN, 3); break; } return(typeGenerator.GetRandomKey()); }
private static void CreatePlanetType(PlanetTypes type, StarProperties starProperties) { RandomWeight <int> popGenerator = new RandomWeight <int>(); switch (type) { case PlanetTypes.TERRAN: popGenerator.AddWeight(100, 4); popGenerator.AddWeight(90, 2); popGenerator.AddWeight(80, 2); popGenerator.AddWeight(70, 1); break; case PlanetTypes.DESERT: popGenerator.AddWeight(60, 2); popGenerator.AddWeight(50, 2); popGenerator.AddWeight(40, 2); popGenerator.AddWeight(30, 1); break; case PlanetTypes.OCEAN: popGenerator.AddWeight(100, 1); popGenerator.AddWeight(90, 2); popGenerator.AddWeight(80, 3); popGenerator.AddWeight(70, 3); break; case PlanetTypes.ARID: popGenerator.AddWeight(90, 1); popGenerator.AddWeight(80, 2); popGenerator.AddWeight(70, 3); popGenerator.AddWeight(60, 2); popGenerator.AddWeight(50, 1); break; case PlanetTypes.STEPPE: popGenerator.AddWeight(60, 2); popGenerator.AddWeight(50, 3); popGenerator.AddWeight(40, 2); popGenerator.AddWeight(30, 1); break; case PlanetTypes.JUNGLE: popGenerator.AddWeight(100, 1); popGenerator.AddWeight(90, 3); popGenerator.AddWeight(80, 3); popGenerator.AddWeight(70, 2); break; case PlanetTypes.BARREN: popGenerator.AddWeight(50, 3); popGenerator.AddWeight(40, 3); popGenerator.AddWeight(30, 2); popGenerator.AddWeight(20, 1); break; case PlanetTypes.TUNDRA: popGenerator.AddWeight(50, 1); popGenerator.AddWeight(40, 2); popGenerator.AddWeight(30, 3); popGenerator.AddWeight(20, 1); break; case PlanetTypes.INFERNO: popGenerator.AddWeight(50, 1); popGenerator.AddWeight(40, 1); popGenerator.AddWeight(30, 2); popGenerator.AddWeight(20, 2); break; case PlanetTypes.DEAD: popGenerator.AddWeight(50, 1); popGenerator.AddWeight(40, 3); popGenerator.AddWeight(30, 2); popGenerator.AddWeight(20, 1); break; case PlanetTypes.RADIATED: popGenerator.AddWeight(40, 2); popGenerator.AddWeight(30, 1); popGenerator.AddWeight(20, 2); popGenerator.AddWeight(10, 2); break; case PlanetTypes.TOXIC: popGenerator.AddWeight(40, 2); popGenerator.AddWeight(30, 2); popGenerator.AddWeight(20, 2); popGenerator.AddWeight(10, 1); break; } starProperties.maxPopulation = popGenerator.GetRandomKey(); }