/
ETS2TelemetryInfo.cs
51 lines (46 loc) · 1.55 KB
/
ETS2TelemetryInfo.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Reflection;
using SCSSdkClient.Object;
namespace SimFeedback.telemetry
{
public class ETS2TelemetryInfo : EventArgs, TelemetryInfo
{
private ETS2Data _telemetryData;
public ETS2TelemetryInfo(ETS2Data telemetryData, ETS2Data lastTelemetryData)
{
_telemetryData = telemetryData;
}
public TelemetryValue TelemetryValueByName(string name)
{
ETS2TelemetryValue tv;
switch (name)
{
default:
object data;
Type eleDataType = typeof(ETS2Data);
PropertyInfo propertyInfo;
FieldInfo fieldInfo = eleDataType.GetField(name);
if (fieldInfo != null)
{
data = fieldInfo.GetValue(_telemetryData);
}
else if ((propertyInfo = eleDataType.GetProperty(name)) != null)
{
data = propertyInfo.GetValue(_telemetryData, null);
}
else
{
throw new UnknownTelemetryValueException(name);
}
tv = new ETS2TelemetryValue(name, data);
object value = tv.Value;
if (value == null)
{
throw new UnknownTelemetryValueException(name);
}
break;
}
return tv;
}
}
}