mirror of
https://github.com/9ParsonsB/Pulsar.git
synced 2025-07-01 08:23:42 -04:00
Initial Commit
This commit is contained in:
@ -1,28 +1,28 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Immutable;
|
||||
using Observatory.Framework.Files.Journal;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files;
|
||||
|
||||
/// <summary>
|
||||
/// Elite Dangerous backpack.json file. Describes all the items currently carried by the player.
|
||||
/// </summary>
|
||||
public class BackpackFile : JournalBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Elite Dangerous backpack.json file. Describes all the items currently carried by the player.
|
||||
/// List of all items carried.
|
||||
/// </summary>
|
||||
public class BackpackFile : JournalBase
|
||||
{
|
||||
/// <summary>
|
||||
/// List of all items carried.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Items { get; init; }
|
||||
/// <summary>
|
||||
/// List of all components carried.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Components { get; init; }
|
||||
/// <summary>
|
||||
/// List of player consumable items carried.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Consumables { get; init; }
|
||||
/// <summary>
|
||||
/// List of all data currently stored by the player.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Data { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<BackpackItem> Items { get; init; }
|
||||
/// <summary>
|
||||
/// List of all components carried.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Components { get; init; }
|
||||
/// <summary>
|
||||
/// List of player consumable items carried.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Consumables { get; init; }
|
||||
/// <summary>
|
||||
/// List of all data currently stored by the player.
|
||||
/// </summary>
|
||||
public ImmutableList<BackpackItem> Data { get; init; }
|
||||
}
|
@ -1,24 +1,24 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Immutable;
|
||||
using Observatory.Framework.Files.Journal;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files
|
||||
namespace Observatory.Framework.Files;
|
||||
|
||||
/// <summary>
|
||||
/// Elite Dangerous cargo.json file. Describes the current cargo carried above the player's ship.
|
||||
/// </summary>
|
||||
public class CargoFile : JournalBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Elite Dangerous cargo.json file. Describes the current cargo carried above the player's ship.
|
||||
/// Type of vehicle currently being reported. "Ship" or "SRV".
|
||||
/// </summary>
|
||||
public class CargoFile : Journal.JournalBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Type of vehicle currently being reported. "Ship" or "SRV".
|
||||
/// </summary>
|
||||
public string Vessel { get; init; }
|
||||
/// <summary>
|
||||
/// Number of different types of cargo carried(?)
|
||||
/// </summary>
|
||||
public int Count { get; init; }
|
||||
/// <summary>
|
||||
/// List of full cargo details.
|
||||
/// </summary>
|
||||
public ImmutableList<CargoType> Inventory { get; init; }
|
||||
}
|
||||
}
|
||||
public string Vessel { get; init; }
|
||||
/// <summary>
|
||||
/// Number of different types of cargo carried(?)
|
||||
/// </summary>
|
||||
public int Count { get; init; }
|
||||
/// <summary>
|
||||
/// List of full cargo details.
|
||||
/// </summary>
|
||||
public ImmutableList<CargoType> Inventory { get; init; }
|
||||
}
|
@ -1,24 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
class FleetCarrierTravelConverter : JsonConverter<float>
|
||||
{
|
||||
class FleetCarrierTravelConverter : JsonConverter<float>
|
||||
public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
return Single.Parse(reader.GetString().Split(' ')[0]);
|
||||
else
|
||||
return reader.GetSingle();
|
||||
return float.Parse(reader.GetString().Split(' ')[0]);
|
||||
return reader.GetSingle();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOptions options)
|
||||
{
|
||||
public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteStringValue(value.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,20 +1,17 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public class IntBoolConverter : JsonConverter<bool>
|
||||
{
|
||||
|
||||
public class IntBoolConverter : JsonConverter<bool>
|
||||
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
return reader.GetInt16() == 1;
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteNumberValue(value ? 1 : 0);
|
||||
}
|
||||
return reader.GetInt16() == 1;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteNumberValue(value ? 1 : 0);
|
||||
}
|
||||
}
|
@ -1,22 +1,19 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public class IntBoolFlexConverter : JsonConverter<bool>
|
||||
{
|
||||
public class IntBoolFlexConverter : JsonConverter<bool>
|
||||
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.Number)
|
||||
return reader.GetInt16() == 1;
|
||||
else
|
||||
return reader.GetBoolean();
|
||||
return reader.GetBoolean();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
|
||||
{
|
||||
public override void Write(Utf8JsonWriter writer, bool value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteBooleanValue(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,31 +1,26 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
{
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// Faction changed from a simple string to an object with additional state information. If we find a string convert it to an object with null state.
|
||||
/// </summary>
|
||||
public class LegacyFactionConverter<TFaction> : JsonConverter<TFaction> where TFaction : Faction, new()
|
||||
/// <summary>
|
||||
/// Faction changed from a simple string to an object with additional state information. If we find a string convert it to an object with null state.
|
||||
/// </summary>
|
||||
public class LegacyFactionConverter<TFaction> : JsonConverter<TFaction> where TFaction : Faction, new()
|
||||
{
|
||||
public override TFaction Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override TFaction Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
{
|
||||
return new TFaction { Name = reader.GetString(), FactionState = null };
|
||||
}
|
||||
else
|
||||
{
|
||||
return JsonSerializer.Deserialize<TFaction>(ref reader);
|
||||
}
|
||||
|
||||
return JsonSerializer.Deserialize<TFaction>(ref reader);
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, TFaction value, JsonSerializerOptions options)
|
||||
{
|
||||
public override void Write(Utf8JsonWriter writer, TFaction value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,56 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// The format used for materials changed from an object with a key for each material to an array of objects containing "name" and "percent".
|
||||
/// Need to handle both if we're going to read historical data. This reads the old format into a class reflecting the new structure.
|
||||
/// </summary>
|
||||
public class MaterialCompositionConverter : JsonConverter<ImmutableList<MaterialComposition>>
|
||||
{
|
||||
/// <summary>
|
||||
/// The format used for materials changed from an object with a key for each material to an array of objects containing "name" and "percent".
|
||||
/// Need to handle both if we're going to read historical data. This reads the old format into a class reflecting the new structure.
|
||||
/// </summary>
|
||||
public class MaterialCompositionConverter : JsonConverter<ImmutableList<MaterialComposition>>
|
||||
public override ImmutableList<MaterialComposition> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override ImmutableList<MaterialComposition> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
if (reader.TokenType == JsonTokenType.StartObject)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.StartObject)
|
||||
var materialComposition = new List<MaterialComposition>();
|
||||
while (reader.Read())
|
||||
{
|
||||
var materialComposition = new List<MaterialComposition>();
|
||||
while (reader.Read())
|
||||
if (reader.TokenType != JsonTokenType.EndObject)
|
||||
{
|
||||
if (reader.TokenType != JsonTokenType.EndObject)
|
||||
if (reader.TokenType == JsonTokenType.PropertyName)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.PropertyName)
|
||||
var name = reader.GetString();
|
||||
reader.Read();
|
||||
var percent = reader.GetSingle();
|
||||
var material = new MaterialComposition
|
||||
{
|
||||
string name = reader.GetString();
|
||||
reader.Read();
|
||||
float percent = reader.GetSingle();
|
||||
var material = new MaterialComposition
|
||||
{
|
||||
Name = name,
|
||||
Percent = percent
|
||||
};
|
||||
materialComposition.Add(material);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
Name = name,
|
||||
Percent = percent
|
||||
};
|
||||
materialComposition.Add(material);
|
||||
}
|
||||
}
|
||||
return materialComposition.ToImmutableList();
|
||||
}
|
||||
else
|
||||
{
|
||||
return (ImmutableList<MaterialComposition>)JsonSerializer.Deserialize(ref reader, typeof(ImmutableList<MaterialComposition>));
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return materialComposition.ToImmutableList();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, ImmutableList<MaterialComposition> value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
return (ImmutableList<MaterialComposition>)JsonSerializer.Deserialize(ref reader, typeof(ImmutableList<MaterialComposition>));
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, ImmutableList<MaterialComposition> value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,20 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// The format used for materials changed from an object with a key for each material to an array of objects containing "name" and "percent".
|
||||
/// Need to handle both if we're going to read historical data. This reads the old format into a class reflecting the new structure.
|
||||
/// </summary>
|
||||
public class MaterialConverter : JsonConverter<ImmutableList<Material>>
|
||||
{
|
||||
/// <summary>
|
||||
/// The format used for materials changed from an object with a key for each material to an array of objects containing "name" and "percent".
|
||||
/// Need to handle both if we're going to read historical data. This reads the old format into a class reflecting the new structure.
|
||||
/// </summary>
|
||||
public class MaterialConverter : JsonConverter<ImmutableList<Material>>
|
||||
public override ImmutableList<Material> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override ImmutableList<Material> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.StartObject)
|
||||
{
|
||||
var materialComposition = new List<Material>();
|
||||
@ -24,9 +22,9 @@ namespace Observatory.Framework.Files.Converters
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.PropertyName)
|
||||
{
|
||||
string name = reader.GetString();
|
||||
var name = reader.GetString();
|
||||
reader.Read();
|
||||
int count = reader.GetInt32();
|
||||
var count = reader.GetInt32();
|
||||
var material = new Material
|
||||
{
|
||||
Name = name,
|
||||
@ -43,15 +41,12 @@ namespace Observatory.Framework.Files.Converters
|
||||
}
|
||||
return materialComposition.ToImmutableList();
|
||||
}
|
||||
else
|
||||
{
|
||||
return (ImmutableList<Material>)JsonSerializer.Deserialize(ref reader, typeof(ImmutableList<Material>));
|
||||
}
|
||||
|
||||
return (ImmutableList<Material>)JsonSerializer.Deserialize(ref reader, typeof(ImmutableList<Material>));
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, ImmutableList<Material> value, JsonSerializerOptions options)
|
||||
{
|
||||
public override void Write(Utf8JsonWriter writer, ImmutableList<Material> value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +1,37 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public class MissionEffectConverter : JsonConverter<MissionEffect>
|
||||
{
|
||||
public class MissionEffectConverter : JsonConverter<MissionEffect>
|
||||
public override MissionEffect Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override MissionEffect Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
var effect = reader.GetString();
|
||||
//TODO: Find out all possible values
|
||||
switch (effect)
|
||||
{
|
||||
string effect = reader.GetString();
|
||||
//TODO: Find out all possible values
|
||||
switch (effect)
|
||||
{
|
||||
case "+":
|
||||
effect = "Low";
|
||||
break;
|
||||
case "++":
|
||||
effect = "Med";
|
||||
break;
|
||||
case "+++":
|
||||
case "++++":
|
||||
case "+++++":
|
||||
effect = "High";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
MissionEffect missionEffect = (MissionEffect)Enum.Parse(typeof(MissionEffect), effect, true);
|
||||
|
||||
return missionEffect;
|
||||
case "+":
|
||||
effect = "Low";
|
||||
break;
|
||||
case "++":
|
||||
effect = "Med";
|
||||
break;
|
||||
case "+++":
|
||||
case "++++":
|
||||
case "+++++":
|
||||
effect = "High";
|
||||
break;
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, MissionEffect value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
var missionEffect = (MissionEffect)Enum.Parse(typeof(MissionEffect), effect, true);
|
||||
|
||||
return missionEffect;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, MissionEffect value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,24 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
{
|
||||
class MutableStringDoubleConverter : JsonConverter<object>
|
||||
{
|
||||
public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
return reader.GetString();
|
||||
else
|
||||
return reader.GetDouble();
|
||||
}
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
class MutableStringDoubleConverter : JsonConverter<object>
|
||||
{
|
||||
public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
return reader.GetString();
|
||||
return reader.GetDouble();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,21 +1,19 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
class PipConverter : JsonConverter<(int Sys, int Eng, int Wep)>
|
||||
{
|
||||
class PipConverter : JsonConverter<(int Sys, int Eng, int Wep)>
|
||||
public override (int Sys, int Eng, int Wep) Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override (int Sys, int Eng, int Wep) Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
int[] values = (int[])JsonSerializer.Deserialize(ref reader, typeof(int[]));
|
||||
var values = (int[])JsonSerializer.Deserialize(ref reader, typeof(int[]));
|
||||
|
||||
return (Sys: values[0], Eng: values[1], Wep: values[2]);
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, (int Sys, int Eng, int Wep) value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
return (Sys: values[0], Eng: values[1], Wep: values[2]);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, (int Sys, int Eng, int Wep) value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,19 +1,17 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
{
|
||||
public class RepInfConverter : JsonConverter<int>
|
||||
{
|
||||
public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
return reader.GetString().Trim().Length;
|
||||
}
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
public class RepInfConverter : JsonConverter<int>
|
||||
{
|
||||
public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
return reader.GetString().Trim().Length;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,24 +1,22 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// Converting the ordered array of coordinates from the journal to a named tuple for clarity.
|
||||
/// </summary>
|
||||
public class StarPosConverter : JsonConverter<(double x, double y, double z)>
|
||||
{
|
||||
/// <summary>
|
||||
/// Converting the ordered array of coordinates from the journal to a named tuple for clarity.
|
||||
/// </summary>
|
||||
public class StarPosConverter : JsonConverter<(double x, double y, double z)>
|
||||
public override (double x, double y, double z) Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override (double x, double y, double z) Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
double[] values = (double[])JsonSerializer.Deserialize(ref reader, typeof(double[]));
|
||||
var values = (double[])JsonSerializer.Deserialize(ref reader, typeof(double[]));
|
||||
|
||||
return (x: values[0], y: values[1], z: values[2]);
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, (double x, double y, double z) value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
return (x: values[0], y: values[1], z: values[2]);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, (double x, double y, double z) value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,28 +1,26 @@
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public class StationServiceConverter : JsonConverter<StationService>
|
||||
{
|
||||
public class StationServiceConverter : JsonConverter<StationService>
|
||||
public override StationService Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override StationService Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
var services = StationService.None;
|
||||
|
||||
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
|
||||
{
|
||||
StationService services = StationService.None;
|
||||
|
||||
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
|
||||
{
|
||||
services |= (StationService)Enum.Parse(typeof(StationService), reader.GetString(), true);
|
||||
}
|
||||
|
||||
return services;
|
||||
|
||||
services |= (StationService)Enum.Parse(typeof(StationService), reader.GetString(), true);
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, StationService value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
return services;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, StationService value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,24 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
{
|
||||
class StringIntConverter : JsonConverter<int>
|
||||
{
|
||||
public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
return Int32.Parse(reader.GetString());
|
||||
else
|
||||
return reader.GetInt32();
|
||||
}
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteStringValue(value.ToString());
|
||||
}
|
||||
class StringIntConverter : JsonConverter<int>
|
||||
{
|
||||
public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
return int.Parse(reader.GetString());
|
||||
return reader.GetInt32();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteStringValue(value.ToString());
|
||||
}
|
||||
}
|
@ -1,35 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
class ThargoidWarRemainingTimeConverter : JsonConverter<int>
|
||||
{
|
||||
class ThargoidWarRemainingTimeConverter : JsonConverter<int>
|
||||
public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
{
|
||||
string value = reader.GetString();
|
||||
var value = reader.GetString();
|
||||
|
||||
int dayCount = Int32.TryParse(value.Split(' ')[0], out int days)
|
||||
var dayCount = int.TryParse(value.Split(' ')[0], out var days)
|
||||
? days
|
||||
: 0;
|
||||
|
||||
return dayCount;
|
||||
}
|
||||
else
|
||||
return reader.GetInt32();
|
||||
}
|
||||
|
||||
return reader.GetInt32();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteStringValue(value.ToString() + " Days");
|
||||
public override void Write(Utf8JsonWriter writer, int value, JsonSerializerOptions options)
|
||||
{
|
||||
writer.WriteStringValue(value + " Days");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,29 +1,25 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Converters
|
||||
namespace Observatory.Framework.Files.Converters;
|
||||
|
||||
class VoucherTypeConverter : JsonConverter<VoucherType>
|
||||
{
|
||||
class VoucherTypeConverter : JsonConverter<VoucherType>
|
||||
public override VoucherType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
public override VoucherType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
string voucher = reader.GetString();
|
||||
var voucher = reader.GetString();
|
||||
|
||||
if (voucher.Length == 0)
|
||||
voucher = "None";
|
||||
|
||||
VoucherType missionEffect = (VoucherType)Enum.Parse(typeof(VoucherType), voucher, true);
|
||||
var missionEffect = (VoucherType)Enum.Parse(typeof(VoucherType), voucher, true);
|
||||
|
||||
return missionEffect;
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, VoucherType value, JsonSerializerOptions options)
|
||||
{
|
||||
public override void Write(Utf8JsonWriter writer, VoucherType value, JsonSerializerOptions options)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,16 +1,16 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Immutable;
|
||||
using Observatory.Framework.Files.Journal;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files
|
||||
namespace Observatory.Framework.Files;
|
||||
|
||||
/// <summary>
|
||||
/// Elite Dangerous fcmaterials.json file. Contains data about current fleet carrier bartender stock.
|
||||
/// </summary>
|
||||
public class FCMaterialsFile : JournalBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Elite Dangerous fcmaterials.json file. Contains data about current fleet carrier bartender stock.
|
||||
/// List of items in stock and in demand from the carrier bartender.
|
||||
/// </summary>
|
||||
public class FCMaterialsFile : Journal.JournalBase
|
||||
{
|
||||
/// <summary>
|
||||
/// List of items in stock and in demand from the carrier bartender.
|
||||
/// </summary>
|
||||
public ImmutableList<FCMaterial> Items { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<FCMaterial> Items { get; init; }
|
||||
}
|
@ -1,21 +1,20 @@
|
||||
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.Combat;
|
||||
|
||||
public class Bounty : JournalBase
|
||||
{
|
||||
public class Bounty : JournalBase
|
||||
{
|
||||
public ImmutableList<Rewards> Rewards { get; init; }
|
||||
public string PilotName { get; set; }
|
||||
public string PilotName_Localised { get; set; }
|
||||
public string Target { get; init; }
|
||||
public string Target_Localised { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string Faction_Localised { get; init; }
|
||||
public long Reward { get; init; }
|
||||
public long TotalReward { get; init; }
|
||||
public string VictimFaction { get; init; }
|
||||
public string VictimFaction_Localised { get; init; }
|
||||
public int SharedWithOthers { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<Rewards> Rewards { get; init; }
|
||||
public string PilotName { get; set; }
|
||||
public string PilotName_Localised { get; set; }
|
||||
public string Target { get; init; }
|
||||
public string Target_Localised { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string Faction_Localised { get; init; }
|
||||
public long Reward { get; init; }
|
||||
public long TotalReward { get; init; }
|
||||
public string VictimFaction { get; init; }
|
||||
public string VictimFaction_Localised { get; init; }
|
||||
public int SharedWithOthers { get; init; }
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class CapShipBound : JournalBase
|
||||
{
|
||||
public class CapShipBound : JournalBase
|
||||
{
|
||||
public long Reward { get; init; }
|
||||
public string AwardingFaction { get; init; }
|
||||
public string VictimFaction { get; init; }
|
||||
}
|
||||
}
|
||||
public long Reward { get; init; }
|
||||
public string AwardingFaction { get; init; }
|
||||
public string VictimFaction { get; init; }
|
||||
}
|
@ -1,14 +1,13 @@
|
||||
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.Combat;
|
||||
|
||||
public class Died : JournalBase
|
||||
{
|
||||
public class Died : JournalBase
|
||||
{
|
||||
public string KillerName { get; init; }
|
||||
public string KillerName_Localised { get; init; }
|
||||
public string KillerShip { get; init; }
|
||||
public string KillerRank { get; init; }
|
||||
public ImmutableList<Killer> Killers { get; init; }
|
||||
}
|
||||
}
|
||||
public string KillerName { get; init; }
|
||||
public string KillerName_Localised { get; init; }
|
||||
public string KillerShip { get; init; }
|
||||
public string KillerRank { get; init; }
|
||||
public ImmutableList<Killer> Killers { get; init; }
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class EscapeInterdiction : JournalBase
|
||||
{
|
||||
public class EscapeInterdiction : JournalBase
|
||||
{
|
||||
public string Interdictor { get; init; }
|
||||
public bool IsPlayer { get; init; }
|
||||
public bool IsThargoid { get; init; }
|
||||
}
|
||||
}
|
||||
public string Interdictor { get; init; }
|
||||
public bool IsPlayer { get; init; }
|
||||
public bool IsThargoid { get; init; }
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class FactionKillBond : JournalBase
|
||||
{
|
||||
public class FactionKillBond : JournalBase
|
||||
{
|
||||
public long Reward { get; init; }
|
||||
public string AwardingFaction { get; init; }
|
||||
public string AwardingFaction_Localised { get; init; }
|
||||
public string VictimFaction { get; init; }
|
||||
public string VictimFaction_Localised { get; init; }
|
||||
}
|
||||
}
|
||||
public long Reward { get; init; }
|
||||
public string AwardingFaction { get; init; }
|
||||
public string AwardingFaction_Localised { get; init; }
|
||||
public string VictimFaction { get; init; }
|
||||
public string VictimFaction_Localised { get; init; }
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class FighterDestroyed : JournalBase
|
||||
{
|
||||
public class FighterDestroyed : JournalBase
|
||||
{
|
||||
public ulong ID { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong ID { get; init; }
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
{
|
||||
public class HeatDamage : JournalBase
|
||||
{ }
|
||||
}
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class HeatDamage : JournalBase
|
||||
{ }
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class HeatWarning : JournalBase
|
||||
{
|
||||
public class HeatWarning : JournalBase
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class HullDamage : JournalBase
|
||||
{
|
||||
public class HullDamage : JournalBase
|
||||
{
|
||||
public float Health { get; init; }
|
||||
public bool PlayerPilot { get; init; }
|
||||
public bool Fighter { get; init; }
|
||||
}
|
||||
}
|
||||
public float Health { get; init; }
|
||||
public bool PlayerPilot { get; init; }
|
||||
public bool Fighter { get; init; }
|
||||
}
|
@ -1,14 +1,13 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class Interdicted : JournalBase
|
||||
{
|
||||
public class Interdicted : JournalBase
|
||||
{
|
||||
public bool Submitted { get; init; }
|
||||
public string Interdictor { get; init; }
|
||||
public string Interdictor_Localised { get; init; }
|
||||
public bool IsPlayer { get; init; }
|
||||
public int CombatRank { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string Power { get; init; }
|
||||
public bool IsThargoid { get; init; }
|
||||
}
|
||||
}
|
||||
public bool Submitted { get; init; }
|
||||
public string Interdictor { get; init; }
|
||||
public string Interdictor_Localised { get; init; }
|
||||
public bool IsPlayer { get; init; }
|
||||
public int CombatRank { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string Power { get; init; }
|
||||
public bool IsThargoid { get; init; }
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class Interdiction : JournalBase
|
||||
{
|
||||
public class Interdiction : JournalBase
|
||||
{
|
||||
public bool Success { get; init; }
|
||||
public string Interdictor { get; init; }
|
||||
public bool IsPlayer { get; init; }
|
||||
public int CombatRank { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string Power { get; init; }
|
||||
}
|
||||
}
|
||||
public bool Success { get; init; }
|
||||
public string Interdictor { get; init; }
|
||||
public bool IsPlayer { get; init; }
|
||||
public int CombatRank { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string Power { get; init; }
|
||||
}
|
@ -1,8 +1,7 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class PVPKill : JournalBase
|
||||
{
|
||||
public class PVPKill : JournalBase
|
||||
{
|
||||
public string Victim { get; init; }
|
||||
public int CombatRank { get; init; }
|
||||
}
|
||||
}
|
||||
public string Victim { get; init; }
|
||||
public int CombatRank { get; init; }
|
||||
}
|
@ -1,8 +1,7 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class SRVDestroyed : JournalBase
|
||||
{
|
||||
public class SRVDestroyed : JournalBase
|
||||
{
|
||||
public string SRVType { get; init; }
|
||||
public string SRVType_Localised { get; init; }
|
||||
}
|
||||
}
|
||||
public string SRVType { get; init; }
|
||||
public string SRVType_Localised { get; init; }
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class ShieldState : JournalBase
|
||||
{
|
||||
public class ShieldState : JournalBase
|
||||
{
|
||||
public bool ShieldsUp { get; init; }
|
||||
}
|
||||
}
|
||||
public bool ShieldsUp { get; init; }
|
||||
}
|
@ -1,23 +1,22 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class ShipTargeted : JournalBase
|
||||
{
|
||||
public class ShipTargeted : JournalBase
|
||||
{
|
||||
public bool TargetLocked { get; init; }
|
||||
public string Ship { get; init; }
|
||||
public string Ship_Localised { get; init; }
|
||||
public int ScanStage { get; init; }
|
||||
public string PilotName { get; init; }
|
||||
public string PilotName_Localised { get; init; }
|
||||
public string PilotRank { get; init; }
|
||||
public float ShieldHealth { get; init; }
|
||||
public float HullHealth { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string LegalStatus { get; init; }
|
||||
public long Bounty { get; init; }
|
||||
public string Subsystem { get; init; }
|
||||
public string Subsystem_Localised { get; init; }
|
||||
public float SubsystemHealth { get; init; }
|
||||
public string Power { get; init; }
|
||||
public string SquadronID { get; init; }
|
||||
}
|
||||
}
|
||||
public bool TargetLocked { get; init; }
|
||||
public string Ship { get; init; }
|
||||
public string Ship_Localised { get; init; }
|
||||
public int ScanStage { get; init; }
|
||||
public string PilotName { get; init; }
|
||||
public string PilotName_Localised { get; init; }
|
||||
public string PilotRank { get; init; }
|
||||
public float ShieldHealth { get; init; }
|
||||
public float HullHealth { get; init; }
|
||||
public string Faction { get; init; }
|
||||
public string LegalStatus { get; init; }
|
||||
public long Bounty { get; init; }
|
||||
public string Subsystem { get; init; }
|
||||
public string Subsystem_Localised { get; init; }
|
||||
public float SubsystemHealth { get; init; }
|
||||
public string Power { get; init; }
|
||||
public string SquadronID { get; init; }
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Combat;
|
||||
|
||||
public class UnderAttack : JournalBase
|
||||
{
|
||||
public class UnderAttack : JournalBase
|
||||
{
|
||||
public string Target { get; init; }
|
||||
}
|
||||
}
|
||||
public string Target { get; init; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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 > x > 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 > x > 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; }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
@ -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; }
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierBankTransfer : JournalBase
|
||||
{
|
||||
public class CarrierBankTransfer : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public long Deposit { get; init; }
|
||||
public long Withdraw { get; init; }
|
||||
public long PlayerBalance { get; init; }
|
||||
public long CarrierBalance { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
public long Deposit { get; init; }
|
||||
public long Withdraw { get; init; }
|
||||
public long PlayerBalance { get; init; }
|
||||
public long CarrierBalance { get; init; }
|
||||
}
|
@ -1,13 +1,12 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierBuy : JournalBase
|
||||
{
|
||||
public class CarrierBuy : JournalBase
|
||||
{
|
||||
public long BoughtAtMarket { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public ulong CarrierID { get; init; }
|
||||
public string Location { get; init; }
|
||||
public long Price { get; init; }
|
||||
public string Variant { get; init; }
|
||||
public string Callsign { get; init; }
|
||||
}
|
||||
}
|
||||
public long BoughtAtMarket { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public ulong CarrierID { get; init; }
|
||||
public string Location { get; init; }
|
||||
public long Price { get; init; }
|
||||
public string Variant { get; init; }
|
||||
public string Callsign { get; init; }
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierCancelDecommission : JournalBase
|
||||
{
|
||||
public class CarrierCancelDecommission : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
}
|
@ -1,15 +1,13 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.Converters;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierCrewServices : JournalBase
|
||||
{
|
||||
public class CarrierCrewServices : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public string CrewRole { get; init; }
|
||||
public string CrewName { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierCrewOperation Operation { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
public string CrewRole { get; init; }
|
||||
public string CrewName { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierCrewOperation Operation { get; init; }
|
||||
}
|
@ -1,16 +1,15 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierDecommission : JournalBase
|
||||
{
|
||||
public class CarrierDecommission : JournalBase
|
||||
public ulong CarrierID { get; init; }
|
||||
public long ScrapRefund { get; init; }
|
||||
public long ScrapTime { get; init; }
|
||||
public DateTime ScrapTimeUTC
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public long ScrapRefund { get; init; }
|
||||
public long ScrapTime { get; init; }
|
||||
public System.DateTime ScrapTimeUTC
|
||||
get
|
||||
{
|
||||
get
|
||||
{
|
||||
return System.DateTimeOffset.FromUnixTimeSeconds(ScrapTime).UtcDateTime;
|
||||
}
|
||||
return DateTimeOffset.FromUnixTimeSeconds(ScrapTime).UtcDateTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierDepositFuel : JournalBase
|
||||
{
|
||||
public class CarrierDepositFuel : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public int Amount { get; init; }
|
||||
public int Total { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
public int Amount { get; init; }
|
||||
public int Total { get; init; }
|
||||
}
|
@ -1,13 +1,12 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierDockingPermission : JournalBase
|
||||
{
|
||||
public class CarrierDockingPermission : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierDockingAccess DockingAccess { get; init; }
|
||||
public bool AllowNotorious { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierDockingAccess DockingAccess { get; init; }
|
||||
public bool AllowNotorious { get; init; }
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierFinance : JournalBase
|
||||
{
|
||||
public class CarrierFinance : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public int TaxRate { get; init; }
|
||||
public long CarrierBalance { get; init; }
|
||||
public long ReserveBalance { get; init; }
|
||||
public long AvailableBalance { get; init; }
|
||||
public int ReservePercent { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
public int TaxRate { get; init; }
|
||||
public long CarrierBalance { get; init; }
|
||||
public long ReserveBalance { get; init; }
|
||||
public long AvailableBalance { get; init; }
|
||||
public int ReservePercent { get; init; }
|
||||
}
|
@ -1,27 +1,27 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.Converters;
|
||||
using Observatory.Framework.Files.Journal.Travel;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierJump : FSDJump
|
||||
{
|
||||
public class CarrierJump : FSDJump
|
||||
{
|
||||
public bool Docked { get; init; }
|
||||
public bool OnFoot { get; init; }
|
||||
/// <summary>
|
||||
/// Name of the station at which this event occurred.
|
||||
/// </summary>
|
||||
public string StationName { get; init; }
|
||||
public string StationType { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
public Faction StationFaction { get; init; }
|
||||
public string StationGovernment { get; init; }
|
||||
public string StationGovernment_Localised { get; init; }
|
||||
[JsonConverter(typeof(StationServiceConverter))]
|
||||
public StationService StationServices { get; init; }
|
||||
public string StationEconomy { get; init; }
|
||||
public string StationEconomy_Localised { get; init; }
|
||||
public ImmutableList<StationEconomy> StationEconomies { get; init; }
|
||||
}
|
||||
}
|
||||
public bool Docked { get; init; }
|
||||
public bool OnFoot { get; init; }
|
||||
/// <summary>
|
||||
/// Name of the station at which this event occurred.
|
||||
/// </summary>
|
||||
public string StationName { get; init; }
|
||||
public string StationType { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
public Faction StationFaction { get; init; }
|
||||
public string StationGovernment { get; init; }
|
||||
public string StationGovernment_Localised { get; init; }
|
||||
[JsonConverter(typeof(StationServiceConverter))]
|
||||
public StationService StationServices { get; init; }
|
||||
public string StationEconomy { get; init; }
|
||||
public string StationEconomy_Localised { get; init; }
|
||||
public ImmutableList<StationEconomy> StationEconomies { get; init; }
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierJumpCancelled : JournalBase
|
||||
{
|
||||
public class CarrierJumpCancelled : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
}
|
@ -1,20 +1,19 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
{
|
||||
public class CarrierJumpRequest : JournalBase
|
||||
{
|
||||
public string Body { get; init; }
|
||||
public int BodyID { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public ulong CarrierID { get; init; }
|
||||
public string SystemName { get; init; }
|
||||
public ulong SystemID { get; init; }
|
||||
public string DepartureTime { get; init; }
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
[JsonIgnore]
|
||||
public DateTime DepartureTimeDateTime {
|
||||
get => ParseDateTime(DepartureTime);
|
||||
}
|
||||
public class CarrierJumpRequest : JournalBase
|
||||
{
|
||||
public string Body { get; init; }
|
||||
public int BodyID { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public ulong CarrierID { get; init; }
|
||||
public string SystemName { get; init; }
|
||||
public ulong SystemID { get; init; }
|
||||
public string DepartureTime { get; init; }
|
||||
|
||||
[JsonIgnore]
|
||||
public DateTimeOffset DepartureTimeDateTime {
|
||||
get => ParseDateTime(DepartureTime);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierModulePack : CarrierShipPack
|
||||
{
|
||||
public class CarrierModulePack : CarrierShipPack
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,16 +1,15 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierShipPack : JournalBase
|
||||
{
|
||||
public class CarrierShipPack : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierOperation Operation { get; init; }
|
||||
public string PackTheme { get; init; }
|
||||
public int PackTier { get; init; }
|
||||
public int Cost { get; init; }
|
||||
public int Refund { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierOperation Operation { get; init; }
|
||||
public string PackTheme { get; init; }
|
||||
public int PackTier { get; init; }
|
||||
public int Cost { get; init; }
|
||||
public int Refund { get; init; }
|
||||
}
|
@ -1,25 +1,24 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierStats : JournalBase
|
||||
{
|
||||
public class CarrierStats : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public string Callsign { get; init; }
|
||||
public string Name { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierDockingAccess DockingAccess { get; init; }
|
||||
public bool AllowNotorious { get; init; }
|
||||
public int FuelLevel { get; init; }
|
||||
public float JumpRangeCurr { get; init; }
|
||||
public float JumpRangeMax { get; init; }
|
||||
public bool PendingDecommission { get; init; }
|
||||
public CarrierSpaceUsage SpaceUsage { get; init; }
|
||||
public ParameterTypes.CarrierFinance Finance { get; init; }
|
||||
public ImmutableList<CarrierCrew> Crew { get; init; }
|
||||
public ImmutableList<CarrierPack> ShipPacks { get; init; }
|
||||
public ImmutableList<CarrierPack> ModulePacks { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
public string Callsign { get; init; }
|
||||
public string Name { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public CarrierDockingAccess DockingAccess { get; init; }
|
||||
public bool AllowNotorious { get; init; }
|
||||
public int FuelLevel { get; init; }
|
||||
public float JumpRangeCurr { get; init; }
|
||||
public float JumpRangeMax { get; init; }
|
||||
public bool PendingDecommission { get; init; }
|
||||
public CarrierSpaceUsage SpaceUsage { get; init; }
|
||||
public ParameterTypes.CarrierFinance Finance { get; init; }
|
||||
public ImmutableList<CarrierCrew> Crew { get; init; }
|
||||
public ImmutableList<CarrierPack> ShipPacks { get; init; }
|
||||
public ImmutableList<CarrierPack> ModulePacks { get; init; }
|
||||
}
|
@ -1,14 +1,13 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class CarrierTradeOrder : JournalBase
|
||||
{
|
||||
public class CarrierTradeOrder : JournalBase
|
||||
{
|
||||
public ulong CarrierID { get; init; }
|
||||
public bool BlackMarket { get; init; }
|
||||
public string Commodity { get; init; }
|
||||
public string Commodity_Localised { get; init; }
|
||||
public int PurchaseOrder { get; init; }
|
||||
public int SaleOrder { get; init; }
|
||||
public bool CancelTrade { get; init; }
|
||||
public int Price { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong CarrierID { get; init; }
|
||||
public bool BlackMarket { get; init; }
|
||||
public string Commodity { get; init; }
|
||||
public string Commodity_Localised { get; init; }
|
||||
public int PurchaseOrder { get; init; }
|
||||
public int SaleOrder { get; init; }
|
||||
public bool CancelTrade { get; init; }
|
||||
public int Price { get; init; }
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
using Observatory.Framework.Files.Journal.Travel;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal.FleetCarrier;
|
||||
|
||||
public class FCMaterlas : FSDJump
|
||||
{
|
||||
public class FCMaterlas : FSDJump
|
||||
{
|
||||
public ulong MarketID { get; init; }
|
||||
public string CarrierName { get; init; }
|
||||
public ulong CarrierID { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong MarketID { get; init; }
|
||||
public string CarrierName { get; init; }
|
||||
public ulong CarrierID { get; init; }
|
||||
}
|
@ -1,11 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
namespace Observatory.Framework.Files.Journal;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
public class InvalidJson : JournalBase
|
||||
{
|
||||
public class InvalidJson : JournalBase
|
||||
{
|
||||
public string OriginalEvent { get; init; }
|
||||
}
|
||||
}
|
||||
public string OriginalEvent { get; init; }
|
||||
}
|
@ -1,32 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal;
|
||||
|
||||
public class JournalBase
|
||||
{
|
||||
public class JournalBase
|
||||
[JsonPropertyName("timestamp")]
|
||||
public string Timestamp { get; init; }
|
||||
|
||||
[JsonIgnore]
|
||||
public DateTimeOffset TimestampDateTime
|
||||
{
|
||||
[JsonPropertyName("timestamp")]
|
||||
public string Timestamp { get; init; }
|
||||
get => ParseDateTime(Timestamp);
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public DateTime TimestampDateTime
|
||||
[JsonPropertyName("event")]
|
||||
public string Event { get; init; }
|
||||
|
||||
[JsonExtensionData]
|
||||
public Dictionary<string, object> AdditionalProperties { get; init; }
|
||||
|
||||
[JsonIgnore]
|
||||
public string Json
|
||||
{
|
||||
get => json;
|
||||
set
|
||||
{
|
||||
get => ParseDateTime(Timestamp);
|
||||
}
|
||||
|
||||
[JsonPropertyName("event")]
|
||||
public string Event { get; init; }
|
||||
|
||||
[JsonExtensionData]
|
||||
public Dictionary<string, object> AdditionalProperties { get; init; }
|
||||
|
||||
[JsonIgnore]
|
||||
public string Json
|
||||
{
|
||||
get => json;
|
||||
set
|
||||
{
|
||||
if (json == null || string.IsNullOrWhiteSpace(json))
|
||||
{
|
||||
json = value;
|
||||
@ -36,21 +35,18 @@ namespace Observatory.Framework.Files.Journal
|
||||
throw new Exception("Journal property \"Json\" can only be set while empty.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string json;
|
||||
private string json;
|
||||
|
||||
// For use by Journal object classes for .*DateTime properties, like TimestampeDateTime, above.
|
||||
internal static DateTime ParseDateTime(string value)
|
||||
{
|
||||
if (DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ssZ", null, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTime dateTimeValue))
|
||||
// For use by Journal object classes for .*DateTime properties, like TimestampeDateTime, above.
|
||||
internal static DateTimeOffset ParseDateTime(string value)
|
||||
{
|
||||
if (DateTime.TryParseExact(value, "yyyy-MM-ddTHH:mm:ssZ", null, DateTimeStyles.AssumeUniversal, out var dateTimeValue))
|
||||
{
|
||||
return dateTimeValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
return new DateTime();
|
||||
}
|
||||
|
||||
return new DateTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Observatory.Framework.Files
|
||||
{
|
||||
public static class JournalUtilities
|
||||
{
|
||||
public static string GetEventType(string line)
|
||||
{
|
||||
var reader = new Utf8JsonReader(Encoding.UTF8.GetBytes(line));
|
||||
string result = string.Empty;
|
||||
namespace Observatory.Framework.Files.Journal;
|
||||
|
||||
try
|
||||
public static class JournalUtilities
|
||||
{
|
||||
public static string GetEventType(string line)
|
||||
{
|
||||
var reader = new Utf8JsonReader(Encoding.UTF8.GetBytes(line));
|
||||
var result = string.Empty;
|
||||
|
||||
try
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
while (reader.Read())
|
||||
if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "event")
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "event")
|
||||
{
|
||||
reader.Read();
|
||||
result = reader.GetString();
|
||||
}
|
||||
reader.Read();
|
||||
result = reader.GetString();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
result = "InvalidJson";
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string CleanScanEvent(string line)
|
||||
catch
|
||||
{
|
||||
return line.Replace("\"RotationPeriod\":inf,", "");
|
||||
|
||||
result = "InvalidJson";
|
||||
}
|
||||
|
||||
public const string ObsoleteMessage = "Unused in Elite Dangerous 3.7+, may appear in legacy journal data.";
|
||||
|
||||
public const string UnusedMessage = "Documented by Frontier, but no occurances of this value ever found in real journal data.";
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public static string CleanScanEvent(string line)
|
||||
{
|
||||
return line.Replace("\"RotationPeriod\":inf,", "");
|
||||
}
|
||||
|
||||
public const string ObsoleteMessage = "Unused in Elite Dangerous 3.7+, may appear in legacy journal data.";
|
||||
|
||||
public const string UnusedMessage = "Documented by Frontier, but no occurances of this value ever found in real journal data.";
|
||||
|
||||
}
|
@ -1,10 +1,6 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
public class BackPack : JournalBase
|
||||
{
|
||||
public class BackPack : JournalBase
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
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.Odyssey;
|
||||
|
||||
public class BackpackChange : JournalBase
|
||||
{
|
||||
public class BackpackChange : JournalBase
|
||||
{
|
||||
public ImmutableList<BackpackItemChange> Added { get; init; }
|
||||
public ImmutableList<BackpackItemChange> Removed { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<BackpackItemChange> Added { get; init; }
|
||||
public ImmutableList<BackpackItemChange> Removed { get; init; }
|
||||
}
|
@ -1,13 +1,12 @@
|
||||
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.Odyssey;
|
||||
|
||||
public class BackpackMaterials : JournalBase
|
||||
{
|
||||
public class BackpackMaterials : JournalBase
|
||||
{
|
||||
public ImmutableList<BackpackItem> Items { get; init; }
|
||||
public ImmutableList<BackpackItem> Components { get; init; }
|
||||
public ImmutableList<BackpackItem> Consumables { get; init; }
|
||||
public ImmutableList<BackpackItem> Data { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<BackpackItem> Items { get; init; }
|
||||
public ImmutableList<BackpackItem> Components { get; init; }
|
||||
public ImmutableList<BackpackItem> Consumables { get; init; }
|
||||
public ImmutableList<BackpackItem> Data { get; init; }
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class BookDropship : BookTaxi
|
||||
{
|
||||
public class BookDropship : BookTaxi
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class BookTaxi : JournalBase
|
||||
{
|
||||
public class BookTaxi : JournalBase
|
||||
{
|
||||
public int Cost { get; init; }
|
||||
public string DestinationSystem { get; init; }
|
||||
public string DestinationLocation { get; init; }
|
||||
public bool Retreat { get; init; }
|
||||
}
|
||||
}
|
||||
public int Cost { get; init; }
|
||||
public string DestinationSystem { get; init; }
|
||||
public string DestinationLocation { get; init; }
|
||||
public bool Retreat { get; init; }
|
||||
}
|
@ -1,19 +1,18 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Collections.Immutable;
|
||||
using System.Collections.Immutable;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class BuyMicroResources : JournalBase
|
||||
{
|
||||
public class BuyMicroResources : JournalBase
|
||||
{
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public MicroCategory Category { get; init; }
|
||||
public int Count { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
public int TotalCount { get; init; }
|
||||
public ImmutableList<MicroResource> MicroResources { get; init; }
|
||||
}
|
||||
}
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public MicroCategory Category { get; init; }
|
||||
public int Count { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
public int TotalCount { get; init; }
|
||||
public ImmutableList<MicroResource> MicroResources { get; init; }
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class BuySuit : JournalBase
|
||||
{
|
||||
public class BuySuit : JournalBase
|
||||
{
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong SuitID { get; init; }
|
||||
}
|
||||
}
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong SuitID { get; init; }
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class BuyWeapon : JournalBase
|
||||
{
|
||||
public class BuyWeapon : JournalBase
|
||||
{
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong SuitModuleID { get; init; }
|
||||
}
|
||||
}
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong SuitModuleID { get; init; }
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class CancelDropship : CancelTaxi
|
||||
{
|
||||
public class CancelDropship : CancelTaxi
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class CancelTaxi : JournalBase
|
||||
{
|
||||
public class CancelTaxi : JournalBase
|
||||
{
|
||||
public int Refund { get; init; }
|
||||
}
|
||||
}
|
||||
public int Refund { get; init; }
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class CollectItems : JournalBase
|
||||
{
|
||||
public class CollectItems : JournalBase
|
||||
{
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
public string Type { get; init; }
|
||||
public ulong OwnerID { get; init; }
|
||||
public int Count { get; init; }
|
||||
public bool Stolen { get; init; }
|
||||
}
|
||||
}
|
||||
public string Name { get; init; }
|
||||
public string Name_Localised { get; init; }
|
||||
public string Type { get; init; }
|
||||
public ulong OwnerID { get; init; }
|
||||
public int Count { get; init; }
|
||||
public bool Stolen { get; init; }
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
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.Odyssey;
|
||||
|
||||
public class CreateSuitLoadout : DeleteSuitLoadout
|
||||
{
|
||||
public class CreateSuitLoadout : DeleteSuitLoadout
|
||||
{
|
||||
public ImmutableList<SuitModule> Modules { get; init; }
|
||||
public ImmutableList<string> SuitMods { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<SuitModule> Modules { get; init; }
|
||||
public ImmutableList<string> SuitMods { get; init; }
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class DeleteSuitLoadout : JournalBase
|
||||
{
|
||||
public class DeleteSuitLoadout : JournalBase
|
||||
{
|
||||
public ulong SuitID { get; init; }
|
||||
public string SuitName { get; init; }
|
||||
public string SuitName_Localised { get; init; }
|
||||
public ulong LoadoutID { get; init; }
|
||||
public string LoadoutName { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong SuitID { get; init; }
|
||||
public string SuitName { get; init; }
|
||||
public string SuitName_Localised { get; init; }
|
||||
public ulong LoadoutID { get; init; }
|
||||
public string LoadoutName { get; init; }
|
||||
}
|
@ -1,28 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
public class Disembark : JournalBase
|
||||
{
|
||||
public class Disembark : JournalBase
|
||||
{
|
||||
public bool SRV { get; init; }
|
||||
public bool Taxi { get; init; }
|
||||
public bool Multicrew { get; init; }
|
||||
public ulong ID { get; init; }
|
||||
public string StarSystem { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public string Body { get; init; }
|
||||
public int BodyID { get; init; }
|
||||
public bool OnStation { get; init; }
|
||||
public bool OnPlanet { get; init; }
|
||||
/// <summary>
|
||||
/// Name of the station at which this event occurred.
|
||||
/// </summary>
|
||||
public string StationName { get; init; }
|
||||
public string StationType { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
}
|
||||
}
|
||||
public bool SRV { get; init; }
|
||||
public bool Taxi { get; init; }
|
||||
public bool Multicrew { get; init; }
|
||||
public ulong ID { get; init; }
|
||||
public string StarSystem { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public string Body { get; init; }
|
||||
public int BodyID { get; init; }
|
||||
public bool OnStation { get; init; }
|
||||
public bool OnPlanet { get; init; }
|
||||
/// <summary>
|
||||
/// Name of the station at which this event occurred.
|
||||
/// </summary>
|
||||
public string StationName { get; init; }
|
||||
public string StationType { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class DropItems : CollectItems
|
||||
{
|
||||
public class DropItems : CollectItems
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class DropShipDeploy : JournalBase
|
||||
{
|
||||
public class DropShipDeploy : JournalBase
|
||||
{
|
||||
public string StarSystem { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public string Body { get; init; }
|
||||
public int BodyID { get; init; }
|
||||
public bool OnStation { get; init; }
|
||||
public bool OnPlanet { get; init; }
|
||||
}
|
||||
}
|
||||
public string StarSystem { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public string Body { get; init; }
|
||||
public int BodyID { get; init; }
|
||||
public bool OnStation { get; init; }
|
||||
public bool OnPlanet { get; init; }
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class Embark : Disembark
|
||||
{
|
||||
public class Embark : Disembark
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class FCMaterials : JournalBase
|
||||
{
|
||||
public class FCMaterials : JournalBase
|
||||
{
|
||||
public ulong MarketID { get; init; }
|
||||
public string CarrierName { get; init; }
|
||||
public string CarrierID { get; init; }
|
||||
}
|
||||
public ulong MarketID { get; init; }
|
||||
public string CarrierName { get; init; }
|
||||
public string CarrierID { get; init; }
|
||||
}
|
@ -1,15 +1,14 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class LoadoutEquipModule : JournalBase
|
||||
{
|
||||
public class LoadoutEquipModule : JournalBase
|
||||
{
|
||||
public ulong SuitID { get; init; }
|
||||
public string SuitName { get; init; }
|
||||
public string SuitName_Localised { get; init; }
|
||||
public string SlotName { get; init; }
|
||||
public ulong LoadoutID { get; init; }
|
||||
public string LoadoutName { get; init; }
|
||||
public string ModuleName { get; init; }
|
||||
public string ModuleName_Localised { get; init; }
|
||||
public ulong SuitModuleID { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong SuitID { get; init; }
|
||||
public string SuitName { get; init; }
|
||||
public string SuitName_Localised { get; init; }
|
||||
public string SlotName { get; init; }
|
||||
public ulong LoadoutID { get; init; }
|
||||
public string LoadoutName { get; init; }
|
||||
public string ModuleName { get; init; }
|
||||
public string ModuleName_Localised { get; init; }
|
||||
public ulong SuitModuleID { get; init; }
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class LoadoutRemoveModule : LoadoutEquipModule
|
||||
{
|
||||
public class LoadoutRemoveModule : LoadoutEquipModule
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class RenameSuitLoadout : JournalBase
|
||||
{
|
||||
public class RenameSuitLoadout : JournalBase
|
||||
{
|
||||
public ulong SuitID { get; init; }
|
||||
public string SuitName { get; init; }
|
||||
public ulong LoadoutID { get; init; }
|
||||
public string LoadoutName { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong SuitID { get; init; }
|
||||
public string SuitName { get; init; }
|
||||
public ulong LoadoutID { get; init; }
|
||||
public string LoadoutName { get; init; }
|
||||
}
|
@ -1,19 +1,18 @@
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.Json.Serialization;
|
||||
using Observatory.Framework.Files.ParameterTypes;
|
||||
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class ScanOrganic : JournalBase
|
||||
{
|
||||
public class ScanOrganic : JournalBase
|
||||
{
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public ScanOrganicType ScanType { get; init; }
|
||||
public string Genus { get; init; }
|
||||
public string Genus_Localised { get; init; }
|
||||
public string Species { get; init; }
|
||||
public string Species_Localised { get; init; }
|
||||
public string Variant { get; init; }
|
||||
public string Variant_Localised { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public int Body { get; init; }
|
||||
}
|
||||
}
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public ScanOrganicType ScanType { get; init; }
|
||||
public string Genus { get; init; }
|
||||
public string Genus_Localised { get; init; }
|
||||
public string Species { get; init; }
|
||||
public string Species_Localised { get; init; }
|
||||
public string Variant { get; init; }
|
||||
public string Variant_Localised { get; init; }
|
||||
public ulong SystemAddress { get; init; }
|
||||
public int Body { get; init; }
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
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.Odyssey;
|
||||
|
||||
public class SellMicroResources : JournalBase
|
||||
{
|
||||
public class SellMicroResources : JournalBase
|
||||
{
|
||||
public ImmutableList<MicroResource> MicroResources { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<MicroResource> MicroResources { get; init; }
|
||||
public int Price { get; init; }
|
||||
public ulong MarketID { get; init; }
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
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.Odyssey;
|
||||
|
||||
public class SellOrganicData : JournalBase
|
||||
{
|
||||
public class SellOrganicData : JournalBase
|
||||
{
|
||||
public ulong MarketID { get; init; }
|
||||
public ImmutableList<BioData> BioData { get; init; }
|
||||
}
|
||||
}
|
||||
public ulong MarketID { get; init; }
|
||||
public ImmutableList<BioData> BioData { get; init; }
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
{
|
||||
public class SellSuit : BuySuit
|
||||
{ }
|
||||
}
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class SellSuit : BuySuit
|
||||
{ }
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class SellWeapon : BuyWeapon
|
||||
{
|
||||
public class SellWeapon : BuyWeapon
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +1,12 @@
|
||||
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.Odyssey;
|
||||
|
||||
public class ShipLockerMaterials : JournalBase
|
||||
{
|
||||
public class ShipLockerMaterials : JournalBase
|
||||
{
|
||||
public ImmutableList<BackpackItem> Items { get; init; }
|
||||
public ImmutableList<BackpackItem> Components { get; init; }
|
||||
public ImmutableList<BackpackItem> Consumables { get; init; }
|
||||
public ImmutableList<BackpackItem> Data { get; init; }
|
||||
}
|
||||
}
|
||||
public ImmutableList<BackpackItem> Items { get; init; }
|
||||
public ImmutableList<BackpackItem> Components { get; init; }
|
||||
public ImmutableList<BackpackItem> Consumables { get; init; }
|
||||
public ImmutableList<BackpackItem> Data { get; init; }
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
{
|
||||
public class SuitLoadout : CreateSuitLoadout
|
||||
{ }
|
||||
}
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class SuitLoadout : CreateSuitLoadout
|
||||
{ }
|
@ -1,6 +1,5 @@
|
||||
namespace Observatory.Framework.Files.Journal
|
||||
namespace Observatory.Framework.Files.Journal.Odyssey;
|
||||
|
||||
public class SwitchSuitLoadout : CreateSuitLoadout
|
||||
{
|
||||
public class SwitchSuitLoadout : CreateSuitLoadout
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user