From 287064516940c2a3233e1435ef891579e057d1cc Mon Sep 17 00:00:00 2001 From: punkfairie Date: Mon, 8 May 2023 17:42:09 -0700 Subject: [PATCH] no --- index.html | 49 ++- journal examples.txt | 18 +- src/icons/Flaticon.eot | Bin 0 -> 20258 bytes src/icons/Flaticon.svg | 670 +++++++++++++++++++++++++++++ src/icons/Flaticon.ttf | Bin 0 -> 20080 bytes src/icons/Flaticon.woff | Bin 0 -> 13380 bytes src/icons/Flaticon.woff2 | Bin 0 -> 11656 bytes src/icons/_flaticon.scss | 110 +++++ src/icons/flaticon.css | 70 +++ src/icons/flaticon.html | 630 +++++++++++++++++++++++++++ src/interfaces/Body.js | 11 + src/interfaces/JournalInterface.js | 111 +++-- src/interfaces/System.js | 8 + src/main.js | 1 + src/renderer.js | 17 +- 15 files changed, 1657 insertions(+), 38 deletions(-) create mode 100644 src/icons/Flaticon.eot create mode 100644 src/icons/Flaticon.svg create mode 100644 src/icons/Flaticon.ttf create mode 100644 src/icons/Flaticon.woff create mode 100644 src/icons/Flaticon.woff2 create mode 100644 src/icons/_flaticon.scss create mode 100644 src/icons/flaticon.css create mode 100644 src/icons/flaticon.html create mode 100644 src/interfaces/Body.js create mode 100644 src/interfaces/System.js diff --git a/index.html b/index.html index cf8ace0..fd1cf52 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,7 @@

+
@@ -27,22 +28,62 @@
Mapped Value
+
-
- {{ currentLocation }} +
+ + {{ currentLocation.name }}
+
+
-
+
+
+ +
+ + {{ body.BodyName.replace(body.StarSystem, '') }} +
+ +
+ + {{ body.PlanetClass || body.StarType || '' }} +
+ +
+ {{ Intl.NumberFormat().format(Math.round(body.DistanceFromArrivalLS)) }} +
+ +
+ +
+
+
@@ -51,6 +92,7 @@

+
@@ -60,6 +102,7 @@
Mapped Value
+

