//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(); } } }
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"); }