1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from typing import Dict, Tuple, List
- from .shared import PointSource
- from .map_crunch import MapCrunchPointSource
- from .random_street_view import RSVPointSource
- from .urban_centers import UrbanPointSource
- from ..schemas import GenMethodEnum, GameConfig, CacheInfo
- stock_target = 20
- """
- Dictionary of PointSources
- Maps (generation_method, only_america) -> PointSource
- """
- sources: Dict[Tuple[GenMethodEnum, bool], PointSource] = {
- (GenMethodEnum.map_crunch, False): MapCrunchPointSource(stock_target=stock_target, max_retries=1000, only_america=False),
- (GenMethodEnum.map_crunch, True): MapCrunchPointSource(stock_target=stock_target, max_retries=1000, only_america=True),
- (GenMethodEnum.rsv, False): RSVPointSource(stock_target=stock_target, only_america=False),
- (GenMethodEnum.rsv, True): RSVPointSource(stock_target=stock_target, only_america=True),
- (GenMethodEnum.urban, False): UrbanPointSource(
- stock_target=stock_target,
- max_retries=100,
- retries_per_point=30,
- max_dist_km=25,
- usa_chance=0.1
- ),
- (GenMethodEnum.urban, True): UrbanPointSource(
- stock_target=stock_target,
- max_retries=100,
- retries_per_point=30,
- max_dist_km=25,
- usa_chance=1.0
- )
- }
- def generate_points(config: GameConfig) -> List[Tuple[float, float]]:
- """
- Generate points according to the GameConfig.
- """
- return sources[(config.generation_method, config.only_america)].get_points(config.rounds)
- def restock_source(config: GameConfig):
- """
- Restock the PointSource associated with the GameConfig
- """
- sources[(config.generation_method, config.only_america)].restock()
- def get_cache_info() -> List[CacheInfo]:
- """
- Get CacheInfo for each of the PointSources
- """
- return [CacheInfo(generation_method=gm, only_america=oa, size=len(src.stock)) for ((gm, oa), src) in sources.items()]
|