1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Merge pull request #79 from ArseniyShestakov/fixIssue1557

Only remove extension if it belongs to specified file type
This commit is contained in:
ArseniyShestakov 2015-02-07 18:17:22 +03:00
commit 1396476869
2 changed files with 13 additions and 4 deletions

View File

@ -33,16 +33,18 @@ ResourceID::ResourceID()
}
ResourceID::ResourceID(std::string name)
:type(EResType::UNDEFINED)
{
CFileInfo info(std::move(name));
setName(info.getStem());
setType(info.getType());
setName(info.getStem());
}
ResourceID::ResourceID(std::string name, EResType::Type type)
:type(EResType::UNDEFINED)
{
setName(std::move(name));
setType(type);
setName(std::move(name));
}
std::string ResourceID::getName() const
@ -57,12 +59,18 @@ EResType::Type ResourceID::getType() const
void ResourceID::setName(std::string name)
{
// setName shouldn't be used if type is UNDEFINED
assert(type != EResType::UNDEFINED);
this->name = std::move(name);
size_t dotPos = this->name.find_last_of("/.");
if(dotPos != std::string::npos && this->name[dotPos] == '.')
if(dotPos != std::string::npos && this->name[dotPos] == '.'
&& this->type == EResTypeHelper::getTypeFromExtension(this->name.substr(dotPos)))
{
this->name.erase(dotPos);
}
#ifdef ENABLE_TRIVIAL_TOUPPER
toUpper(this->name);

View File

@ -56,7 +56,8 @@ namespace EResType
ERM,
ERT,
ERS,
OTHER
OTHER,
UNDEFINED
};
}