Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
TimeAndWeatherManagerEntitySerializer.c
Go to the documentation of this file.
2{
3 //------------------------------------------------------------------------------------------------
4 override static typename GetTargetType()
5 {
7 }
8
9 //------------------------------------------------------------------------------------------------
10 override static EDeserializeFailHandling GetDeserializeFailHandling()
11 {
12 return EDeserializeFailHandling.ERROR;
13 }
14
15 //------------------------------------------------------------------------------------------------
16 override protected ESerializeResult Serialize(notnull IEntity entity, notnull SaveContext context)
17 {
18 const TimeAndWeatherManagerEntity timeAndWeatherManager = TimeAndWeatherManagerEntity.Cast(entity);
19
20 int year, month, day, hour, minute, second;
21 timeAndWeatherManager.GetDate(year, month, day);
22 timeAndWeatherManager.GetHoursMinutesSeconds(hour, minute, second);
23
24 const WeatherState currentWeather = timeAndWeatherManager.GetCurrentWeatherState();
25 const string state = currentWeather.GetStateName();
26 const bool looping = timeAndWeatherManager.IsWeatherLooping();
27
28 const float dayDuration = timeAndWeatherManager.GetDayDuration();
29 const bool isDayAutoAdvanced = timeAndWeatherManager.GetIsDayAutoAdvanced();
30
31 const float latitude = timeAndWeatherManager.GetCurrentLatitude();
32 const float longitude = timeAndWeatherManager.GetCurrentLongitude();
33
34 const float timeZoneOffset = timeAndWeatherManager.GetTimeZoneOffset();
35
36 const bool dstEnabled = timeAndWeatherManager.IsDSTEnabled();
37 const float dstOffset = timeAndWeatherManager.GetDSTOffset();
38
39 const bool windSpeedOverridden = timeAndWeatherManager.IsWindSpeedOverridden();
40 const float windSpeed = timeAndWeatherManager.GetWindSpeed();
41
42 const bool windDirectionOverridden = timeAndWeatherManager.IsWindDirectionOverridden();
43 const float windDirection = timeAndWeatherManager.GetWindDirection();
44
45 const bool isRainIntensityOverridden = timeAndWeatherManager.IsRainIntensityOverridden();
46 const float rainIntensity = timeAndWeatherManager.GetRainIntensity();
47
48 const bool fogAmountOverridden = timeAndWeatherManager.IsFogAmountOverridden();
49 const float fogAmount = timeAndWeatherManager.GetFogAmount();
50
51 const bool fogHeightDensityOverridden = timeAndWeatherManager.IsFogHeightDensityOverridden();
52 const float fogHeightDensity = timeAndWeatherManager.GetFogHeightDensity();
53
54 const float wetness = timeAndWeatherManager.GetCurrentWetness();
55 const float waterAccumulationCracks = timeAndWeatherManager.GetCurrentWaterAccumulationCracks();
56 const float waterAccumulationPuddles = timeAndWeatherManager.GetCurrentWaterAccumulationPuddles();
57
58 const bool overrideSunIrradiance = timeAndWeatherManager.GetOverrideSunIrradiance();
59 const float sunIrradianceMinOverride = timeAndWeatherManager.GetSunIrradianceMinOverride();
60 const float sunIrradianceMaxOverride = timeAndWeatherManager.GetSunIrradianceMaxOverride();
61
62 const bool overrideTemperature = timeAndWeatherManager.GetOverrideTemperature();
63 const float temperatureAirMinOverride = timeAndWeatherManager.GetTemperatureAirMinOverride();
64 const float temperatureAirMaxOverride = timeAndWeatherManager.GetTemperatureAirMaxOverride();
65 const float temperatureWaterMinOverride = timeAndWeatherManager.GetTemperatureWaterMinOverride();
66 const float temperatureWaterMaxOverride = timeAndWeatherManager.GetTemperatureWaterMaxOverride();
67 const float temperatureSkyMinOverride = timeAndWeatherManager.GetTemperatureSkyMinOverride();
68 const float temperatureSkyMaxOverride = timeAndWeatherManager.GetTemperatureSkyMaxOverride();
69
70 context.WriteValue("version", 1);
71
72 context.Write(year);
73 context.Write(month);
74 context.Write(day);
75 context.Write(hour);
76 context.Write(minute);
77 context.Write(second);
78
79 context.WriteDefault(dayDuration, 86400.0);
80 context.WriteDefault(isDayAutoAdvanced, true);
81 context.WriteDefault(latitude, 50.073);
82 context.WriteDefault(longitude, 14.437);
83 context.WriteDefault(timeZoneOffset, 0);
84 context.WriteDefault(dstEnabled, true);
85 if (dstEnabled)
86 context.WriteDefault(dstOffset, 1.0);
87
88 context.Write(state);
89 context.WriteDefault(looping, false);
90
91 context.WriteDefault(wetness, 0.0);
92 context.WriteDefault(waterAccumulationCracks, 0.0);
93 context.WriteDefault(waterAccumulationPuddles, 0.0);
94
95 context.WriteDefault(windSpeedOverridden, false);
96 if (windSpeedOverridden)
97 context.Write(windSpeed);
98
99 context.WriteDefault(windDirectionOverridden, false);
100 if (windDirectionOverridden)
101 context.Write(windDirection);
102
103 context.WriteDefault(isRainIntensityOverridden, false);
104 if (isRainIntensityOverridden)
105 context.Write(rainIntensity);
106
107 context.WriteDefault(fogAmountOverridden, false);
108 if (fogAmountOverridden)
109 context.Write(fogAmount);
110
111 context.WriteDefault(fogHeightDensityOverridden, false);
112 if (fogHeightDensityOverridden)
113 context.Write(fogHeightDensity);
114
115 context.WriteDefault(overrideSunIrradiance, false);
116 if (overrideSunIrradiance)
117 {
118 context.Write(sunIrradianceMinOverride);
119 context.Write(sunIrradianceMaxOverride);
120 }
121
122 context.WriteDefault(overrideTemperature, false);
123 if (overrideTemperature)
124 {
125 context.Write(temperatureAirMinOverride);
126 context.Write(temperatureAirMaxOverride);
127 context.Write(temperatureWaterMinOverride);
128 context.Write(temperatureWaterMaxOverride);
129 context.Write(temperatureSkyMinOverride);
130 context.Write(temperatureSkyMaxOverride);
131 }
132
133 return ESerializeResult.OK;
134 }
135
136 //------------------------------------------------------------------------------------------------
137 override protected bool Deserialize(notnull IEntity entity, notnull LoadContext context)
138 {
139 auto timeAndWeatherManager = TimeAndWeatherManagerEntity.Cast(entity);
140
141 int version;
142 context.Read(version);
143
144 int year, month, day, hour, minute, second;
145 context.Read(year);
146 context.Read(month);
147 context.Read(day);
148 context.Read(hour);
149 context.Read(minute);
150 context.Read(second);
151 timeAndWeatherManager.SetDate(year, month, day);
152 timeAndWeatherManager.SetHoursMinutesSeconds(hour, minute, second);
153
154 float dayDuration;
155 if (context.Read(dayDuration))
156 timeAndWeatherManager.SetDayDuration(dayDuration);
157
158 bool isDayAutoAdvanced;
159 if (context.Read(isDayAutoAdvanced))
160 timeAndWeatherManager.SetIsDayAutoAdvanced(isDayAutoAdvanced);
161
162 float latitude;
163 if (context.Read(latitude))
164 timeAndWeatherManager.SetCurrentLatitude(latitude);
165
166 float longitude;
167 if (context.Read(longitude))
168 timeAndWeatherManager.SetCurrentLongitude(longitude);
169
170 float timeZoneOffset;
171 if (context.Read(timeZoneOffset))
172 timeAndWeatherManager.SetTimeZoneOffset(timeZoneOffset);
173
174 bool dstEnabled;
175 if (context.Read(dstEnabled))
176 timeAndWeatherManager.SetDSTEnabled(dstEnabled);
177
178 if (dstEnabled)
179 {
180 float dstOffset;
181 if (context.Read(dstOffset))
182 timeAndWeatherManager.SetDSTOffset(dstOffset);
183 }
184
185 string state;
186 bool looping;
187 context.Read(state);
188 context.ReadDefault(looping, false);
189 timeAndWeatherManager.ForceWeatherTo(looping, state);
190
191 float wetness;
192 if (context.Read(wetness))
193 timeAndWeatherManager.SetCurrentWetness(wetness);
194
195 float waterAccumulationCracks, waterAccumulationPuddles;
196 context.ReadDefault(waterAccumulationCracks, 0.0);
197 context.ReadDefault(waterAccumulationPuddles, 0.0);
198 timeAndWeatherManager.SetCurrentWaterAccumulation(waterAccumulationCracks, waterAccumulationPuddles);
199
200 bool windSpeedOverridden;
201 context.ReadDefault(windSpeedOverridden, false);
202 if (windSpeedOverridden)
203 {
204 float windSpeed;
205 context.Read(windSpeed);
206 timeAndWeatherManager.SetWindSpeedOverride(true, windSpeed);
207 }
208
209 bool windDirectionOverridden;
210 context.ReadDefault(windDirectionOverridden, false);
211 if (windDirectionOverridden)
212 {
213 float windDirection;
214 context.Read(windDirection);
215 timeAndWeatherManager.SetWindDirectionOverride(true, windDirection);
216 }
217
218 bool isRainIntensityOverridden;
219 context.ReadDefault(isRainIntensityOverridden, false);
220 if (isRainIntensityOverridden)
221 {
222 float rainIntensity;
223 context.Read(rainIntensity);
224 timeAndWeatherManager.SetRainIntensityOverride(true, rainIntensity);
225 }
226
227 bool fogAmountOverridden;
228 context.ReadDefault(fogAmountOverridden, false);
229 if (fogAmountOverridden)
230 {
231 float fogAmount;
232 context.Read(fogAmount);
233 timeAndWeatherManager.SetFogAmountOverride(true, fogAmount);
234 }
235
236 bool fogHeightDensityOverridden;
237 context.ReadDefault(fogHeightDensityOverridden, false);
238 if (fogHeightDensityOverridden)
239 {
240 float fogHeightDensity;
241 context.Read(fogHeightDensity);
242 timeAndWeatherManager.SetFogHeightDensityOverride(true, fogHeightDensity);
243 }
244
245 bool overrideSunIrradiance;
246 context.ReadDefault(overrideSunIrradiance, false);
247 if (overrideSunIrradiance)
248 {
249 float sunIrradianceMinOverride, sunIrradianceMaxOverride;
250 context.Read(sunIrradianceMinOverride);
251 context.Read(sunIrradianceMaxOverride);
252 timeAndWeatherManager.SetOverrideSunIrradiance(true);
253 timeAndWeatherManager.SetSunIrradianceOverrideValues(sunIrradianceMinOverride, sunIrradianceMaxOverride);
254 }
255
256 bool overrideTemperature;
257 context.ReadDefault(overrideTemperature, false);
258 if (overrideTemperature)
259 {
260 float temperatureAirMinOverride, temperatureAirMaxOverride;
261 float temperatureWaterMinOverride, temperatureWaterMaxOverride;
262 float temperatureSkyMinOverride, temperatureSkyMaxOverride;
263 context.Read(temperatureAirMinOverride);
264 context.Read(temperatureAirMaxOverride);
265 context.Read(temperatureWaterMinOverride);
266 context.Read(temperatureWaterMaxOverride);
267 context.Read(temperatureSkyMinOverride);
268 context.Read(temperatureSkyMaxOverride);
269 timeAndWeatherManager.SetOverrideTemperature(true);
270 timeAndWeatherManager.SetTemperatureOverrideValues(temperatureAirMinOverride, temperatureAirMaxOverride, temperatureWaterMinOverride, temperatureWaterMaxOverride, temperatureSkyMinOverride, temperatureSkyMaxOverride);
271 }
272
273 return true;
274 }
275}
class SCR_PersistentThreatSector GetTargetType()
void ForceWeatherTo(bool setLooping, string weatherID=string.Empty, float transitionDuration=0, float stateDuration=0.001, int playerThatChangedWeather=0)
ESerializeResult Serialize(notnull IEntity entity, notnull SaveContext context)
bool Deserialize(notnull IEntity entity, notnull LoadContext context)
ESerializeResult