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(), ";"); }
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")); }
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; } }