Draw front lines on the react map.

https://github.com/dcs-liberation/dcs_liberation/issues/2039
This commit is contained in:
Dan Albert
2022-03-02 23:33:15 -08:00
parent 9a2c10a98f
commit b39a44ae37
13 changed files with 116 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ from . import (
debuggeometries,
eventstream,
flights,
frontlines,
mapzones,
navmesh,
supplyroutes,
@@ -24,6 +25,7 @@ app.include_router(controlpoints.router)
app.include_router(debuggeometries.router)
app.include_router(eventstream.router)
app.include_router(flights.router)
app.include_router(frontlines.router)
app.include_router(mapzones.router)
app.include_router(navmesh.router)
app.include_router(supplyroutes.router)

View File

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

View File

@@ -0,0 +1,9 @@
from __future__ import annotations
from pydantic import BaseModel
from game.server.leaflet import LeafletPoint
class FrontLineJs(BaseModel):
extents: list[LeafletPoint]

View File

@@ -0,0 +1,22 @@
from fastapi import APIRouter, Depends
from game import Game
from game.utils import nautical_miles
from .models import FrontLineJs
from ..dependencies import GameContext
router: APIRouter = APIRouter(prefix="/front-lines")
@router.get("/")
def list_front_lines(game: Game = Depends(GameContext.get)) -> list[FrontLineJs]:
front_lines = []
for front_line in game.theater.conflicts():
a = front_line.position.point_from_heading(
front_line.attack_heading.right.degrees, nautical_miles(2).meters
)
b = front_line.position.point_from_heading(
front_line.attack_heading.left.degrees, nautical_miles(2).meters
)
front_lines.append(FrontLineJs(extents=[a.latlng(), b.latlng()]))
return front_lines