mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Revert "Correct radar detection."
We need this after all, but we do need to audit the list. Will follow up with that fix. https://github.com/dcs-liberation/dcs_liberation/issues/1109 This reverts commit f68935735d436385a0821e1168a8726c7dba8ebb.
This commit is contained in:
parent
7450a6b7eb
commit
98e0be6be9
72
game/data/radar_db.py
Normal file
72
game/data/radar_db.py
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
from dcs.ships import (
|
||||||
|
Battlecruiser_1144_2_Pyotr_Velikiy,
|
||||||
|
Cruiser_1164_Moskva,
|
||||||
|
CVN_70_Carl_Vinson,
|
||||||
|
CVN_71_Theodore_Roosevelt,
|
||||||
|
CVN_72_Abraham_Lincoln,
|
||||||
|
CVN_73_George_Washington,
|
||||||
|
CVN_74_John_C__Stennis,
|
||||||
|
CV_1143_5_Admiral_Kuznetsov,
|
||||||
|
CV_1143_5_Admiral_Kuznetsov_2017,
|
||||||
|
Frigate_11540_Neustrashimy,
|
||||||
|
Corvette_1124_4_Grisha,
|
||||||
|
Frigate_1135M_Rezky,
|
||||||
|
Corvette_1241_1_Molniya,
|
||||||
|
LHA_1_Tarawa,
|
||||||
|
FFG_Oliver_Hazzard_Perry,
|
||||||
|
CG_Ticonderoga,
|
||||||
|
Type_052B_Destroyer,
|
||||||
|
Type_052C_Destroyer,
|
||||||
|
Type_054A_Frigate,
|
||||||
|
DDG_Arleigh_Burke_IIa,
|
||||||
|
)
|
||||||
|
from dcs.vehicles import AirDefence
|
||||||
|
|
||||||
|
UNITS_WITH_RADAR = [
|
||||||
|
# Radars
|
||||||
|
AirDefence.SAM_SA_15_Tor_Gauntlet,
|
||||||
|
AirDefence.SAM_SA_11_Buk_Gadfly_C2,
|
||||||
|
AirDefence.SAM_Patriot_CR__AMG_AN_MRC_137,
|
||||||
|
AirDefence.SAM_Patriot_ECS,
|
||||||
|
AirDefence.SPAAA_Gepard,
|
||||||
|
AirDefence.SPAAA_Vulcan_M163,
|
||||||
|
AirDefence.SPAAA_ZSU_23_4_Shilka_Gun_Dish,
|
||||||
|
AirDefence.EWR_1L13,
|
||||||
|
AirDefence.SAM_SA_6_Kub_Straight_Flush_STR,
|
||||||
|
AirDefence.SAM_SA_10_S_300_Grumble_Flap_Lid_TR,
|
||||||
|
AirDefence.SAM_SA_10_S_300_Grumble_Clam_Shell_SR,
|
||||||
|
AirDefence.EWR_55G6,
|
||||||
|
AirDefence.SAM_SA_10_S_300_Grumble_Big_Bird_SR,
|
||||||
|
AirDefence.SAM_SA_11_Buk_Gadfly_Snow_Drift_SR,
|
||||||
|
AirDefence.MCC_SR_Sborka_Dog_Ear_SR,
|
||||||
|
AirDefence.SAM_Hawk_TR__AN_MPQ_46,
|
||||||
|
AirDefence.SAM_Hawk_SR__AN_MPQ_50,
|
||||||
|
AirDefence.SAM_Patriot_STR,
|
||||||
|
AirDefence.SAM_Hawk_CWAR_AN_MPQ_55,
|
||||||
|
AirDefence.SAM_P19_Flat_Face_SR__SA_2_3,
|
||||||
|
AirDefence.SAM_Roland_EWR,
|
||||||
|
AirDefence.SAM_SA_3_S_125_Low_Blow_TR,
|
||||||
|
AirDefence.SAM_SA_2_S_75_Fan_Song_TR,
|
||||||
|
AirDefence.HQ_7_Self_Propelled_STR,
|
||||||
|
# Ships
|
||||||
|
CVN_70_Carl_Vinson,
|
||||||
|
FFG_Oliver_Hazzard_Perry,
|
||||||
|
CG_Ticonderoga,
|
||||||
|
Corvette_1124_4_Grisha,
|
||||||
|
CV_1143_5_Admiral_Kuznetsov,
|
||||||
|
Corvette_1241_1_Molniya,
|
||||||
|
Cruiser_1164_Moskva,
|
||||||
|
Frigate_11540_Neustrashimy,
|
||||||
|
Battlecruiser_1144_2_Pyotr_Velikiy,
|
||||||
|
Frigate_1135M_Rezky,
|
||||||
|
CV_1143_5_Admiral_Kuznetsov_2017,
|
||||||
|
CVN_74_John_C__Stennis,
|
||||||
|
CVN_71_Theodore_Roosevelt,
|
||||||
|
CVN_72_Abraham_Lincoln,
|
||||||
|
CVN_73_George_Washington,
|
||||||
|
DDG_Arleigh_Burke_IIa,
|
||||||
|
LHA_1_Tarawa,
|
||||||
|
Type_052B_Destroyer,
|
||||||
|
Type_054A_Frigate,
|
||||||
|
Type_052C_Destroyer,
|
||||||
|
]
|
||||||
@ -10,6 +10,7 @@ from dcs.unit import Unit
|
|||||||
from dcs.unitgroup import Group
|
from dcs.unitgroup import Group
|
||||||
|
|
||||||
from .. import db
|
from .. import db
|
||||||
|
from ..data.radar_db import UNITS_WITH_RADAR
|
||||||
from ..utils import Distance, meters
|
from ..utils import Distance, meters
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
@ -140,15 +141,7 @@ class TheaterGroundObject(MissionTarget):
|
|||||||
"""Returns True if the ground object contains a unit with radar."""
|
"""Returns True if the ground object contains a unit with radar."""
|
||||||
for group in self.groups:
|
for group in self.groups:
|
||||||
for unit in group.units:
|
for unit in group.units:
|
||||||
unit_type = db.unit_type_from_name(unit.type)
|
if db.unit_type_from_name(unit.type) in UNITS_WITH_RADAR:
|
||||||
if unit_type is None:
|
|
||||||
logging.error(f"Unknown unit type {unit.type}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Some units in pydcs have detection_range/threat_range defined, but
|
|
||||||
# explicitly set to None. Others do not define it at all.
|
|
||||||
unit_range = getattr(unit_type, "detection_range", None)
|
|
||||||
if unit_range is not None:
|
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@ -163,8 +156,8 @@ class TheaterGroundObject(MissionTarget):
|
|||||||
logging.error(f"Unknown unit type {u.type}")
|
logging.error(f"Unknown unit type {u.type}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Some units in pydcs have detection_range/threat_range defined, but
|
# Some units in pydcs have detection_range/threat_range defined,
|
||||||
# explicitly set to None. Others do not define it at all.
|
# but explicitly set to None.
|
||||||
unit_range = getattr(unit, range_type, None)
|
unit_range = getattr(unit, range_type, None)
|
||||||
if unit_range is not None:
|
if unit_range is not None:
|
||||||
max_range = max(max_range, meters(unit_range))
|
max_range = max(max_range, meters(unit_range))
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
from PySide2.QtGui import QStandardItem, QStandardItemModel
|
from PySide2.QtGui import QStandardItem, QStandardItemModel
|
||||||
|
|
||||||
from game import Game
|
from game import Game
|
||||||
|
from game.data.radar_db import UNITS_WITH_RADAR
|
||||||
from gen import db
|
from gen import db
|
||||||
from qt_ui.widgets.combos.QFilteredComboBox import QFilteredComboBox
|
from qt_ui.widgets.combos.QFilteredComboBox import QFilteredComboBox
|
||||||
|
|
||||||
@ -44,17 +45,20 @@ class QSEADTargetSelectionComboBox(QFilteredComboBox):
|
|||||||
for g in cp.ground_objects:
|
for g in cp.ground_objects:
|
||||||
|
|
||||||
radars = []
|
radars = []
|
||||||
max_detection_range = 0
|
detection_range = 0
|
||||||
threat_range = 0
|
threat_range = 0
|
||||||
if g.dcs_identifier == "AA":
|
if g.dcs_identifier == "AA":
|
||||||
for group in g.groups:
|
for group in g.groups:
|
||||||
for u in group.units:
|
for u in group.units:
|
||||||
utype = db.unit_type_from_name(u.type)
|
utype = db.unit_type_from_name(u.type)
|
||||||
detection_range = getattr(utype, "detection_range", 0)
|
|
||||||
if detection_range > 1000:
|
if utype in UNITS_WITH_RADAR:
|
||||||
max_detection_range = max(
|
if (
|
||||||
detection_range, max_detection_range
|
hasattr(utype, "detection_range")
|
||||||
)
|
and utype.detection_range > 1000
|
||||||
|
):
|
||||||
|
if utype.detection_range > detection_range:
|
||||||
|
detection_range = utype.detection_range
|
||||||
radars.append(u)
|
radars.append(u)
|
||||||
|
|
||||||
if hasattr(utype, "threat_range"):
|
if hasattr(utype, "threat_range"):
|
||||||
@ -77,7 +81,7 @@ class QSEADTargetSelectionComboBox(QFilteredComboBox):
|
|||||||
tgt_info.radars = radars
|
tgt_info.radars = radars
|
||||||
tgt_info.location = g
|
tgt_info.location = g
|
||||||
tgt_info.threat_range = threat_range
|
tgt_info.threat_range = threat_range
|
||||||
tgt_info.detection_range = max_detection_range
|
tgt_info.detection_range = detection_range
|
||||||
i = add_model_item(i, model, tgt_info)
|
i = add_model_item(i, model, tgt_info)
|
||||||
|
|
||||||
self.setModel(model)
|
self.setModel(model)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user