2
0
mirror of https://github.com/9ParsonsB/Pulsar.git synced 2025-07-01 16:33:43 -04:00

Initial Commit

This commit is contained in:
2024-04-13 15:54:59 +10:00
parent 8e178cbb7b
commit 63ed43f4af
459 changed files with 8039 additions and 20504 deletions

View File

@ -1,17 +1,16 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Journal event generated when buying system data from the galaxy map while docked.
/// </summary>
public class BuyExplorationData : JournalBase
{
/// <summary>
/// Journal event generated when buying system data from the galaxy map while docked.
/// Name of the system for which data was purchased.
/// </summary>
public class BuyExplorationData : JournalBase
{
/// <summary>
/// Name of the system for which data was purchased.
/// </summary>
public string System { get; init; }
/// <summary>
/// Amount paid for the data.
/// </summary>
public int Cost { get; init; }
}
}
public string System { get; init; }
/// <summary>
/// Amount paid for the data.
/// </summary>
public int Cost { get; init; }
}

View File

@ -1,91 +1,90 @@
using System.Collections.Immutable;
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when an item in the codex is scanned.
/// </summary>
public class CodexEntry : JournalBase
{
/// <summary>
/// Event generated when an item in the codex is scanned.
/// Unique ID of the entry.
/// </summary>
public class CodexEntry : JournalBase
{
/// <summary>
/// Unique ID of the entry.
/// </summary>
public ulong EntryID { get; init; }
/// <summary>
/// Name of the item scanned.
/// </summary>
public string Name { get; init; }
/// <summary>
/// Localised name of the item scanned.
/// </summary>
public string Name_Localised { get; init; }
/// <summary>
/// Codex sub category of the item scanned.
/// </summary>
public string SubCategory { get; init; }
/// <summary>
/// Localised sub category name of the item scanned.
/// </summary>
public string SubCategory_Localised { get; init; }
/// <summary>
/// Codex category of the item scanned.
/// </summary>
public string Category { get; init; }
/// <summary>
/// Localised category name of the item scanned.
/// </summary>
public string Category_Localised { get; init; }
/// <summary>
/// Codex region the scan occured in.
/// </summary>
public string Region { get; init; }
/// <summary>
/// Localised name of the region.
/// </summary>
public string Region_Localised { get; init; }
/// <summary>
/// Name of the system in which the scan occured.
/// </summary>
public string System { get; init; }
/// <summary>
/// Unique ID of the system in which the scan occured.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Name of the nearest surface signal.
/// </summary>
public string NearestDestination { get; init; }
/// <summary>
/// Localised name of hte nearest surface signal.
/// </summary>
public string NearestDestination_Localised { get; init; }
/// <summary>
/// Indicator that this codex entry hasn't been previously scanned by the CMDR.
/// </summary>
public bool IsNewEntry { get; init; }
/// <summary>
/// Indicator that htis codex entry has a trait not previously seen by the CMDR.
/// </summary>
public bool NewTraitsDiscovered { get; init; }
/// <summary>
/// List of trais of the scanned item.
/// </summary>
public ImmutableList<string> Traits { get; init; }
/// <summary>
/// Value of the codex entry when sold to Universal Cartographics.
/// </summary>
public int VoucherAmount { get; init; }
/// <summary>
/// Surface latitude where the scan occured.
/// </summary>
public float Latitude { get; init; }
/// <summary>
/// Surface longitude where the scan occured.
/// </summary>
public float Longitude { get; init; }
/// <summary>
/// Body ID of the system body where the scan occured.
/// </summary>
public int BodyID { get; init; }
}
}
public ulong EntryID { get; init; }
/// <summary>
/// Name of the item scanned.
/// </summary>
public string Name { get; init; }
/// <summary>
/// Localised name of the item scanned.
/// </summary>
public string Name_Localised { get; init; }
/// <summary>
/// Codex sub category of the item scanned.
/// </summary>
public string SubCategory { get; init; }
/// <summary>
/// Localised sub category name of the item scanned.
/// </summary>
public string SubCategory_Localised { get; init; }
/// <summary>
/// Codex category of the item scanned.
/// </summary>
public string Category { get; init; }
/// <summary>
/// Localised category name of the item scanned.
/// </summary>
public string Category_Localised { get; init; }
/// <summary>
/// Codex region the scan occured in.
/// </summary>
public string Region { get; init; }
/// <summary>
/// Localised name of the region.
/// </summary>
public string Region_Localised { get; init; }
/// <summary>
/// Name of the system in which the scan occured.
/// </summary>
public string System { get; init; }
/// <summary>
/// Unique ID of the system in which the scan occured.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Name of the nearest surface signal.
/// </summary>
public string NearestDestination { get; init; }
/// <summary>
/// Localised name of hte nearest surface signal.
/// </summary>
public string NearestDestination_Localised { get; init; }
/// <summary>
/// Indicator that this codex entry hasn't been previously scanned by the CMDR.
/// </summary>
public bool IsNewEntry { get; init; }
/// <summary>
/// Indicator that htis codex entry has a trait not previously seen by the CMDR.
/// </summary>
public bool NewTraitsDiscovered { get; init; }
/// <summary>
/// List of trais of the scanned item.
/// </summary>
public ImmutableList<string> Traits { get; init; }
/// <summary>
/// Value of the codex entry when sold to Universal Cartographics.
/// </summary>
public int VoucherAmount { get; init; }
/// <summary>
/// Surface latitude where the scan occured.
/// </summary>
public float Latitude { get; init; }
/// <summary>
/// Surface longitude where the scan occured.
/// </summary>
public float Longitude { get; init; }
/// <summary>
/// Body ID of the system body where the scan occured.
/// </summary>
public int BodyID { get; init; }
}

