@@ -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
0 commit comments