mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
remove dead code
This commit is contained in:
parent
833399f068
commit
2b6227f3b1
@ -3,7 +3,7 @@ from typing import List, Type
|
|||||||
from dcs.task import CAP, CAS, Task
|
from dcs.task import CAP, CAS, Task
|
||||||
|
|
||||||
from game import db
|
from game import db
|
||||||
from game.operation.frontlineattack import FrontlineAttackOperation
|
# from game.operation.frontlineattack import FrontlineAttackOperation
|
||||||
from .event import Event
|
from .event import Event
|
||||||
from ..debriefing import Debriefing
|
from ..debriefing import Debriefing
|
||||||
|
|
||||||
|
|||||||
@ -1,38 +0,0 @@
|
|||||||
from dcs.terrain.terrain import Terrain
|
|
||||||
|
|
||||||
from gen.conflictgen import Conflict
|
|
||||||
from .operation import Operation
|
|
||||||
from .. import db
|
|
||||||
|
|
||||||
MAX_DISTANCE_BETWEEN_GROUPS = 12000
|
|
||||||
|
|
||||||
|
|
||||||
class FrontlineAttackOperation(Operation):
|
|
||||||
interceptors = None # type: db.AssignedUnitsDict
|
|
||||||
escort = None # type: db.AssignedUnitsDict
|
|
||||||
strikegroup = None # type: db.AssignedUnitsDict
|
|
||||||
|
|
||||||
attackers = None # type: db.ArmorDict
|
|
||||||
defenders = None # type: db.ArmorDict
|
|
||||||
|
|
||||||
def prepare(self, terrain: Terrain, is_quick: bool):
|
|
||||||
super(FrontlineAttackOperation, self).prepare(terrain, is_quick)
|
|
||||||
if self.defender_name == self.game.player_name:
|
|
||||||
self.attackers_starting_position = None
|
|
||||||
self.defenders_starting_position = None
|
|
||||||
|
|
||||||
conflict = Conflict.frontline_cas_conflict(
|
|
||||||
attacker_name=self.attacker_name,
|
|
||||||
defender_name=self.defender_name,
|
|
||||||
attacker=self.current_mission.country(self.attacker_country),
|
|
||||||
defender=self.current_mission.country(self.defender_country),
|
|
||||||
from_cp=self.from_cp,
|
|
||||||
to_cp=self.to_cp,
|
|
||||||
theater=self.game.theater
|
|
||||||
)
|
|
||||||
|
|
||||||
self.initialize(mission=self.current_mission,
|
|
||||||
conflict=conflict)
|
|
||||||
|
|
||||||
def generate(self):
|
|
||||||
super(FrontlineAttackOperation, self).generate()
|
|
||||||
@ -109,24 +109,6 @@ class Conflict:
|
|||||||
def to_size(self):
|
def to_size(self):
|
||||||
return self.to_cp.size * GROUND_DISTANCE_FACTOR
|
return self.to_cp.size * GROUND_DISTANCE_FACTOR
|
||||||
|
|
||||||
def find_insertion_point(self, other_point: Point) -> Point:
|
|
||||||
if self.is_vector:
|
|
||||||
dx = self.position.x - self.tail.x
|
|
||||||
dy = self.position.y - self.tail.y
|
|
||||||
dr2 = float(dx ** 2 + dy ** 2)
|
|
||||||
|
|
||||||
lerp = ((other_point.x - self.tail.x) * dx + (other_point.y - self.tail.y) * dy) / dr2
|
|
||||||
if lerp < 0:
|
|
||||||
lerp = 0
|
|
||||||
elif lerp > 1:
|
|
||||||
lerp = 1
|
|
||||||
|
|
||||||
x = lerp * dx + self.tail.x
|
|
||||||
y = lerp * dy + self.tail.y
|
|
||||||
return Point(x, y)
|
|
||||||
else:
|
|
||||||
return self.position
|
|
||||||
|
|
||||||
def find_ground_position(self, at: Point, heading: int, max_distance: int = 40000) -> Point:
|
def find_ground_position(self, at: Point, heading: int, max_distance: int = 40000) -> Point:
|
||||||
return Conflict._find_ground_position(at, max_distance, heading, self.theater)
|
return Conflict._find_ground_position(at, max_distance, heading, self.theater)
|
||||||
|
|
||||||
@ -227,273 +209,3 @@ class Conflict:
|
|||||||
|
|
||||||
logging.error("Didn't find ground position ({})!".format(initial))
|
logging.error("Didn't find ground position ({})!".format(initial))
|
||||||
return initial
|
return initial
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def capture_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
position = to_cp.position
|
|
||||||
attack_raw_heading = to_cp.position.heading_between_point(from_cp.position)
|
|
||||||
attack_heading = to_cp.find_radial(attack_raw_heading)
|
|
||||||
defense_heading = to_cp.find_radial(from_cp.position.heading_between_point(to_cp.position), ignored_radial=attack_heading)
|
|
||||||
|
|
||||||
distance = GROUND_DISTANCE
|
|
||||||
attackers_location = position.point_from_heading(attack_heading, distance)
|
|
||||||
attackers_location = Conflict._find_ground_position(attackers_location, distance * 2, attack_heading, theater)
|
|
||||||
|
|
||||||
defenders_location = position.point_from_heading(defense_heading, 0)
|
|
||||||
defenders_location = Conflict._find_ground_position(defenders_location, distance * 2, defense_heading, theater)
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=attackers_location,
|
|
||||||
ground_defenders_location=defenders_location,
|
|
||||||
air_attackers_location=position.point_from_heading(attack_raw_heading, CAPTURE_AIR_ATTACKERS_DISTANCE),
|
|
||||||
air_defenders_location=position.point_from_heading(_opposite_heading(attack_raw_heading), CAPTURE_AIR_DEFENDERS_DISTANCE)
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def strike_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
position = to_cp.position
|
|
||||||
attack_raw_heading = to_cp.position.heading_between_point(from_cp.position)
|
|
||||||
attack_heading = to_cp.find_radial(attack_raw_heading)
|
|
||||||
defense_heading = to_cp.find_radial(from_cp.position.heading_between_point(to_cp.position), ignored_radial=attack_heading)
|
|
||||||
|
|
||||||
distance = to_cp.size * GROUND_DISTANCE_FACTOR
|
|
||||||
attackers_location = position.point_from_heading(attack_heading, distance)
|
|
||||||
attackers_location = Conflict._find_ground_position(
|
|
||||||
attackers_location, int(distance * 2),
|
|
||||||
_heading_sum(attack_heading, 180), theater)
|
|
||||||
|
|
||||||
defenders_location = position.point_from_heading(defense_heading, distance)
|
|
||||||
defenders_location = Conflict._find_ground_position(
|
|
||||||
defenders_location, int(distance * 2),
|
|
||||||
_heading_sum(defense_heading, 180), theater)
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=attackers_location,
|
|
||||||
ground_defenders_location=defenders_location,
|
|
||||||
air_attackers_location=position.point_from_heading(attack_raw_heading, STRIKE_AIR_ATTACKERS_DISTANCE),
|
|
||||||
air_defenders_location=position.point_from_heading(_opposite_heading(attack_raw_heading), STRIKE_AIR_DEFENDERS_DISTANCE)
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def intercept_position(cls, from_cp: ControlPoint, to_cp: ControlPoint) -> Point:
|
|
||||||
raw_distance = from_cp.position.distance_to_point(to_cp.position) * 1.5
|
|
||||||
distance = max(min(raw_distance, INTERCEPT_MAX_DISTANCE), INTERCEPT_MIN_DISTANCE)
|
|
||||||
heading = _heading_sum(from_cp.position.heading_between_point(to_cp.position), random.choice([-1, 1]) * random.randint(60, 100))
|
|
||||||
return from_cp.position.point_from_heading(heading, distance)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def intercept_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, position: Point, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
heading = from_cp.position.heading_between_point(position)
|
|
||||||
return cls(
|
|
||||||
position=position.point_from_heading(position.heading_between_point(to_cp.position), INTERCEPT_CONFLICT_DISTANCE),
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=None,
|
|
||||||
ground_defenders_location=None,
|
|
||||||
air_attackers_location=position.point_from_heading(random.randint(*INTERCEPT_ATTACKERS_HEADING) + heading, INTERCEPT_ATTACKERS_DISTANCE),
|
|
||||||
air_defenders_location=position
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def ground_attack_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
heading = random.choice(to_cp.radials)
|
|
||||||
initial_location = to_cp.position.random_point_within(*GROUND_ATTACK_DISTANCE)
|
|
||||||
position = Conflict._find_ground_position(initial_location, GROUND_INTERCEPT_SPREAD, _heading_sum(heading, 180), theater)
|
|
||||||
if not position:
|
|
||||||
heading = to_cp.find_radial(to_cp.position.heading_between_point(from_cp.position))
|
|
||||||
position = to_cp.position.point_from_heading(heading, to_cp.size * GROUND_DISTANCE_FACTOR)
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=position,
|
|
||||||
ground_defenders_location=None,
|
|
||||||
air_attackers_location=None,
|
|
||||||
air_defenders_location=position.point_from_heading(heading, AIR_DISTANCE),
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def convoy_strike_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
frontline_position, frontline_heading, frontline_length = Conflict.frontline_vector(from_cp, to_cp, theater)
|
|
||||||
if not frontline_position:
|
|
||||||
assert False
|
|
||||||
|
|
||||||
heading = frontline_heading
|
|
||||||
starting_position = Conflict._find_ground_position(frontline_position.point_from_heading(heading, 7000),
|
|
||||||
GROUND_INTERCEPT_SPREAD,
|
|
||||||
_opposite_heading(heading), theater)
|
|
||||||
if not starting_position:
|
|
||||||
starting_position = frontline_position
|
|
||||||
destination_position = frontline_position
|
|
||||||
else:
|
|
||||||
destination_position = frontline_position
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=destination_position,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=None,
|
|
||||||
ground_defenders_location=starting_position,
|
|
||||||
air_attackers_location=starting_position.point_from_heading(_opposite_heading(heading), AIR_DISTANCE),
|
|
||||||
air_defenders_location=starting_position.point_from_heading(heading, AIR_DISTANCE),
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def frontline_cas_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
assert cls.has_frontline_between(from_cp, to_cp)
|
|
||||||
position, heading, distance = cls.frontline_vector(from_cp, to_cp, theater)
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
heading=heading,
|
|
||||||
distance=distance,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=None,
|
|
||||||
ground_defenders_location=None,
|
|
||||||
air_attackers_location=position.point_from_heading(random.randint(*INTERCEPT_ATTACKERS_HEADING) + heading, AIR_DISTANCE),
|
|
||||||
air_defenders_location=position.point_from_heading(random.randint(*INTERCEPT_ATTACKERS_HEADING) + _opposite_heading(heading), AIR_DISTANCE),
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def frontline_cap_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
assert cls.has_frontline_between(from_cp, to_cp)
|
|
||||||
|
|
||||||
position, heading, distance = cls.frontline_vector(from_cp, to_cp, theater)
|
|
||||||
attack_position = position.point_from_heading(heading, random.randint(0, int(distance)))
|
|
||||||
attackers_position = attack_position.point_from_heading(heading - 90, AIR_DISTANCE)
|
|
||||||
defenders_position = attack_position.point_from_heading(heading + 90, random.randint(*CAP_CAS_DISTANCE))
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
heading=heading,
|
|
||||||
distance=distance,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
air_attackers_location=attackers_position,
|
|
||||||
air_defenders_location=defenders_position,
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def ground_base_attack(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
position = to_cp.position
|
|
||||||
attack_heading = to_cp.find_radial(to_cp.position.heading_between_point(from_cp.position))
|
|
||||||
defense_heading = to_cp.find_radial(from_cp.position.heading_between_point(to_cp.position), ignored_radial=attack_heading)
|
|
||||||
|
|
||||||
distance = to_cp.size * GROUND_DISTANCE_FACTOR
|
|
||||||
defenders_location = position.point_from_heading(defense_heading, distance)
|
|
||||||
defenders_location = Conflict._find_ground_position(
|
|
||||||
defenders_location, int(distance * 2),
|
|
||||||
_heading_sum(defense_heading, 180), theater)
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=None,
|
|
||||||
ground_defenders_location=defenders_location,
|
|
||||||
air_attackers_location=position.point_from_heading(attack_heading, AIR_DISTANCE),
|
|
||||||
air_defenders_location=position
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def naval_intercept_position(cls, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
radial = random.choice(to_cp.sea_radials)
|
|
||||||
|
|
||||||
initial_distance = min(int(from_cp.position.distance_to_point(to_cp.position) * NAVAL_INTERCEPT_DISTANCE_FACTOR), NAVAL_INTERCEPT_DISTANCE_MAX)
|
|
||||||
initial_position = to_cp.position.point_from_heading(radial, initial_distance)
|
|
||||||
for offset in range(0, initial_distance, NAVAL_INTERCEPT_STEP):
|
|
||||||
position = initial_position.point_from_heading(_opposite_heading(radial), offset)
|
|
||||||
|
|
||||||
if not theater.is_on_land(position):
|
|
||||||
break
|
|
||||||
return position
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def naval_intercept_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, position: Point, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
attacker_heading = from_cp.position.heading_between_point(to_cp.position)
|
|
||||||
return cls(
|
|
||||||
position=position,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=None,
|
|
||||||
ground_defenders_location=position,
|
|
||||||
air_attackers_location=position.point_from_heading(attacker_heading, AIR_DISTANCE),
|
|
||||||
air_defenders_location=position.point_from_heading(_opposite_heading(attacker_heading), AIR_DISTANCE)
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def transport_conflict(cls, attacker_name: str, defender_name: str, attacker: Country, defender: Country, from_cp: ControlPoint, to_cp: ControlPoint, theater: ConflictTheater):
|
|
||||||
frontline_position, heading = cls.frontline_position(from_cp, to_cp, theater)
|
|
||||||
initial_dest = frontline_position.point_from_heading(heading, TRANSPORT_FRONTLINE_DIST)
|
|
||||||
dest = cls._find_ground_position(initial_dest, from_cp.position.distance_to_point(to_cp.position) / 3, heading, theater)
|
|
||||||
if not dest:
|
|
||||||
radial = to_cp.find_radial(to_cp.position.heading_between_point(from_cp.position))
|
|
||||||
dest = to_cp.position.point_from_heading(radial, to_cp.size * GROUND_DISTANCE_FACTOR)
|
|
||||||
|
|
||||||
return cls(
|
|
||||||
position=dest,
|
|
||||||
theater=theater,
|
|
||||||
from_cp=from_cp,
|
|
||||||
to_cp=to_cp,
|
|
||||||
attackers_side=attacker_name,
|
|
||||||
defenders_side=defender_name,
|
|
||||||
attackers_country=attacker,
|
|
||||||
defenders_country=defender,
|
|
||||||
ground_attackers_location=from_cp.position,
|
|
||||||
ground_defenders_location=frontline_position,
|
|
||||||
air_attackers_location=from_cp.position.point_from_heading(0, 100),
|
|
||||||
air_defenders_location=frontline_position
|
|
||||||
)
|
|
||||||
@ -229,7 +229,7 @@ class QTopPanel(QFrame):
|
|||||||
game_event.is_awacs_enabled = True
|
game_event.is_awacs_enabled = True
|
||||||
game_event.ca_slots = 1
|
game_event.ca_slots = 1
|
||||||
game_event.departure_cp = self.game.theater.controlpoints[0]
|
game_event.departure_cp = self.game.theater.controlpoints[0]
|
||||||
game_event.player_attacking({CAS: {}, CAP: {}})
|
# game_event.player_attacking({CAS: {}, CAP: {}})
|
||||||
game_event.depart_from = self.game.theater.controlpoints[0]
|
game_event.depart_from = self.game.theater.controlpoints[0]
|
||||||
|
|
||||||
self.game.initiate_event(game_event)
|
self.game.initiate_event(game_event)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user