-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameRulesEx.cs
31 lines (23 loc) · 1.14 KB
/
GameRulesEx.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
namespace Dawn.DMD.LongerGames;
using Death.Run.Systems;
using ReflectionHelpers;
internal static class GameRulesEx
{
internal static void SetRunDurationInMinutes(this GameRules rules, float runDurationMinutes) =>
Set_RunDurationInMinutes.Value(rules, runDurationMinutes);
internal static float GetRunDurationInMinutes(this GameRules rules) => Get_RunDurationInMinutes.Value(rules);
private static readonly Lazy<Action<GameRules, float>> Set_RunDurationInMinutes = new(() =>
{
var field = typeof(GameRules).GetField("_runDurationMinutes", BindingFlags.NonPublic | BindingFlags.Instance);
if (field == null)
throw new NullReferenceException(nameof(field));
return field.CreateFieldSetter<GameRules, float>();
});
private static readonly Lazy<Func<GameRules, float>> Get_RunDurationInMinutes = new(() =>
{
var field = typeof(GameRules).GetField("_runDurationMinutes", BindingFlags.NonPublic | BindingFlags.Instance);
if (field == null)
throw new NullReferenceException(nameof(field));
return field.CreateFieldGetter<GameRules, float>();
});
}