Beispiel #1
0
char *TrimStr(char *buf)
{
	return TrimLeftStr(TrimRightStr(buf));
}
void SkinManager::getSkinList()
{
	/* Finding Skin.xzp files for processing. */
	WIN32_FIND_DATA findFileData;
	memset(&findFileData,0,sizeof(WIN32_FIND_DATA));
	string searchcmd;
		/* Now finding and validating skin folders*/
	searchcmd = m_BaseSkinPath + "*";
	searchcmd = str_replaceallA(searchcmd,"\\\\","\\");
	DebugMsg("SkinManager","Scanning %s for skins",searchcmd.c_str());

	HANDLE hFind = FindFirstFile(searchcmd.c_str(), &findFileData);
	if (hFind != INVALID_HANDLE_VALUE)
	{
		do {
			//DebugMsg("Confirming Skin", m_BaseSkinPath.c_str(), findFileData.cFileName);
			string searchxur = sprintfaA("%s%s\\skin.xur", m_BaseSkinPath.c_str(), findFileData.cFileName);
			if (FileExists(searchxur))
			{
				skinitem AddSkin;
				string szExecutablePath = ParseExecutablePath(DrivesManager::getInstance().getExecutablePath()) + "\\";
				szExecutablePath = str_replaceallA(m_BaseSkinPath, "game:\\", szExecutablePath);
				szExecutablePath = str_replaceallA(szExecutablePath, "\\\\", "\\");
				AddSkin.SkinPath = sprintfaA("%s%s\\", m_BaseSkinPath.c_str() , findFileData.cFileName);
				AddSkin.xmlpath = sprintfaA("%s%s\\", m_BaseSkinPath.c_str() , findFileData.cFileName);
				AddSkin.FullSkinPath = make_lowercaseA(sprintfaA("%s%s", szExecutablePath.c_str(), findFileData.cFileName)) + "\\";
				AddSkin.PreviewPath = sprintfaA("file://%s%s\\preview.png", m_BaseSkinPath.c_str() , findFileData.cFileName);
				AddSkin.IconPath = sprintfaA("file://%s%s\\devIcon.png", m_BaseSkinPath.c_str() , findFileData.cFileName);
				AddSkin.SkinFileName = findFileData.cFileName;
				AddSkin.isCompressed = false;
				ReadSkinSettings(&AddSkin);
				if (AddSkin.SkinName == "")
				{
					AddSkin.SkinName = findFileData.cFileName;
				}
				m_skinList[AddSkin.SkinFileName] = AddSkin;

			} else if (FileExt(findFileData.cFileName) == "xzp")
			{
				skinitem AddSkin;
				string szExecutablePath = ParseExecutablePath(DrivesManager::getInstance().getExecutablePath()) + "\\";
				szExecutablePath = str_replaceallA(m_BaseSkinPath, "game:\\", szExecutablePath);
				szExecutablePath = str_replaceallA(szExecutablePath, "\\\\", "\\");
				AddSkin.SkinPath = sprintfaA("%s", m_BaseSkinPath.c_str());
				AddSkin.SkinFileName = sprintfaA("%s", findFileData.cFileName);
				AddSkin.XZPPath = sprintfaA("%s%s#", m_BaseSkinPath.c_str(), findFileData.cFileName);
				AddSkin.FullSkinPath = make_lowercaseA(sprintfaA("%s%s", szExecutablePath.c_str(), findFileData.cFileName));
				AddSkin.xmlpath = sprintfaA("%sSkins\\%s\\", SETTINGS::getInstance().getDataPath().c_str(), findFileData.cFileName);
				AddSkin.PreviewPath = sprintfaA("file://%s%s#preview.png", m_BaseSkinPath.c_str(), findFileData.cFileName);
				AddSkin.IconPath = sprintfaA("file://%s%s#devIcon.png", m_BaseSkinPath.c_str(), findFileData.cFileName);
				AddSkin.isCompressed = true;
				ExtractSkinInfo(&AddSkin);
				ReadSkinSettings(&AddSkin);
				if (AddSkin.SkinName == "")
				{
					string skinName = findFileData.cFileName;
					skinName = TrimRightStr(skinName, ".xzp");
					skinName = skinName + " Compressed";
					AddSkin.SkinName = skinName;
				}
				m_skinList[AddSkin.SkinFileName] = AddSkin;
			}
		} while (FindNextFile(hFind, &findFileData));
		FindClose(hFind);
	}
	//DebugMsg("SkinManager","Finished listing skin");
}