示例#1
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();
            }
        }
    }
示例#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");
    }