Selaa lähdekoodia

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 11 vuotta sitten
vanhempi
sitoutus
19d1de3142
1 muutettua tiedostoa jossa 6 lisäystä ja 3 poistoa
  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);