View File

@ -1,17 +1,16 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when using the discovery scanner (honk) to initially scan system. No longer used in live game client, will be found only in historical data.
/// </summary>
public class DiscoveryScan : JournalBase
{
/// <summary>
/// Event generated when using the discovery scanner (honk) to initially scan system. No longer used in live game client, will be found only in historical data.
/// Unique ID of system.
/// </summary>
public class DiscoveryScan : JournalBase
{
/// <summary>
/// Unique ID of system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Number of bodies in system.
/// </summary>
public int Bodies { get; init; }
}
}
public ulong SystemAddress { get; init; }
/// <summary>
/// Number of bodies in system.
/// </summary>
public int Bodies { get; init; }
}

View File

@ -1,21 +1,20 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when all bodies within a system have been scanned.
/// </summary>
public class FSSAllBodiesFound : JournalBase
{
/// <summary>
/// Event generated when all bodies within a system have been scanned.
/// Name of the system.
/// </summary>
public class FSSAllBodiesFound : JournalBase
{
/// <summary>
/// Name of the system.
/// </summary>
public string SystemName { get; init; }
/// <summary>
/// Unique ID of the system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Count of all scanned bodies in system.
/// </summary>
public int Count { get; init; }
}
}
public string SystemName { get; init; }
/// <summary>
/// Unique ID of the system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Count of all scanned bodies in system.
/// </summary>
public int Count { get; init; }
}

View File

@ -1,9 +1,8 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when the full spectrum scanner finds surface signals on a body.
/// </summary>
public class FSSBodySignals : SAASignalsFound
{
/// <summary>
/// Event generated when the full spectrum scanner finds surface signals on a body.
/// </summary>
public class FSSBodySignals : SAASignalsFound
{
}
}
}

View File

@ -1,29 +1,28 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when using the discovery scanner (honk) to initially scan system.
/// </summary>
public class FSSDiscoveryScan : JournalBase
{
/// <summary>
/// Event generated when using the discovery scanner (honk) to initially scan system.
/// Name of the current system.
/// </summary>
public class FSSDiscoveryScan : JournalBase
{
/// <summary>
/// Name of the current system.
/// </summary>
public string SystemName { get; init; }
/// <summary>
/// Unique ID of the current system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Percentage of current system already scanned.
/// </summary>
public float Progress { get; init; }
/// <summary>
/// Number of scannable bodies in system.
/// </summary>
public int BodyCount { get; init; }
/// <summary>
/// Number of scannable non-body locations in system.
/// </summary>
public int NonBodyCount { get; init; }
}
}
public string SystemName { get; init; }
/// <summary>
/// Unique ID of the current system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Percentage of current system already scanned.
/// </summary>
public float Progress { get; init; }
/// <summary>
/// Number of scannable bodies in system.
/// </summary>
public int BodyCount { get; init; }
/// <summary>
/// Number of scannable non-body locations in system.
/// </summary>
public int NonBodyCount { get; init; }
}

View File

