예제 #1
0
    public void Expand(Hex newHabitat, Hex oldHabitat)
    {
        int habIndex = habitats.IndexOf(oldHabitat);
        int colonyPop = (int)adultPopulations[habIndex] / 2;
        int cost = 3;

        if(migrationTokens >= cost && !newHabitat.localCritters.Contains(this)){
            migrationTokens -= cost;

            if (isPlayer)
            {
                CheckMigrationAnimationState(migrationTokens);
            }

            habitats.Add(newHabitat);
            adultPopulations.Add(colonyPop);
            adultPopulations[habIndex] -= colonyPop;
            cubPopulations.Add(10);
            babyPopulations.Add(5);
            newHabitat.localCritters.Add(this);
            newHabitat.localCritters.TrimExcess();

            adultPopulations[habIndex] -= colonyPop;

            BreedTokens(oldHabitat);

            AgeTokens(oldHabitat, Token.AgeGroup.Adult);
            AgeTokens(oldHabitat, Token.AgeGroup.Cub);
            AgeTokens(oldHabitat, Token.AgeGroup.Baby);

            foreach(Token token in tokenList){
                if(token.GetAge() == Token.AgeGroup.Adult && token.GetHex() == oldHabitat){
                    StopCoroutine("Wander");
                    token.SetHex(newHabitat);
                    token.gameObject.transform.SetParent(newHabitat.transform);
                    token.StartCoroutine("Wander");
                    AgeTokens(oldHabitat, Token.AgeGroup.Adult);

                    break;
                }
            }

            if(isPlayer){
                newHabitat.SetPlayerHab(true);
            }

            BreedTokens(newHabitat);
        }

        //print ("Critter# " + number + " expanded from Hex# " + habitat.GetNumber() + " to neighboring Hex# " + newHabitat.GetNumber() + ".\r\n");
    }
예제 #2
0
    public void Migrate(Hex newHabitat, Hex oldHabitat)
    {
        int oldHabIndex = habitats.IndexOf(oldHabitat);
        int cost = 1;

        if(migrationTokens >= cost && !newHabitat.localCritters.Contains(this)){
            migrationTokens -= cost;

            if (isPlayer)
            {
                CheckMigrationAnimationState(migrationTokens);
            }

            habitats.Add(newHabitat);
            adultPopulations.Add(adultPopulations[oldHabIndex]);
            cubPopulations.Add(cubPopulations[oldHabIndex]);
            babyPopulations.Add(babyPopulations[oldHabIndex]);
            newHabitat.localCritters.Add(this);
            newHabitat.localCritters.TrimExcess();

            adultPopulations[oldHabIndex] = 0;
            cubPopulations[oldHabIndex] = 0;
            babyPopulations[oldHabIndex] = 0;

            Death(oldHabitat);

            tokenList.TrimExcess();

            foreach(Token token in tokenList){
                if(token.GetHex() == oldHabitat){
                    StopCoroutine("Wander");
                    token.SetHex(newHabitat);
                    token.gameObject.transform.SetParent(newHabitat.transform);
                    token.StartCoroutine("Wander");
                }
            }

            oldHabitat.localCritters.TrimExcess();

            if(isPlayer){
                oldHabitat.SetPlayerHab(false);
                newHabitat.SetPlayerHab(true);
                oldHabitat.RemoveWarnings();
            }
        }

        //print("Critter# " + number + " Migrated from Hex# " + oldHabitat + " to Hex# " + newHabitat + ".\r\n");
    }
예제 #3
0
    //What happens when you die?
    void Death(Hex habitat)
    {
        int i = habitats.IndexOf(habitat);

        //print ("Critter#" + number + " Died out in Hex# " + habitat.GetNumber() + ".\r\n");

        StopCoroutine("Eat");
        StopCoroutine("Breed");
        StopCoroutine("Cleanup");

        UpdateStats();

        adultPopulations.RemoveAt(i);
        adultPopulations.TrimExcess();
        cubPopulations.RemoveAt(i);
        cubPopulations.TrimExcess();
        babyPopulations.RemoveAt(i);
        babyPopulations.TrimExcess();
        habitats.Remove(habitat);
        habitats.TrimExcess();
        habitat.localCritters.Remove(this);
        habitat.localCritters.TrimExcess();

        if(isPlayer){
            habitat.SetPlayerHab(false);
            habitat.RemoveWarnings();
        }

        for(int n = 0; n < tokenList.Count; n++){
            Token token = tokenList[n];

            if(token.GetHex() == habitat){
                token.Die();
            }
        }
    }
예제 #4
0
    //Runs Generators to create values for each species.
    public void Generate(Hex hex, bool isPlayer)
    {
        name = "Bob " + num; num++;
        GenerateSize();

        GameObject creature = Instantiate(Creature, transform.position, Quaternion.identity) as GameObject;
        critter = creature.GetComponent<Critter>();

        //Assigns generated values for each Species after being Instantiated.
        creature.name = name;
        critter.SetName (name);
        critter.SetNumber(critterCount);

        critter.SetIsPlayer(isPlayer);
        critter.SetSize(size);
        baseFoodValue = (size*size) * 10;
        critter.SetBaseFoodValue(baseFoodValue);
        critter.SetSpeed(StatGenerator());
        critter.SetSneak(StatGenerator());
        critter.SetSense(StatGenerator());
        critter.SetOffense(StatGenerator());
        critter.SetDefense(StatGenerator());
        critter.ModifyEvoPts(startEvoPts);

        critter.adultPopulations.Add(startPop);
        critter.cubPopulations.Add(startPop * .25f);
        critter.babyPopulations.Add(startPop * .25f);
        CreateCritterLists(critterCount);
        AddToLocalCritterList(critter, hex);
        critter.InitializeSlots();
        critter.ResetPreferences();
        UnlockCritterStartEvos(critter);

        if (isPlayer){
            Player player = FindObjectOfType<Player>();

            critter.SetName(player.GetCritterName());
            critter.SetTokenSprite(player.GetCritterTokenSprite());
            critter.SetTokenColor(player.GetCritterTokenColor());
            player.SetCritter(critter);
            hex.SetPlayerHab(true);

        }else if(!isPlayer){
            critter.SetTokenSprite(SelectSprite());
            critter.SetTokenColor(GenerateColor());
            critter.GenerateTokens();
        }
        critter.InitializePopsList();

        critterCount++;
    }