public string SelectAspectByAffinity() { var randomTable = new RandomTable <string>(_rand); foreach (var kvp in _affinities.ToList()) { randomTable.Add(kvp.Key, kvp.Value); } return(randomTable.Roll()); }
public Race GenerateRace(AffinityMap massAffinity) { if (_prototypes.Count == 0) { return(null); } var races = new List <Race>(); var raceTable = new RandomTable <Race>(new RandomGen()); foreach (var prototype in _prototypes.Values) { Race race = prototype.FinalizeAgainstMap(massAffinity); AffinityMap raceAffinity = race.Affinities; int score = race.Affinities.GetSimilarityTo(massAffinity); raceTable.Add(race, score); } Race rolledRace = raceTable.Roll(); _prototypes.Remove(rolledRace.RaceName.Plural); return(rolledRace); }