mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-21 00:19:29 +02:00
Filesystem handling is now more flexible
- removed CResourceLoader class in favor of one that implements resource loader interface - removed global pool of files, in favour of more dynamic approach - renamed some files to match current situation All these changes are needed mostly for future mod manager + .zip support
This commit is contained in:
@ -14,8 +14,7 @@
|
||||
#include "ScopeGuard.h"
|
||||
|
||||
#include "HeroBonus.h"
|
||||
#include "filesystem/CResourceLoader.h"
|
||||
#include "filesystem/ISimpleResourceLoader.h"
|
||||
#include "filesystem/Filesystem.h"
|
||||
#include "VCMI_Lib.h" //for identifier resolution
|
||||
#include "CModHandler.h"
|
||||
|
||||
@ -42,7 +41,7 @@ JsonNode::JsonNode(const char *data, size_t datasize):
|
||||
JsonNode::JsonNode(ResourceID && fileURI):
|
||||
type(DATA_NULL)
|
||||
{
|
||||
auto file = CResourceHandler::get()->loadData(fileURI);
|
||||
auto file = CResourceHandler::get()->load(fileURI)->readAll();
|
||||
|
||||
JsonParser parser(reinterpret_cast<char*>(file.first.get()), file.second);
|
||||
*this = parser.parse(fileURI.getName());
|
||||
@ -1610,19 +1609,16 @@ JsonNode JsonUtils::assembleFromFiles(std::vector<std::string> files)
|
||||
JsonNode JsonUtils::assembleFromFiles(std::string filename)
|
||||
{
|
||||
JsonNode result;
|
||||
ResourceID resID(filename, EResType::TEXT);
|
||||
|
||||
auto & configList = CResourceHandler::get()->getResourcesWithName(ResourceID(filename, EResType::TEXT));
|
||||
|
||||
for(auto & entry : configList)
|
||||
for(auto & loader : CResourceHandler::get()->getResourcesWithName(resID))
|
||||
{
|
||||
// FIXME: some way to make this code more readable
|
||||
auto stream = entry.getLoader()->load(entry.getResourceName());
|
||||
auto stream = loader->load(resID);
|
||||
std::unique_ptr<ui8[]> textData(new ui8[stream->getSize()]);
|
||||
stream->read(textData.get(), stream->getSize());
|
||||
|
||||
JsonNode section((char*)textData.get(), stream->getSize());
|
||||
//for debug
|
||||
//section.setMeta(entry.getLoader()->getOrigin());
|
||||
merge(result, section);
|
||||
}
|
||||
return result;
|
||||
|
Reference in New Issue
Block a user