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);
}
示例#2
0
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();
}