Skip to content

Commit 8fafb41

Browse files
committed
Work around ATM incompatability
1 parent b457490 commit 8fafb41

2 files changed

Lines changed: 32 additions & 4 deletions

File tree

DynamicTextureLoader/Loader.cs

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,22 @@ private void Start()
7171
where fld.FieldType == typeof(List<DatabaseLoader<GameDatabase.TextureInfo>>)
7272
select (List<DatabaseLoader<GameDatabase.TextureInfo>>)fld.GetValue(GameDatabase.Instance)).FirstOrDefault();
7373

74+
DatabaseLoaderTexture_DTL textureLoaderDTL = (DatabaseLoaderTexture_DTL)textureLoaders.First(t => t.GetType() == typeof(DatabaseLoaderTexture_DTL));
75+
7476
DatabaseLoaderAttrib loaderAttrib = (DatabaseLoaderAttrib)Attribute.GetCustomAttribute(typeof(DatabaseLoaderTexture_DTL), typeof( DatabaseLoaderAttrib));
7577
foreach (var textureLoader in textureLoaders)
7678
{
77-
if (textureLoader.GetType().Name != "DatabaseLoaderTexture_DTL")
79+
if (textureLoader.GetType() != typeof(DatabaseLoaderTexture_DTL))
7880
{
7981
Log("Disabling " + textureLoader.GetType().Name);
82+
textureLoaderDTL.setLoader(textureLoader);
8083
textureLoader.extensions.RemoveAll(i => loaderAttrib.extensions.Contains(i));
8184
Log(textureLoader.GetType().Name + " now has extensions: " + String.Join(", ", textureLoader.extensions.ToArray()));
85+
86+
}
87+
else
88+
{
89+
((DatabaseLoaderTexture_DTL)textureLoader).fixExtensions(loaderAttrib.extensions.ToList());
8290
}
8391
}
8492
}
@@ -108,6 +116,7 @@ private void Start()
108116
[DatabaseLoaderAttrib(new string[] { "mbm", "png", "tga", "jpg", "jpeg", "truecolor", "dds" })]
109117
public class DatabaseLoaderTexture_DTL : DatabaseLoader<GameDatabase.TextureInfo>
110118
{
119+
Dictionary<string,DatabaseLoader<GameDatabase.TextureInfo>> textureLoaders = new Dictionary<string, DatabaseLoader<GameDatabase.TextureInfo>>();
111120
public DatabaseLoaderTexture_DTL() : base()
112121
{
113122

@@ -116,11 +125,30 @@ public DatabaseLoaderTexture_DTL() : base()
116125
public override IEnumerator Load(UrlDir.UrlFile urlFile, FileInfo file)
117126
{
118127
GameDatabase.TextureInfo texInfo =
119-
TexRefCnt.Load(urlFile);
120-
obj = texInfo;
121-
successful = true;
128+
TexRefCnt.Load(urlFile);
129+
if (texInfo != null)
130+
{
131+
obj = texInfo;
132+
successful = true;
133+
}
122134
yield return null;
123135
}
136+
137+
internal void fixExtensions(List<string> list)
138+
{
139+
extensions = list;
140+
}
141+
142+
internal void setLoader(DatabaseLoader<GameDatabase.TextureInfo> textureLoader)
143+
{
144+
foreach (string extension in textureLoader.extensions)
145+
{
146+
if (extensions.Contains(extension))
147+
{
148+
this.textureLoaders[extension] = textureLoader;
149+
}
150+
}
151+
}
124152
}
125153

126154

289 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)