public void AssignInitialTraits(Game game, Character character, int maxInitialTraits) { ISet<string> banned = new HashSet<string>(); for (int i = 0; i < maxInitialTraits; ++i) { Trait nextTrait = traits.Values.ElementAt(game.GetRandom(traits.Values.Count)); if (banned.Contains(nextTrait.Identifier)) { continue; } foreach (var opposite in nextTrait.Opposites) { banned.Add(opposite); } banned.Add(nextTrait.Identifier); character.AddTrait(nextTrait); } }
public void Execute(EventResults result, Game game, EventContext context) { const int RandomPrecision = 1000000; int val = game.GetRandom(RandomPrecision); for(int i = 0; i < outcomes.Length; ++i) { int myCutoff = (int)(chances[i] * RandomPrecision); if (val < myCutoff) { outcomes[i].Execute(result, game, context); return; } val -= myCutoff; } }
public DNA CreateRandomDNA(Character character, Game game) { DNA dna = new DNA(SelectRandomAllowed(faceImages, character, game), SelectRandomAllowed(mouthImages, character, game), SelectRandomAllowed(noseImages, character, game), SelectRandomAllowed(eyeImages, character, game), SelectRandomAllowed(eyebrowImages, character, game), SelectRandomAllowed(earImages, character, game), SelectRandomAllowed(hairImages, character, game), game.GetRandom(skinColors.Length), game.GetRandom(eyeColors.Length), game.GetRandom(hairColors.Length), game.GetRandom(shirtColors.Length)); return dna; }
public static int GetRandomShirtColor(Game g) { return g.GetRandom(shirtColors.Length); }
private int SelectRandomAllowedColor(Color[] rules, Character character, int father, int mother, Game game) { return game.GetRandom(2) == 0 ? father : mother; }
private int SelectRandomAllowed(List<PortraitRule> rules, Character character, int father, int mother, Game game) { EventContext context = new EventContext(character); List<PortraitRule> allowed = new List<PortraitRule>(); if(rules[father].Requirements.Evaluate(context, game)) { for (int i = 0; i < 45; ++i) { allowed.Add(rules[father]); } } if (rules[mother].Requirements.Evaluate(context, game)) { for (int i = 0; i < 45; ++i) { allowed.Add(rules[mother]); } } allowed.AddRange(rules.Where(r => r.Requirements.Evaluate(context, game))); return allowed[game.GetRandom(allowed.Count)].Index; }
private int SelectRandomAllowed(List<PortraitRule> rules, Character character, Game game) { EventContext context = new EventContext(character); PortraitRule[] allowed = rules.Where(r => r.Requirements.Evaluate(context, game)).ToArray(); return allowed[game.GetRandom(allowed.Length)].Index; }