Source code for simulation_framework.src.world.terrain

from __future__ import annotations

from dataclasses import dataclass
from enum import Enum


[docs] class TerrainType(Enum): WATER = "water" GRASS = "grass" FOREST = "forest" MOUNTAIN = "mountain" DESERT = "desert"
[docs] @dataclass class TerrainProperties: passable: bool fishable: bool mineable: bool harvestable: bool movement_cost: float = 1.0
[docs] @classmethod def for_terrain(cls, terrain_type: TerrainType) -> TerrainProperties: properties = { TerrainType.WATER: cls( passable=False, fishable=True, mineable=False, harvestable=False, movement_cost=float("inf"), ), TerrainType.GRASS: cls( passable=True, fishable=False, mineable=False, harvestable=True, movement_cost=1.0, ), TerrainType.FOREST: cls( passable=True, fishable=False, mineable=False, harvestable=True, movement_cost=1.5, ), TerrainType.MOUNTAIN: cls( passable=True, fishable=False, mineable=True, harvestable=False, movement_cost=2.0, ), TerrainType.DESERT: cls( passable=True, fishable=False, mineable=False, harvestable=False, movement_cost=1.5, ), } return properties[terrain_type]