@@ -46,37 +46,82 @@ public SurfaceSignalsEvent (DateTime timestamp, string detectionType, ulong? sys
4646 this . genera = genera ?? new List < OrganicGenus > ( ) ;
4747 }
4848
49- public static bool Handle ( DateTime timestamp , string line , IDictionary < string , object > data ,
50- ref List < Event > events , bool fromLogLoad )
49+ public static bool Handle ( DateTime timestamp , string edType , string line , IDictionary < string , object > data , ref List < Event > events , bool fromLogLoad )
5150 {
5251 var systemAddress = JsonParsing . getULong ( data , "SystemAddress" ) ;
5352 var bodyName = JsonParsing . getString ( data , "BodyName" ) ;
5453 var bodyId = JsonParsing . getLong ( data , "BodyID" ) ;
5554
5655 data . TryGetValue ( "Signals" , out var signalsVal ) ;
5756 if ( signalsVal == null ) { return false ; }
58-
59- if ( bodyName . EndsWith ( " Ring" ) )
57+
58+ if ( edType . Contains ( "SAA" , StringComparison . OrdinalIgnoreCase ) )
6059 {
61- // This is the mining hotspots from a ring that we've mapped
62- var hotspots = new List < CommodityAmount > ( ) ;
63- foreach ( var signal in ( ( List < object > ) signalsVal ) . Cast < IDictionary < string , object > > ( ) )
60+ if ( bodyName . EndsWith ( " Ring" ) )
6461 {
65- var commodityEdName = JsonParsing . getString ( signal , "Type" ) ;
66- var type = CommodityDefinition . FromEDName ( commodityEdName ) ??
67- throw new ArgumentException ( $@ "Unknown ring signal type: { commodityEdName } ",
68- nameof ( commodityEdName ) ) ;
69- type . fallbackLocalizedName = JsonParsing . getString ( signal , "Type_Localised" ) ;
70- var amount = JsonParsing . getInt ( signal , "Count" ) ;
71- hotspots . Add ( new CommodityAmount ( type , amount ) ) ;
62+ // This is the mining hotspots from a ring that we've mapped
63+ var hotspots = new List < CommodityAmount > ( ) ;
64+ foreach ( var signal in ( ( List < object > ) signalsVal ) . Cast < IDictionary < string , object > > ( ) )
65+ {
66+ var commodityEdName = JsonParsing . getString ( signal , "Type" ) ;
67+ var type = CommodityDefinition . FromEDName ( commodityEdName ) ??
68+ throw new ArgumentException ( $@ "Unknown ring signal type: { commodityEdName } ",
69+ nameof ( commodityEdName ) ) ;
70+ type . fallbackLocalizedName = JsonParsing . getString ( signal , "Type_Localised" ) ;
71+ var amount = JsonParsing . getInt ( signal , "Count" ) ;
72+ hotspots . Add ( new CommodityAmount ( type , amount ) ) ;
73+ }
74+ hotspots = hotspots . OrderByDescending ( h => h . amount ) . ToList ( ) ;
75+ events . Add ( new RingHotspotsEvent ( timestamp , systemAddress , bodyName , bodyId , hotspots )
76+ {
77+ raw = line , fromLoad = fromLogLoad
78+ } ) ;
7279 }
73- hotspots = hotspots . OrderByDescending ( h => h . amount ) . ToList ( ) ;
80+ else
81+ {
82+ // This is surface signal sources from a body that we've mapped
83+ var surfaceSignals = new List < SignalAmount > ( ) ;
84+ foreach ( var signal in ( ( List < object > ) signalsVal ) . Cast < IDictionary < string , object > > ( ) )
85+ {
86+ var signalSource = JsonParsing . getString ( signal , "Type" ) ;
87+ var source = SignalSource . FromEDName ( signalSource ) ?? new SignalSource ( ) ;
88+ var localizedName = JsonParsing . getString ( data , "Type_Localised" ) ;
89+ if ( ! string . IsNullOrEmpty ( localizedName ) && ! localizedName . Contains ( "$" ) )
90+ {
91+ source . fallbackLocalizedName = localizedName ;
92+ }
7493
75- events . Add ( new RingHotspotsEvent ( timestamp , systemAddress , bodyName , bodyId , hotspots ) { raw = line , fromLoad = fromLogLoad } ) ;
94+ var amount = JsonParsing . getInt ( signal , "Count" ) ;
95+ surfaceSignals . Add ( new SignalAmount ( source , amount ) ) ;
96+ }
97+
98+ surfaceSignals = surfaceSignals . OrderByDescending ( s => s . amount ) . ToList ( ) ;
99+
100+ var genera = new List < OrganicGenus > ( ) ;
101+ data . TryGetValue ( "Genuses" , out var genusesVal ) ;
102+ if ( genusesVal != null )
103+ {
104+ foreach ( var genusVal in ( ( List < object > ) genusesVal ) . Cast < IDictionary < string , object > > ( ) )
105+ {
106+ var genusEdName = JsonParsing . getString ( genusVal , "Genus" ) ;
107+ var genus = OrganicGenus . FromEDName ( genusEdName ) ;
108+ if ( genus != null )
109+ {
110+ genus . fallbackLocalizedName = JsonParsing . getString ( genusVal , "Genus_Localised" ) ;
111+ genera . Add ( genus ) ;
112+ }
113+ }
114+ }
115+ events . Add ( new SurfaceSignalsEvent ( timestamp , "SAA" , systemAddress , bodyName , bodyId ,
116+ surfaceSignals , genera ) { raw = line , fromLoad = fromLogLoad } ) ;
117+ }
118+
119+ return true ;
76120 }
77- else
121+
122+ if ( edType . Contains ( "FSS" , StringComparison . OrdinalIgnoreCase ) )
78123 {
79- // This is surface signal sources from a body that we've mapped
124+ // These are surface signal sources from a body that we've scanned
80125 var surfaceSignals = new List < SignalAmount > ( ) ;
81126 foreach ( var signal in ( ( List < object > ) signalsVal ) . Cast < IDictionary < string , object > > ( ) )
82127 {
@@ -91,27 +136,11 @@ public static bool Handle ( DateTime timestamp, string line, IDictionary<string,
91136 surfaceSignals . Add ( new SignalAmount ( source , amount ) ) ;
92137 }
93138 surfaceSignals = surfaceSignals . OrderByDescending ( s => s . amount ) . ToList ( ) ;
94-
95- var genera = new List < OrganicGenus > ( ) ;
96- data . TryGetValue ( "Genuses" , out var genusesVal ) ;
97- if ( genusesVal != null )
98- {
99- foreach ( var genusVal in ( ( List < object > ) genusesVal ) . Cast < IDictionary < string , object > > ( ) )
100- {
101- var genusEdName = JsonParsing . getString ( genusVal , "Genus" ) ;
102- var genus = OrganicGenus . FromEDName ( genusEdName ) ;
103- if ( genus != null )
104- {
105- genus . fallbackLocalizedName = JsonParsing . getString ( genusVal , "Genus_Localised" ) ;
106- genera . Add ( genus ) ;
107- }
108- }
109- }
110-
111- events . Add ( new SurfaceSignalsEvent ( timestamp , "SAA" , systemAddress , bodyName , bodyId , surfaceSignals , genera ) { raw = line , fromLoad = fromLogLoad } ) ;
139+ events . Add ( new SurfaceSignalsEvent ( timestamp , "FSS" , systemAddress , bodyName , bodyId , surfaceSignals , null ) { raw = line , fromLoad = fromLogLoad } ) ;
140+ return true ;
112141 }
113142
114- return true ;
143+ return false ;
115144 }
116145 }
117146}
0 commit comments