#include "os/path.h"
#include "stream/stringstream.h"
-
typedef Modules<_QERPlugImageTable> ImageModules;
ImageModules& Textures_getImageModules();
+ImageModules& Textures_getFallbackImageModules();
/// \brief Returns a new image for the first file matching \p name in one of the available texture formats, or 0 if no file is found.
Image* QERApp_LoadImage( void* environment, const char* name ){
StringOutputStream fullname( 256 );
fullname << m_name << '.' << name;
ArchiveFile* file = GlobalFileSystem().openFile( fullname.c_str() );
+
+ // also look for .dds image in dds/ prefix like Doom3 or DarkPlaces
+ if ( file == 0 && !string_compare( name, "dds" ) )
+ {
+ fullname.clear();
+ fullname << name << '/' << m_name << '.' << name;
+ file = GlobalFileSystem().openFile( fullname.c_str() );
+ }
+
if ( file != 0 ) {
+ // tell user which image file is found for the given texture path
+ globalOutputStream() << "Found image file: " << makeQuoted( fullname.c_str() ) << "\n";
+
m_image = table.loadImage( *file );
file->release();
}
Textures_getImageModules().foreachModule( LoadImageVisitor( name, image ) );
+ // Games can provide their own fallback, so only do this when previous
+ // loading attempt did not work.
+ if ( image == 0 && !!string_compare_nocase( name, "textures/radiant" ) )
+ {
+ Textures_getFallbackImageModules().foreachModule( LoadImageVisitor( name, image ) );
+ }
+
return image;
}