@ -1,61 +1,60 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when a signal source is identified or scanned.
/// </summary>
public class FSSSignalDiscovered : JournalBase
{
/// <summary>
/// Event generated when a signal source is identified or scanned.
/// Name of the signal type.
/// </summary>
public class FSSSignalDiscovered : JournalBase
{
/// <summary>
/// Name of the signal type.
/// </summary>
public string SignalName { get; init; }
/// <summary>
/// Localised name of the signal type.
/// </summary>
public string SignalName_Localised { get; init; }
/// <summary>
/// Type of signal location.
/// </summary>
public string SignalType { get; init; }
/// <summary>
/// Faction state or circumstance that caused this signal to appear.
/// </summary>
public string SpawningState { get; init; }
/// <summary>
/// Localised description of spawning state.
/// </summary>
public string SpawningState_Localised { get; init; }
/// <summary>
/// Faction name which is associated with this signal.
/// </summary>
public string SpawningFaction { get; init; }
/// <summary>
/// Localised name of the associated faction.
/// </summary>
public string SpawningFaction_Localised { get; init; }
/// <summary>
/// Time until the signal despawns, in seconds.
/// </summary>
public float TimeRemaining { get; init; }
/// <summary>
/// Unique ID of current system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Numeric representation of the signal threat level.
/// </summary>
public int ThreatLevel { get; init; }
/// <summary>
/// Type of signal.
/// </summary>
public string USSType { get; init; }
/// <summary>
/// Localised name of signal type.
/// </summary>
public string USSType_Localised { get; init; }
/// <summary>
/// Indicator if the signal is a station which can be docked with.
/// </summary>
public bool IsStation { get; init; }
}
}
public string SignalName { get; init; }
/// <summary>
/// Localised name of the signal type.
/// </summary>
public string SignalName_Localised { get; init; }
/// <summary>
/// Type of signal location.
/// </summary>
public string SignalType { get; init; }
/// <summary>
/// Faction state or circumstance that caused this signal to appear.
/// </summary>
public string SpawningState { get; init; }
/// <summary>
/// Localised description of spawning state.
/// </summary>
public string SpawningState_Localised { get; init; }
/// <summary>
/// Faction name which is associated with this signal.
/// </summary>
public string SpawningFaction { get; init; }
/// <summary>
/// Localised name of the associated faction.
/// </summary>
public string SpawningFaction_Localised { get; init; }
/// <summary>
/// Time until the signal despawns, in seconds.
/// </summary>
public float TimeRemaining { get; init; }
/// <summary>
/// Unique ID of current system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Numeric representation of the signal threat level.
/// </summary>
public int ThreatLevel { get; init; }
/// <summary>
/// Type of signal.
/// </summary>
public string USSType { get; init; }
/// <summary>
/// Localised name of signal type.
/// </summary>
public string USSType_Localised { get; init; }
/// <summary>
/// Indicator if the signal is a station which can be docked with.
/// </summary>
public bool IsStation { get; init; }
}

View File

@ -1,25 +1,24 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when a material resource is collected.
/// </summary>
public class MaterialCollected : JournalBase
{
/// <summary>
/// Event generated when a material resource is collected.
/// Category to which the material belongs.
/// </summary>
public class MaterialCollected : JournalBase
{
/// <summary>
/// Category to which the material belongs.
/// </summary>
public string Category { get; init; }
/// <summary>
/// Name of the material.
/// </summary>
public string Name { get; init; }
/// <summary>
/// Localised name of the material.
/// </summary>
public string Name_Localised { get; init; }
/// <summary>
/// Count of the material.
/// </summary>
public int Count { get; init; }
}
}
public string Category { get; init; }
/// <summary>
/// Name of the material.
/// </summary>
public string Name { get; init; }
/// <summary>
/// Localised name of the material.
/// </summary>
public string Name_Localised { get; init; }
/// <summary>
/// Count of the material.
/// </summary>
public int Count { get; init; }
}

View File

@ -1,9 +1,8 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when discarding held material resources.
/// </summary>
public class MaterialDiscarded : MaterialCollected
{
/// <summary>
/// Event generated when discarding held material resources.
/// </summary>
public class MaterialDiscarded : MaterialCollected
{
}
}
}

View File

@ -1,25 +1,24 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated the first time a CMDR finds a particular material resource.
/// </summary>
public class MaterialDiscovered : JournalBase
{
/// <summary>
/// Event generated the first time a CMDR finds a particular material resource.
/// Category of the material.
/// </summary>
public class MaterialDiscovered : JournalBase
{
/// <summary>
/// Category of the material.
/// </summary>
public string Category { get; init; }
/// <summary>
/// Name of the material.
/// </summary>
public string Name { get; init; }
/// <summary>
/// Localised name of the material.
/// </summary>
public string Name_Localised { get; init; }
/// <summary>
/// Count of the number of discovered items in that category by the CMDR.
/// </summary>
public int DiscoveryNumber { get; init; }
}
}
public string Category { get; init; }
/// <summary>
/// Name of the material.
/// </summary>
public string Name { get; init; }
/// <summary>
/// Localised name of the material.
/// </summary>
public string Name_Localised { get; init; }
/// <summary>
/// Count of the number of discovered items in that category by the CMDR.
/// </summary>
public int DiscoveryNumber { get; init; }
}

View File

