-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathLibraryUtils.cs
More file actions
94 lines (88 loc) · 4.16 KB
/
LibraryUtils.cs
File metadata and controls
94 lines (88 loc) · 4.16 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
internal class LibraryUtils
{
/// <summary>
/// Replace for ResearchAndDevelopment.GetExperimentSubject function. Original function inserts new ScienceSubject in
/// the database, but we do not want that.
/// </summary>
/// <param name="experiment"></param>
/// <param name="situation"></param>
/// <param name="body"></param>
/// <param name="biome"></param>
/// <returns></returns>
public static ScienceSubject GetExperimentSubject(ScienceExperiment experiment, ExperimentSituations situation, CelestialBody body, string biome)
{
ScienceSubject scienceSubject = new ScienceSubject(experiment, situation, body, biome);
ScienceSubject subject = ResearchAndDevelopment.GetSubjectByID(scienceSubject.id); // this will cause error in log, but it is intended behavior.
if (subject != null)
return subject;
return scienceSubject;
}
/// <summary>
/// Replace for ResearchAndDevelopment.GetExperimentSubject function. Original function inserts new ScienceSubject in
/// the database, but we do not want that.
/// </summary>
/// <param name="experiment"></param>
/// <param name="situation"></param>
/// <param name="sourceUId"></param>
/// <param name="sourceTitle"></param>
/// <param name="body"></param>
/// <param name="biome"></param>
/// <returns></returns>
public static ScienceSubject GetExperimentSubject(ScienceExperiment experiment, ExperimentSituations situation, string sourceUId, string sourceTitle, CelestialBody body, string biome)
{
ScienceSubject scienceSubject = new ScienceSubject(experiment, situation, sourceUId, sourceTitle, body, biome);
ScienceSubject subject = ResearchAndDevelopment.GetSubjectByID(scienceSubject.id); // this will cause error in log, but it is intended behavior.
if (subject != null)
return subject;
return scienceSubject;
}
public static double ScienceDataValue(CelestialBody body, ExperimentSituations situation)
{
switch (situation)
{
case ExperimentSituations.SrfLanded:
return body.scienceValues.LandedDataValue;
case ExperimentSituations.SrfSplashed:
return body.scienceValues.SplashedDataValue;
case ExperimentSituations.FlyingLow:
return body.scienceValues.FlyingLowDataValue;
case ExperimentSituations.FlyingHigh:
return body.scienceValues.FlyingHighDataValue;
case ExperimentSituations.InSpaceLow:
return body.scienceValues.InSpaceLowDataValue;
case ExperimentSituations.InSpaceHigh:
return body.scienceValues.InSpaceHighDataValue;
default:
throw new ArgumentOutOfRangeException("situation");
}
}
public static string FindExperimentBody(string experimentSecondText)
{
int firstUpperCase = 0;
for (int i = 1; i < experimentSecondText.Length; i++)
{
if (Char.IsUpper(experimentSecondText[i]) && firstUpperCase == 0)
{
firstUpperCase = i;
}
}
return experimentSecondText.Substring(0, firstUpperCase);
}
public static string FindBiome(string experimentSecondText, ExperimentSituations situation)
{
string situationStr = situation.ToString();
int offset = experimentSecondText.IndexOf(situationStr) + situationStr.Length;
if (offset == experimentSecondText.Length)
return "";
return experimentSecondText.Substring(offset);
}
public static ExperimentSituations FindExperimentSituation(string experimentSecondText)
{
foreach (ExperimentSituations experimentSituation in Enum.GetValues(typeof (ExperimentSituations)))
if (experimentSecondText.Contains(experimentSituation.ToString()))
return experimentSituation;
throw new Exception("Error in FindExperimentSituation: Can't find situation in '" + experimentSecondText + "'");
//return null;
}
}