static void ParseKeyName(const CTString &strKey, HKEY &hKeyRoot, CTString &strKeyPath, CTString &strKeyName) { CTString strRemain = strKey; // separate key into the value part and path strKeyName = CTFileName(strRemain).FileName(); strRemain = CTFileName(strRemain).FileDir(); strRemain.TrimRight(strlen(strRemain)-1); // removes trailing backslash // try to find root key value if (strRemain.RemovePrefix("HKEY_CLASSES_ROOT\\")) { hKeyRoot = HKEY_CLASSES_ROOT; } else if (strRemain.RemovePrefix("HKEY_CURRENT_CONFIG\\")) { hKeyRoot = HKEY_CURRENT_CONFIG; } else if (strRemain.RemovePrefix("HKEY_CURRENT_USER\\")) { hKeyRoot = HKEY_CURRENT_USER; } else if (strRemain.RemovePrefix("HKEY_LOCAL_MACHINE\\")) { hKeyRoot = HKEY_LOCAL_MACHINE; } else if (strRemain.RemovePrefix("HKEY_USERS\\")) { hKeyRoot = HKEY_USERS; } else { ASSERT(FALSE); hKeyRoot = HKEY_CURRENT_USER; } strKeyPath = strRemain; }
CTString IFeel_GetProjectFileName() { CTString strIFeelTable; CTFileName fnIFeelTable = (CTString)"Data\\IFeel.txt"; CTString strDefaultProjectFile = "Data\\Default.ifr"; // get product name CTString strProduct = IFeel_GetProductName(); try { strIFeelTable.Load_t(fnIFeelTable); } catch(char *strErr) { CPrintF("%s\n",strErr); return ""; } CTString strLine; // read up to 1000 devices for(INDEX idev=0;idev<1000;idev++) { char strDeviceName[256]; char strProjectFile[256]; strLine = strIFeelTable; // read first line strLine.OnlyFirstLine(); if(strLine==strIFeelTable) { break; } // remove that line strIFeelTable.RemovePrefix(strLine); strIFeelTable.DeleteChar(0); // read device name and project file name strIFeelTable.ScanF("\"%256[^\"]\" \"%256[^\"]\"",&strDeviceName,&strProjectFile); // check if this is default if(strcmp(strDeviceName,"Default")==0) strDefaultProjectFile = strProjectFile; // check if this is current device if(strProduct == strDeviceName) return strProjectFile; } // device was not found, return default project file CPrintF("No project file specified for device '%s'.\nUsing default project file\n",strProduct); return strDefaultProjectFile; }
void CPlayerProfileMenu::SelectPlayer(INDEX iPlayer) { CPlayerCharacter &pc = _pGame->gm_apcPlayers[iPlayer]; for (INDEX iPl = 0; iPl<8; iPl++) { gm_mgNumber[iPl].mg_bHighlighted = FALSE; } gm_mgNumber[iPlayer].mg_bHighlighted = TRUE; iPlayer = Clamp(iPlayer, INDEX(0), INDEX(7)); if (_iLocalPlayer >= 0 && _iLocalPlayer<4) { _pGame->gm_aiMenuLocalPlayers[_iLocalPlayer] = iPlayer; } else { _pGame->gm_iSinglePlayer = iPlayer; } gm_mgNameField.mg_pstrToChange = &pc.pc_strName; gm_mgNameField.SetText(*gm_mgNameField.mg_pstrToChange); gm_mgTeam.mg_pstrToChange = &pc.pc_strTeam; gm_mgTeam.SetText(*gm_mgTeam.mg_pstrToChange); CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; gm_mgCrosshair.mg_iSelected = pps->ps_iCrossHairType + 1; gm_mgCrosshair.ApplyCurrentSelection(); gm_mgWeaponSelect.mg_iSelected = pps->ps_iWeaponAutoSelect; gm_mgWeaponSelect.ApplyCurrentSelection(); gm_mgWeaponHide.mg_iSelected = (pps->ps_ulFlags&PSF_HIDEWEAPON) ? 1 : 0; gm_mgWeaponHide.ApplyCurrentSelection(); gm_mg3rdPerson.mg_iSelected = (pps->ps_ulFlags&PSF_PREFER3RDPERSON) ? 1 : 0; gm_mg3rdPerson.ApplyCurrentSelection(); gm_mgQuotes.mg_iSelected = (pps->ps_ulFlags&PSF_NOQUOTES) ? 0 : 1; gm_mgQuotes.ApplyCurrentSelection(); gm_mgAutoSave.mg_iSelected = (pps->ps_ulFlags&PSF_AUTOSAVE) ? 1 : 0; gm_mgAutoSave.ApplyCurrentSelection(); gm_mgCompDoubleClick.mg_iSelected = (pps->ps_ulFlags&PSF_COMPSINGLECLICK) ? 0 : 1; gm_mgCompDoubleClick.ApplyCurrentSelection(); gm_mgViewBobbing.mg_iSelected = (pps->ps_ulFlags&PSF_NOBOBBING) ? 0 : 1; gm_mgViewBobbing.ApplyCurrentSelection(); gm_mgSharpTurning.mg_iSelected = (pps->ps_ulFlags&PSF_SHARPTURNING) ? 1 : 0; gm_mgSharpTurning.ApplyCurrentSelection(); // get function that will set player appearance CShellSymbol *pss = _pShell->GetSymbol("SetPlayerAppearance", /*bDeclaredOnly=*/ TRUE); // if none if (pss == NULL) { // no model gm_mgModel.mg_moModel.SetData(NULL); // if there is some } else { // set the model BOOL(*pFunc)(CModelObject *, CPlayerCharacter *, CTString &, BOOL) = (BOOL(*)(CModelObject *, CPlayerCharacter *, CTString &, BOOL))pss->ss_pvValue; CTString strName; BOOL bSet; if (_gmRunningGameMode != GM_SINGLE_PLAYER && !_bPlayerMenuFromSinglePlayer) { bSet = pFunc(&gm_mgModel.mg_moModel, &pc, strName, TRUE); gm_mgModel.mg_strTip = TRANS("change model for this player"); gm_mgModel.mg_bEnabled = TRUE; } else { // cannot change player appearance in single player mode bSet = pFunc(&gm_mgModel.mg_moModel, NULL, strName, TRUE); gm_mgModel.mg_strTip = TRANS("cannot change model for single-player game"); gm_mgModel.mg_bEnabled = FALSE; } // ignore gender flags, if any strName.RemovePrefix("#female#"); strName.RemovePrefix("#male#"); gm_mgModel.mg_plModel = CPlacement3D(FLOAT3D(0.1f, -1.0f, -3.5f), ANGLE3D(150, 0, 0)); gm_mgModel.mg_strText = strName; CPlayerSettings *pps = (CPlayerSettings *)pc.pc_aubAppearance; _strLastPlayerAppearance = pps->GetModelFilename(); try { gm_mgModel.mg_moFloor.SetData_t(CTFILENAME("Models\\Computer\\Floor.mdl")); gm_mgModel.mg_moFloor.mo_toTexture.SetData_t(CTFILENAME("Models\\Computer\\Floor.tex")); } catch (char *strError) { (void)strError; } } }