@ -1,29 +1,28 @@
using Observatory.Framework.Files.ParameterTypes;
using System.Collections.Immutable;
using System.Collections.Immutable;
using Observatory.Framework.Files.ParameterTypes;
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when discovery data for multiple systems are sold at once.
/// </summary>
public class MultiSellExplorationData : JournalBase
{
/// <summary>
/// Event generated when discovery data for multiple systems are sold at once.
/// List of all sold first discoveries.
/// </summary>
public class MultiSellExplorationData : JournalBase
{
/// <summary>
/// List of all sold first discoveries.
/// </summary>
public ImmutableList<Discovered> Discovered { get; init; }
/// <summary>
/// Base value of total sold data.
/// </summary>
public long BaseValue { get; init; }
/// <summary>
/// Bonus value added to base amount.
/// </summary>
public long Bonus { get; init; }
/// <summary>
/// Total amount earned by CMDR for data sale.
/// </summary>
public long TotalEarnings { get; init; }
public ImmutableList<Discovered> Discovered { get; init; }
/// <summary>
/// Base value of total sold data.
/// </summary>
public long BaseValue { get; init; }
/// <summary>
/// Bonus value added to base amount.
/// </summary>
public long Bonus { get; init; }
/// <summary>
/// Total amount earned by CMDR for data sale.
/// </summary>
public long TotalEarnings { get; init; }
}
}
}

View File

@ -1,17 +1,16 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when scanned a populated system's navigation beacon.
/// </summary>
public class NavBeaconScan : JournalBase
{
/// <summary>
/// Event generated when scanned a populated system's navigation beacon.
/// Number of bodies in system.
/// </summary>
public class NavBeaconScan : JournalBase
{
/// <summary>
/// Number of bodies in system.
/// </summary>
public int NumBodies { get; init; }
/// <summary>
/// Unique ID of system.
/// </summary>
public ulong SystemAddress { get; init; }
}
}
public int NumBodies { get; init; }
/// <summary>
/// Unique ID of system.
/// </summary>
public ulong SystemAddress { get; init; }
}

View File

@ -1,39 +1,38 @@
using System.Collections.Immutable;
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when a body surface scan is completed.
/// </summary>
public class SAAScanComplete : JournalBase
{
/// <summary>
/// Event generated when a body surface scan is completed.
/// Unique ID of current system.
/// </summary>
public class SAAScanComplete : JournalBase
{
/// <summary>
/// Unique ID of current system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Name of the scanned body.
/// </summary>
public string BodyName { get; init; }
/// <summary>
/// ID of the scanned body within the system.
/// </summary>
public int BodyID { get; init; }
/// <summary>
/// This property is indicated with strikethrough in Frontier's documentation and is likely unused.
/// </summary>
public ImmutableList<string> Discoverers { get; init; }
/// <summary>
/// This property is indicated with strikethrough in Frontier's documentation and is likely unused.
/// </summary>
public ImmutableList<string> Mappers { get; init; }
/// <summary>
/// Number of probes fired to complete the surface scan.
/// </summary>
public int ProbesUsed { get; init; }
/// <summary>
/// Maximum number of probes which can be used to get efficiency bonus.
/// </summary>
public int EfficiencyTarget { get; init; }
}
}
public ulong SystemAddress { get; init; }
/// <summary>
/// Name of the scanned body.
/// </summary>
public string BodyName { get; init; }
/// <summary>
/// ID of the scanned body within the system.
/// </summary>
public int BodyID { get; init; }
/// <summary>
/// This property is indicated with strikethrough in Frontier's documentation and is likely unused.
/// </summary>
public ImmutableList<string> Discoverers { get; init; }
/// <summary>
/// This property is indicated with strikethrough in Frontier's documentation and is likely unused.
/// </summary>
public ImmutableList<string> Mappers { get; init; }
/// <summary>
/// Number of probes fired to complete the surface scan.
/// </summary>
public int ProbesUsed { get; init; }
/// <summary>
/// Maximum number of probes which can be used to get efficiency bonus.
/// </summary>
public int EfficiencyTarget { get; init; }
}

View File

