277 Commits

Author SHA1 Message Date
MetalStormGhost
54777a9045
Helicopter waypoint altitude configurable (#207)
* Helicopter waypoint altitude configurable

Added a new option in Settings: Helicopter waypoint altitude (feet AGL).
It sets the waypoint altitude for helicopters in feet AGL. In campaigns in more mountainous areas, you might want to increase this setting to avoid the AI flying into the terrain.

* black?

* Distinguish cruise/combat altitudes for helicopters

Also includes a refactor for WaypointBuilder so it doesn't need a coalition. It can already reference the coalition from the flight.

* Update changelog.md

---------

Co-authored-by: Raffson <Raffson@users.noreply.github.com>
2023-10-02 18:54:21 +02:00
Raffson
226a171550
Fix missing argument exception 2023-10-02 17:50:55 +02:00
Raffson
d4eefd0b55
Streamlining 2023-10-01 21:56:30 +02:00
Dan Albert
485229b92f
Allow per pilot loadouts and properties.
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/3092.
2023-10-01 20:10:16 +02:00
Dan Albert
bce6a170b8
Improve UI for flight properties.
Use the new data from pydcs to improve the properties UI:

* Use human readable names
* Use appropriate control types
* Limit min and max values as appropriate for each property
* Show labels

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/3090.
2023-10-01 19:28:52 +02:00
Dan Albert
f89ac52bf3
Clean up remaining Flight.from_cp users.
The preferred API for this has been `Flight.departure` for a while.
2023-10-01 19:26:20 +02:00
Raffson
0cb3702eb9
Fix exception after new payload file was saved
When a new payload file would be saved, the subsequent flight would always throw an exception (until Retribution would be restarted) because the payload_cache wasn't updated until now.
2023-09-09 12:03:47 +02:00
Raffson
66d741d0b3
Allow user to add navigation waypoints where possible 2023-08-27 21:11:10 +02:00
M Chimiste
16b7ff2bb4
Create payloads folder in ME folder if needed (#200)
Added a check for the existence of a payloads folder.  Also made the _save_payloads lookup and path generation the same as _backup_payloads method to have consistency.
2023-08-27 19:10:00 +02:00
Raffson
f5cb293e44
Allow editing pretty_name for waypoints 2023-08-26 19:19:54 +02:00
Raffson
da75f41b01
Refactor payloads folder logic 2023-07-22 23:26:32 +02:00
Raffson
63e65744f1
Formatting -_- 2023-07-22 21:34:52 +02:00
Raffson
b8cce988f8
Fix wrong serialization when saving payload in new file 2023-07-22 21:33:45 +02:00
Raffson
85bbda4234
Notify user when save/backup was successful 2023-07-22 20:35:26 +02:00
Raffson
0e5df2fd21
Get rid of all pydcs' PayloadDirectories usages 2023-07-22 20:01:00 +02:00
Raffson
0027c64e57
Add & Select newly saved payload to selector 2023-07-22 00:03:22 +02:00
Raffson
493e69eb40
Use base_path instead 2023-07-21 22:51:13 +02:00
Raffson
15be9e3ce1
Fine-tune "save payload" logic 2023-07-21 22:21:45 +02:00
Raffson
2cfd56c8da
Add ability to save/backup payloads
Resolve #164
2023-07-21 21:47:25 +02:00
Raffson
595a5ac111
Fix flights not removed from map if auto-create cancelled 2023-07-16 21:19:04 +02:00
Raffson
024407e1e2
Initial POC for #165 2023-07-16 19:51:35 +02:00
MetalStormGhost
fb2598a671 Github URL update
Updated the URLs to point correctly to Retribution code, Retribution wiki or Liberation code, as appropriate.
2023-06-21 10:28:26 +02:00
zhexu14
322b8245f7
Make waypoint altitudes editable. 2023-06-16 22:42:59 +02:00
Raffson
c559d6e2be
Follow-up on flight TOT offset 2023-06-04 01:50:46 +02:00
Dan Albert
0acf970443
Add UI for TOT offset adjustment.
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2912.
2023-06-04 00:36:51 +02:00
Dan Albert
bcd81bae7c
Make the flight details menu modal.
Prevents players from accidentally deleting flights they're currently
viewing, which would cause an error.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2911.
2023-05-29 12:24:28 +02:00
Raffson
198ff7d8a3
Allow deletion of certain types of waypoints
Resolves #60
NAV/REFUEL/DIVERT waypoints should have no effect on the timings.
2023-05-29 00:11:27 +02:00
Dan Albert
0608089eb0
Use the actual Country type instead of the name.
We want other pieces of country information (in particular the short
names). This cleans up a lot of code anyway.

As an added bonus, this now catches squadrons that used invalid names
which would previously be passed through to pydcs and... then I don't
know what would happen.
2023-05-14 21:04:09 +02:00
Dan Albert
03c48376c4
Disallow squadrons from disabling mission types.
After this change, players will always have the final say in what
missions a squadron can be assigned to. Squadrons are not able to
influence the default auto-assignable missions either because that
property is always overridden by the campaign's air wing configuration
(the primary and secondary task properties). The `mission-types` field
of the squadron definition has been removed since it is no longer
capable of influencing anything. I haven't bothered cleaning up the now
useless data in all the existing squadrons though.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2785.
2023-05-14 17:18:55 +02:00
zhexu14
065f90ea98
Reset flight's flight plan builder when changing task type.
The mechanism for how this bug arises is that the *WaypointGenerator*
uses the *FlightWaypoint.waypoint_type* to decide whether to generate
the waypoint in the .miz file using a *DeadIngressBuilder* or a
*SeadIngressBuilder*. This *waypoint_type* is set by
*ato.flightplans.<sead|dead>.Builder*, which is set when *ato.flight* is
initialised in the *Flight._flight_plan_builder* member variable based
on *Flight.flight_type*. When *Flight.flight_type* is updated when the
flight is changed from SEAD->DEAD, *Flight._flight_plan_builder* is not
updated in the development build, resulting in it continuing to generate
SEAD waypoints.

This PR adds *set_flight_type()* which sets the *flight_type* property
and updates *Flight._flight_plan_builder* and uses this function when
converting flight types. Ideally, *flight_type* should be made private
and only accessed through getter/setter functions that encapsulate this
behavior, but that would mess up any existing liberation save files.

This PR was tested by:
1. Opening the save file from Issue 2779 in the development build
2. Clicking "Take Off" and confirming that the Weapon Release Type is
"Guided" at the Ingress Waypoint as described in the issue.
3. Opening the save file from Issue 2779 in this PR
4. Converting the SEAD2DEAD flight from DEAD back to SEAD, and then from
SEAD to DEAD
5. Clicking "Take Off" and confirming in the mission editor that the
SEAD2DEAD flight has Weapon Release Type set to "Auto" at the Ingress
Waypoint.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2779.
2023-05-07 21:19:53 +02:00
Raffson
5b7ff8bdd6
Add fuel quantity selector to EditFlight's payload tab
Resolves #99
2023-04-10 17:11:30 +02:00
Raffson
efd2c40cfc
Avoid generating/planning flights without an operational runway 2023-04-10 14:38:06 +02:00
MetalStormGhost
e2797fd796
F/A-18E/F/G Super Hornet mod support v2.1 (#84)
* Don't generate runway data for heliports.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2710.

* Remove dead code.

* Implemented support for Chiller Juice Studios F/A-18E/F/G Super Hornet mod

The Chiller Juice Studios Super Hornet mod works like this: it changes the stock F/A-18C Hornet into F/A-18E/F/G Super Hornet / Growler. The exact variant is selected with argument 999 in the livery description.lua, which is why I chose to add the three variants in the FA-18C_hornet.yaml. This way, we can use the squadrons mechanism in Liberation to select the appropriate variant by specifying the correct livery for the squadron.

Current properties injected are wingspan / width and the custom ordnance added by the mod.

Added F/A-18E/F/G banner by Schmokedpancake and F/A-18F icon.

Resolves https://github.com/dcs-liberation/dcs_liberation/issues/2681

* Added a separate loadout file for the Chiller Juice Studios F/A-18E/F/G Super Hornet mod. Currently only replaces the FPU-8A fuel tanks with FPU-12s.

* Added the possibility to use the AI variant of the F/A-18C in campaigns, allowing different loadouts and in the future, the Super Hornet mod alongside legacy Hornets in the same campaign.

* Updated Chiller Juice Studios F/A-18E/F/G Super Hornet mod support to version 2.0. Removed the 1.x version property and pylon injection since they are no longer necessary, since 2.0 adds the Super Hornet variants as separate aircraft. For the same reason, removed the AI-only F/A-18C from the faction files (still retained the aircraft yaml, loadout files and icon/banner in case someone still wants to use it).

Includes F/A-18E/F/G banner by Schmokedpancake, loadouts by @sgtfuzzle17 and F/A-18E/F icons.

* Added Super Hornet, Growler squadrons and Growler banner by @sgtfuzzle17
The squadrons include the model of the airframe in their name, so they can be referenced directly from campaign yaml files without the risk of conflicting with the same squadron of a different era, flying a different airframe.

Also updated the E and G model icons.

Resolves #77

* Fixed a bug with the EA-18G banner not being visible in Retribution. Also added the Super Hornet variants to factions bluefor_modern and Israel-USN_2005_Allied_Sword.

* Corrected the descriptions for tandem-seat Super Hornet variants.

* Updated Chiller Juice Studios F/A-18E/F/G Super Hornet mod support to version 2.1

* Anti-ship loadouts are now named properly.

* Update changelog.md

* Update QNewGameWizard.py

---------

Co-authored-by: Dan Albert <dan@gingerhq.net>
Co-authored-by: Raffson <Raffson@users.noreply.github.com>
2023-03-12 19:17:29 +00:00
Raffson
d410f9d3c4
Formatting... 2023-02-02 21:41:01 +01:00
Raffson
88f984b0a8
Configurable RF/TCN/ICLS/LINK4 with UI feedback
Resolves #70

Freq/Channel will turn orange when double booked.
Freq will turn red if GUARD freq was assigned.
2023-01-17 18:32:20 +01:00
Raffson
7bae6cd562
Add package frequency
Part of #70
2023-01-13 22:26:58 +01:00
Raffson
e8151678dd
Fix UI bug in CreateFlight window
Pilot's player checkbox would be enabled for non-flyable aircraft if the initially selected aircraft that was flyable.
2023-01-13 22:26:58 +01:00
Raffson
2aed461b3a
Add custom name for packages in ATO overview
Resolves #55
2023-01-02 02:35:14 +01:00
Raffson
f4d75a2c6f
Allow edit of flight's custom name 2023-01-02 02:26:12 +01:00
Dan Albert
219b52fc12
Fix adding and removing waypoints in the UI.
This moves more of the logic out of the UI so mypy can actually spot
these mistakes more often.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2495.
2022-11-20 16:07:01 +01:00
Raffson
a736bf9b09
"Optimize Imports" in game & qt-ui
Adjustments made by PyCharm
2022-10-24 18:54:41 +02:00
Dan Albert
4eadce7563
Simplify flight startup time calls.
We can always estimate a startup time now. Remove the nullability from
the result, cleanup the callsites, and eliminate
TotEstimator.mission_start_time since it no longer does anything useful.
2022-09-03 19:13:22 +02:00
Dan Albert
793a87d4fb
Fix crash when deleting waypoints.
self.coalition is used but was never set.
2022-09-03 19:13:21 +02:00
Dan Albert
07632e2705
Make TOT waypoints non-optional for flight plans.
Flights without a meaningful TOT make the code around startup time (and
other scheduling behaviors) unnecessarily complicated because they have
to handle unpredictable flight plans. We can simplify this by requiring
that all flight plans have a waypoint associated with their TOT. For
custom flight plans, we can just fall back to the takeoff waypoint. For
RTB flight plans (which are only synthetic flight plans injected for
aborted flights), we can use the abort point.

This also means that all flight plans now have, at the very least, a
departure waypoint. Deleting this waypoint is invalid even for custom
flights, so that's no a problem.
2022-09-03 19:13:21 +02:00
Raffson
48938fc529
Dan's massive refactor
Squashing 8 commits by DanAlbert:

- Track theater in ControlPoint.
Simplifies finding the owning theater of a control point. Not used yet.

- Clean some cruft out of FlightPlanBuilder.
- Clean up silly some exception handling.
- Move FlightPlan instantiation into the builder.
I'm working on moving the builder to be owned by the Flight, which will simplify callers that need to create (or recreate) flight plans for a flight.

- Simplify IBuilder constructor.
We have access to the theater via the flight's departure airbase now.

- Move FlightPlan creation into Flight.
For now this is just a callsite cleanup. Later, this will make it easier
to separate unscheduled and scheduled flights into different classes without complicating the layout/scheduling.

- Remove superfluous constructors.
- Remove unused Package field.
2022-08-24 19:25:30 +02:00
Raffson
18057af9ad
Disable player options for non-flyable aircraft
3 items handled:

- Enable/Disable player checkbox if (not) flyable
- Disable player list in air wing config dialog for non-flyable aircraft
- Update changelog
2022-08-14 14:45:27 +02:00
Raffson
a54c217f88
Guard against null squadron in flight creator.
Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2323
2022-07-17 18:21:35 -07:00
Raffson
cc4237d076
Fix incorrect start types for off-map squadrons. 2022-06-30 04:21:18 +00:00
Raffson
d45bba19c8 Initialize restore_start_type 2022-06-28 20:28:27 -07:00
Raffson
75cc8bfd50 Skip UI update for canceled packages.
This is theoretically impossible, but for some reason the dialog that
owns this object QEditFlightDialog does not dispose properly on close,
so this handler may be called for a flight whose package has been
canceled, which is an invalid state for calling anything in
TotEstimator.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2250
2022-06-25 13:31:40 -07:00