# Elite: Dangerous Long-range router ## Features - Three different routing algorithms: - **Breadth-first search:**, always finds the shortest route but is quite slow - **A-Star:** has an adjustable tradeoff between speed and quality - **Greedy search:** always picks the next reachable star that's closest to the destination, very fast but very poor quality routes - Nice GUI! (made with PyQt5) - Two themes! (Dark and Light) - Uses data from (EDSM)[https://edsm.net/] for star data - Only routes through scoopable systems, no more running out of fuel! (assuming you have a fuel scoop) - Precomputing of BFS routing graphs for near-instant routing from your home system to any destination! - Routing code written in Rust, so it's quite speedy! - Export routes as HTML, JSON, CSV and SVG (WIP!) - Automagically copy next jump destination into system clipboard (works by monitoring the player journal file) # Installation ## Prerequisites - Python: - conda (miniconda/anaconda) - tox (`conda install tox`) - Inno Setup Compiler - Download from [here](http://www.jrsoftware.org/isdl.php) - or install via [scoop](https://scoop.sh/) `scoop install inno-setup`) - Visual Studio 2019 - nightly rust compiler (`x86_64-pc-windows-msvc`) ## Building an installer (Assuming `conda` is in your `PATH`) 1. Start a Visual Studio 2019 x64 command prompt 2. Run `tox` 3. Grab the installer from `installer/Output/` ## Manual installation (Assuming `conda` is in your `PATH`) 1. Start a Visual Studio 2019 x64 command prompt 2. Run the following commands: ``` conda install pycrypto nuitka pip install PyQt5 setuptools_rust python build_gui.py pip install . ``` then you can run `ed_lrr -h` from your command prompt to get help # To do ## Router - Caching wrapper for System - Only fetch position once when building Spatial-Tree - Fetch data on demand ## GUI - Implement estimate time to completion display for route computation and preprocessing - Export route as: - JSON - HTML (WIP) - CSV - SVG ## Installer - Update PATH from installer ## Preprocessing - Build index over `systemsWithCoordinates.json` instead of loading it into RAM (reuse modified `LineCache` from `router.rs`) ## Misc - Luigi based Task queue for distributed routing