1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

fix crash when map is packaged in a zip mod

This commit is contained in:
kdmcser
2025-05-16 01:14:12 +08:00
parent 29207c0b0f
commit 5e4912d056
11 changed files with 94 additions and 11 deletions

View File

@@ -38,11 +38,6 @@ CMapInfo::CMapInfo()
CMapInfo::~CMapInfo() = default;
std::string CMapInfo::getFullFileURI(const ResourcePath & file) const
{
auto path = boost::filesystem::canonical(*CResourceHandler::get()->getResourceName(file));
return TextOperations::filesystemPathToUtf8(path);
}
void CMapInfo::mapInit(const std::string & fname)
{
@@ -50,9 +45,9 @@ void CMapInfo::mapInit(const std::string & fname)
CMapService mapService;
ResourcePath resource = ResourcePath(fname, EResType::MAP);
originalFileURI = resource.getOriginalName();
fullFileURI = getFullFileURI(resource);
fullFileURI = CResourceHandler::get()->getFullFileURI(resource);
mapHeader = mapService.loadMapHeader(resource);
lastWrite = boost::filesystem::last_write_time(*CResourceHandler::get()->getResourceName(resource));
lastWrite = CResourceHandler::get()->getLastWriteTime(resource);
date = TextOperations::getFormattedDateTimeLocal(lastWrite);
countPlayers();
}
@@ -71,9 +66,9 @@ void CMapInfo::saveInit(const ResourcePath & file)
fileURI = file.getName();
originalFileURI = file.getOriginalName();
fullFileURI = getFullFileURI(file);
fullFileURI = CResourceHandler::get()->getFullFileURI(file);
countPlayers();
lastWrite = boost::filesystem::last_write_time(*CResourceHandler::get()->getResourceName(file));
lastWrite = CResourceHandler::get()->getLastWriteTime(file);
date = TextOperations::getFormattedDateTimeLocal(lastWrite);
// We absolutely not need this data for lobby and server will read it from save
@@ -85,7 +80,7 @@ void CMapInfo::campaignInit()
{
ResourcePath resource = ResourcePath(fileURI, EResType::CAMPAIGN);
originalFileURI = resource.getOriginalName();
fullFileURI = getFullFileURI(resource);
fullFileURI = CResourceHandler::get()->getFullFileURI(resource);
campaign = CampaignHandler::getHeader(fileURI);
lastWrite = boost::filesystem::last_write_time(*CResourceHandler::get()->getResourceName(resource));
date = TextOperations::getFormattedDateTimeLocal(lastWrite);