Improved resource loader error message

Former-commit-id: 3a8c565551b38a2ec3311db3d134e641d46527f8
This commit is contained in:
Lynix 2013-03-26 01:01:59 +01:00
parent 36cb681adc
commit e617783999
1 changed files with 15 additions and 3 deletions

View File

@ -44,6 +44,7 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
NzFile file(path); // Ouvert seulement en cas de besoin NzFile file(path); // Ouvert seulement en cas de besoin
bool found = false;
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader) for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
{ {
ExtensionGetter isExtensionSupported = std::get<0>(*loader); ExtensionGetter isExtensionSupported = std::get<0>(*loader);
@ -73,6 +74,7 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
continue; continue;
} }
found = true;
if (fileLoader(resource, filePath, parameters)) if (fileLoader(resource, filePath, parameters))
return true; return true;
} }
@ -85,6 +87,7 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
file.SetCursorPos(0); file.SetCursorPos(0);
found = true;
if (streamLoader(resource, file, parameters)) if (streamLoader(resource, file, parameters))
return true; return true;
} }
@ -92,7 +95,10 @@ bool NzResourceLoader<Type, Parameters>::LoadFromFile(Type* resource, const NzSt
NazaraWarning("Loader failed"); NazaraWarning("Loader failed");
} }
NazaraError("Failed to load file: no loader"); if (found)
NazaraError("Failed to load file: all loaders failed");
else
NazaraError("Failed to load file: no loader found");
return false; return false;
} }
@ -123,6 +129,7 @@ bool NzResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, NzInputS
#endif #endif
nzUInt64 streamPos = stream.GetCursorPos(); nzUInt64 streamPos = stream.GetCursorPos();
bool found = false;
for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader) for (auto loader = Type::s_loaders.begin(); loader != Type::s_loaders.end(); ++loader)
{ {
StreamChecker checkFunc = std::get<1>(*loader); StreamChecker checkFunc = std::get<1>(*loader);
@ -138,13 +145,18 @@ bool NzResourceLoader<Type, Parameters>::LoadFromStream(Type* resource, NzInputS
stream.SetCursorPos(streamPos); stream.SetCursorPos(streamPos);
// Chargement de la ressource // Chargement de la ressource
found = true;
if (streamLoader(resource, stream, parameters)) if (streamLoader(resource, stream, parameters))
return true; return true;
NazaraWarning("Loader failed"); NazaraWarning("Loader failed");
} }
NazaraError("Failed to load file: no loader"); if (found)
NazaraError("Failed to load file: all loaders failed");
else
NazaraError("Failed to load file: no loader found");
return false; return false;
} }
@ -162,7 +174,7 @@ void NzResourceLoader<Type, Parameters>::RegisterLoader(ExtensionGetter extensio
} }
else if (!fileLoader) else if (!fileLoader)
{ {
NazaraError("Neither FileLoader nor StreamLoader were found"); NazaraError("Neither FileLoader nor StreamLoader were present");
return; return;
} }
#endif #endif