mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Use the best aircraft rather than first found.
The priority list was guiding the purchase decision which largely meant that this was working correctly, but there were suboptimal cases where the list was being taken in FIFO order by purchased type. This fixes the search to be locally optimal, although this does still mean that a worse but closer aircraft will be chosen over a better but slightly farther away aircraft. We'd need to have a quality vs distance rating to do better. Fixes https://github.com/dcs-liberation/dcs_liberation/issues/755
This commit is contained in:
parent
c5159f8a87
commit
0879d1da0d
10
game/game.py
10
game/game.py
@ -31,6 +31,7 @@ from .income import Income
|
||||
from .infos.information import Information
|
||||
from .navmesh import NavMesh
|
||||
from .procurement import AircraftProcurementRequest, ProcurementAi
|
||||
from .profiling import logged_duration
|
||||
from .settings import Settings
|
||||
from .theater import ConflictTheater
|
||||
from .theater.transitnetwork import TransitNetwork, TransitNetworkBuilder
|
||||
@ -361,11 +362,12 @@ class Game:
|
||||
self.transfers.order_airlift_assets()
|
||||
self.transfers.plan_transports()
|
||||
|
||||
blue_planner = CoalitionMissionPlanner(self, is_player=True)
|
||||
blue_planner.plan_missions()
|
||||
with logged_duration("Mission planning"):
|
||||
blue_planner = CoalitionMissionPlanner(self, is_player=True)
|
||||
blue_planner.plan_missions()
|
||||
|
||||
red_planner = CoalitionMissionPlanner(self, is_player=False)
|
||||
red_planner.plan_missions()
|
||||
red_planner = CoalitionMissionPlanner(self, is_player=False)
|
||||
red_planner.plan_missions()
|
||||
|
||||
for cp in self.theater.controlpoints:
|
||||
if cp.has_frontline:
|
||||
|
||||
@ -162,10 +162,10 @@ class AircraftAllocator:
|
||||
if not airfield.is_friendly(self.is_player):
|
||||
continue
|
||||
inventory = self.global_inventory.for_control_point(airfield)
|
||||
for aircraft, available in inventory.all_aircraft:
|
||||
for aircraft in types:
|
||||
if not airfield.can_operate(aircraft):
|
||||
continue
|
||||
if aircraft in types and available >= flight.num_aircraft:
|
||||
if inventory.available(aircraft) >= flight.num_aircraft:
|
||||
inventory.remove_aircraft(aircraft, flight.num_aircraft)
|
||||
return airfield, aircraft
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user