diff --git a/journal examples.txt b/journal examples.txt index 3b42017..7235a9e 100644 --- a/journal examples.txt +++ b/journal examples.txt @@ -7,15 +7,27 @@ COMPLETED SYSTEM FSS SCAN UNCOMPLETE DISCOVERY SCAN { "timestamp":"2023-05-08T19:17:44Z", "event":"FSSDiscoveryScan", "Progress":0.239641, "BodyCount":7, "NonBodyCount":17, "SystemName":"LHS 551", "SystemAddress":22660650050977 } -AUTO SCAN +AUTO SCAN - STAR { "timestamp":"2023-05-08T19:13:58Z", "event":"Scan", "ScanType":"AutoScan", "BodyName":"LHS 119 A", "BodyID":1, "Parents":[ {"Null":0} ], "StarSystem":"LHS 119", "SystemAddress":18262603605409, "DistanceFromArrivalLS":0.000000, "StarType":"M", "Subclass":4, "StellarMass":0.214844, "Radius":267243648.000000, "AbsoluteMagnitude":11.148788, "Age_MY":11724, "SurfaceTemperature":2175.000000, "Luminosity":"V", "SemiMajorAxis":3448964357376.098633, "Eccentricity":0.010115, "OrbitalInclination":-105.666674, "Periapsis":272.289207, "OrbitalPeriod":18957803249.359131, "AscendingNode":-65.823206, "MeanAnomaly":326.300292, "RotationPeriod":131207.524554, "AxialTilt":0.000000, "WasDiscovered":true, "WasMapped":false } -DISCOVERY SCAN - DISCOVERED STAR +AUTO SCAN - ASTROID +{ "timestamp":"2023-05-08T20:34:25Z", "event":"Scan", "ScanType":"AutoScan", "BodyName":"Aten A A Belt Cluster 8", "BodyID":11, "Parents":[ {"Ring":3}, {"Star":1}, {"Null":0} ], "StarSystem":"Aten", "SystemAddress":16063580284321, "DistanceFromArrivalLS":4.171922, "WasDiscovered":true, "WasMapped":false } + +AUTO SCAN - PLANET +{ "timestamp":"2023-05-04T19:15:34Z", "event":"Scan", "ScanType":"AutoScan", "BodyName":"Col 285 Sector SL-B b14-5 A 2", "BodyID":13, "Parents":[ {"Star":1}, {"Null":0} ], "StarSystem":"Col 285 Sector SL-B b14-5", "SystemAddress":11662043981201, "DistanceFromArrivalLS":14.736108, "TidalLock":true, "TerraformState":"", "PlanetClass":"High metal content body", "Atmosphere":"", "AtmosphereType":"None", "Volcanism":"", "MassEM":0.134842, "Radius":3279249.500000, "SurfaceGravity":4.997877, "SurfaceTemperature":478.828308, "SurfacePressure":0.000000, "Landable":true, "Materials":[ { "Name":"iron", "Percent":21.042704 }, { "Name":"nickel", "Percent":15.915817 }, { "Name":"sulphur", "Percent":15.119031 }, { "Name":"carbon", "Percent":12.713538 }, { "Name":"chromium", "Percent":9.463602 }, { "Name":"manganese", "Percent":8.690421 }, { "Name":"phosphorus", "Percent":8.139426 }, { "Name":"vanadium", "Percent":5.167356 }, { "Name":"niobium", "Percent":1.438156 }, { "Name":"tin", "Percent":1.371430 }, { "Name":"antimony", "Percent":0.938514 } ], "Composition":{ "Ice":0.000000, "Rock":0.675801, "Metal":0.324199 }, "SemiMajorAxis":4417732596.397400, "Eccentricity":0.000022, "OrbitalInclination":0.000008, "Periapsis":115.738785, "OrbitalPeriod":272940.599918, "AscendingNode":-62.515181, "MeanAnomaly":244.149914, "RotationPeriod":273121.869415, "AxialTilt":0.183773, "WasDiscovered":true, "WasMapped":false } + +AUTO SCAN - PLANET WITH RINGS +{ "timestamp":"2023-05-08T20:35:59Z", "event":"Scan", "ScanType":"Detailed", "BodyName":"Aten A 1", "BodyID":12, "Parents":[ {"Star":1}, {"Null":0} ], "StarSystem":"Aten", "SystemAddress":16063580284321, "DistanceFromArrivalLS":1167.434670, "TidalLock":false, "TerraformState":"", "PlanetClass":"Gas giant with water based life", "Atmosphere":"", "AtmosphereComposition":[ { "Name":"Hydrogen", "Percent":73.087502 }, { "Name":"Helium", "Percent":26.864477 } ], "Volcanism":"", "MassEM":728.355774, "Radius":77289928.000000, "SurfaceGravity":48.596746, "SurfaceTemperature":176.230774, "SurfacePressure":0.000000, "Landable":false, "SemiMajorAxis":350418865680.694580, "Eccentricity":0.001707, "OrbitalInclination":0.004975, "Periapsis":338.090969, "OrbitalPeriod":195814841.985703, "AscendingNode":110.765871, "MeanAnomaly":43.859451, "RotationPeriod":115219.325821, "AxialTilt":2.695141, "Rings":[ { "Name":"Aten A 1 A Ring", "RingClass":"eRingClass_Rocky", "MassMT":1.4721e+11, "InnerRad":1.4467e+08, "OuterRad":1.6124e+08 }, { "Name":"Aten A 1 B Ring", "RingClass":"eRingClass_Icy", "MassMT":2.0931e+12, "InnerRad":1.6134e+08, "OuterRad":3.1323e+08 } ], "ReserveLevel":"LowResources", "WasDiscovered":true, "WasMapped":true } + +DISCOVERY SCAN - STAR { "timestamp":"2023-05-08T19:16:19Z", "event":"Scan", "ScanType":"Detailed", "BodyName":"V439 Andromedae B", "BodyID":2, "Parents":[ {"Null":0} ], "StarSystem":"V439 Andromedae", "SystemAddress":2282808677074, "DistanceFromArrivalLS":9823.421969, "StarType":"G", "Subclass":4, "StellarMass":0.894531, "Radius":641376256.000000, "AbsoluteMagnitude":5.081848, "Age_MY":8408, "SurfaceTemperature":5678.000000, "Luminosity":"Vab", "SemiMajorAxis":1226380169391.632080, "Eccentricity":0.205087, "OrbitalInclination":42.869302, "Periapsis":318.335747, "OrbitalPeriod":1559399366.378784, "AscendingNode":108.884004, "MeanAnomaly":170.879935, "RotationPeriod":461309.851688, "AxialTilt":0.000000, "WasDiscovered":true, "WasMapped":false } -FSS SCAN - DISCOVERED BODY +FSS SCAN - PLANET { "timestamp":"2023-05-08T19:18:10Z", "event":"Scan", "ScanType":"Detailed", "BodyName":"LHS 551 3", "BodyID":3, "Parents":[ {"Star":0} ], "StarSystem":"LHS 551", "SystemAddress":22660650050977, "DistanceFromArrivalLS":1145.828346, "TidalLock":false, "TerraformState":"", "PlanetClass":"Icy body", "Atmosphere":"neon rich atmosphere", "AtmosphereType":"NeonRich", "AtmosphereComposition":[ { "Name":"Helium", "Percent":97.112808 }, { "Name":"Neon", "Percent":2.887197 } ], "Volcanism":"minor ammonia magma volcanism", "MassEM":0.786165, "Radius":7230740.000000, "SurfaceGravity":5.993182, "SurfaceTemperature":40.704479, "SurfacePressure":15131.975586, "Landable":false, "Composition":{ "Ice":0.682992, "Rock":0.211345, "Metal":0.105663 }, "SemiMajorAxis":343500107526.779175, "Eccentricity":0.004332, "OrbitalInclination":0.041314, "Periapsis":315.505986, "OrbitalPeriod":217869794.368744, "AscendingNode":1.173041, "MeanAnomaly":90.159583, "RotationPeriod":49998.912442, "AxialTilt":-0.036086, "WasDiscovered":true, "WasMapped":true } +FSS SCAN - ASTROID +{ "timestamp":"2023-05-08T20:38:19Z", "event":"Scan", "ScanType":"AutoScan", "BodyName":"Aten B A Belt Cluster 2", "BodyID":45, "Parents":[ {"Ring":43}, {"Star":2}, {"Null":0} ], "StarSystem":"Aten", "SystemAddress":16063580284321, "DistanceFromArrivalLS":79972.251687, "WasDiscovered":true, "WasMapped":false } + DETAILED SURFACE SCAN - MAPPED BODY { "timestamp":"2023-05-08T19:22:20Z", "event":"SAAScanComplete", "BodyName":"LHS 551 1", "SystemAddress":22660650050977, "BodyID":1, "ProbesUsed":8, "EfficiencyTarget":8 } { "timestamp":"2023-05-08T19:22:21Z", "event":"Scan", "ScanType":"Detailed", "BodyName":"LHS 551 1", "BodyID":1, "Parents":[ {"Star":0} ], "StarSystem":"LHS 551", "SystemAddress":22660650050977, "DistanceFromArrivalLS":578.392122, "TidalLock":false, "TerraformState":"", "PlanetClass":"Rocky ice body", "Atmosphere":"helium atmosphere", "AtmosphereType":"Helium", "AtmosphereComposition":[ { "Name":"Helium", "Percent":89.334976 }, { "Name":"Hydrogen", "Percent":8.427828 }, { "Name":"Neon", "Percent":2.237205 } ], "Volcanism":"major water geysers volcanism", "MassEM":4.158691, "Radius":10698825.000000, "SurfaceGravity":14.480845, "SurfaceTemperature":58.117901, "SurfacePressure":67337.343750, "Landable":false, "Composition":{ "Ice":0.403397, "Rock":0.397748, "Metal":0.198856 }, "SemiMajorAxis":173410028219.223022, "Eccentricity":0.000081, "OrbitalInclination":-0.013599, "Periapsis":290.186625, "OrbitalPeriod":78148038.387299, "AscendingNode":-3.343060, "MeanAnomaly":332.810795, "RotationPeriod":157634.536311, "AxialTilt":0.224570, "WasDiscovered":true, "WasMapped":true } diff --git a/src/icons/Flaticon.eot b/src/icons/Flaticon.eot new file mode 100644 index 0000000000000000000000000000000000000000..0e3b78da0fbda6e7365fe86eb5e2296f815fc762 GIT binary patch literal 20258 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 + + + + +Created by FontForge 20170731 at Sun Oct 4 20:48:03 2020 + By root + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/Flaticon.ttf b/src/icons/Flaticon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..94394140e2987804509d7184d81d3baf8b2e8cd8 GIT binary patch literal 20080 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 PU;V9m0;OK~e{266+NdL^ literal 0 HcmV?d00001 diff --git a/src/icons/Flaticon.woff b/src/icons/Flaticon.woff new file mode 100644 index 0000000000000000000000000000000000000000..7016a7751fe5724fa8565205a10f0d28b9e1a15c GIT binary patch literal 13380 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 + + + + + + + Flaticon WebFont + + + + + + + + +
+ + Font Demo +
+ + +
+ +

Instructions

+ +
    +
  • + 1Copy the "Fonts" files and CSS files to your website CSS folder. +
  • +
  • + 2Add the CSS link to your website source code on header. + + <head> +
    ... +
    <link rel="stylesheet" type="text/css" href="your_website_domain/css_root/flaticon.css"> +
    ... +
    </head> +
    +
  • + +
  • +

    + 3Use the icon class on "display: inline" elements: +
    + Use example: <i class="flaticon-airplane49"></i> or <span class="flaticon-airplane49"></span> +

  • +
+ +
+ + + + +
+ + +
+
.flaticon-lander
+ +
+ +
+
.flaticon-volcano
+
Author: Freepik
+
+ +
+
.flaticon-cooling-tower
+
Author: Freepik
+
+ +
+
.flaticon-cooling-tower-1
+
Author: Freepik
+
+ +
+
.flaticon-volcano-1
+
Author: deemakdaksina
+
+ +
+
.flaticon-flag-outline-on-a-pole-with-stars-around
+
Author: Freepik
+
+ +
+
.flaticon-saturn
+
Author: prettycons
+
+ +
+
.flaticon-earth
+
Author: Freepik
+
+ +
+
.flaticon-planet
+
Author: itim2101
+
+ +
+
.flaticon-planet-1
+
Author: Victoruler
+
+ +
+
.flaticon-globe
+
Author: Smashicons
+
+ +
+
.flaticon-jupiter
+
Author: monkik
+
+ +
+
.flaticon-venus
+
Author: monkik
+
+ +
+
.flaticon-moon
+
Author: Nhor Phai
+
+ +
+
.flaticon-astronomy
+
Author: Eucalyp
+
+ +
+
.flaticon-asteroid
+
Author: Freepik
+
+ +
+
.flaticon-asteroid-1
+
Author: Smashicons
+
+ +
+
.flaticon-ingot
+
Author: Smashicons
+
+ +
+
.flaticon-snowflake
+
Author: kmg design
+
+ +
+
.flaticon-star
+
Author: Freepik
+
+ +
+
.flaticon-solar-system
+
Author: Freepik
+
+ +
+
.flaticon-asteroid-2
+
Author: Abbasi
+
+ +
+
.flaticon-water
+
Author: Freepik
+
+ +
+
.flaticon-water-drops
+
Author: Freepik
+
+ +
+
.flaticon-asteroid-3
+
Author: Smashicons
+
+ +
+
.flaticon-asteroid-4
+
Author: Freepik
+
+ +
+
.flaticon-jupiter-1
+
Author: monkik
+
+ +
+
.flaticon-jupiter-2
+
Author: Icongeek26
+
+ +
+
.flaticon-jupiter-3
+ +
+ +
+
.flaticon-pickaxe
+
Author: Freepik
+
+ +
+
.flaticon-curved-line
+
Author: Freepik
+
+ +
+
.flaticon-bacteria
+
Author: Smashicons
+
+ +
+
.flaticon-dna
+
Author: Freepik
+
+ +
+
.flaticon-ingot-1
+
Author: Smashicons
+
+ +
+
.flaticon-gold-bars
+
Author: prettycons
+
+ + +
+ + + +
+ +
License and attribution:
+
Copy the Attribution License:
+ + + +
+ +
+ +
Examples:
+ +
+

+ + <i class="flaticon-lander"></i> +

+
+ +
+

+ + <i class="flaticon-volcano"></i> +

+
+ +
+

+ + <i class="flaticon-cooling-tower"></i> +

+
+ +
+

+ + <i class="flaticon-cooling-tower-1"></i> +

+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/src/interfaces/Body.js b/src/interfaces/Body.js new file mode 100644 index 0000000..b7ceb53 --- /dev/null +++ b/src/interfaces/Body.js @@ -0,0 +1,11 @@ +export class Body { + constructor() {} + + isAsteroid() { + return this.BodyName.includes('Belt') + } + + simpleName() { + return this.BodyName.replace(this.StarSystem, '') + } +} \ No newline at end of file diff --git a/src/interfaces/JournalInterface.js b/src/interfaces/JournalInterface.js index efd2006..55008ae 100644 --- a/src/interfaces/JournalInterface.js +++ b/src/interfaces/JournalInterface.js @@ -1,5 +1,7 @@ +import { Body } from './Body' +import { System } from './System' + const EventEmitter = require('events') -const { app } = require('electron') const fs = require('fs') const path = require('path') const max = require('lodash/max') @@ -8,21 +10,22 @@ const os = require('os') const lineReader = require('reverse-line-reader') const chokidar = require('chokidar') const Tail = require('tail').Tail +const find = require('lodash/find') -// set log() to console.log() so whenever I get around to setting up a log file, I don't have to -// search and replace all the console.log()'s +// Set log() to console.log() so whenever I get around to setting up a log file, I don't have to +// search and replace all the console.log()'s. const log = console.log.bind(console) export class JournalInterface extends EventEmitter { - constructor() { + constructor(isPackaged) { super() this.journalDir = null - if (!app.isPackaged) { // account for WSL during development + if (!isPackaged) { // Account for WSL during development this.journalDir = "/mnt/c/Users/marle/Saved\ Games/Frontier\ Developments/Elite\ Dangerous/" - } else if (os.platform() === 'win32') { // windows + } else if (os.platform() === 'win32') { // Windows this.journalDir = os.homedir() + '\\Saved Games\\Frontier Developments\\Elite Dangerous' - } else if (os.platform() === 'linux') { // linux + } else if (os.platform() === 'linux') { // Linux this.journalDir = os.homedir() + '/.local/share/Steam/steamapps/compatdata/359320/pfx/drive_c/users/steamuser/Saved Games/Frontier Developments/Elite Dangerous/' } else { log(`ERROR: Journal files not found. OS: ${os.platform()}.`) @@ -32,15 +35,18 @@ export class JournalInterface extends EventEmitter { this.currentJournal = this.getLatestJournal() - // lineReader seems to be async, so start async processes here + // LineReader seems to be async, so start async processes here. this.currentLocation = null - this.currentSystemBodies = null log('JournalInterface initialized. Attempting to find current location.') this.getCurrentLocation() .then(() => { log('Attempting to find scanned bodies in current system.') this.getScannedBodies() + .then(() => { + log('Scanned bodies found.') + this.emit('SCANNED_BODIES_FOUND') + }) }) } @@ -57,48 +63,93 @@ export class JournalInterface extends EventEmitter { log(`New journal file found, now watching ${path.basename(this.currentJournal)}.`) } - // get current location on setup, so if app is restarted, user can pick up where they left off - // rather than waiting til they jump to the next system to use the program again + // Get current location on setup, so if app is restarted, user can pick up where they left off + // Rather than waiting til they jump to the next system to use the program again. async getCurrentLocation() { - lineReader.eachLine(this.currentJournal, (raw, last) => { + return lineReader.eachLine(this.currentJournal, (raw, last) => { if (raw) { // skip blank line at end of file const line = JSON.parse(raw) if (line.event === 'FSDJump') { - this.currentLocation = line.StarSystem + this.currentLocation = new System(line.StarSystem) + log(`Current location set to ${this.currentLocation.name}.`) + this.emit('FSDJump') return false } else if (last) { log('Warning: unable to find last hyperspace jump. Current location unknown.') return false } } - }).then(() => { - this.emit('FSDJump') - log(`Current location set to ${this.currentLocation}.`) }) } - // look for all scanned bodies before last FSDJump, for same reasons as getCurrentLocation() - // if ScanType = Detailed, look at line immediately above for event = SAAScanComplete? + // Look for all scanned bodies before last FSDJump, for same reasons as getCurrentLocation(). async getScannedBodies() { - const detailedScanLine = null + let detailedScanLine = null - lineReader.eachLine(this.currentJournal, (raw, last) => { - if (raw) { // skip blank line at end of file + return lineReader.eachLine(this.currentJournal, (raw, last) => { + + if (raw) { // Skip blank line at end of file. const line = JSON.parse(raw) - if (line.event === 'Scan') { - if (line.ScanType === 'Detailed') { - detailedScanLine = line + // Check if previous line was ScanType = Detailed, and handle that. + if (detailedScanLine !== null) { + if (line.event === 'SAAScanComplete') { + // This was a DSS, so set the DSS flag to true and add to list. + detailedScanLine.DSSDone = true + this.currentLocation.bodies.push(Object.assign(new Body, detailedScanLine)) + } else { + // Else, check that the body hasn't already been added (by a DSS scan line). + let r = find(this.currentLocation.bodies, ['BodyID', detailedScanLine.BodyID]) + + if (r === undefined) { + // Set DSS flag if body was not already logged, then add to list. + detailedScanLine.DSSDone = false + this.currentLocation.bodies.push(Object.assign(new Body, detailedScanLine)) + } } + + // Finally, clear the variable. + detailedScanLine = null + } + + // Now move on to evaluating the current line. + if (line.event === 'Scan') { + // If ScanType = Detailed and body is not a star, save the line so we can check + // the one immediately above for event = SAAScanComplete, which indicates this + // was a DSS. + if (line.ScanType === 'Detailed' && line.StarType === undefined) { + detailedScanLine = line + + } else if (line.StarType !== undefined) { // Save stars to bodies list. + this.currentLocation.bodies.push(Object.assign(new Body, line)) + + } else if (line.ScanType === 'AutoScan') { // Save auto/discovery scan bodies. + // Check if planet, and then do the duplicate check (otherwise it's an + // astroid, as we've already accounted for stars). + if (line.PlanetClass !== undefined) { + let r = find(this.currentLocation.bodies, ['BodyID', line.BodyID]) + + if (r === undefined) { + line.DSSDone = false + this.currentLocation.bodies.push(Object.assign(new Body, line)) + } + + } else { // Asteroids. + this.currentLocation.bodies.push(Object.assign(new Body, line)) + } + } + } else if (line.event === 'FSDJump') { + // Stop evaluating once we reach the beginning of current system entries. + return false } } }) } - // set up journal directory watcher to catch new journal files as the game seems to sometimes - // make more than one journal per day - // also for instances where UTC day switches over mid-play session + // Set up journal directory watcher to catch new journal files as the game seems to sometimes + // make more than one journal per day. + // Also for instances where UTC day switches over mid-play session. watchDirectory() { const watcher = chokidar.watch(this.journalPattern, {usePolling: true, persistent: true}) @@ -107,17 +158,17 @@ export class JournalInterface extends EventEmitter { log('Watching journal folder for changes...') } - // parse and handle journal lines + // Parse and handle journal lines. parseLine(raw) { const line = JSON.parse(raw) if (line.event === 'FSDJump') { - this.currentLocation = line.StarSystem + this.currentLocation = new System(line.StarSystem) this.emit('FSDJump') } } - // watch the journal for changes + // Watch the journal for changes. watchJournal() { const tail = new Tail(this.currentJournal, {useWatchFile: true}) diff --git a/src/interfaces/System.js b/src/interfaces/System.js new file mode 100644 index 0000000..4e03dad --- /dev/null +++ b/src/interfaces/System.js @@ -0,0 +1,8 @@ +export class System { + constructor(StarSystem) { + // In future, this is where we preform EDSM lookup + + this.name = StarSystem + this.bodies = [] + } +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index 811cc8c..62ed0c9 100644 --- a/src/main.js +++ b/src/main.js @@ -15,6 +15,7 @@ const createWindow = () => { preload: path.join(__dirname, 'preload.js'), nodeIntegration: true, contextIsolation: false, + additionalArguments: [`EDS-ENV=${app.isPackaged}`], }, }); diff --git a/src/renderer.js b/src/renderer.js index 88d2c32..31c5f36 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -27,14 +27,23 @@ */ import './index.css' +import './icons/flaticon.css' +const { app } = require('electron') import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js' - import { JournalInterface } from './interfaces/JournalInterface' +// Grab app.isPackaged from main process +let isPackaged = false +window.process.argv.forEach((item) => { + if (item.includes('EDS-ENV')) { + isPackaged = (item.split('=').pop() === 'true') + } +}) + createApp({ setup() { - const journal = new JournalInterface + const journal = new JournalInterface(isPackaged) // TODO: show warning to user if (journal.journalDir === null) { @@ -45,11 +54,15 @@ createApp({ journal.watchJournal() const currentLocation = ref('Unknown') + const currentSystemBodies = ref([]) journal.on('FSDJump', () => currentLocation.value = journal.currentLocation) + journal.on('SCANNED_BODIES_FOUND', () => currentSystemBodies.value = journal.currentLocation.bodies) + return { currentLocation, + currentSystemBodies, } } }).mount('#app')