Elin Decompiled Documentation EA 23.331 Nightly
Loading...
Searching...
No Matches
SpriteReplacer Class Reference

Public Member Functions

Sprite GetSprite (string suffix="")
 
Sprite GetSprite (int dir, int skin, bool snow)
 
void Validate ()
 
void BuildSuffixData (string id, IReadOnlyDictionary< string, string > dictTexItems, List< string > sortedIds=null)
 
void SortModItemIds ()
 
void Reload (string id, RenderData renderData=null)
 
bool HasSprite (string id, RenderData renderData=null)
 

Static Public Member Functions

static Dictionary< string, SpriteReplacerListSkins ()
 
static Dictionary< string, string > ListSkinItems ()
 

Public Attributes

SpriteData data
 
Dictionary< string, SpriteDatasuffixes = new Dictionary<string, SpriteData>()
 
Dictionary< string, bool > isChecked = new Dictionary<string, bool>()
 

Static Public Attributes

static Dictionary< string, SpriteReplacerdictSkins = new Dictionary<string, SpriteReplacer>()
 
static Dictionary< string, string > dictModItems = new Dictionary<string, string>()
 

Static Private Attributes

static List< string > sortedModIds = new List<string>()
 
static bool modIdsDirty = true
 

Detailed Description

Definition at line 7 of file SpriteReplacer.cs.

Member Function Documentation

◆ BuildSuffixData()

void SpriteReplacer.BuildSuffixData ( string  id,
IReadOnlyDictionary< string, string >  dictTexItems,
List< string >  sortedIds = null 
)
inline

Definition at line 128 of file SpriteReplacer.cs.

129 {
130 List<string> list = sortedIds ?? dictTexItems.Keys.OrderBy((string k) => k).ToList();
131 int num = list.BinarySearch(id);
132 if (num < 0)
133 {
134 num = ~num;
135 }
136 for (int i = num; i < list.Count; i++)
137 {
138 string text = list[i];
139 if (text.StartsWith(id))
140 {
141 string text2 = text[id.Length..];
142 SpriteData spriteData = new SpriteData
143 {
144 path = dictTexItems[text]
145 };
146 spriteData.Init();
147 suffixes[text2] = spriteData;
148 Debug.Log("#sprite replacer " + text2.IsEmpty("<base>") + "/" + dictTexItems[text].ShortPath());
149 continue;
150 }
151 break;
152 }
153 }
void Init()
Definition: SpriteData.cs:34
Dictionary< string, SpriteData > suffixes

References Debug, SpriteData.Init(), and suffixes.

Referenced by ListSkins(), and Reload().

◆ GetSprite() [1/2]

Sprite SpriteReplacer.GetSprite ( int  dir,
int  skin,
bool  snow 
)
inline

Definition at line 92 of file SpriteReplacer.cs.

93 {
94 foreach (string item in new List<string>
95 {
96 $"_skin{skin}_dir{dir}",
97 $"_skin{skin}",
98 $"_dir{dir}",
99 ""
100 })
101 {
102 Sprite sprite = null;
103 if (snow)
104 {
105 sprite = GetSprite(item + "_snow");
106 }
107 if ((object)sprite == null)
108 {
109 sprite = GetSprite(item);
110 }
111 if ((bool)sprite)
112 {
113 return sprite;
114 }
115 }
116 return data?.GetSprite();
117 }
Sprite GetSprite()
Definition: SpriteData.cs:120
SpriteData data
Sprite GetSprite(string suffix="")

References $, data, SpriteData.GetSprite(), GetSprite(), and item.

◆ GetSprite() [2/2]

Sprite SpriteReplacer.GetSprite ( string  suffix = "")
inline

Definition at line 83 of file SpriteReplacer.cs.

84 {
85 if (!suffixes.TryGetValue(suffix, out var value))
86 {
87 return null;
88 }
89 return value.GetSprite();
90 }

References suffixes.

Referenced by GetSprite(), Chara.GetSprite(), RenderRow.GetSprite(), Card.SetImage(), and CharaRenderer.SetOwner().

◆ HasSprite()

bool SpriteReplacer.HasSprite ( string  id,
RenderData  renderData = null 
)
inline

Definition at line 192 of file SpriteReplacer.cs.

193 {
194 if (!isChecked.GetValueOrDefault(id) || (data != null && data.id != id))
195 {
196 Reload(id, renderData);
197 }
198 return data != null;
199 }
string id
Definition: SpriteData.cs:10
Dictionary< string, bool > isChecked
void Reload(string id, RenderData renderData=null)

References data, SpriteData.id, isChecked, and Reload().

Referenced by RenderRow.GetSprite(), and CardActor.OnRender().

◆ ListSkinItems()

static Dictionary< string, string > SpriteReplacer.ListSkinItems ( )
inlinestatic

Definition at line 65 of file SpriteReplacer.cs.

66 {
67 List<DirectoryInfo> list = new List<DirectoryInfo>();
68 list.Add(new DirectoryInfo(CorePath.custom + "Skin"));
69 list.AddRange(PackageIterator.GetDirectories("Skin", useCache: false));
70 IEnumerable<FileInfo> enumerable = list.SelectMany((DirectoryInfo d) => from f in d.GetFiles("*.png", SearchOption.TopDirectoryOnly)
71 orderby f.Name
72 select f);
73 Dictionary<string, string> dictionary = new Dictionary<string, string>();
74 foreach (FileInfo item in enumerable)
75 {
76 string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(item.Name);
77 string value = Path.ChangeExtension(item.FullName, null);
78 dictionary[fileNameWithoutExtension] = value;
79 }
80 return dictionary;
81 }
static string custom
Definition: CorePath.cs:159

References CorePath.custom, and item.

Referenced by ListSkins().

◆ ListSkins()

static Dictionary< string, SpriteReplacer > SpriteReplacer.ListSkins ( )
inlinestatic

Definition at line 23 of file SpriteReplacer.cs.

24 {
25 List<string> list = new List<string>();
26 foreach (KeyValuePair<string, SpriteReplacer> dictSkin in dictSkins)
27 {
28 if (!File.Exists(dictSkin.Value.data.path + ".png"))
29 {
30 list.Add(dictSkin.Key);
31 }
32 }
33 foreach (string item in list)
34 {
35 dictSkins.Remove(item);
36 }
37 Dictionary<string, string> dictionary = ListSkinItems();
38 List<string> sortedIds = dictionary.Keys.OrderBy((string k) => k).ToList();
39 foreach (KeyValuePair<string, string> item2 in dictionary)
40 {
41 item2.Deconstruct(out var key, out var value);
42 string text = key;
43 string path = value;
44 SpriteReplacer spriteReplacer = new SpriteReplacer
45 {
46 data = new SpriteData
47 {
48 path = path
49 }
50 };
51 spriteReplacer.BuildSuffixData(text, dictionary, sortedIds);
52 if (spriteReplacer.suffixes.TryGetValue("", out var value2))
53 {
54 spriteReplacer.data = value2;
55 }
56 else
57 {
58 spriteReplacer.data.Init();
59 }
60 dictSkins[text] = spriteReplacer;
61 }
62 return dictSkins;
63 }
static Dictionary< string, string > ListSkinItems()
static Dictionary< string, SpriteReplacer > dictSkins
void BuildSuffixData(string id, IReadOnlyDictionary< string, string > dictTexItems, List< string > sortedIds=null)

References BuildSuffixData(), data, dictSkins, SpriteData.Init(), item, ListSkinItems(), and suffixes.

Referenced by LayerEditSkin.RefreshList().

◆ Reload()

void SpriteReplacer.Reload ( string  id,
RenderData  renderData = null 
)
inline

Definition at line 164 of file SpriteReplacer.cs.

165 {
166 data = null;
167 suffixes.Clear();
168 try
169 {
171 if (dictModItems.ContainsKey(id))
172 {
174 }
175 else if (renderData != null && dictModItems.ContainsKey("Item/" + id))
176 {
178 }
179 suffixes.TryGetValue("", out data);
180 if (data != null)
181 {
182 Debug.Log(id + ":" + data.path);
183 }
184 }
185 catch (Exception ex)
186 {
187 Debug.LogError("#sprite error fetching sprite replacer '" + id + "' : " + ex);
188 }
189 isChecked[id] = true;
190 }
string path
Definition: SpriteData.cs:12
static Dictionary< string, string > dictModItems
static List< string > sortedModIds

References BuildSuffixData(), data, Debug, dictModItems, isChecked, SpriteData.path, sortedModIds, SortModItemIds(), and suffixes.

Referenced by HasSprite().

◆ SortModItemIds()

void SpriteReplacer.SortModItemIds ( )
inline

Definition at line 155 of file SpriteReplacer.cs.

156 {
157 if (sortedModIds.Count != dictModItems.Count || modIdsDirty)
158 {
159 sortedModIds = dictModItems.Keys.OrderBy((string k) => k).ToList();
160 modIdsDirty = false;
161 }
162 }
static bool modIdsDirty

References dictModItems, modIdsDirty, and sortedModIds.

Referenced by Reload().

◆ Validate()

void SpriteReplacer.Validate ( )
inline

Definition at line 119 of file SpriteReplacer.cs.

120 {
121 data?.Validate();
122 foreach (SpriteData value in suffixes.Values)
123 {
124 value?.Validate();
125 }
126 }
void Validate()
Definition: SpriteData.cs:129

References data, suffixes, and SpriteData.Validate().

Member Data Documentation

◆ data

◆ dictModItems

Dictionary<string, string> SpriteReplacer.dictModItems = new Dictionary<string, string>()
static

Definition at line 11 of file SpriteReplacer.cs.

Referenced by ModPackage.ParseTexture(), Reload(), and SortModItemIds().

◆ dictSkins

Dictionary<string, SpriteReplacer> SpriteReplacer.dictSkins = new Dictionary<string, SpriteReplacer>()
static

◆ isChecked

Dictionary<string, bool> SpriteReplacer.isChecked = new Dictionary<string, bool>()

Definition at line 21 of file SpriteReplacer.cs.

Referenced by HasSprite(), and Reload().

◆ modIdsDirty

bool SpriteReplacer.modIdsDirty = true
staticprivate

Definition at line 15 of file SpriteReplacer.cs.

Referenced by SortModItemIds().

◆ sortedModIds

List<string> SpriteReplacer.sortedModIds = new List<string>()
staticprivate

Definition at line 13 of file SpriteReplacer.cs.

Referenced by Reload(), and SortModItemIds().

◆ suffixes

Dictionary<string, SpriteData> SpriteReplacer.suffixes = new Dictionary<string, SpriteData>()

The documentation for this class was generated from the following file: