|  |  | @ -297,7 +297,7 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | FileCopy(exTemplateScreenshot, TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); // WARNING: To be updated manually! | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Copy: raylib/examples/<category>/resources/...  // WARNING: To be updated manually! | 
		
	
		
			
			|  |  |  | // TODO: Example to be added could be provided as a .zip, containing resources! | 
		
	
		
			
			|  |  |  | // IDEA: Example to be added could be provided as a .zip, containing resources! | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Copy provided resources to respective directories | 
		
	
		
			
			|  |  |  | // Possible strategy: | 
		
	
	
		
			
				|  |  | @ -308,7 +308,7 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | //  2. Verify paths: resource files exist | 
		
	
		
			
			|  |  |  | //  3. Copy files to required resource dir | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Add example to the main collection list, if not already there | 
		
	
		
			
			|  |  |  | // Add example to the collection list, if not already there | 
		
	
		
			
			|  |  |  | // NOTE: Required format: shapes;shapes_basic_shapes;⭐️☆☆☆;1.0;4.2;"Ray";@raysan5 | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | char *exColInfo = LoadFileText(exCollectionListPath); | 
		
	
	
		
			
				|  |  | @ -328,19 +328,20 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | else if (strcmp(exCategory, "shaders") == 0) nextCatIndex = 6; | 
		
	
		
			
			|  |  |  | else if (strcmp(exCategory, "audio") == 0) nextCatIndex = 7; | 
		
	
		
			
			|  |  |  | else if (strcmp(exCategory, "others") == 0) nextCatIndex = -1; // Add to EOF | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Get required example info from example file header (if provided) | 
		
	
		
			
			|  |  |  | // NOTE: If no example info is provided (other than category/name), just using some default values | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if (nextCatIndex == -1) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | // Add example to the end of the list | 
		
	
		
			
			|  |  |  | // Add example to collection at the EOF | 
		
	
		
			
			|  |  |  | int endIndex = (int)strlen(exColInfo); | 
		
	
		
			
			|  |  |  | memcpy(exColInfoUpdated, exColInfo, endIndex); | 
		
	
		
			
			|  |  |  | sprintf(exColInfoUpdated + endIndex, TextFormat("e">\n%s/%s\n", exCategory, exName)); | 
		
	
		
			
			|  |  |  | sprintf(exColInfoUpdated + endIndex, TextFormat("">%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | // Add example to the end of the category list | 
		
	
		
			
			|  |  |  | // TODO: Get required example info from example file header (if provided) | 
		
	
		
			
			|  |  |  | // NOTE: If no example info is provided (other than category/name), just using some default values | 
		
	
		
			
			|  |  |  | // Add example to collection, at the end of the category list | 
		
	
		
			
			|  |  |  | int catIndex = TextFindIndex(exColInfo, exCategories[nextCatIndex]); | 
		
	
		
			
			|  |  |  | memcpy(exColInfoUpdated, exColInfo, catIndex); | 
		
	
		
			
			|  |  |  | int textWritenSize = sprintf(exColInfoUpdated + catIndex, TextFormat("%s;%s;⭐️☆☆☆;6.0;6.0;\"Ray\";@raysan5\n", exCategory, exName)); | 
		
	
	
		
			
				|  |  | @ -379,7 +380,7 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | // Compile to: raylib.com/examples/<category>/<category>_example_name.wasm | 
		
	
		
			
			|  |  |  | // Compile to: raylib.com/examples/<category>/<category>_example_name.js | 
		
	
		
			
			|  |  |  | //------------------------------------------------------------------------------------------------ | 
		
	
		
			
			|  |  |  | // TODO: l">WARNING: This .BAT is not portable and it does not consider RESOURCES for Web properly, | 
		
	
		
			
			|  |  |  | // TODO: ">Avoid platform-specific .BAT, not portable and it does not consider RESOURCES for Web properly, | 
		
	
		
			
			|  |  |  | // Makefile.Web should be used... but it requires proper editing first! | 
		
	
		
			
			|  |  |  | system(TextFormat("%s/build_example_web.bat %s/%s", exBasePath, exCategory, exName)); | 
		
	
		
			
			|  |  |  |  | 
		
	
	
		
			
				|  |  | @ -492,6 +493,7 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | remove(TextFormat("%s/%s/%s.png", exBasePath, exCategory, exName)); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Remove: raylib/examples/<category>/resources/.. | 
		
	
		
			
			|  |  |  | // Get list of resources from Makefile.Web or examples ResourcesScan() | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | UpdateRequiredFiles(); | 
		
	
		
			
			|  |  |  |  | 
		
	
	
		
			
				|  |  | @ -890,9 +892,12 @@ static int FileCopy(const char *srcPath, const char *dstPath) | 
		
	
		
			
			|  |  |  | int srcDataSize = 0; | 
		
	
		
			
			|  |  |  | unsigned char *srcFileData = LoadFileData(srcPath, &srcDataSize); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Create required paths if they do not exist | 
		
	
		
			
			|  |  |  | // Create required paths if they do not exist | 
		
	
		
			
			|  |  |  | if (!DirectoryExists(GetDirectoryPath(dstPath))) | 
		
	
		
			
			|  |  |  | MakeDirectory(GetDirectoryPath(dstPath)); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if ((srcFileData != NULL) && (srcDataSize > 0)) result = SaveFileData(dstPath, srcFileData, srcDataSize); | 
		
	
		
			
			|  |  |  | if ((srcFileData != NULL) && (srcDataSize > 0)) | 
		
	
		
			
			|  |  |  | result = SaveFileData(dstPath, srcFileData, srcDataSize); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | UnloadFileData(srcFileData); | 
		
	
		
			
			|  |  |  |  | 
		
	
	
		
			
				|  |  |  |