Make FrontLineBounds actually a bounds container.

This commit is contained in:
Dan Albert 2022-09-11 14:49:13 -07:00 committed by Raffson
parent aeed7fd42a
commit 197b9795f8
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99

View File

@ -2,6 +2,7 @@ from __future__ import annotations
import logging import logging
from dataclasses import dataclass from dataclasses import dataclass
from functools import cached_property
from typing import Optional, Tuple from typing import Optional, Tuple
from dcs.mapping import Point from dcs.mapping import Point
@ -16,17 +17,20 @@ from game.utils import Heading
@dataclass(frozen=True) @dataclass(frozen=True)
class FrontLineBounds: class FrontLineBounds:
left_position: Point left_position: Point
heading_from_left_to_right: Heading right_position: Point
length: int
@property @cached_property
def length(self) -> int:
return int(self.left_position.distance_to_point(self.right_position))
@cached_property
def center(self) -> Point: def center(self) -> Point:
return (self.left_position + self.right_position) / 2 return (self.left_position + self.right_position) / 2
@property @cached_property
def right_position(self) -> Point: def heading_from_left_to_right(self) -> Heading:
return self.left_position.point_from_heading( return Heading(
self.heading_from_left_to_right.degrees, self.length int(self.left_position.heading_between_point(self.right_position))
) )
@ -90,8 +94,7 @@ class FrontLineConflictDescription:
right_heading, right_heading,
theater, theater,
) )
distance = int(left_position.distance_to_point(right_position)) return FrontLineBounds(left_position, right_position)
return FrontLineBounds(left_position, right_heading, distance)
@classmethod @classmethod
def frontline_cas_conflict( def frontline_cas_conflict(