Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Advanced Navigation and Astrometrics #3373

Open
wants to merge 11 commits into
base: develop
Choose a base branch
from

Conversation

mitchell-foote
Copy link
Contributor

Description

We wanted to make Flight Control have a little bit more freedom in how they did their job, while also connecting them better with the crew.

These additions allow the flight control and whomever gets astrometrics to work together to plan complex routes through space, all while making sure the risk of those paths are justified. This allows Flight Directors to actively engage in the time during travel, while also helping to overcome all of the people who scan for ETA. Now you don't have to scan, because it tells you.

I was very proud of how this all turned out. I'll link a drive folder with all the screenshots of the various places. Feel free to reach out with any questions. Thanks!

https://drive.google.com/drive/folders/1CraZ1R5q3btg1L4ncspJIa3MzPUMd_nS?usp=sharing

Included in this PR are the following:

New Classes/Systems

FlightSet (Class)

A FlightSet contains the following to help power some of the other cards that will be discussed later.

  • A background image of the area of space the crew is located (a map)
  • A list of Points of Interest that a crew may or may not know about yet. These can be directly navigated to.
  • A list of borders that lead off of the map if the crew wants to leave the particular area.
  • Sizing information, including a default speed and distance that is calculated between two points.
  • A list of probe assignments: These are assignments that the probes can go on to points of interest. If you want to check out a place, send out a probe, and you can see it move out from your current position. It can also be used to store probe information/ data they get from each location.
  • A list of saved flight paths created by the user, ready to execute when they feel the need to.

These can now be created and managed through a new side icon.

FlightPath (Class)

A flight path contains all of the information needed to track distance to the location, as well as the speed, start, and exit options chosen for this path. It also can be used to determine the risk and speed of this particular path.

These are located in a FlightSet, and are only created during the flight.

AdvancedNavigationAndAstrometrics (System)

This class takes all of the data above, and holds the state to make things work inside the flight. It also replaces engine systems for the ship, as all things are now managed through this interface.

  • ETA
  • Current flight set
  • Showing the current flight set
  • Current flight path
  • Engine status
  • Heat and coolant levels
  • Current location

New config workflow

Flight sets config workflow

To help with the creation of flight sets, we've created a new flight sets config workflow that can be accessed on the main page.

The steps to this workflow are:

  1. Initial information
  2. Points of Interest
  3. Default Speed (Which also contains information on how fast the stars will pass based on current configurations)
  4. Flight Options (Start, speed, stop)
  5. Summary

Because flight options are more likely to be reused between sets, the system keeps track of all previously used flight options.

After creation, flight sets can be edited or deleted at will. (Though just like tac maps, should make sure any macros that use them are disabled. )

New Cards/Cores

Advanced Navigation

This card contains all of the UI to create a flight path, execute a flight path, and check out information about points of interest near you. Flight paths can change in their risk and speed if you decide to make a stop in another point of interest (Slingshot style).

Astrometrics

This card contains information about available launched probes, if they're assigned, if they have any data, as well as their remaining fuel cell count.

If you create a probe (that is not a probe network probe), and add the part "Extra fuel cell" to it, you'll be able to double the range of the probe. Sometimes you may not be close enough to a point of interest to have the probe reach it. You can ask your flight person to move closer to the point, or have them include it in a course so that you can drop off a probe.

Probe network probes are not included in the list of probes.

Macros

  • addFlightSetToNavigation (Adds a flight set to the system)
  • selectCurrentFlightSet (Sets a flight set as "current")

Viewscreens

AdvancedNavStars

We've forked the original stars card and made a new one, so that previous interactions would be untouched. It takes the current speed of the vessel in ly/sec and translates it into the stars component velocity format. 1 ly/sec being the maximum.

Other updates and fixes

To make the code transfer from my previous project, we needed to upgrade to react-scripts 4. So you should see some lock changes, as we did some updates across the board.

Tests have also be updated with the inclusion of saved flightSets.

Screenshots (if appropriate):

https://drive.google.com/drive/folders/1CraZ1R5q3btg1L4ncspJIa3MzPUMd_nS?usp=sharing

  • I submitted a pull request or created an issue for documenting this
    feature on the Thorium Docs
    repo. (Include the issue or pull request url below.)

Once we get the green light, I'll update the docs with info on the new system.

@alexanderson1993
Copy link
Member

You're killin' me Mitch.
Screenshot 2025-01-04 at 9 12 19 AM

This seems like good work offhand. I appreciate all the explanation and screenshots.

That said, I don't know that I can justify adding it to Thorium's core. It's a lot of extra code that needs to be maintained for a relatively niche feature that I don't think anyone but the CMSC is going to use. It might be time to chat about the CMSC setting up a fork of Thorium that they (you) maintain separate from this repo.

I'll slowly review this and let you know if I find anything egregious, but I think I'll need to be convinced to actually press the "Merge" button.

@alexanderson1993
Copy link
Member

Also, in the future, please submit many smaller PRs instead of one big one. It will make the feedback process much easier for all of us.

@mitchell-foote
Copy link
Contributor Author

Yeah, after I saw the add number I got all embarrassed. Thankfully about half of it is lock changes.

As for a fork, I’ll chat with James about it. See what he wants to do. At that point we would need our own signing key and stuff if I understand correctly. (Maybe?)

@alexanderson1993
Copy link
Member

At that point we would need our own signing key and stuff if I understand correctly.

Not strictly necessary. I'm only signing it for MacOS, and it's easy enough to override the system protections for each computer you install it on. It wouldn't be affected at all on Windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants