Files
mcpacker/tungston/core/ecology/biome.py
T

71 lines
1.9 KiB
Python

from tungston.core.ecology.biometrait import BiomeTrait
from tungston.core.ecology.flora import Flora
from tungston.core.ecology.geology import Geology
from tungston.core.ecology.heat import Heat
from tungston.core.ecology.humidity import Humidity
from tungston.core.ecology.soil import Soil
from tungston.core.ecology.water import Water
####################################################################################################
class Biome(object):
"""
A region of the world defined by a unique combination of geology, topography, and ecology.
"""
def __init__(
self,
city:str,
gameId:str,
flora:Flora,
geology:Geology,
heat:Heat,
humidity:Humidity,
soil:Soil,
water:Water,
):
self.city = city
self.gameId = gameId
self.flora = flora
self.geology = geology
self.heat = heat
self.humidity = humidity
self.soil = soil
self.water = water
def __eq__(self, other) -> bool:
if type(self) != type(other): return False
if self.biomeId != other.biomeId: return False
if self.city != other.city: return False
return True
def __hash__(self) -> int:
return hash((self.biomeId, self.city))
def __str__(self) -> str:
return f"{self.city}<{self.gameId}>"
def __repr__(self) -> str:
return "".join([str(p) for p in [
str(self), "{",
repr(self.flora), ", ",
repr(self.geology), ", ",
repr(self.heat), ", ",
repr(self.humidity), ", ",
repr(self.soil), ", ",
repr(self.water),
"}"
]])
def traits(self) -> list[BiomeTrait]:
return list([
self.flora,
self.geology,
self.heat,
self.humidity,
self.soil,
self.water,
])