Skip to content

Repository files navigation

ed-exo-navigator

EDMC (Elite Dangerous Market Connector) plugin that guides exobiology genetic sampling — it remembers where each sample was taken and tells you, on an in-game overlay, how far you've travelled, how much further you need to go for genetic diversity, and which way to walk.

ExoSampleNavigator overlay in game

The shippable plugin lives in ExoSampleNavigator/ — see its README for what it does, requirements, and install steps.

Repository layout

ed-exo-navigator/
├── ExoSampleNavigator/        # the plugin users drop into EDMC's plugins/ folder
│   ├── load.py                # EDMC entry points (__version__ lives here)
│   ├── exonav_core.py         # pure logic: haversine, genus table, sampling state machine
│   ├── exonav_overlay.py      # resilient EDMCOverlay wrapper (text + vector arrow)
│   ├── README.md
│   └── LICENSE
├── package.py                 # builds dist/ExoSampleNavigator-v<version>.zip
├── smoke_test.py              # stubs EDMC and drives a full sampling run locally
├── .github/workflows/         # test (compile + self-test) and release (tag -> zip) CI
├── CHANGELOG.md
└── README.md

Development

  • Pure-logic self-test (no EDMC needed):
    python ExoSampleNavigator/exonav_core.py
  • Full smoke test (stubs EDMC modules, imports load.py, drives a Log→Sample→Analyse run; needs a display for tkinter):
    python smoke_test.py
  • Compile-check everything (what CI runs):
    python -m compileall -q .

Building a release

__version__ in ExoSampleNavigator/load.py is the single source of truth; the git tag must match it.

python package.py            # -> dist/ExoSampleNavigator-v<version>.zip
# or, automated:
git tag v1.0.0 && git push origin main --tags   # release.yml builds + publishes the zip

Architecture notes

  • ScanOrganic (the sample event) has no coordinates, so positions come from the latest Status.json fix cached in dashboard_entry and attached when the event fires.
  • Distances are great-circle (haversine) on a sphere of radius PlanetRadius (from Status.json).
  • Helper modules use the exonav_ prefix and top-level imports because EDMC puts every plugin on one shared sys.path — generic names like overlay.py would collide with other plugins.
  • The overlay is treated as optional: lazy import, reconnect on failure, and an in-window text fallback so the plugin still works without EDMCOverlay.

License

MIT — see LICENSE.

About

EDMC plugin: in-game overlay that guides Elite Dangerous exobiology genetic sampling (distance to next colony, per-genus thresholds, red/yellow/green indicator, directional arrow).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages