void st_LevelOptions::ReadLTX(CInifile& ini) { LPCSTR section = "level_options"; u32 vers_op = ini.r_u32(section, "version"); if( vers_op < 0x00000008 ) { ELog.DlgMsg( mtError, "Skipping bad version of level options." ); return; } m_FNLevelPath = ini.r_string (section, "level_path"); m_LevelPrefix = ini.r_string (section, "level_prefix"); m_BOPText = ini.r_string_wb (section, "bop"); if(vers_op > 0x0000000B) m_map_version = ini.r_string (section, "map_version"); m_BuildParams.LoadLTX(ini); m_LightHemiQuality = ini.r_u8(section, "light_hemi_quality" ); m_LightSunQuality = ini.r_u8(section, "light_sun_quality" ); m_mapUsage.SetDefaults (); if(vers_op > 0x0000000A) { m_mapUsage.LoadLTX (ini,section,false); }else { m_mapUsage.m_GameType.set (eGameIDDeathmatch , ini.r_s32(section, "usage_deathmatch")); m_mapUsage.m_GameType.set (eGameIDTeamDeathmatch, ini.r_s32(section, "usage_teamdeathmatch")); m_mapUsage.m_GameType.set (eGameIDArtefactHunt, ini.r_s32(section, "usage_artefacthunt")); if(vers_op > 0x00000008) { m_mapUsage.m_GameType.set (eGameIDCaptureTheArtefact, ini.r_s32(section, "usage_captretheartefact")); m_mapUsage.m_GameType.set (eGameIDTeamDominationZone, ini.r_s32(section, "usage_team_domination_zone")); if(vers_op==0x00000009) m_mapUsage.m_GameType.set(eGameIDDominationZone, ini.r_s32(section, "domination_zone")); else m_mapUsage.m_GameType.set(eGameIDDominationZone, ini.r_s32(section, "usage_domination_zone")); } } }
bool CEditShape::LoadLTX(CInifile& ini, LPCSTR sect_name) { u32 vers = ini.r_u32(sect_name, "version"); inherited::LoadLTX (ini, sect_name); u32 count = ini.r_u32 (sect_name, "shapes_count"); if(vers>0x0001) m_shape_type = ini.r_u8 (sect_name, "shape_type"); string128 buff; shapes.resize (count); for(u32 i=0; i<count; ++i) { sprintf (buff,"shape_type_%d", i); shapes[i].type = ini.r_u8(sect_name, buff); if(shapes[i].type==CShapeData::cfSphere) { sprintf (buff,"shape_center_%d", i); shapes[i].data.sphere.P = ini.r_fvector3 (sect_name, buff); sprintf (buff,"shape_radius_%d", i); shapes[i].data.sphere.R = ini.r_float (sect_name, buff); }else { R_ASSERT (shapes[i].type==CShapeData::cfBox); sprintf (buff,"shape_matrix_i_%d", i); shapes[i].data.box.i = ini.r_fvector3 (sect_name, buff); sprintf (buff,"shape_matrix_j_%d", i); shapes[i].data.box.j = ini.r_fvector3 (sect_name, buff); sprintf (buff,"shape_matrix_k_%d", i); shapes[i].data.box.k = ini.r_fvector3 (sect_name, buff); sprintf (buff,"shape_matrix_c_%d", i); shapes[i].data.box.c = ini.r_fvector3 (sect_name, buff); } } ComputeBounds(); return true; }