Correct int/float confusion in Point APIs.

The heading and distance calculations always return floats.

(cherry picked from commit 6ce02282e7)
This commit is contained in:
Dan Albert
2021-07-11 14:33:46 -07:00
parent 5860518f92
commit a22f1d8e63
6 changed files with 23 additions and 19 deletions

View File

@@ -1,10 +1,11 @@
import itertools
import logging
import math
import random
import sys
from datetime import date, datetime, timedelta
from enum import Enum
from typing import Any, List, Type, Union
from typing import Any, List, Type, Union, cast
from dcs.action import Coalition
from dcs.mapping import Point
@@ -614,7 +615,7 @@ class Game:
# If there is no conflict take the center point between the two nearest opposing bases
if len(zones) == 0:
cpoint = None
min_distance = sys.maxsize
min_distance = math.inf
for cp in self.theater.player_points():
for cp2 in self.theater.enemy_points():
d = cp.position.distance_to_point(cp2.position)
@@ -651,7 +652,7 @@ class Game:
self.__culling_zones = zones
def add_destroyed_units(self, data: dict[str, Union[float, str]]) -> None:
pos = Point(data["x"], data["z"])
pos = Point(cast(float, data["x"]), cast(float, data["z"]))
if self.theater.is_on_land(pos):
self.__destroyed_units.append(data)

View File

@@ -3,7 +3,7 @@ from __future__ import annotations
import logging
import os
from pathlib import Path
from typing import Iterable, List, Set, TYPE_CHECKING
from typing import Iterable, List, Set, TYPE_CHECKING, cast
from dcs import Mission
from dcs.action import DoScript, DoScriptFile
@@ -261,7 +261,7 @@ class Operation:
except KeyError:
continue
pos = Point(d["x"], d["z"])
pos = Point(cast(float, d["x"]), cast(float, d["z"]))
if (
utype is not None
and not cls.game.position_culled(pos)

View File

@@ -21,7 +21,7 @@ class MissionTarget:
self.name = name
self.position = position
def distance_to(self, other: MissionTarget) -> int:
def distance_to(self, other: MissionTarget) -> float:
"""Computes the distance to the given mission target."""
return self.position.distance_to_point(other.position)