@ -1,32 +1,31 @@
using Observatory.Framework.Files.ParameterTypes;
using System.Collections.Immutable;
using System.Collections.Immutable;
using Observatory.Framework.Files.ParameterTypes;
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event written when the surface scan finds signals on the body.
/// </summary>
public class SAASignalsFound : JournalBase
{
/// <summary>
/// Event written when the surface scan finds signals on the body.
/// Unique ID of current system.
/// </summary>
public class SAASignalsFound : JournalBase
{
/// <summary>
/// Unique ID of current system.
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Name of the scanned body.
/// </summary>
public string BodyName { get; init; }
/// <summary>
/// ID of the body within the system.
/// </summary>
public int BodyID { get; init; }
/// <summary>
/// List of signals found.
/// </summary>
public ImmutableList<Signal> Signals { get; init; }
/// <summary>
/// List of genuses present.
/// </summary>
public ImmutableList<GenusType> Genuses { get; init; }
}
}
public ulong SystemAddress { get; init; }
/// <summary>
/// Name of the scanned body.
/// </summary>
public string BodyName { get; init; }
/// <summary>
/// ID of the body within the system.
/// </summary>
public int BodyID { get; init; }
/// <summary>
/// List of signals found.
/// </summary>
public ImmutableList<Signal> Signals { get; init; }
/// <summary>
/// List of genuses present.
/// </summary>
public ImmutableList<GenusType> Genuses { get; init; }
}

View File

