Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemSeasons.cs
浏览该文件的文档.
1using Engine;
2using Engine.Media;
6
7namespace Game {
10
11 public static Image m_seasonsGradient;
12
13 public static float SummerStart = 0f;
14
15 public static float AutumnStart = 0.25f;
16
17 public static float WinterStart = 0.5f;
18
19 public static float SpringStart = 0.75f;
20
22
24
26
28
29 public Season Season { get; set; }
30
31 public float TimeOfSeason { get; set; }
32
34
35 public const string fName = "SubsystemSeasons";
36
37 public static string GetTimeOfYearName(float timeOfYear) {
38 TimeOfYearToSeason(timeOfYear, out Season season, out float timeOfSeason);
39 int num = timeOfSeason switch {
40 < 0.25f => 0,
41 >= 0.75f => 2,
42 _ => 1
43 };
44 return LanguageControl.Get(fName, (int)season * 3 + num);
45 }
46
47 public static Color GetTimeOfYearColor(float timeOfYear) {
48 if (m_seasonsGradient == null) {
49 m_seasonsGradient = (Image)ContentManager.Get<Texture2D>("Textures/Gui/SeasonsSlider").Tag;
50 }
51 int x = (int)Math.Clamp(MathF.Round(timeOfYear * m_seasonsGradient.Width), 0f, m_seasonsGradient.Width - 1);
52 return m_seasonsGradient.GetPixel(x, 0);
53 }
54
55 public override void Load(ValuesDictionary valuesDictionary) {
56 m_subsystemGameInfo = Project.FindSubsystem<SubsystemGameInfo>(true);
57 }
58
59 public virtual void Update(float dt) {
60 TimeOfYearToSeason(m_subsystemGameInfo.WorldSettings.TimeOfYear, out Season season, out float timeOfSeason);
61 Season = season;
62 TimeOfSeason = timeOfSeason;
63 }
64
65 public static void TimeOfYearToSeason(float timeOfYear, out Season season, out float timeOfSeason) {
67 season = Season.Summer;
69 }
70 else if (IntervalUtils.IsBetween(timeOfYear, AutumnStart, WinterStart)) {
71 season = Season.Autumn;
73 }
74 else if (IntervalUtils.IsBetween(timeOfYear, WinterStart, SpringStart)) {
75 season = Season.Winter;
77 }
78 else {
79 season = Season.Spring;
81 }
82 }
83 }
84}
static object Get(Type type, string name)
static bool IsBetween(float t, float t1, float t2)
static float Interval(float t1, float t2)
static float Midpoint(float t1, float t2, float factor=0.5f)
static string Get(string className, int key)
获取在当前语言类名键对应的字符串
override void Load(ValuesDictionary valuesDictionary)
static string GetTimeOfYearName(float timeOfYear)
SubsystemGameInfo m_subsystemGameInfo
virtual void Update(float dt)
static Color GetTimeOfYearColor(float timeOfYear)
static void TimeOfYearToSeason(float timeOfYear, out Season season, out float timeOfSeason)
ValuesDictionary ValuesDictionary