autoElite Flight Plan Subsystem
Controls normal flight from planet to planet. The player can load the flight plan with a list of planets and then execute the flight plan. When the plan is executed the Flight Computer will launch, fly to the next planet, dock, buy fuel, fly to the next planet. This will continue until the final destination planet is reached. The flight plan uses a slightly modified version of the already existant docking computer.
API
;FlyTo(PlanetName):Maps a route to the named planet, creates the flight plan and executes it. ;AddPlanetToFlightPlan(PlanetName):Adds a destination to the flight plan ;ExecuteFlightPlan():Launches the player and begins executing the flight plan ;GetFlightPlanStatus():Reports on the current status of the flight plan. ;SetFlightPlanStatus(NewStatus):Overrides the current status of the flight plan.
UI
- Present the current flight plan as a list of planet names in a section of the FUI
- Adapt the long range and short range charts to show a flight plan and to select planets to input for a flight plan
Enhancements
- If the user has a fuel scoop allow the user to specify that they don't want to dock at a planet but use it as a way point and use sun scooping to fill up with gas and then be on our way. Beyond autoElite should model some upper limit for how long you can stay away from port. Perhaps there's two such limits - a legal limit which is (much?) less than a practical limit (based on food supply? or ship maintenance? or some form of ship limitation other than fuel?)
- Allow more complex mapping cost functions to be specified (instead of just distance) - this could help us optimize a trade route between a starting and a finishing location. Or it could be used to identify trade routes from a given starting location.
TODO
- Seperate out the route planning from FlyTo() - FlyTo() should only be an amalgamation of other routines
- Differentiate between 'systems' and 'planets'? (i.e. the planet Lave is in the Lave system)
;SaveFlightPlan(): Saves a flight plan so that it can be easily retrieved or shared with others. ;IsDockedAt(PlanetName): Returns true if we're docked at the named planet.