@ -1,32 +1,32 @@
using System.Text.Json.Serialization;
using Observatory.Framework.Files.ParameterTypes;
using System.Collections.Immutable;
using System.Text.Json.Serialization;
using Observatory.Framework.Files.Converters;
using System.Collections.Immutable;
using Observatory.Framework.Files.ParameterTypes;
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Journal "Scan" event generated when directly FSS scanning, from automatic proximity scans, or nav beacon data.
/// </summary>
public class Scan : ScanBaryCentre
{
/// <summary>
/// Journal "Scan" event generated when directly FSS scanning, from automatic proximity scans, or nav beacon data.
/// Type of scan which generated the event. Possible options include "Detailed", "AutoScan", and "NavBeaconDetail" (non-exhaustive).
/// </summary>
public class Scan : ScanBaryCentre
{
/// <summary>
/// Type of scan which generated the event. Possible options include "Detailed", "AutoScan", and "NavBeaconDetail" (non-exhaustive).
/// </summary>
public string ScanType { get; init; }
/// <summary>
/// Name of scanned body.
/// </summary>
public string BodyName { get; init; }
/// <summary>
/// List which reflects Frontier's JSON structure for the "Parents" object. Use of Parent property is recommended instead.
/// </summary>
public ImmutableList<Parent> Parents {
get => _Parents;
init
{
public string ScanType { get; init; }
/// <summary>
/// Name of scanned body.
/// </summary>
public string BodyName { get; init; }
/// <summary>
/// List which reflects Frontier's JSON structure for the "Parents" object. Use of Parent property is recommended instead.
/// </summary>
public ImmutableList<Parent> Parents {
get => _Parents;
init
{
_Parents = value;
var ParentList = new System.Collections.Generic.List<(ParentType ParentType, int Body)>();
var ParentList = new List<(ParentType ParentType, int Body)>();
foreach (var parent in value)
{
if (parent.Null != null)
@ -44,125 +44,124 @@ namespace Observatory.Framework.Files.Journal
}
Parent = ParentList.ToImmutableList();
}
}
/// <summary>
/// "Parents" object rearranged into more intuitive structure for ease of use.
/// </summary>
[JsonIgnore]
public ImmutableList<(ParentType ParentType, int Body)> Parent { get; init; }
private ImmutableList<Parent> _Parents;
/// <summary>
/// Body distance from system arrival point in light-seconds.
/// </summary>
public double DistanceFromArrivalLS { get; init; }
/// <summary>
/// Indicates if body is tidally locked to another body (parent, child, or binary partner).
/// </summary>
public bool TidalLock { get; init; }
/// <summary>
/// Whether the planet can be or has been terraformed. Options include "Terraformable", "Terraformed", or "" (non-terraformable or naturally earth-like).
/// </summary>
public string TerraformState { get; init; }
/// <summary>
/// Class of planet. Consult your preferred source of journal documentation for all possible values.
/// </summary>
public string PlanetClass { get; init; }
/// <summary>
/// Descriptive string for body atmosphere, e.g. "hot thick sulfur dioxide atmosphere".
/// </summary>
public string Atmosphere { get; init; }
/// <summary>
/// Simple string indicating dominant atmosphere type, e.g. "SulfurDioxide".
/// </summary>
public string AtmosphereType { get; init; }
/// <summary>
/// List containing full breakdown of atmospheric components and their relative percentages.
/// </summary>
public ImmutableList<MaterialComposition> AtmosphereComposition { get; init; }
/// <summary>
/// Descriptive string for type of volcanism present, or an empty string for none, e.g. "major silicate vapour geysers volcanism".
/// </summary>
public string Volcanism { get; init; }
/// <summary>
/// Mass of body in multiples of Earth's mass (5.972e24 kg).
/// </summary>
public float MassEM { get; init; }
/// <summary>
/// Radius of body in metres.
/// </summary>
public float Radius { get; init; }
/// <summary>
/// Surface gravity in m/s².
/// </summary>
public float SurfaceGravity { get; init; }
/// <summary>
/// Average surface temperature in Kelvin.
/// </summary>
public float SurfaceTemperature { get; init; }
/// <summary>
/// Average surface pressure in Pascals.
/// </summary>
public float SurfacePressure { get; init; }
/// <summary>
/// Whether the body in landable in the player's current version of Elite Dangerous.
/// </summary>
public bool Landable { get; init; }
/// <summary>
/// List containing full breakdown of prospectable surface materials and their relative percentages.
/// </summary>
[JsonConverter(typeof(MaterialCompositionConverter))]
public ImmutableList<MaterialComposition> Materials { get; init; }
/// <summary>
/// Overall composition of body, expressed as percentages of ice, rock, and metal.
/// </summary>
public Composition Composition { get; init; }
/// <summary>
/// Rotation period of body in seconds.
/// </summary>
public float RotationPeriod { get; init; }
/// <summary>
/// Axial tilt of body in radians.
/// </summary>
public float AxialTilt { get; init; }
/// <summary>
/// List of all planetary or stellar ring systems around the body.
/// </summary>
public ImmutableList<Ring> Rings { get; init; }
/// <summary>
/// Description of the minable material abundance.<br/>Possible values inclue "PristineResources", "MajorResources", "CommonResources", "LowResources", and "DepletedResources".
/// </summary>
public string ReserveLevel { get; init; }
/// <summary>
/// Type of star. Consult your preferred source of journal documentation for all possible values.
/// </summary>
public string StarType { get; init; }
/// <summary>
/// Subclass of star. Consult your preferred source of journal documentation for all possible values.
/// </summary>
public int Subclass { get; init; }
/// <summary>
/// Mass of star in multiples of The Sun's mass (1.989e30 kg).
/// </summary>
public float StellarMass { get; init; }
/// <summary>
/// Absolute magnitude of star.
/// </summary>
public float AbsoluteMagnitude { get; init; }
/// <summary>
/// Age of body in millions of years.
/// </summary>
public int Age_MY { get; init; }
/// <summary>
/// Yerkes luminosity class of star.
/// </summary>
public string Luminosity { get; init; }
/// <summary>
/// Whether the body has been previously discovered by a player.
/// </summary>
public bool WasDiscovered { get; init; }
/// <summary>
/// Whether the body has been previously mapped by a player.
/// </summary>
public bool WasMapped { get; init; }
}
}
/// <summary>
/// "Parents" object rearranged into more intuitive structure for ease of use.
/// </summary>
[JsonIgnore]
public ImmutableList<(ParentType ParentType, int Body)> Parent { get; init; }
private ImmutableList<Parent> _Parents;
/// <summary>
/// Body distance from system arrival point in light-seconds.
/// </summary>
public double DistanceFromArrivalLS { get; init; }
/// <summary>
/// Indicates if body is tidally locked to another body (parent, child, or binary partner).
/// </summary>
public bool TidalLock { get; init; }
/// <summary>
/// Whether the planet can be or has been terraformed. Options include "Terraformable", "Terraformed", or "" (non-terraformable or naturally earth-like).
/// </summary>
public string TerraformState { get; init; }
/// <summary>
/// Class of planet. Consult your preferred source of journal documentation for all possible values.
/// </summary>
public string PlanetClass { get; init; }
/// <summary>
/// Descriptive string for body atmosphere, e.g. "hot thick sulfur dioxide atmosphere".
/// </summary>
public string Atmosphere { get; init; }
/// <summary>
/// Simple string indicating dominant atmosphere type, e.g. "SulfurDioxide".
/// </summary>
public string AtmosphereType { get; init; }
/// <summary>
/// List containing full breakdown of atmospheric components and their relative percentages.
/// </summary>
public ImmutableList<MaterialComposition> AtmosphereComposition { get; init; }
/// <summary>
/// Descriptive string for type of volcanism present, or an empty string for none, e.g. "major silicate vapour geysers volcanism".
/// </summary>
public string Volcanism { get; init; }
/// <summary>
/// Mass of body in multiples of Earth's mass (5.972e24 kg).
/// </summary>
public float MassEM { get; init; }
/// <summary>
/// Radius of body in metres.
/// </summary>
public float Radius { get; init; }
/// <summary>
/// Surface gravity in m/s².
/// </summary>
public float SurfaceGravity { get; init; }
/// <summary>
/// Average surface temperature in Kelvin.
/// </summary>
public float SurfaceTemperature { get; init; }
/// <summary>
/// Average surface pressure in Pascals.
/// </summary>
public float SurfacePressure { get; init; }
/// <summary>
/// Whether the body in landable in the player's current version of Elite Dangerous.
/// </summary>
public bool Landable { get; init; }
/// <summary>
/// List containing full breakdown of prospectable surface materials and their relative percentages.
/// </summary>
[JsonConverter(typeof(MaterialCompositionConverter))]
public ImmutableList<MaterialComposition> Materials { get; init; }
/// <summary>
/// Overall composition of body, expressed as percentages of ice, rock, and metal.
/// </summary>
public Composition Composition { get; init; }
/// <summary>
/// Rotation period of body in seconds.
/// </summary>
public float RotationPeriod { get; init; }
/// <summary>
/// Axial tilt of body in radians.
/// </summary>
public float AxialTilt { get; init; }
/// <summary>
/// List of all planetary or stellar ring systems around the body.
/// </summary>
public ImmutableList<Ring> Rings { get; init; }
/// <summary>
/// Description of the minable material abundance.<br/>Possible values inclue "PristineResources", "MajorResources", "CommonResources", "LowResources", and "DepletedResources".
/// </summary>
public string ReserveLevel { get; init; }
/// <summary>
/// Type of star. Consult your preferred source of journal documentation for all possible values.
/// </summary>
public string StarType { get; init; }
/// <summary>
/// Subclass of star. Consult your preferred source of journal documentation for all possible values.
/// </summary>
public int Subclass { get; init; }
/// <summary>
/// Mass of star in multiples of The Sun's mass (1.989e30 kg).
/// </summary>
public float StellarMass { get; init; }
/// <summary>
/// Absolute magnitude of star.
/// </summary>
public float AbsoluteMagnitude { get; init; }
/// <summary>
/// Age of body in millions of years.
/// </summary>
public int Age_MY { get; init; }
/// <summary>
/// Yerkes luminosity class of star.
/// </summary>
public string Luminosity { get; init; }
/// <summary>
/// Whether the body has been previously discovered by a player.
/// </summary>
public bool WasDiscovered { get; init; }
/// <summary>
/// Whether the body has been previously mapped by a player.
/// </summary>
public bool WasMapped { get; init; }
}

View File

@ -1,50 +1,49 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Barycentre orbital properties, automatically recorded when any member of a multiple-body orbital arrangement is first scanned.
/// </summary>
public class ScanBaryCentre : JournalBase
{
/// <summary>
/// Barycentre orbital properties, automatically recorded when any member of a multiple-body orbital arrangement is first scanned.
/// Name of star system containing scanned body.
/// </summary>
public class ScanBaryCentre : JournalBase
{
/// <summary>
/// Name of star system containing scanned body.
/// </summary>
public string StarSystem { get; init; }
/// <summary>
/// 64-bit unique identifier for the current star system. Also known as the system's "ID64".
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Id number of body within a system.
/// </summary>
public int BodyID { get; init; }
/// <summary>
/// Orbital semi-major axis in metres.<br/>Distance from the body's centre of gravity to the parent's centre of gravity at the most distant point in the orbit.
/// </summary>
public float SemiMajorAxis { get; init; }
/// <summary>
/// Orbital eccentricity.<br/>0: perfectly circular, 0 &gt; x &gt; 1: eccentric, 1: parabolic (escape) trajectory.<br/>(You should not ever see 1 or 0.)
/// </summary>
public float Eccentricity { get; init; }
/// <summary>
/// Orbital inclination in degrees.
/// </summary>
public float OrbitalInclination { get; init; }
/// <summary>
/// Argument of periapsis in degrees.
/// </summary>
public float Periapsis { get; init; }
/// <summary>
/// Orbital period in seconds.
/// </summary>
public float OrbitalPeriod { get; init; }
/// <summary>
/// Longitude of the ascending node in degrees.
/// </summary>
public float AscendingNode { get; init; }
/// <summary>
/// Mean anomaly in degrees.
/// </summary>
public float MeanAnomaly { get; init; }
public string StarSystem { get; init; }
/// <summary>
/// 64-bit unique identifier for the current star system. Also known as the system's "ID64".
/// </summary>
public ulong SystemAddress { get; init; }
/// <summary>
/// Id number of body within a system.
/// </summary>
public int BodyID { get; init; }
/// <summary>
/// Orbital semi-major axis in metres.<br/>Distance from the body's centre of gravity to the parent's centre of gravity at the most distant point in the orbit.
/// </summary>
public float SemiMajorAxis { get; init; }
/// <summary>
/// Orbital eccentricity.<br/>0: perfectly circular, 0 &gt; x &gt; 1: eccentric, 1: parabolic (escape) trajectory.<br/>(You should not ever see 1 or 0.)
/// </summary>
public float Eccentricity { get; init; }
/// <summary>
/// Orbital inclination in degrees.
/// </summary>
public float OrbitalInclination { get; init; }
/// <summary>
/// Argument of periapsis in degrees.
/// </summary>
public float Periapsis { get; init; }
/// <summary>
/// Orbital period in seconds.
/// </summary>
public float OrbitalPeriod { get; init; }
/// <summary>
/// Longitude of the ascending node in degrees.
/// </summary>
public float AscendingNode { get; init; }
/// <summary>
/// Mean anomaly in degrees.
/// </summary>
public float MeanAnomaly { get; init; }
}
}
}

