Move MapZones out of MapModel.

This commit is contained in:
Dan Albert
2022-02-22 19:16:55 -08:00
parent 0e6a303c17
commit 2ae820fb20
7 changed files with 61 additions and 82 deletions

View File

@@ -1,11 +1,12 @@
from fastapi import Depends, FastAPI
from . import debuggeometries, eventstream, flights, navmesh, waypoints
from . import debuggeometries, eventstream, flights, mapzones, navmesh, waypoints
from .security import ApiKeyManager
app = FastAPI(dependencies=[Depends(ApiKeyManager.verify)])
app.include_router(debuggeometries.router)
app.include_router(eventstream.router)
app.include_router(flights.router)
app.include_router(mapzones.router)
app.include_router(navmesh.router)
app.include_router(waypoints.router)

View File

@@ -0,0 +1 @@
from .routes import router

View File

@@ -0,0 +1,11 @@
from __future__ import annotations
from pydantic import BaseModel
from game.server.leaflet import LeafletPoly
class MapZonesJs(BaseModel):
inclusion: list[LeafletPoly]
exclusion: list[LeafletPoly]
sea: list[LeafletPoly]

View File

@@ -0,0 +1,21 @@
from fastapi import APIRouter, Depends, HTTPException, status
from game import Game
from game.server import GameContext
from .models import MapZonesJs
from ..leaflet import ShapelyUtil
router: APIRouter = APIRouter(prefix="/map-zones")
@router.get("/")
def get(game: Game = Depends(GameContext.get)) -> MapZonesJs:
zones = game.theater.landmap
if zones is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
return MapZonesJs(
inclusion=ShapelyUtil.polys_to_leaflet(zones.inclusion_zones, game.theater),
exclusion=ShapelyUtil.polys_to_leaflet(zones.exclusion_zones, game.theater),
sea=ShapelyUtil.polys_to_leaflet(zones.sea_zones, game.theater),
)