void AppSettings::ReadSettings(string iniFile)
{
   NameValueCollection settings = ReadIniSection(Name.c_str(), iniFile.c_str());

   // expand indirect values first
   for (NameValueCollection::iterator itr = settings.begin(), end = settings.end(); itr != end; ++itr)
      itr->second = GetIndirectValue(itr->second.c_str());

   // next expand qualifiers
   for (NameValueCollection::iterator itr = settings.begin(), end = settings.end(); itr != end; ++itr)
      itr->second = ExpandQualifiers(itr->second.c_str(), settings);

   // finally expand environment variables, last because it clobbers my custom qualifier expansion
   for (NameValueCollection::iterator itr = settings.begin(), end = settings.end(); itr != end; ++itr)
      itr->second = ExpandEnvironment(itr->second);

   std::swap(Environment, settings);

   rootPath = GetSetting<string>("RootPath");
   rootPaths = TokenizeString(GetSetting<string>("RootPaths").c_str(), ";");
   searchPaths = TokenizeString(GetSetting<string>("TextureSearchPaths").c_str(), ";");
   extensions = TokenizeString(GetSetting<string>("TextureExtensions").c_str(), ";");
   textureRootPaths = TokenizeString(GetSetting<string>("TextureRootPaths").c_str(), ";");

   Skeleton = GetSetting<string>("Skeleton");
   useSkeleton = GetSetting<bool>("UseSkeleton", useSkeleton);
   goToSkeletonBindPosition = GetSetting<bool>("GoToSkeletonBindPosition", goToSkeletonBindPosition);
   disableCreateNubsForBones = GetSetting<bool>("DisableCreateNubsForBones", disableCreateNubsForBones);
   applyOverallTransformToSkinAndBones = GetSetting<int>("ApplyOverallTransformToSkinAndBones", -1);

   dummyNodeMatches = TokenizeString(GetSetting<string>("DummyNodeMatches").c_str(), ";");
}
Example #2
0
void _Cmd_Rules_f (edict_t * self, char *argument)
{
	char section[32], mbuf[1024], *p, buf[30][INI_STR_LEN];
	int i, j = 0;
	ini_t ini;

	strcpy (mbuf, "\n");
	if (*argument)
		Q_strncpyz(section, argument, sizeof(section));
	else
		strcpy (section, "main");

	if (OpenIniFile (GAMEVERSION "/prules.ini", &ini))
	{
		i = ReadIniSection (&ini, section, buf, 30);
		while (j < i)
		{
			p = buf[j++];
			if (*p == '.')
				p++;
			Q_strncatz(mbuf, p, sizeof(mbuf));
			Q_strncatz(mbuf, "\n", sizeof(mbuf));
		}
		CloseIniFile (&ini);
	}
	if (!j)
		gi.cprintf (self, PRINT_MEDIUM, "No rules on %s available\n", section);
	else
		gi.cprintf (self, PRINT_MEDIUM, "%s", mbuf);
}
void AppSettings::ReadSettings(tstring iniFile)
{
	NameValueCollection settings = ReadIniSection(Name.c_str(), iniFile.c_str());

	// expand indirect values first
	for (NameValueCollection::iterator itr = settings.begin(), end = settings.end(); itr != end; ++itr)
		itr->second = GetIndirectValue(itr->second.c_str());

	// next expand qualifiers
	for (NameValueCollection::iterator itr = settings.begin(), end = settings.end(); itr != end; ++itr)
		itr->second = ExpandQualifiers(itr->second.c_str(), settings);

	// finally expand environment variables, last because it clobbers my custom qualifier expansion
	for (NameValueCollection::iterator itr = settings.begin(), end = settings.end(); itr != end; ++itr)
		itr->second = ExpandEnvironment(itr->second);

	std::swap(Environment, settings);

	NiVersion = GetSetting<tstring>(TEXT("NiVersion"), TEXT("20.0.0.5"));
	NiUserVersion = GetSetting<int>(TEXT("NiUserVersion"), 0);
	NiUserVersion2 = GetSetting<int>(TEXT("NiUserVersion2"), 0);

	rootPath = GetSetting<tstring>(TEXT("RootPath"));
	rootPaths = TokenizeString(GetSetting<tstring>(TEXT("RootPaths")).c_str(), TEXT(";"));
	searchPaths = TokenizeString(GetSetting<tstring>(TEXT("TextureSearchPaths")).c_str(), TEXT(";"));
	extensions = TokenizeString(GetSetting<tstring>(TEXT("TextureExtensions")).c_str(), TEXT(";"));
	textureRootPaths = TokenizeString(GetSetting<tstring>(TEXT("TextureRootPaths")).c_str(), TEXT(";"));
	materialRootPaths = TokenizeString(GetSetting<tstring>(TEXT("MaterialPaths")).c_str(), TEXT(";"));

	Skeleton = GetSetting<tstring>(TEXT("Skeleton"));
	useSkeleton = GetSetting<bool>(TEXT("UseSkeleton"), useSkeleton);
	skeletonSearchPaths = TokenizeString(GetSetting<tstring>(TEXT("SkeletonSearchPaths"), TEXT(".")).c_str(), TEXT(";"));

	goToSkeletonBindPosition = GetSetting<bool>(TEXT("GoToSkeletonBindPosition"), goToSkeletonBindPosition);
	disableCreateNubsForBones = GetSetting<bool>(TEXT("DisableCreateNubsForBones"), disableCreateNubsForBones);
	applyOverallTransformToSkinAndBones = GetSetting<int>(TEXT("ApplyOverallTransformToSkinAndBones"), -1);
	textureUseFullPath = GetSetting<int>(TEXT("TextureUseFullPath"), textureUseFullPath);

	dummyNodeMatches = TokenizeString(GetSetting<tstring>(TEXT("DummyNodeMatches")).c_str(), TEXT(";"));
	rotate90Degrees = TokenizeString(GetSetting<tstring>(TEXT("Rotate90Degrees")).c_str(), TEXT(";"));
	supportPrnStrings = GetSetting<bool>(TEXT("SupportPrnStrings"), supportPrnStrings);
	doNotReuseExistingBones = GetSetting<bool>(TEXT("DoNotReuseExistingBones"), doNotReuseExistingBones);

	skeletonCheck = GetSetting<tstring>(TEXT("SkeletonCheck"));
}
Example #4
0
static void IniReadProcess(char* buf, int size)
{
	for ( int i = 0 ; i < size ; i ++ )
	{
		char	chr = buf[i];

		if ( s_bInComment )
		{
			if ( chr == '\n' || chr == '\r' )
			{
				s_bInComment = false;
			}
		}

		else if ( s_bInCommentBlock )
		{
			if ( s_cLastChar == '*' && chr == '/' )
			{
				s_bInCommentBlock = false;
			}
		}

		else
		{
			if ( s_cLastChar == '/' && chr == '/' )
			{
				s_bInComment = true;
			}
			else if ( s_cLastChar == '/' && chr == '*' )
			{
				s_bInCommentBlock = true;
			}
			else
			{
				switch ( s_iIniReadMode )
				{
				case INI_READ_READSECTION_READY:
					if ( IsValidChar(chr, false) )
					{
						s_iIniReadMode = INI_READ_READSECTION;
						s_szIniReadName[0] = chr;
						s_szIniReadName[1] = '\0';
					}
					break;

				case INI_READ_READSECTION:
					if ( IsValidChar(chr, true) )
					{
						if ( strlen(s_szIniReadName) < INIREAD_READNAME_MAX - 1 )
						{
							char	str[2];
							str[0] = chr;
							str[1] = '\0';
							strcat(s_szIniReadName, str);
						}
					}
					else if ( IsEqualChar(chr) )
					{
						s_iIniReadMode = INI_READ_READVALUE_READY;
					}
					else if ( !IsSpaceChar(chr) )
					{
						s_iIniReadMode = INI_READ_READSECTION_END;
					}
					break;

				case INI_READ_READSECTION_END:
					if ( IsEqualChar(chr) )
					{
						s_iIniReadMode = INI_READ_READVALUE_READY;
					}
					break;

				case INI_READ_READVALUE_READY:
					if ( IsValidChar(chr, true) )
					{
						s_iIniReadMode = INI_READ_READVALUE;
						s_szIniReadValue[0] = chr;
						s_szIniReadValue[1] = '\0';
					}

					if ( IsDoubleQuoteChar(chr) )
					{
						s_iIniReadMode = INI_READ_READSTRING;
						s_bInQuote = true;
						s_bBeforeYen = false;
						s_szIniReadValue[0] = '\0';
					}
					break;

				case INI_READ_READVALUE:
					if ( IsValidChar(chr, true) )
					{
						if ( strlen(s_szIniReadValue) < INIREAD_READVALUE_MAX - 1)
						{
							char	str[2];
							str[0] = chr;
							str[1] = '\0';
							strcat(s_szIniReadValue, str);
						}
					}
					else if ( IsSemiColonChar(chr) )
					{
						ReadIniSection(s_szIniReadName, s_szIniReadValue);
						s_iIniReadMode = INI_READ_READSECTION_READY;
					}
					else if ( !IsSpaceChar(chr) )
					{
						s_iIniReadMode = INI_READ_READVALUE_END;
					}
					break;

				case INI_READ_READVALUE_END:
					if ( IsEqualChar(chr) )
					{
						ReadIniSection(s_szIniReadName, s_szIniReadValue);
						s_iIniReadMode = INI_READ_READSECTION_READY;
					}
					break;

				case INI_READ_READSTRING:
					if ( !s_bBeforeYen )
					{
						if ( IsDoubleQuoteChar(chr) )
						{
							s_bInQuote = !s_bInQuote;
							break;
						}
						else if ( IsYenChar(chr) )
						{
							s_bBeforeYen = true;
							break;
						}
					}

					if ( s_bInQuote )
					{
						if ( strlen(s_szIniReadValue) < INIREAD_READVALUE_MAX - 1)
						{
							char	str[2];
							str[0] = chr;
							str[1] = '\0';
							strcat(s_szIniReadValue, str);
						}
					}
					else
					{
						if ( IsSemiColonChar(chr) )
						{
							ReadIniSectionString(s_szIniReadName, s_szIniReadValue);
							// MessageBox(0, s_szIniReadValue, s_szIniReadName, MB_OK);
							s_iIniReadMode = INI_READ_READSECTION_READY;
						}
					}
					break;
				}
			}
		}

		s_cLastChar = chr;
	}
}