{$statusStore?.pips?.sys ?? "?"}
@@ -129,8 +121,8 @@
dest?: {$statusStore?.destination?.name}
gui focus: {getEnumNameFromValue(FocusStatus, $statusStore.guiFocus!)}
cargo: {$statusStore.cargo}
-
flag1: {getEnumNamesFromFlag(StatusFlags, $statusStore.flags!)}
-
flag2: {getEnumNamesFromFlag(StatusFlags2, $statusStore.flags2!)}
+
flag1: {getEnumNamesFromFlag(StatusFlags, $statusStore.flags!)} ({$statusStore.flags})
+
flag2: {getEnumNamesFromFlag(StatusFlags2, $statusStore.flags2!)} ({$statusStore.flags2})
{:else}
No data :(
{/if}
diff --git a/Pulsar/WebApp/src/routes/explorer/Explorer.svelte b/Pulsar/WebApp/src/routes/explorer/Explorer.svelte
index 00e1a5b..dab4063 100644
--- a/Pulsar/WebApp/src/routes/explorer/Explorer.svelte
+++ b/Pulsar/WebApp/src/routes/explorer/Explorer.svelte
@@ -3,6 +3,7 @@
import type { FSSDiscoveryScan } from "../../types/api/FSSDiscoveryScan";
import type { Scan } from "../../types/api/Scan";
import type JournalBase from "../../types/api/JournalBase";
+ import type { FSSBodySignals } from "../../types/api/Signals";
const data: Partial
[] = [{}, {}, {}, {}];
// total bodies in the current system (FSSDiscovery event)
@@ -10,6 +11,13 @@
let currentSystem = $state("");
// accumulated list of bodies in the current system (Scan events)
let scans = $state([] as Scan[]);
+ let signals = $state([] as FSSBodySignals[]);
+
+ const filterImportantScans = (scans: Scan[], signals: FSSBodySignals[]) => {
+ return [] as Scan[];
+ };
+
+ const importantScans = $derived(filterImportantScans(scans, signals));
const targetEvents = ["Scan", "FSSScanBaryCenter", "FSSDiscoveryScan"];
@@ -59,11 +67,17 @@
case "High metal content":
case "High metal content body":
return "HMC";
+ case "Metal rich body":
+ return "MRB";
case "Sudarsky class I gas giant":
case "Sudarsky class II gas giant":
case "Sudarsky class III gas giant":
case "Sudarsky class IV gas giant":
return "GAS";
+ case "Icy body":
+ return "ICE";
+ case "Rocky body":
+ return "ROC";
default:
return planetClass;
}
diff --git a/Pulsar/WebApp/src/types/api/Signals.ts b/Pulsar/WebApp/src/types/api/Signals.ts
new file mode 100644
index 0000000..beb28f3
--- /dev/null
+++ b/Pulsar/WebApp/src/types/api/Signals.ts
@@ -0,0 +1,28 @@
+import type JournalBase from "./JournalBase";
+
+export interface Signal {
+ type: string;
+ type_Localised: string;
+ count: number;
+}
+
+export interface GenusType {
+ Genus: string;
+ Genus_Localised: string;
+}
+
+interface BodySignalBase extends JournalBase {
+ SystemAddress: bigint;
+ BodyName: string;
+ BodyID: bigint;
+ Signals: Signal[];
+ Genuses: GenusType[];
+}
+
+export interface SAASignalsFound extends BodySignalBase {
+ event: "SAASignalsFound";
+}
+
+export interface FSSBodySignals extends BodySignalBase {
+ event: "FSSBodySignals";
+}
diff --git a/Pulsar/WebApp/svelte.config.js b/Pulsar/WebApp/svelte.config.js
index 78a97fe..96e1e80 100644
--- a/Pulsar/WebApp/svelte.config.js
+++ b/Pulsar/WebApp/svelte.config.js
@@ -11,8 +11,8 @@ const config = {
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
- adapter: adapter()
- }
+ adapter: adapter(),
+ },
};
export default config;
diff --git a/README.md b/README.md
index 1428377..ee2844a 100644
--- a/README.md
+++ b/README.md
@@ -4,34 +4,53 @@ A Work In Progress Application For Presenting Game Data In Realtime From Elite D
A Cross Platform Fork of Elite Observatory Core.
+## WIP Preview
+ 
+
## Planned Feature
- - [ ] Read the Journal
- - [x] Read Status File
+ - [x] Read & Parse the Journals
+ - [x] Read Extra Files
- [ ] Show Journal information ( Current Ship, Station, etc. )
- - [ ] Realtime API (Events, with extended updates)
- - [ ] Realtime Journal Updates
+ - [ ] Current Ship/Station/NavRoute/Jumps
+ - [x] Realtime API (Events)
+ - [ ] Extended Updates API (include relevant data with events)
+ - [x] Realtime Journal Updates
- [ ] Multiple Commanders
- [ ] Cached Journal Data (in-memory SQL, enabled extended updates)
- [ ] !System Exploration Value
+ - [ ] Custom Criteria (e.g. "Has Water World", "more than 400Kcr Scan value")
- [ ] !System Exobiology Value
- - [ ] !Exobiology Scan info (+[Show Req. Disatance](https://github.com/EDCD/EDDI/blob/e28ef64a1d41c1e39485863aa362d207e8d36834/Utilities/Functions.cs#L128C1-L152C10) for next scan)
+ - [ ] !Exobiology Scan info (+[Show Req. Distance](https://github.com/EDCD/EDDI/blob/e28ef64a1d41c1e39485863aa362d207e8d36834/Utilities/Functions.cs#L128C1-L152C10) for next scan)
+ - [ ] Custom Criteria (e.g. "Stratum Tectonicas", "less than 500m distance per scan", "more than 1Mcr Scan value")
- [ ] !Fuel/Jump Warning
- - [ ] Material Tracking (Flag planets with materials, set goals, closest trader) [e.g.](https://github.com/jixxed/ed-odyssey-materials-helper)
+ - [x] Fuel Scoop Estimate Time Remaining
+ - [ ] Material Tracking (Flag planets with materials, set goals (Mat#, not modules), closest trader) [e.g.](https://github.com/jixxed/ed-odyssey-materials-helper)
- [ ] Custom Sounds (on user-defined Events)
- [ ] Mission Targets [Mission Stack Viewer](https://github.com/kaivalagi/EDMissionStackViewer)
- [ ] Commodities Targets/Alerts (Commodity Above/Below value at current station)
- - [ ] !Outfitting Targets (does this station have wanted parts for build)
+ - [ ] !Outfitting Targets (does this station have wanted parts for a build)
+ - [ ] Export to EDSY/Coriolis
- [ ] CAPI Integration
- [ ] !EDDN Submission
- [ ] Must be easilty disableable for sneaky business
- [ ] IGAU Submission
- [ ] Plugin System
- [ ] !Overlay
+ - [ ] !Linux (DXVK/Vulkan) [imgoverlay](https://github.com/nowrep/imgoverlay)
+ - [ ] Windows (DirectX) [Overlay.NET](https://github.com/lolp1/Overlay.NET/)
- [ ] Docking Hint 
+ - [ ] Biology Value & Scan Distance
+ - [ ] Fuel Scoop Estimate Time Remaining
+ - [ ] Custom Criteria
- [ ] Tray Icon
- [ ] Multiple Windows/Device Support
-
+ - [ ] Integrate ObservatoryCore Plugins:
+ - [ ] https://github.com/mcmuttons/GeoPredictor
+
+Key:
+! = priority
+
## How To Use
TODO: make easy
diff --git a/TestProject1/GlobalUsings.cs b/TestProject1/GlobalUsings.cs
new file mode 100644
index 0000000..cefced4
--- /dev/null
+++ b/TestProject1/GlobalUsings.cs
@@ -0,0 +1 @@
+global using NUnit.Framework;
\ No newline at end of file
diff --git a/TestProject1/TestProject1.csproj b/TestProject1/TestProject1.csproj
new file mode 100644
index 0000000..31bfb18
--- /dev/null
+++ b/TestProject1/TestProject1.csproj
@@ -0,0 +1,20 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TestProject1/UnitTest1.cs b/TestProject1/UnitTest1.cs
new file mode 100644
index 0000000..29d941e
--- /dev/null
+++ b/TestProject1/UnitTest1.cs
@@ -0,0 +1,30 @@
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace TestProject1;
+
+public class Tests
+{
+ [JsonPolymorphic(TypeDiscriminatorPropertyName = "event")]
+ [JsonDerivedType(typeof(ChildEvent), "child")]
+ public abstract class EventBase
+ {
+ [JsonPropertyName("timestamp")] public DateTimeOffset Timestamp { get; init; }
+
+ [JsonPropertyName("event")] public string Event { get; set; }
+ }
+
+ public class ChildEvent : EventBase;
+
+ [Test]
+ public void Test()
+ {
+ var json = """
+ { "event": "child", "timestamp":"2024-05-20T12:36:10Z" }
+ """;
+
+ var obj = JsonSerializer.Deserialize(json)!;
+
+ Console.WriteLine(obj.Event); // ""
+ }
+}
\ No newline at end of file