View File

@ -1,46 +1,45 @@
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when the player takes a screenshot.
/// </summary>
public class Screenshot : JournalBase
{
/// <summary>
/// Event generated when the player takes a screenshot.
/// <para>Filename of the screenshot taken in the form of "\\ED Pictures\\filename"</para>
/// <para>"\\ED Pictures\\" corresponds to "%userprofile%\Pictures\Frontier Developments\Elite Dangerous\"</para>
/// </summary>
public class Screenshot : JournalBase
{
/// <summary>
/// <para>Filename of the screenshot taken in the form of "\\ED Pictures\\filename"</para>
/// <para>"\\ED Pictures\\" corresponds to "%userprofile%\Pictures\Frontier Developments\Elite Dangerous\"</para>
/// </summary>
public string Filename { get; init; }
/// <summary>
/// Pixel width of the saved image.
/// </summary>
public int Width { get; init; }
/// <summary>
/// Pixel height of the saved image.
/// </summary>
public int Height { get; init; }
/// <summary>
/// System name of the current system.
/// </summary>
public string System { get; init; }
/// <summary>
/// Body name of the current location.
/// </summary>
public string Body { get; init; }
/// <summary>
/// Current latitude if applicable.
/// </summary>
public float Latitude { get; init; }
/// <summary>
/// Current longitude if applicable.
/// </summary>
public float Longitude { get; init; }
/// <summary>
/// Current altitude if applicable.
/// </summary>
public float Altitude { get; init; }
/// <summary>
/// Current heading if applicable.
/// </summary>
public int Heading { get; init; }
}
}
public string Filename { get; init; }
/// <summary>
/// Pixel width of the saved image.
/// </summary>
public int Width { get; init; }
/// <summary>
/// Pixel height of the saved image.
/// </summary>
public int Height { get; init; }
/// <summary>
/// System name of the current system.
/// </summary>
public string System { get; init; }
/// <summary>
/// Body name of the current location.
/// </summary>
public string Body { get; init; }
/// <summary>
/// Current latitude if applicable.
/// </summary>
public float Latitude { get; init; }
/// <summary>
/// Current longitude if applicable.
/// </summary>
public float Longitude { get; init; }
/// <summary>
/// Current altitude if applicable.
/// </summary>
public float Altitude { get; init; }
/// <summary>
/// Current heading if applicable.
/// </summary>
public int Heading { get; init; }
}

