/**
 * @class kDefManager
 * @brief Def Manager for loading and getting defs with a name only \n\n
 * Usage:
 * 
 * @code{.cpp}
 * kDefManager defManager;
 * defManager.LoadFile("defs/MyDef.txt");
 * //or
 * defManager.LoadFilesInDirectory("defs/MyDefs/", "txt");
 * 
 * if (defManager !is null)
 * {
 * 	kDictMem@ dictMem = defManager.GetEntry("MyCustomDef");
 * }
 * @endcode
 */
class kDefManager
{
public:
	
	/**
	 * @brief Returns the number of entries in the defManager
	 */
	const uint EntryCount();
		
	/**
	 * @brief Returns the def data from the key name or null if key not found
	 */
	const kDictMem @GetEntry(const kStr &in key);
	
	/**
	 * @brief Loads a def file using the Turok 2 folder as the working directory
	 * @code{.cpp}
	 * LoadFile("defs/MyDef.txt");
	 * @endcode
	 */
	void LoadFile(const kStr &in localFilePath, bool unknown = false);
	
	/**
	 * @brief Loads all files in the directory and it's sub directories with the specified file extension
	 * @code{.cpp}
	 * LoadFilesInDirectory("defs/MyDefs/", "txt");
	 * @endcode
	 */
	void LoadFilesInDirectory(const kStr &in localDirectoryPath, const kStr &in fileExtension, bool unknown = false);
};
