public static List <BaseTrait> selectTraits(List <BaseTrait> mandatoryTraits, List <BaseTrait> firstParentTraits, List <BaseTrait> secondParentTraits) { List <BaseTrait> inheritableTraits = new List <BaseTrait>(); foreach (BaseTrait trait in Randomize(TraitFactory.getInstantiatedTraitValues())) { if (!trait.isCompatible(mandatoryTraits) || !trait.isCompatible(inheritableTraits)) { continue; } float probability = baseInheritance; if (firstParentTraits.Contains(trait)) { probability += trait.tenacity; } if (secondParentTraits.Contains(trait)) { probability += trait.tenacity; } probability += trait.inheritanceChance; probability += trait.getLinkageChance(mandatoryTraits); probability += trait.getLinkageChance(inheritableTraits); //TODO: Add species chance probability += inheritableTraits.Count * perAdditionalTraitChance; GameManager.print(logistic(probability)); if (Random.value < logistic(probability)) { inheritableTraits.Add(trait); } } return(inheritableTraits); }
// Use this for initialization void Start() { //worldState = new WorldState(); AnimalFactory animalFactory = GetComponent <AnimalFactory>(); worldState.Initialize(animalFactory); TraitFactory.instantiateAllTraits(); homeState = new HomeState(); homeState.Initialize(); activeState = homeState; }
public static float numKeenEyes(WorldState ws) { BaseTrait trait = TraitFactory.createKeenEyes(); float c = 0; foreach (GameObject partyMember in ws.GetParty().GetMembers()) { Animal animal = partyMember.GetComponent <Animal> (); if (animal != null) { if (animal.Traits.Contains(trait)) { c++; } } } return(c); }
public static void instantiateAllTraits() { TraitFactory.createStrong(); TraitFactory.createWeak(); TraitFactory.createQuick(); TraitFactory.createAggressive(); TraitFactory.createDocile(); TraitFactory.createSpikes(); TraitFactory.createKeenEyes(); TraitFactory.createKeenSmell(); TraitFactory.createLoyal(); TraitFactory.createFlying(); TraitFactory.createHorned(); TraitFactory.createArmored(); TraitFactory.createIndependent(); TraitFactory.createClimb(); TraitFactory.createDig(); TraitFactory.createStealthy(); TraitFactory.createSwim(); TraitFactory.createMarbled(); TraitFactory.createDelicious(); TraitFactory.createFat(); }
public void AddTrait(TraitFactory factory) { traits.Add(factory.GetName(), factory); }