3 using System.Collections.Immutable;
5 using System.Reflection;
11 public sealed
class UIStyleFile : HashlessFile
15 public void LoadFromXElement(ContentXElement parentElement,
bool overriding)
17 Identifier elemName = parentElement.NameAsIdentifier();
18 Identifier elemNameWithFontSuffix = elemName.AppendIfMissing(
"Font");
19 if (parentElement.IsOverride())
21 foreach (var element
in parentElement.Elements())
23 LoadFromXElement(element,
true);
26 else if (GUIStyle.Fonts.ContainsKey(elemNameWithFontSuffix))
28 GUIFontPrefab prefab =
new GUIFontPrefab(parentElement,
this);
29 GUIStyle.Fonts[elemNameWithFontSuffix].Prefabs.Add(prefab, overriding);
31 else if (GUIStyle.Sprites.ContainsKey(elemName))
33 GUISpritePrefab prefab =
new GUISpritePrefab(parentElement,
this);
34 GUIStyle.Sprites[elemName].Prefabs.Add(prefab, overriding);
36 else if (GUIStyle.SpriteSheets.ContainsKey(elemName))
38 GUISpriteSheetPrefab prefab =
new GUISpriteSheetPrefab(parentElement,
this);
39 GUIStyle.SpriteSheets[elemName].Prefabs.Add(prefab, overriding);
41 else if (GUIStyle.Colors.ContainsKey(elemName))
43 GUIColorPrefab prefab =
new GUIColorPrefab(parentElement,
this);
44 GUIStyle.Colors[elemName].Prefabs.Add(prefab, overriding);
46 else if (elemName ==
"cursor")
48 GUICursorPrefab prefab =
new GUICursorPrefab(parentElement,
this);
49 GUIStyle.CursorSprite.Prefabs.Add(prefab, overriding);
51 else if (elemName ==
"style")
53 foreach (var element
in parentElement.Elements())
55 LoadFromXElement(element, overriding);
60 GUIComponentStyle prefab =
new GUIComponentStyle(parentElement,
this);
61 GUIStyle.ComponentStyles.Add(prefab, overriding);
65 public override sealed
void LoadFile()
67 XDocument doc = XMLExtensions.TryLoadXml(Path);
68 if (doc ==
null) {
return; }
71 LoadFromXElement(rootElement,
false);
76 GUIStyle.ComponentStyles.RemoveByFile(
this);
77 GUIStyle.CursorSprite.Prefabs.RemoveByFile(
this);
78 GUIStyle.Fonts.Values.ForEach(p => p.Prefabs.RemoveByFile(
this));
79 GUIStyle.Sprites.Values.ForEach(p => p.Prefabs.RemoveByFile(
this));
80 GUIStyle.SpriteSheets.Values.ForEach(p => p.Prefabs.RemoveByFile(
this));
81 GUIStyle.Colors.Values.ForEach(p => p.Prefabs.RemoveByFile(
this));
84 public override sealed
void Sort()
86 GUIStyle.ComponentStyles.SortAll();
87 GUIStyle.CursorSprite.Prefabs.Sort();
88 GUIStyle.Fonts.Values.ForEach(p => p.Prefabs.Sort());
89 GUIStyle.Sprites.Values.ForEach(p => p.Prefabs.Sort());
90 GUIStyle.SpriteSheets.Values.ForEach(p => p.Prefabs.Sort());
91 GUIStyle.Colors.Values.ForEach(p => p.Prefabs.Sort());
readonly ContentPackage ContentPackage
sealed override void Sort()
sealed override void UnloadFile()
sealed override void LoadFile()
UIStyleFile(ContentPackage contentPackage, ContentPath path)