void GameOptions::Init(const char *xmlFilePath, const char *cmdLine) { auto content = ReadOptionsFile(xmlFilePath); if (content == NULL) return; xml_document<> document; document.parse<0>(content); // // Loading GRAPHICS settings // auto graphicsNode = document.first_node("Graphics"); if (graphicsNode) { auto heightAttribute = graphicsNode->first_attribute("height"); if (heightAttribute) { m_screenSize.y = atoi(heightAttribute->value()); } auto widthAttribute = graphicsNode->first_attribute("width"); if (widthAttribute) { m_screenSize.x = atoi(widthAttribute->value()); } auto runFullSpeedAttribute = graphicsNode->first_attribute("runFullSpeed"); if (runFullSpeedAttribute) { m_runFullSpeed = GAME_OPTIONS_SWITCH_TO_BOOLEAN(runFullSpeedAttribute->value()); } } // // Loading SOUND settings // auto soundNode = document.first_node("Sound"); if (soundNode) { auto musicVolumeAttribute = soundNode->first_attribute("musicVolume"); if (musicVolumeAttribute) { m_musicVolume = atoi(musicVolumeAttribute->value()) / 100.0f; } auto soundEffectsVolumeAttribute = soundNode->first_attribute("sfxVolume"); if (soundEffectsVolumeAttribute) { m_soundEffectsVolume = atoi(soundEffectsVolumeAttribute->value()) / 100.0f; } } // // Loading DEV settings // auto devNode = document.first_node("Development"); if (devNode) { auto useDevDirectoriesAttribute = devNode->first_attribute("useDevelopmentDirectories"); if (useDevDirectoriesAttribute) { m_useDevelopmentDirectories = GAME_OPTIONS_SWITCH_TO_BOOLEAN(useDevDirectoriesAttribute->value()); } } free(content); }
void SimpleAppSettings::InitOptions(void) { { oaNamedOption *Option; Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "User/Resolution"; Option->DataType = OA_TYPE_ENUM; Option->Value.Enum = "640x480"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "1024x768"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "1600x1200"; /* AA (enum) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "User/AA"; Option->DataType = OA_TYPE_ENUM; Option->Value.Enum = "Off"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "2X"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "4X"; /* Sound (bool) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "User/Sound"; Option->DataType = OA_TYPE_BOOL; /* Music Enabled (bool) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "User/Music Enabled"; Option->DataType = OA_TYPE_BOOL; Option->Dependency.ParentName = "User/Sound"; Option->Dependency.ComparisonOp = OA_COMP_OP_EQUAL; Option->Dependency.ComparisonValType = OA_TYPE_BOOL; Option->Dependency.ComparisonVal.Bool = OA_ON; /* Enemy Density (int) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "User/Enemy Density"; Option->DataType = OA_TYPE_INT; Option->MinValue.Int = 0; Option->MaxValue.Int = 100; Option->NumSteps = 100; /* Compression Level (int) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "Compression Level"; Option->DataType = OA_TYPE_INT; Option->MinValue.Int = 0; Option->MaxValue.Int = 10; Option->NumSteps = 10; /* Texture Quality (float) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "Texture Quality"; Option->DataType = OA_TYPE_FLOAT; Option->MinValue.Float = 0.0; Option->MaxValue.Float = 100.0; Option->NumSteps = 0; /* Texture Size (enum) */ Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "Texture Size"; Option->DataType = OA_TYPE_ENUM; Option->Value.Enum = "128"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "256"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "512"; //////////////////////////////////////// Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "vid_mode"; Option->DataType = OA_TYPE_ENUM; Option->Value.Enum = "640x480"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "1024x768"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "1280x1024"; Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "r__tf_aniso"; Option->DataType = OA_TYPE_INT; Option->MinValue.Int = 0; Option->MaxValue.Int = 100; Option->NumSteps = 100; Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "r2_sun_shafts"; Option->DataType = OA_TYPE_ENUM; Option->Value.Enum = "High"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "Low"; Options[NumOptions] = *Option; Option = &Options[NumOptions++]; Option->Value.Enum = "Medium"; Option = &Options[NumOptions++]; oaInitOption(Option); Option->Name = "r2_slight_fade"; Option->DataType = OA_TYPE_FLOAT; Option->MinValue.Float = 0.0; Option->MaxValue.Float = 100.0; Option->NumSteps = 200; /////////////////////////////////////// } //**************************************************************************** //*** Init OptionValues //**************************************************************************** // Initialize default options for(int i=0; i < NumOptions; ++i) { string Name(Options[i].Name); OptionValueMap[Name].Name = Options[i].Name; OptionValueMap[Name].Type = Options[i].DataType; OptionValueMap[Name].Value = Options[i].Value; } InitDefaultOptions(); /////////////////////////////////////////////////////// // Load any persistent options if they've been previously set ReadOptionsFile(); }