Pārlūkot izejas kodu

Only remove extension if it belongs to specified file type

This one fixes issue 1557
Now it's possible to load maps with dots in filename.
ArseniyShestakov 10 gadi atpakaļ
vecāks
revīzija
19d1de3142
1 mainītis faili ar 6 papildinājumiem un 3 dzēšanām
  1. 6 3
      lib/filesystem/ResourceID.cpp

+ 6 - 3
lib/filesystem/ResourceID.cpp

@@ -35,14 +35,14 @@ ResourceID::ResourceID()
 ResourceID::ResourceID(std::string name)
 {
 	CFileInfo info(std::move(name));
-	setName(info.getStem());
 	setType(info.getType());
+	setName(info.getStem());
 }
 
 ResourceID::ResourceID(std::string name, EResType::Type type)
 {
-	setName(std::move(name));
 	setType(type);
+	setName(std::move(name));
 }
 
 std::string ResourceID::getName() const
@@ -61,8 +61,11 @@ void ResourceID::setName(std::string 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);