Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemTimeOfDay.cs
浏览该文件的文档.
1using Engine;
4
5namespace Game {
8
10
11 public bool TimeOfDayEnabled = true;
12
13 public float DayDuration { get; set; } = 1200f;
14
15 public float DawnStart { get; set; }
16
17 public float DayStart { get; set; }
18
19 public float DuskStart { get; set; }
20
21 public float NightStart { get; set; }
22
24
26
28
30
32
34
36
38
39 public float TimeOfDay {
40 get {
41 if (TimeOfDayEnabled) {
42 if (m_subsystemGameInfo.WorldSettings.TimeOfDayMode == TimeOfDayMode.Changing) {
43 return CalculateTimeOfDay(m_subsystemGameInfo.TotalElapsedGameTime);
44 }
45 if (m_subsystemGameInfo.WorldSettings.TimeOfDayMode == TimeOfDayMode.Day) {
46 return Midday;
47 }
48 if (m_subsystemGameInfo.WorldSettings.TimeOfDayMode == TimeOfDayMode.Night) {
49 return Midnight;
50 }
51 if (m_subsystemGameInfo.WorldSettings.TimeOfDayMode == TimeOfDayMode.Sunrise) {
52 return Middawn;
53 }
54 if (m_subsystemGameInfo.WorldSettings.TimeOfDayMode == TimeOfDayMode.Sunset) {
55 return Middusk;
56 }
57 }
58 return Midday;
59 }
60 }
61
62 public double Day => CalculateDay(m_subsystemGameInfo.TotalElapsedGameTime);
63
64 public double TimeOfDayOffset { get; set; }
65
66 public double CalculateDay(double totalElapsedGameTime) => (totalElapsedGameTime + (TimeOfDayOffset + DayStart) * DayDuration) / DayDuration;
67
68 public float CalculateTimeOfDay(double totalElapsedGameTime) {
69 double num = CalculateDay(totalElapsedGameTime);
70 return (float)(num - Math.Floor(num));
71 }
72
73 public override void Load(ValuesDictionary valuesDictionary) {
74 m_subsystemGameInfo = Project.FindSubsystem<SubsystemGameInfo>(true);
75 m_subsystemSeasons = Project.FindSubsystem<SubsystemSeasons>(true);
76 TimeOfDayOffset = valuesDictionary.GetValue<double>("TimeOfDayOffset");
78 }
79
80 public override void Save(ValuesDictionary valuesDictionary) {
81 valuesDictionary.SetValue("TimeOfDayOffset", TimeOfDayOffset);
82 }
83
84 public virtual void UpdateStarts() {
86 float num2 = MathUtils.Remainder(m_subsystemGameInfo.WorldSettings.TimeOfYear - num, 1f);
87 float num3 = MathUtils.Lerp(0.2f, 0.4f, 0.5f + 0.5f * MathF.Cos((float)Math.PI * 2f * num2));
88 float num4 = 0.4f;
89 float num5 = (1f - (num3 + num4)) / 2f;
90 DayStart = 0.3f;
91 DawnStart = IntervalUtils.Add(DayStart, 0f - num5);
94 }
95 }
96}
static float Remainder(float x, float y)
static float Lerp(float x1, float x2, float f)
static float Interval(float t1, float t2)
static float Midpoint(float t1, float t2, float factor=0.5f)
static float Add(float t, float interval)
double CalculateDay(double totalElapsedGameTime)
override void Save(ValuesDictionary valuesDictionary)
override void Load(ValuesDictionary valuesDictionary)
SubsystemGameInfo m_subsystemGameInfo
float CalculateTimeOfDay(double totalElapsedGameTime)
ValuesDictionary ValuesDictionary