Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemPalette.cs
浏览该文件的文档.
1using Engine;
4
5namespace Game {
6 public class SubsystemPalette : Subsystem {
7 public static readonly Color[] m_defaultFabricColors;
8
9 public string[] m_names;
10
11 public Color[] m_colors;
12
14
19
20 public Color GetColor(int index) => m_colors[index];
21
22 public string GetName(int index) => m_names[index];
23
24 public Color GetFabricColor(int index) => m_fabricColors[index];
25
26 public static Color GetColor(BlockGeometryGenerator generator, int? index) {
27 if (index.HasValue) {
28 if (generator.SubsystemPalette != null) {
29 return generator.SubsystemPalette.GetColor(index.Value);
30 }
31 return WorldPalette.DefaultColors[index.Value];
32 }
33 return Color.White;
34 }
35
36 public static Color GetColor(DrawBlockEnvironmentData environmentData, int? index) => GetColor(environmentData.SubsystemTerrain, index);
37
38 public static Color GetColor(SubsystemTerrain subsystemTerrain, int? index) {
39 if (index.HasValue) {
40 if (subsystemTerrain != null
41 && subsystemTerrain.SubsystemPalette != null) {
42 return subsystemTerrain.SubsystemPalette.GetColor(index.Value);
43 }
44 return WorldPalette.DefaultColors[index.Value];
45 }
46 return Color.White;
47 }
48
49 public static Color GetFabricColor(BlockGeometryGenerator generator, int? index) {
50 if (index.HasValue) {
51 if (generator.SubsystemPalette != null) {
52 return generator.SubsystemPalette.GetFabricColor(index.Value);
53 }
54 return m_defaultFabricColors[index.Value];
55 }
56 return Color.White;
57 }
58
59 public static Color GetFabricColor(DrawBlockEnvironmentData environmentData, int? index) =>
60 GetFabricColor(environmentData.SubsystemTerrain, index);
61
62 public static Color GetFabricColor(SubsystemTerrain subsystemTerrain, int? index) {
63 if (index.HasValue) {
64 if (subsystemTerrain != null
65 && subsystemTerrain.SubsystemPalette != null) {
66 return subsystemTerrain.SubsystemPalette.GetFabricColor(index.Value);
67 }
68 return m_defaultFabricColors[index.Value];
69 }
70 return Color.White;
71 }
72
73 public static string GetName(SubsystemTerrain subsystemTerrain, int? index, string suffix) {
74 if (index.HasValue) {
75 string text = LanguageControl.GetWorldPalette(index.Value);
76 if (!string.IsNullOrEmpty(suffix)) {
77 return $"{text} {suffix}";
78 }
79 return text;
80 }
81 return suffix ?? string.Empty;
82 }
83
84 public override void Load(ValuesDictionary valuesDictionary) {
85 SubsystemGameInfo subsystemGameInfo = Project.FindSubsystem<SubsystemGameInfo>(true);
86 m_colors = subsystemGameInfo.WorldSettings.Palette.Colors.ToArray();
87 m_names = subsystemGameInfo.WorldSettings.Palette.Names.ToArray();
89 }
90
91 public static Color[] CreateFabricColors(Color[] colors) {
92 Color[] array = new Color[16];
93 for (int i = 0; i < 16; i++) {
94 Vector3 rgb = new(colors[i]);
95 Vector3 hsv = Color.RgbToHsv(rgb);
96 hsv.Y *= 0.85f;
97 rgb = Color.HsvToRgb(hsv);
98 array[i] = new Color(rgb);
99 }
100 return array;
101 }
102 }
103}
Engine.Color Color
static string GetWorldPalette(int index)
static Color GetColor(BlockGeometryGenerator generator, int? index)
static string GetName(SubsystemTerrain subsystemTerrain, int? index, string suffix)
static Color GetFabricColor(SubsystemTerrain subsystemTerrain, int? index)
override void Load(ValuesDictionary valuesDictionary)
static Color GetFabricColor(BlockGeometryGenerator generator, int? index)
static readonly Color[] m_defaultFabricColors
static Color[] CreateFabricColors(Color[] colors)
static Color GetFabricColor(DrawBlockEnvironmentData environmentData, int? index)
static Color GetColor(SubsystemTerrain subsystemTerrain, int? index)
static Color GetColor(DrawBlockEnvironmentData environmentData, int? index)
virtual SubsystemPalette SubsystemPalette
static readonly Color[] DefaultColors
ValuesDictionary ValuesDictionary
static Vector3 RgbToHsv(Vector3 rgb)
static Vector3 HsvToRgb(Vector3 hsv)
static Color White