feat: Add new event sources
This commit is contained in:
@@ -58,6 +58,7 @@ namespace Cryville.EEW.Unity {
|
|||||||
[JsonDerivedType(typeof(CWAOpenDataEventSourceConfig), "CWAOpenData")]
|
[JsonDerivedType(typeof(CWAOpenDataEventSourceConfig), "CWAOpenData")]
|
||||||
[JsonDerivedType(typeof(EMSCRealTimeEventSourceConfig), "EMSCRealTime")]
|
[JsonDerivedType(typeof(EMSCRealTimeEventSourceConfig), "EMSCRealTime")]
|
||||||
[JsonDerivedType(typeof(FANStudioEventSourceConfig), "FANStudio")]
|
[JsonDerivedType(typeof(FANStudioEventSourceConfig), "FANStudio")]
|
||||||
|
[JsonDerivedType(typeof(FANStudioAllEventSourceConfig), "FANStudioAll")]
|
||||||
[JsonDerivedType(typeof(GeoNetEventSourceConfig), "GeoNet")]
|
[JsonDerivedType(typeof(GeoNetEventSourceConfig), "GeoNet")]
|
||||||
[JsonDerivedType(typeof(GlobalQuakeServerEventSourceConfig), "GlobalQuakeServer")]
|
[JsonDerivedType(typeof(GlobalQuakeServerEventSourceConfig), "GlobalQuakeServer")]
|
||||||
[JsonDerivedType(typeof(GlobalQuakeServer15EventSourceConfig), "GlobalQuakeServer15")]
|
[JsonDerivedType(typeof(GlobalQuakeServer15EventSourceConfig), "GlobalQuakeServer15")]
|
||||||
@@ -71,6 +72,7 @@ namespace Cryville.EEW.Unity {
|
|||||||
record CWAOpenDataEventSourceConfig([property: JsonRequired] string Subtype, [property: JsonRequired] string Token) : EventSourceConfig;
|
record CWAOpenDataEventSourceConfig([property: JsonRequired] string Subtype, [property: JsonRequired] string Token) : EventSourceConfig;
|
||||||
record EMSCRealTimeEventSourceConfig() : EventSourceConfig;
|
record EMSCRealTimeEventSourceConfig() : EventSourceConfig;
|
||||||
record FANStudioEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
record FANStudioEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
||||||
|
record FANStudioAllEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false) : EventSourceConfig;
|
||||||
record GeoNetEventSourceConfig(int MinimumMMI = 3, bool DoGetFullHistory = false, bool DoGetStrongMotionInfo = true) : EventSourceConfig;
|
record GeoNetEventSourceConfig(int MinimumMMI = 3, bool DoGetFullHistory = false, bool DoGetStrongMotionInfo = true) : EventSourceConfig;
|
||||||
record GlobalQuakeServerEventSourceConfig([property: JsonRequired] string Host, int Port = 38000) : EventSourceConfig;
|
record GlobalQuakeServerEventSourceConfig([property: JsonRequired] string Host, int Port = 38000) : EventSourceConfig;
|
||||||
record GlobalQuakeServer15EventSourceConfig(string Host, int Port = 38000) : GlobalQuakeServerEventSourceConfig(Host, Port);
|
record GlobalQuakeServer15EventSourceConfig(string Host, int Port = 38000) : GlobalQuakeServerEventSourceConfig(Host, Port);
|
||||||
|
@@ -130,9 +130,11 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readonly ContextedGeneratorManager<IMapGeneratorContext, MapElement> _gen = new(new IContextedGenerator<IMapGeneratorContext, MapElement>[] {
|
readonly ContextedGeneratorManager<IMapGeneratorContext, MapElement> _gen = new(new IContextedGenerator<IMapGeneratorContext, MapElement>[] {
|
||||||
|
new BeijingEarthquakeMapGenerator(),
|
||||||
new BMKGEarthquakeMapGenerator(),
|
new BMKGEarthquakeMapGenerator(),
|
||||||
new CEAEEWMapGenerator(),
|
new CEAEEWMapGenerator(),
|
||||||
new CENCEarthquakeMapGenerator(),
|
new FANStudio.Map.CENCEarthquakeMapGenerator(),
|
||||||
|
new Wolfx.Map.CENCEarthquakeMapGenerator(),
|
||||||
new CENCEEWMapGenerator(),
|
new CENCEEWMapGenerator(),
|
||||||
new CWAEarthquakeMapGenerator(),
|
new CWAEarthquakeMapGenerator(),
|
||||||
new CWAEEWMapGenerator(),
|
new CWAEEWMapGenerator(),
|
||||||
@@ -144,10 +146,13 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
new GeoNetQuakeMapGenerator(),
|
new GeoNetQuakeMapGenerator(),
|
||||||
new GeoNetStrongMapGenerator(),
|
new GeoNetStrongMapGenerator(),
|
||||||
new GlobalQuakeMapViewGenerator(),
|
new GlobalQuakeMapViewGenerator(),
|
||||||
|
new HKOEarthquakeMapGenerator(),
|
||||||
new ICLEEWMapGenerator(),
|
new ICLEEWMapGenerator(),
|
||||||
new JMAAtomMapGenerator(),
|
new JMAAtomMapGenerator(),
|
||||||
new JMAEEWMapGenerator(),
|
new JMAEEWMapGenerator(),
|
||||||
|
new NingxiaEarthquakeMapGenerator(),
|
||||||
new NOAAMapGenerator(),
|
new NOAAMapGenerator(),
|
||||||
|
new ShakeAlertEEWMapGenerator(),
|
||||||
new FANStudio.Map.SichuanEEWMapGenerator(),
|
new FANStudio.Map.SichuanEEWMapGenerator(),
|
||||||
new Wolfx.Map.SichuanEEWMapGenerator(),
|
new Wolfx.Map.SichuanEEWMapGenerator(),
|
||||||
new QuakeMLEventMapGenerator(),
|
new QuakeMLEventMapGenerator(),
|
||||||
|
@@ -107,11 +107,13 @@ namespace Cryville.EEW.Unity {
|
|||||||
_ongoingReportManager.Dispose();
|
_ongoingReportManager.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
CENCEarthquakeRVMGenerator _cencEarthquakeRVMGenerator;
|
Wolfx.CENCEarthquakeRVMGenerator _cencEarthquakeRVMGenerator;
|
||||||
void RegisterViewModelGenerators(CoreWorker worker) {
|
void RegisterViewModelGenerators(CoreWorker worker) {
|
||||||
|
worker.RegisterViewModelGenerator(new BeijingEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new BMKGEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new BMKGEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CEAEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CEAEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(_cencEarthquakeRVMGenerator = new CENCEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new FANStudio.CENCEarthquakeRVMGenerator());
|
||||||
|
worker.RegisterViewModelGenerator(_cencEarthquakeRVMGenerator = new());
|
||||||
worker.RegisterViewModelGenerator(new CENCEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CENCEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWAEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWAEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWAEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWAEEWRVMGenerator());
|
||||||
@@ -123,23 +125,28 @@ namespace Cryville.EEW.Unity {
|
|||||||
worker.RegisterViewModelGenerator(new GeoNetQuakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new GeoNetQuakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new GeoNetStrongRVMGenerator());
|
worker.RegisterViewModelGenerator(new GeoNetStrongRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new GlobalQuakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new GlobalQuakeRVMGenerator());
|
||||||
|
worker.RegisterViewModelGenerator(new HKOEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new ICLEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new ICLEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new JMAAtomRVMGenerator());
|
worker.RegisterViewModelGenerator(new JMAAtomRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new JMAEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new JMAEEWRVMGenerator());
|
||||||
|
worker.RegisterViewModelGenerator(new NingxiaEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new NOAAAtomRVMGenerator());
|
worker.RegisterViewModelGenerator(new NOAAAtomRVMGenerator());
|
||||||
var quakemlEventRVMGenerator = new QuakeMLEventRVMGenerator();
|
var quakemlEventRVMGenerator = new QuakeMLEventRVMGenerator();
|
||||||
quakemlEventRVMGenerator.AddExtension(new USGSQuakeMLExtension());
|
quakemlEventRVMGenerator.AddExtension(new USGSQuakeMLExtension());
|
||||||
worker.RegisterViewModelGenerator(quakemlEventRVMGenerator);
|
worker.RegisterViewModelGenerator(quakemlEventRVMGenerator);
|
||||||
|
worker.RegisterViewModelGenerator(new ShakeAlertEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new FANStudio.SichuanEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new FANStudio.SichuanEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new Wolfx.SichuanEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new Wolfx.SichuanEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new USGSContoursRVMGenerator());
|
worker.RegisterViewModelGenerator(new USGSContoursRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new VersionRVMGenerator());
|
worker.RegisterViewModelGenerator(new VersionRVMGenerator());
|
||||||
}
|
}
|
||||||
CENCEarthquakeTTSMessageGenerator _cencEarthquakeTTSMessageGenerator;
|
Wolfx.TTS.CENCEarthquakeTTSMessageGenerator _cencEarthquakeTTSMessageGenerator;
|
||||||
void RegisterTTSMessageGenerators(CoreWorker worker) {
|
void RegisterTTSMessageGenerators(CoreWorker worker) {
|
||||||
|
worker.RegisterTTSMessageGenerator(new BeijingEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new BMKGEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new BMKGEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CEAEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CEAEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(_cencEarthquakeTTSMessageGenerator = new CENCEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new FANStudio.TTS.CENCEarthquakeTTSMessageGenerator());
|
||||||
|
worker.RegisterTTSMessageGenerator(_cencEarthquakeTTSMessageGenerator = new());
|
||||||
worker.RegisterTTSMessageGenerator(new CENCEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CENCEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CWAEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CWAEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CWAEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CWAEEWTTSMessageGenerator());
|
||||||
@@ -149,10 +156,13 @@ namespace Cryville.EEW.Unity {
|
|||||||
worker.RegisterTTSMessageGenerator(new GeoNetQuakeHistoryTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new GeoNetQuakeHistoryTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new GeoNetQuakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new GeoNetQuakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new GeoNetStrongTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new GeoNetStrongTTSMessageGenerator());
|
||||||
|
worker.RegisterTTSMessageGenerator(new HKOEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new ICLEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new ICLEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new JMAAtomTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new JMAAtomTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new JMAEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new JMAEEWTTSMessageGenerator());
|
||||||
|
worker.RegisterTTSMessageGenerator(new NingxiaEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new NOAATTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new NOAATTSMessageGenerator());
|
||||||
|
worker.RegisterTTSMessageGenerator(new ShakeAlertEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new FANStudio.TTS.SichuanEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new FANStudio.TTS.SichuanEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new Wolfx.TTS.SichuanEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new Wolfx.TTS.SichuanEEWTTSMessageGenerator());
|
||||||
}
|
}
|
||||||
@@ -184,11 +194,17 @@ namespace Cryville.EEW.Unity {
|
|||||||
},
|
},
|
||||||
EMSCRealTimeEventSourceConfig => new EMSCRealTimeWorker(new("wss://www.seismicportal.eu/standing_order/websocket")),
|
EMSCRealTimeEventSourceConfig => new EMSCRealTimeWorker(new("wss://www.seismicportal.eu/standing_order/websocket")),
|
||||||
FANStudioEventSourceConfig fanStudio => fanStudio.Subtype switch {
|
FANStudioEventSourceConfig fanStudio => fanStudio.Subtype switch {
|
||||||
|
"cenc" => new FANStudioWorker<FANStudio.Model.CENCEarthquake>(new("wss://ws.fanstudio.tech/cenc")),
|
||||||
"cea" => new FANStudioWorker<FANStudio.Model.CEAEEW>(new("wss://ws.fanstudio.tech/cea")),
|
"cea" => new FANStudioWorker<FANStudio.Model.CEAEEW>(new("wss://ws.fanstudio.tech/cea")),
|
||||||
"sichuan" => new FANStudioWorker<FANStudio.Model.SichuanEEW>(new("wss://ws.fanstudio.tech/sichuan")),
|
"sichuan" => new FANStudioWorker<FANStudio.Model.SichuanEEW>(new("wss://ws.fanstudio.tech/sichuan")),
|
||||||
|
"ningxia" => new FANStudioWorker<FANStudio.Model.NingxiaEarthquake>(new("wss://ws.fanstudio.tech/ningxia")),
|
||||||
"fujian" => new FANStudioWorker<FANStudio.Model.FujianEEW>(new("wss://ws.fanstudio.tech/fujian")),
|
"fujian" => new FANStudioWorker<FANStudio.Model.FujianEEW>(new("wss://ws.fanstudio.tech/fujian")),
|
||||||
|
"beijing" => new FANStudioWorker<FANStudio.Model.BeijingEarthquake>(new("wss://ws.fanstudio.tech/beijing")),
|
||||||
|
"hko" => new FANStudioWorker<FANStudio.Model.HKOEarthquake>(new("wss://ws.fanstudio.tech/hko")),
|
||||||
|
"sa" => new FANStudioWorker<FANStudio.Model.ShakeAlertEEW>(new("wss://ws.fanstudio.tech/hko")),
|
||||||
_ => throw new InvalidOperationException("Unknown FAN Studio sub-type."),
|
_ => throw new InvalidOperationException("Unknown FAN Studio sub-type."),
|
||||||
},
|
},
|
||||||
|
FANStudioAllEventSourceConfig fanStudioAll => BuildFANStudioAllWorkerFilter(new FANStudioAllWorker(new("wss://ws.fanstudio.tech/all")), fanStudioAll),
|
||||||
GeoNetEventSourceConfig geoNet => BuildGeoNetWorker(new(new("https://api.geonet.org.nz/quake"), new("https://api.geonet.org.nz/quake/history/index"), new("https://api.geonet.org.nz/intensity/strong/processed/index")), geoNet),
|
GeoNetEventSourceConfig geoNet => BuildGeoNetWorker(new(new("https://api.geonet.org.nz/quake"), new("https://api.geonet.org.nz/quake/history/index"), new("https://api.geonet.org.nz/intensity/strong/processed/index")), geoNet),
|
||||||
GlobalQuakeServer15EventSourceConfig gq => new GlobalQuakeWorker15(gq.Host, gq.Port),
|
GlobalQuakeServer15EventSourceConfig gq => new GlobalQuakeWorker15(gq.Host, gq.Port),
|
||||||
GlobalQuakeServerEventSourceConfig gq => new GlobalQuakeWorker(gq.Host, gq.Port),
|
GlobalQuakeServerEventSourceConfig gq => new GlobalQuakeWorker(gq.Host, gq.Port),
|
||||||
@@ -232,6 +248,11 @@ namespace Cryville.EEW.Unity {
|
|||||||
|
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
|
FANStudioAllWorker BuildFANStudioAllWorkerFilter(FANStudioAllWorker worker, FANStudioAllEventSourceConfig config) {
|
||||||
|
if (config.Filter != null) worker.SetFilter(config.Filter);
|
||||||
|
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
||||||
|
return worker;
|
||||||
|
}
|
||||||
static BMKGOpenDataWorker BuildBMKGOpenDataWorkerUris(BMKGOpenDataWorker worker, BMKGOpenDataEventSourceConfig config) {
|
static BMKGOpenDataWorker BuildBMKGOpenDataWorkerUris(BMKGOpenDataWorker worker, BMKGOpenDataEventSourceConfig config) {
|
||||||
worker.SetDataUris(config.Subtypes.Select(i => new Uri(string.Format(CultureInfo.InvariantCulture, "https://data.bmkg.go.id/DataMKG/TEWS/{0}.json", i))));
|
worker.SetDataUris(config.Subtypes.Select(i => new Uri(string.Format(CultureInfo.InvariantCulture, "https://data.bmkg.go.id/DataMKG/TEWS/{0}.json", i))));
|
||||||
return worker;
|
return worker;
|
||||||
|
Reference in New Issue
Block a user