From 197b9795f8ae1145e393cbae7b04467d91800f02 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Sun, 11 Sep 2022 14:49:13 -0700 Subject: [PATCH] Make FrontLineBounds actually a bounds container. --- .../frontlineconflictdescription.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/game/missiongenerator/frontlineconflictdescription.py b/game/missiongenerator/frontlineconflictdescription.py index a3303df3..1f457b64 100644 --- a/game/missiongenerator/frontlineconflictdescription.py +++ b/game/missiongenerator/frontlineconflictdescription.py @@ -2,6 +2,7 @@ from __future__ import annotations import logging from dataclasses import dataclass +from functools import cached_property from typing import Optional, Tuple from dcs.mapping import Point @@ -16,17 +17,20 @@ from game.utils import Heading @dataclass(frozen=True) class FrontLineBounds: left_position: Point - heading_from_left_to_right: Heading - length: int + right_position: Point - @property + @cached_property + def length(self) -> int: + return int(self.left_position.distance_to_point(self.right_position)) + + @cached_property def center(self) -> Point: return (self.left_position + self.right_position) / 2 - @property - def right_position(self) -> Point: - return self.left_position.point_from_heading( - self.heading_from_left_to_right.degrees, self.length + @cached_property + def heading_from_left_to_right(self) -> Heading: + return Heading( + int(self.left_position.heading_between_point(self.right_position)) ) @@ -90,8 +94,7 @@ class FrontLineConflictDescription: right_heading, theater, ) - distance = int(left_position.distance_to_point(right_position)) - return FrontLineBounds(left_position, right_heading, distance) + return FrontLineBounds(left_position, right_position) @classmethod def frontline_cas_conflict(