Explorar o código

- fixed crash on missing videos
- fixed savegames name selection

Ivan Savenko %!s(int64=13) %!d(string=hai) anos
pai
achega
eec4d3579d

+ 1 - 1
client/CPreGame.cpp

@@ -1284,7 +1284,7 @@ void SelectionTab::select( int position )
 	if(txt)
 	{
 		std::string filename = CResourceHandler::get()->getResourceName(
-		                           ResourceID(curItems[py]->fileURI, EResType::MAP));
+		                           ResourceID(curItems[py]->fileURI, EResType::LIB_SAVEGAME));
 		txt->setTxt(CFileInfo(filename).getBaseName());
 	}
 

+ 12 - 4
client/CVideoHandler.cpp

@@ -685,12 +685,20 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay)
 	refreshCount = -1;
 	doLoop = loop;
 
-	auto extracted = CResourceHandler::get()->loadData(ResourceID(std::string("Video/") + fname, EResType::VIDEO));
-	data = (char *)extracted.first.release();
-	length = extracted.second;
+	ResourceID resource(std::string("Video/") + fname, EResType::VIDEO);
 
-	if (!data)
+	if (CResourceHandler::get()->existsResource(resource))
+	{
+		auto extracted = CResourceHandler::get()->loadData(resource);
+		data = (char *)extracted.first.release();
+		length = extracted.second;
+	}
+	else
+	{
+		data = nullptr;
+		length = 0;
 		return false;
+	}
 
 	std::string filePath;
 	filePath.resize(100);

+ 1 - 0
lib/Filesystem/CResourceLoader.cpp

@@ -237,6 +237,7 @@ EResType::Type EResTypeHelper::getTypeFromExtension(std::string extension)
 	        (".SMK",   EResType::VIDEO)
 	        (".BIK",   EResType::VIDEO)
 	        (".MJPG",  EResType::VIDEO)
+			(".MPG",   EResType::VIDEO)
 	        (".MP3",   EResType::MUSIC)
 	        (".OGG",   EResType::MUSIC)
 	        (".LOD",   EResType::ARCHIVE)

+ 1 - 1
lib/Filesystem/CResourceLoader.h

@@ -30,7 +30,7 @@ class ISimpleResourceLoader;
  * Font: .fnt
  * Image: .bmp, .jpg, .pcx, .png, .tga
  * Sound: .wav .82m
- * Video: .smk, .bik .mjpg
+ * Video: .smk, .bik .mjpg .mpg
  * Music: .mp3, .ogg
  * Archive: .lod, .snd, .vid .pac
  * Palette: .pal