View File

@ -1,31 +1,30 @@
using System.Collections.Immutable;
namespace Observatory.Framework.Files.Journal
namespace Observatory.Framework.Files.Journal.Exploration;
/// <summary>
/// Event generated when selling exploration data. Historically also written for multi-selling, but used only for single system sales in current live game client.
/// </summary>
public class SellExplorationData : JournalBase
{
/// <summary>
/// Event generated when selling exploration data. Historically also written for multi-selling, but used only for single system sales in current live game client.
/// List of systems for which data was sold.
/// </summary>
public class SellExplorationData : JournalBase
{
/// <summary>
/// List of systems for which data was sold.
/// </summary>
public ImmutableList<string> Systems { get; init; }
/// <summary>
/// List of first discovered bodies.
/// </summary>
public ImmutableList<string> Discovered { get; init; }
/// <summary>
/// Base value of sold data.
/// </summary>
public long BaseValue { get; init; }
/// <summary>
/// Extra amount from bonuses.
/// </summary>
public long Bonus { get; init; }
/// <summary>
/// Total amount made from selling data.
/// </summary>
public long TotalEarnings { get; init; }
}
}
public ImmutableList<string> Systems { get; init; }
/// <summary>
/// List of first discovered bodies.
/// </summary>
public ImmutableList<string> Discovered { get; init; }
/// <summary>
/// Base value of sold data.
/// </summary>
public long BaseValue { get; init; }
/// <summary>
/// Extra amount from bonuses.
/// </summary>
public long Bonus { get; init; }
/// <summary>
/// Total amount made from selling data.
/// </summary>
public long TotalEarnings { get; init; }
}