STATICMODULEDATA IMS_ModuleDataManager::GetStaticModuleData(string configfile, IMSFILE cfg) //returns a pointer to the IMS_General_ModuleData with the passed name if it was already loaded, NULL otherwise { // GetConsumableData("dummy"); //get the data from the map STATICMODULEDATA data = _staticModuleData[configfile]; //if not loaded yet, load the config file. Technically, they should both be either NULL or valid if (data.moduleData == NULL || data.orbiterData == NULL) { if (cfg.file == NULL) //open the file if it isn't open already { string fullpath = "Vessels\\" + configfile; cfg.file = oapiOpenFile(fullpath.c_str(), FILE_IN, CONFIG); } //get the module type from the config data.moduleData = new IMS_General_ModuleData; data.orbiterData = new IMS_Orbiter_ModuleData; //load the data from the config file and put them in the map data.orbiterData->LoadFromFile(configfile, cfg); data.moduleData->LoadFromFile(configfile, cfg); _staticModuleData[configfile].moduleData = data.moduleData; _staticModuleData[configfile].orbiterData = data.orbiterData; } return data; }
void D3D11Config::saveConfig() { oapiWriteLogV("D3D11Config::saveConfig"); // Clear out the file std::ofstream ofs; ofs.open("D3D11Client.cfg", std::ofstream::out | std::ofstream::trunc); ofs.close(); FILEHANDLE hCfgFile = oapiOpenFile( "D3D11Client.cfg", FILE_OUT, ROOT ); if (!hCfgFile ) { oapiWriteLog( "Unable to create config file" ); return; } //GENERAL: oapiWriteItem_int( hCfgFile, "Threading", m_FileConfig.Thread_mode ); oapiWriteItem_int( hCfgFile, "Supported AA modes", m_FileConfig.AA_count ); oapiWriteItem_int( hCfgFile, "Selected AA mode", m_FileConfig.AA_mode ); // Format and write the AA modes, need to use strcpy because of Orbiter functions char line[32], tag[64], temp[16]; strcpy( line, "AA_mode" ); for( WORD j = 0; j < m_FileConfig.AA_count; j++ ) { sprintf( tag, "%s_%d", line, j ); oapiWriteItem_string( hCfgFile, tag, temp); vecAAModes[j].desc = temp; sprintf( tag, "%s_%d_count", line, j ); oapiWriteItem_int( hCfgFile, tag, vecAAModes[j].SampleDesc.Count ); sprintf( tag, "%s_%d_quality", line, j ); oapiWriteItem_int( hCfgFile, tag, vecAAModes[j].SampleDesc.Quality ); } oapiWriteItem_int( hCfgFile, "Sketchpad mode", m_FileConfig.Sketchpad_mode ); oapiWriteItem_int( hCfgFile, "MFD filter", m_FileConfig.MFD_filter ); oapiWriteItem_int( hCfgFile, "MFD transparency", m_FileConfig.MFD_transparency ); oapiWriteItem_int( hCfgFile, "PP Effect Enabled", m_FileConfig.PP_effect_enable ); //VESSELS: oapiWriteItem_int( hCfgFile, "Mesh mip maps", m_FileConfig.Mesh_Texture_Mip_maps ); oapiWriteItem_int( hCfgFile, "Mesh texture filter", m_FileConfig.Mesh_Texture_Filter ); oapiWriteItem_int( hCfgFile, "Enable mesh normal maps", m_FileConfig.Mesh_Normal_maps ); oapiWriteItem_int( hCfgFile, "Enable mesh bump maps", m_FileConfig.Mesh_Bump_maps ); oapiWriteItem_int( hCfgFile, "Enable mesh specular maps", m_FileConfig.Mesh_Specular_maps ); oapiWriteItem_int( hCfgFile, "Enable mesh emissive maps", m_FileConfig.Mesh_Emissive_maps ); // oapiWriteItem_int( hCfgFile, "Enable PS local lighting", m_FileConfig.PStream_LLights ); // oapiWriteItem_int( hCfgFile, "Enable base local lighting", m_FileConfig.Base_LLights ); //PLANETS: oapiWriteItem_int( hCfgFile, "Planet texture filter", m_FileConfig.Planet_Texture_filter ); oapiWriteItem_int( hCfgFile, "Planet tile loading frequency", m_FileConfig.Planet_Tile_loading_Freq ); oapiCloseFile( hCfgFile, FILE_OUT ); }
Server::Server(void) : _isRunning(false), _port(0), _interval(0.5) { // Get the MFD refresh interval from the Orbiter configuration FILEHANDLE ocfg = oapiOpenFile("Orbiter.cfg", FILE_IN); oapiReadItem_float(ocfg, "InstrumentUpdateInterval", _interval); oapiCloseFile(ocfg, FILE_IN); // Creates the mutex to access the shared resources _mfdsMutex = CreateMutex(NULL, FALSE, NULL); }
bool D3D11Config::loadConfig() { oapiWriteLogV("D3D11Config::loadConfig"); // Check if the file is not there if (!std::ifstream("D3D11Client.cfg") ) { // Its not there so init this D3D11Config object and create file in saveConfig() setDefault(); saveConfig(); return true; } // It exists, read it FILEHANDLE hCfgFile = oapiOpenFile( "D3D11Client.cfg", FILE_IN, ROOT ); // D3D11 options oapiReadItem_int( hCfgFile, "Supported AA modes", m_FileConfig.AA_count ); oapiReadItem_int( hCfgFile, "Selected AA mode", m_FileConfig.AA_mode ); // If we could not get AA_count, the file could not be opened // TODO: Apparently AA_count HAS to be there ? Why ? if (m_FileConfig.AA_count < 1) { oapiWriteLog( "ERROR : Unable to load config file" ); oapiCloseFile( hCfgFile, FILE_IN ); setDefault(); saveConfig(); return true; } // Read the AA modes, need to use strcpy because of Orbiter functions vecAAModes.resize(m_FileConfig.AA_count); int tmp; char line[32], tag[64], temp[16]; strcpy( line, "AA_mode" ); for(int index = 0; index < m_FileConfig.AA_count; ++index ) { sprintf( tag, "%s_%d", line, index); oapiReadItem_string( hCfgFile, tag, temp); vecAAModes[index].desc = temp; sprintf( tag, "%s_%d_count", line, index); oapiReadItem_int( hCfgFile, tag, tmp ); vecAAModes[index].SampleDesc.Count = tmp; sprintf( tag, "%s_%d_quality", line, index); oapiReadItem_int( hCfgFile, tag, tmp ); vecAAModes[index].SampleDesc.Quality = tmp; } oapiReadItem_int( hCfgFile, "Threading", m_FileConfig.Thread_mode ); oapiReadItem_int( hCfgFile, "Sketchpad mode", m_FileConfig.Sketchpad_mode ); oapiReadItem_int( hCfgFile, "MFD filter", m_FileConfig.MFD_filter ); oapiReadItem_int( hCfgFile, "MFD transparency", m_FileConfig.MFD_transparency ); oapiReadItem_int( hCfgFile, "PP Effect Enabled", m_FileConfig.PP_effect_enable ); // Read vessel related options oapiReadItem_int( hCfgFile, "Mesh mip maps", m_FileConfig.Mesh_Texture_Mip_maps ); oapiReadItem_int( hCfgFile, "Mesh texture filter", m_FileConfig.Mesh_Texture_Filter ); oapiReadItem_int( hCfgFile, "Enable mesh normal maps", m_FileConfig.Mesh_Normal_maps ); oapiReadItem_int( hCfgFile, "Enable mesh bump maps", m_FileConfig.Mesh_Bump_maps ); oapiReadItem_int( hCfgFile, "Enable mesh specular maps", m_FileConfig.Mesh_Specular_maps ); oapiReadItem_int( hCfgFile, "Enable mesh emissive maps", m_FileConfig.Mesh_Emissive_maps ); // oapiReadItem_int( hCfgFile, "Enable PS local lighting", m_FileConfig.PStream_LLights ); // oapiReadItem_int( hCfgFile, "Enable base local lighting", m_FileConfig.Base_LLights ); // Read planet related options oapiReadItem_int( hCfgFile, "Planet texture filter", m_FileConfig.Planet_Texture_filter ); oapiReadItem_int( hCfgFile, "Planet tile loading frequency", m_FileConfig.Planet_Tile_loading_Freq ); oapiCloseFile( hCfgFile, FILE_IN ); // Check values m_FileConfig.Thread_mode = m_FileConfig.Thread_mode > 1 ? 0 : (m_FileConfig.Thread_mode < 0 ? 0 : m_FileConfig.Thread_mode); m_FileConfig.Sketchpad_mode = m_FileConfig.Sketchpad_mode > 2 ? 0 : (m_FileConfig.Sketchpad_mode < 0 ? 0 : m_FileConfig.Sketchpad_mode); m_FileConfig.Mesh_Texture_Mip_maps = m_FileConfig.Mesh_Texture_Mip_maps > 2 ? 0 : (m_FileConfig.Mesh_Texture_Mip_maps < 0 ? 0 : m_FileConfig.Mesh_Texture_Mip_maps); m_FileConfig.Mesh_Texture_Filter = m_FileConfig.Mesh_Texture_Filter > 4 ? 0 : (m_FileConfig.Mesh_Texture_Filter < 0 ? 0 : m_FileConfig.Mesh_Texture_Filter); m_FileConfig.Planet_Texture_filter = m_FileConfig.Planet_Texture_filter > 4 ? 0 : (m_FileConfig.Planet_Texture_filter < 0 ? 0 : m_FileConfig.Planet_Texture_filter); m_FileConfig.Planet_Tile_loading_Freq = m_FileConfig.Planet_Tile_loading_Freq > 200 ? 50 : (m_FileConfig.Planet_Tile_loading_Freq < 0 ? 50 : m_FileConfig.Planet_Tile_loading_Freq); return true; }