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);
    }
Example #2
0
    // 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;
    }
Example #3
0
    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();
 }
Example #5
0
 public void AddTrait(TraitFactory factory)
 {
     traits.Add(factory.GetName(), factory);
 }