mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 18:19:55 +00:00
Refactored settings window
This commit is contained in:
parent
452b522bc3
commit
0a17245633
6 changed files with 295 additions and 301 deletions
|
@ -132,6 +132,7 @@ set(OENGINE_OGRE
|
|||
|
||||
set(OENGINE_GUI
|
||||
${LIBDIR}/openengine/gui/manager.cpp
|
||||
${LIBDIR}/openengine/gui/layout.hpp
|
||||
)
|
||||
|
||||
set(OENGINE_BULLET
|
||||
|
|
|
@ -83,91 +83,116 @@ namespace
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* checkButtonType = "CheckButton";
|
||||
const char* sliderType = "Slider";
|
||||
|
||||
std::string getSettingType(MyGUI::Widget* widget)
|
||||
{
|
||||
return widget->getUserString("SettingType");
|
||||
}
|
||||
|
||||
std::string getSettingName(MyGUI::Widget* widget)
|
||||
{
|
||||
return widget->getUserString("SettingName");
|
||||
}
|
||||
|
||||
std::string getSettingCategory(MyGUI::Widget* widget)
|
||||
{
|
||||
return widget->getUserString("SettingCategory");
|
||||
}
|
||||
|
||||
std::string getSettingValueType(MyGUI::Widget* widget)
|
||||
{
|
||||
return widget->getUserString("SettingValueType");
|
||||
}
|
||||
|
||||
void getSettingMinMax(MyGUI::Widget* widget, float& min, float& max)
|
||||
{
|
||||
const char* settingMin = "SettingMin";
|
||||
const char* settingMax = "SettingMax";
|
||||
min = 0.f;
|
||||
max = 1.f;
|
||||
if (!widget->getUserString(settingMin).empty())
|
||||
min = boost::lexical_cast<float>(widget->getUserString(settingMin));
|
||||
if (!widget->getUserString(settingMax).empty())
|
||||
max = boost::lexical_cast<float>(widget->getUserString(settingMax));
|
||||
}
|
||||
}
|
||||
|
||||
namespace MWGui
|
||||
{
|
||||
void SettingsWindow::configureWidgets(MyGUI::Widget* widget)
|
||||
{
|
||||
MyGUI::EnumeratorWidgetPtr widgets = widget->getEnumerator();
|
||||
while (widgets.next())
|
||||
{
|
||||
MyGUI::Widget* current = widgets.current();
|
||||
|
||||
std::string type = getSettingType(current);
|
||||
if (type == checkButtonType)
|
||||
{
|
||||
std::string initialValue = Settings::Manager::getBool(getSettingName(current),
|
||||
getSettingCategory(current))
|
||||
? "#{sOn}" : "#{sOff}";
|
||||
current->castType<MyGUI::Button>()->setCaptionWithReplacing(initialValue);
|
||||
current->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
}
|
||||
if (type == sliderType)
|
||||
{
|
||||
MyGUI::ScrollBar* scroll = current->castType<MyGUI::ScrollBar>();
|
||||
if (getSettingValueType(current) == "Float")
|
||||
{
|
||||
// TODO: ScrollBar isn't meant for this. should probably use a dedicated FloatSlider widget
|
||||
float min,max;
|
||||
getSettingMinMax(scroll, min, max);
|
||||
float value = Settings::Manager::getFloat(getSettingName(current), getSettingCategory(current));
|
||||
value = (value-min)/(max-min);
|
||||
|
||||
scroll->setScrollPosition( value * (scroll->getScrollRange()-1));
|
||||
}
|
||||
else
|
||||
{
|
||||
int value = Settings::Manager::getFloat(getSettingName(current), getSettingCategory(current));
|
||||
scroll->setScrollPosition(value);
|
||||
}
|
||||
scroll->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
}
|
||||
|
||||
configureWidgets(current);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsWindow::SettingsWindow() :
|
||||
WindowBase("openmw_settings_window.layout")
|
||||
{
|
||||
configureWidgets(mMainWidget);
|
||||
|
||||
getWidget(mOkButton, "OkButton");
|
||||
getWidget(mBestAttackButton, "BestAttackButton");
|
||||
getWidget(mGrabCursorButton, "GrabCursorButton");
|
||||
getWidget(mSubtitlesButton, "SubtitlesButton");
|
||||
getWidget(mCrosshairButton, "CrosshairButton");
|
||||
getWidget(mResolutionList, "ResolutionList");
|
||||
getWidget(mMenuTransparencySlider, "MenuTransparencySlider");
|
||||
getWidget(mToolTipDelaySlider, "ToolTipDelaySlider");
|
||||
getWidget(mViewDistanceSlider, "ViewDistanceSlider");
|
||||
getWidget(mFullscreenButton, "FullscreenButton");
|
||||
getWidget(mVSyncButton, "VSyncButton");
|
||||
getWidget(mFPSButton, "FPSButton");
|
||||
getWidget(mFOVSlider, "FOVSlider");
|
||||
getWidget(mMasterVolumeSlider, "MasterVolume");
|
||||
getWidget(mVoiceVolumeSlider, "VoiceVolume");
|
||||
getWidget(mEffectsVolumeSlider, "EffectsVolume");
|
||||
getWidget(mFootstepsVolumeSlider, "FootstepsVolume");
|
||||
getWidget(mMusicVolumeSlider, "MusicVolume");
|
||||
getWidget(mAnisotropySlider, "AnisotropySlider");
|
||||
getWidget(mTextureFilteringButton, "TextureFilteringButton");
|
||||
getWidget(mAnisotropyLabel, "AnisotropyLabel");
|
||||
getWidget(mAnisotropyBox, "AnisotropyBox");
|
||||
getWidget(mWaterShaderButton, "WaterShaderButton");
|
||||
getWidget(mReflectObjectsButton, "ReflectObjectsButton");
|
||||
getWidget(mReflectActorsButton, "ReflectActorsButton");
|
||||
getWidget(mReflectTerrainButton, "ReflectTerrainButton");
|
||||
getWidget(mShadersButton, "ShadersButton");
|
||||
getWidget(mShaderModeButton, "ShaderModeButton");
|
||||
getWidget(mShadowsEnabledButton, "ShadowsEnabledButton");
|
||||
getWidget(mShadowsLargeDistance, "ShadowsLargeDistance");
|
||||
getWidget(mShadowsTextureSize, "ShadowsTextureSize");
|
||||
getWidget(mActorShadows, "ActorShadows");
|
||||
getWidget(mStaticsShadows, "StaticsShadows");
|
||||
getWidget(mMiscShadows, "MiscShadows");
|
||||
getWidget(mTerrainShadows, "TerrainShadows");
|
||||
getWidget(mControlsBox, "ControlsBox");
|
||||
getWidget(mResetControlsButton, "ResetControlsButton");
|
||||
getWidget(mInvertYButton, "InvertYButton");
|
||||
getWidget(mCameraSensitivitySlider, "CameraSensitivitySlider");
|
||||
getWidget(mRefractionButton, "RefractionButton");
|
||||
|
||||
mSubtitlesButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mCrosshairButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mBestAttackButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mGrabCursorButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mInvertYButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onOkButtonClicked);
|
||||
mShadersButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onShadersToggled);
|
||||
mShaderModeButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onShaderModeToggled);
|
||||
mFullscreenButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mWaterShaderButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mRefractionButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mReflectObjectsButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mReflectTerrainButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mReflectActorsButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mTextureFilteringButton->eventComboChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onTextureFilteringChanged);
|
||||
mVSyncButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mFPSButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onFpsToggled);
|
||||
mMenuTransparencySlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mFOVSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mToolTipDelaySlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mViewDistanceSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mResolutionList->eventListChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onResolutionSelected);
|
||||
mAnisotropySlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
|
||||
mShadowsEnabledButton->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mShadowsLargeDistance->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mShadowsTextureSize->eventComboChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onShadowTextureSizeChanged);
|
||||
mActorShadows->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mStaticsShadows->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mMiscShadows->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
mTerrainShadows->eventMouseButtonClick += MyGUI::newDelegate(this, &SettingsWindow::onButtonToggled);
|
||||
|
||||
mMasterVolumeSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mVoiceVolumeSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mEffectsVolumeSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mFootstepsVolumeSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
mMusicVolumeSlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
|
||||
center();
|
||||
|
||||
|
@ -194,73 +219,25 @@ namespace MWGui
|
|||
mResolutionList->addItem(str);
|
||||
}
|
||||
|
||||
// read settings
|
||||
int menu_transparency = (mMenuTransparencySlider->getScrollRange()-1) * Settings::Manager::getFloat("menu transparency", "GUI");
|
||||
mMenuTransparencySlider->setScrollPosition(menu_transparency);
|
||||
int tooltip_delay = (mToolTipDelaySlider->getScrollRange()-1) * Settings::Manager::getFloat("tooltip delay", "GUI");
|
||||
mToolTipDelaySlider->setScrollPosition(tooltip_delay);
|
||||
|
||||
mSubtitlesButton->setCaptionWithReplacing(Settings::Manager::getBool("subtitles", "GUI") ? "#{sOn}" : "#{sOff}");
|
||||
mCrosshairButton->setCaptionWithReplacing(Settings::Manager::getBool("crosshair", "HUD") ? "#{sOn}" : "#{sOff}");
|
||||
mBestAttackButton->setCaptionWithReplacing(Settings::Manager::getBool("best attack", "Game") ? "#{sOn}" : "#{sOff}");
|
||||
mGrabCursorButton->setCaptionWithReplacing(Settings::Manager::getBool("grab cursor", "Input") ? "#{sOn}" : "#{sOff}");
|
||||
|
||||
float fovVal = (Settings::Manager::getFloat("field of view", "General")-sFovMin)/(sFovMax-sFovMin);
|
||||
mFOVSlider->setScrollPosition(fovVal * (mFOVSlider->getScrollRange()-1));
|
||||
MyGUI::TextBox* fovText;
|
||||
getWidget(fovText, "FovText");
|
||||
fovText->setCaption("Field of View (" + boost::lexical_cast<std::string>(int(Settings::Manager::getFloat("field of view", "General"))) + ")");
|
||||
|
||||
float anisotropyVal = Settings::Manager::getInt("anisotropy", "General") / 16.0;
|
||||
mAnisotropySlider->setScrollPosition(anisotropyVal * (mAnisotropySlider->getScrollRange()-1));
|
||||
std::string tf = Settings::Manager::getString("texture filtering", "General");
|
||||
mTextureFilteringButton->setCaption(textureFilteringToStr(tf));
|
||||
mAnisotropyLabel->setCaption("Anisotropy (" + boost::lexical_cast<std::string>(Settings::Manager::getInt("anisotropy", "General")) + ")");
|
||||
|
||||
float val = (Settings::Manager::getFloat("max viewing distance", "Viewing distance")-sViewDistMin)/(sViewDistMax-sViewDistMin);
|
||||
int viewdist = (mViewDistanceSlider->getScrollRange()-1) * val;
|
||||
mViewDistanceSlider->setScrollPosition(viewdist);
|
||||
|
||||
mMasterVolumeSlider->setScrollPosition(Settings::Manager::getFloat("master volume", "Sound") * (mMasterVolumeSlider->getScrollRange()-1));
|
||||
mMusicVolumeSlider->setScrollPosition(Settings::Manager::getFloat("music volume", "Sound") * (mMusicVolumeSlider->getScrollRange()-1));
|
||||
mEffectsVolumeSlider->setScrollPosition(Settings::Manager::getFloat("sfx volume", "Sound") * (mEffectsVolumeSlider->getScrollRange()-1));
|
||||
mFootstepsVolumeSlider->setScrollPosition(Settings::Manager::getFloat("footsteps volume", "Sound") * (mFootstepsVolumeSlider->getScrollRange()-1));
|
||||
mVoiceVolumeSlider->setScrollPosition(Settings::Manager::getFloat("voice volume", "Sound") * (mVoiceVolumeSlider->getScrollRange()-1));
|
||||
|
||||
mWaterShaderButton->setCaptionWithReplacing(Settings::Manager::getBool("shader", "Water") ? "#{sOn}" : "#{sOff}");
|
||||
mReflectObjectsButton->setCaptionWithReplacing(Settings::Manager::getBool("reflect statics", "Water") ? "#{sOn}" : "#{sOff}");
|
||||
mReflectActorsButton->setCaptionWithReplacing(Settings::Manager::getBool("reflect actors", "Water") ? "#{sOn}" : "#{sOff}");
|
||||
mReflectTerrainButton->setCaptionWithReplacing(Settings::Manager::getBool("reflect terrain", "Water") ? "#{sOn}" : "#{sOff}");
|
||||
|
||||
mShadowsTextureSize->setCaption (Settings::Manager::getString ("texture size", "Shadows"));
|
||||
mShadowsLargeDistance->setCaptionWithReplacing(Settings::Manager::getBool("split", "Shadows") ? "#{sOn}" : "#{sOff}");
|
||||
|
||||
mShadowsEnabledButton->setCaptionWithReplacing(Settings::Manager::getBool("enabled", "Shadows") ? "#{sOn}" : "#{sOff}");
|
||||
mActorShadows->setCaptionWithReplacing(Settings::Manager::getBool("actor shadows", "Shadows") ? "#{sOn}" : "#{sOff}");
|
||||
mStaticsShadows->setCaptionWithReplacing(Settings::Manager::getBool("statics shadows", "Shadows") ? "#{sOn}" : "#{sOff}");
|
||||
mMiscShadows->setCaptionWithReplacing(Settings::Manager::getBool("misc shadows", "Shadows") ? "#{sOn}" : "#{sOff}");
|
||||
mTerrainShadows->setCaptionWithReplacing(Settings::Manager::getBool("terrain shadows", "Shadows") ? "#{sOn}" : "#{sOff}");
|
||||
|
||||
float cameraSens = (Settings::Manager::getFloat("camera sensitivity", "Input")-0.2)/(5.0-0.2);
|
||||
mCameraSensitivitySlider->setScrollPosition (cameraSens * (mCameraSensitivitySlider->getScrollRange()-1));
|
||||
mCameraSensitivitySlider->eventScrollChangePosition += MyGUI::newDelegate(this, &SettingsWindow::onSliderChangePosition);
|
||||
|
||||
mInvertYButton->setCaptionWithReplacing(Settings::Manager::getBool("invert y axis", "Input") ? "#{sOn}" : "#{sOff}");
|
||||
|
||||
mShadersButton->setCaptionWithReplacing (Settings::Manager::getBool("shaders", "Objects") ? "#{sOn}" : "#{sOff}");
|
||||
mShaderModeButton->setCaption (Settings::Manager::getString("shader mode", "General"));
|
||||
|
||||
mRefractionButton->setCaptionWithReplacing (Settings::Manager::getBool("refraction", "Water") ? "#{sOn}" : "#{sOff}");
|
||||
|
||||
if (!Settings::Manager::getBool("shaders", "Objects"))
|
||||
{
|
||||
mRefractionButton->setEnabled(false);
|
||||
mShadowsEnabledButton->setEnabled(false);
|
||||
}
|
||||
|
||||
mFullscreenButton->setCaptionWithReplacing(Settings::Manager::getBool("fullscreen", "Video") ? "#{sOn}" : "#{sOff}");
|
||||
mVSyncButton->setCaptionWithReplacing(Settings::Manager::getBool("vsync", "Video") ? "#{sOn}": "#{sOff}");
|
||||
mFPSButton->setCaptionWithReplacing(fpsLevelToStr(Settings::Manager::getInt("fps", "HUD")));
|
||||
|
||||
MyGUI::TextBox* fovText;
|
||||
getWidget(fovText, "FovText");
|
||||
fovText->setCaption("Field of View (" + boost::lexical_cast<std::string>(int(Settings::Manager::getInt("field of view", "General"))) + ")");
|
||||
}
|
||||
|
||||
void SettingsWindow::onOkButtonClicked(MyGUI::Widget* _sender)
|
||||
|
@ -320,6 +297,39 @@ namespace MWGui
|
|||
newState = true;
|
||||
}
|
||||
|
||||
if (_sender == mVSyncButton)
|
||||
{
|
||||
// Ogre::Window::setVSyncEnabled is bugged in 1.8
|
||||
#if OGRE_VERSION < (1 << 16 | 9 << 8 | 0)
|
||||
MWBase::Environment::get().getWindowManager()->
|
||||
messageBox("VSync will be applied after a restart", std::vector<std::string>());
|
||||
#endif
|
||||
}
|
||||
|
||||
if (_sender == mShadersButton)
|
||||
{
|
||||
if (newState == false)
|
||||
{
|
||||
// refraction needs shaders to display underwater fog
|
||||
mRefractionButton->setCaptionWithReplacing("#{sOff}");
|
||||
mRefractionButton->setEnabled(false);
|
||||
|
||||
Settings::Manager::setBool("refraction", "Water", false);
|
||||
|
||||
// shadows not supported
|
||||
mShadowsEnabledButton->setEnabled(false);
|
||||
mShadowsEnabledButton->setCaptionWithReplacing("#{sOff}");
|
||||
Settings::Manager::setBool("enabled", "Shadows", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// re-enable
|
||||
mRefractionButton->setEnabled(true);
|
||||
|
||||
mShadowsEnabledButton->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (_sender == mFullscreenButton)
|
||||
{
|
||||
// check if this resolution is supported in fullscreen
|
||||
|
@ -341,64 +351,15 @@ namespace MWGui
|
|||
MWBase::Environment::get().getWindowManager()->
|
||||
messageBox(msg);
|
||||
_sender->castType<MyGUI::Button>()->setCaption(off);
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings::Manager::setBool("fullscreen", "Video", newState);
|
||||
apply();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (_sender == mVSyncButton)
|
||||
|
||||
if (getSettingType(_sender) == checkButtonType)
|
||||
{
|
||||
Settings::Manager::setBool("vsync", "Video", newState);
|
||||
// Ogre::Window::setVSyncEnabled is bugged in 1.8
|
||||
#if OGRE_VERSION < (1 << 16 | 9 << 8 | 0)
|
||||
MWBase::Environment::get().getWindowManager()->
|
||||
messageBox("VSync will be applied after a restart", std::vector<std::string>());
|
||||
#endif
|
||||
apply();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_sender == mVSyncButton)
|
||||
Settings::Manager::setBool("vsync", "Video", newState);
|
||||
if (_sender == mWaterShaderButton)
|
||||
Settings::Manager::setBool("shader", "Water", newState);
|
||||
else if (_sender == mRefractionButton)
|
||||
Settings::Manager::setBool("refraction", "Water", newState);
|
||||
else if (_sender == mReflectObjectsButton)
|
||||
{
|
||||
Settings::Manager::setBool("reflect misc", "Water", newState);
|
||||
Settings::Manager::setBool("reflect statics", "Water", newState);
|
||||
Settings::Manager::setBool("reflect statics small", "Water", newState);
|
||||
}
|
||||
else if (_sender == mReflectActorsButton)
|
||||
Settings::Manager::setBool("reflect actors", "Water", newState);
|
||||
else if (_sender == mReflectTerrainButton)
|
||||
Settings::Manager::setBool("reflect terrain", "Water", newState);
|
||||
else if (_sender == mShadowsEnabledButton)
|
||||
Settings::Manager::setBool("enabled", "Shadows", newState);
|
||||
else if (_sender == mShadowsLargeDistance)
|
||||
Settings::Manager::setBool("split", "Shadows", newState);
|
||||
else if (_sender == mActorShadows)
|
||||
Settings::Manager::setBool("actor shadows", "Shadows", newState);
|
||||
else if (_sender == mStaticsShadows)
|
||||
Settings::Manager::setBool("statics shadows", "Shadows", newState);
|
||||
else if (_sender == mMiscShadows)
|
||||
Settings::Manager::setBool("misc shadows", "Shadows", newState);
|
||||
else if (_sender == mTerrainShadows)
|
||||
Settings::Manager::setBool("terrain shadows", "Shadows", newState);
|
||||
else if (_sender == mInvertYButton)
|
||||
Settings::Manager::setBool("invert y axis", "Input", newState);
|
||||
else if (_sender == mCrosshairButton)
|
||||
Settings::Manager::setBool("crosshair", "HUD", newState);
|
||||
else if (_sender == mSubtitlesButton)
|
||||
Settings::Manager::setBool("subtitles", "GUI", newState);
|
||||
else if (_sender == mBestAttackButton)
|
||||
Settings::Manager::setBool("best attack", "Game", newState);
|
||||
else if (_sender == mGrabCursorButton)
|
||||
Settings::Manager::setBool("grab cursor", "Input", newState);
|
||||
Settings::Manager::setBool(getSettingName(_sender), getSettingCategory(_sender), newState);
|
||||
apply();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -419,50 +380,6 @@ namespace MWGui
|
|||
apply();
|
||||
}
|
||||
|
||||
void SettingsWindow::onShadersToggled(MyGUI::Widget* _sender)
|
||||
{
|
||||
std::string on = MWBase::Environment::get().getWindowManager()->getGameSettingString("sOn", "On");
|
||||
std::string off = MWBase::Environment::get().getWindowManager()->getGameSettingString("sOff", "On");
|
||||
|
||||
std::string val = static_cast<MyGUI::Button*>(_sender)->getCaption();
|
||||
if (val == off)
|
||||
val = on;
|
||||
else
|
||||
val = off;
|
||||
static_cast<MyGUI::Button*>(_sender)->setCaptionWithReplacing (val);
|
||||
|
||||
if (val == off)
|
||||
{
|
||||
Settings::Manager::setBool("shaders", "Objects", false);
|
||||
|
||||
// refraction needs shaders to display underwater fog
|
||||
mRefractionButton->setCaptionWithReplacing("#{sOff}");
|
||||
mRefractionButton->setEnabled(false);
|
||||
|
||||
Settings::Manager::setBool("refraction", "Water", false);
|
||||
Settings::Manager::setBool("underwater effect", "Water", false);
|
||||
|
||||
// shadows not supported
|
||||
mShadowsEnabledButton->setEnabled(false);
|
||||
mShadowsEnabledButton->setCaptionWithReplacing("#{sOff}");
|
||||
Settings::Manager::setBool("enabled", "Shadows", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings::Manager::setBool("shaders", "Objects", true);
|
||||
|
||||
// re-enable
|
||||
mReflectObjectsButton->setEnabled(true);
|
||||
mReflectActorsButton->setEnabled(true);
|
||||
mReflectTerrainButton->setEnabled(true);
|
||||
mRefractionButton->setEnabled(true);
|
||||
|
||||
mShadowsEnabledButton->setEnabled(true);
|
||||
}
|
||||
|
||||
apply();
|
||||
}
|
||||
|
||||
void SettingsWindow::onFpsToggled(MyGUI::Widget* _sender)
|
||||
{
|
||||
int newLevel = (Settings::Manager::getInt("fps", "HUD") + 1) % 3;
|
||||
|
@ -479,39 +396,34 @@ namespace MWGui
|
|||
|
||||
void SettingsWindow::onSliderChangePosition(MyGUI::ScrollBar* scroller, size_t pos)
|
||||
{
|
||||
float val = pos / float(scroller->getScrollRange()-1);
|
||||
if (scroller == mMenuTransparencySlider)
|
||||
Settings::Manager::setFloat("menu transparency", "GUI", val);
|
||||
else if (scroller == mToolTipDelaySlider)
|
||||
Settings::Manager::setFloat("tooltip delay", "GUI", val);
|
||||
else if (scroller == mViewDistanceSlider)
|
||||
Settings::Manager::setFloat("max viewing distance", "Viewing distance", (1-val) * sViewDistMin + val * sViewDistMax);
|
||||
else if (scroller == mFOVSlider)
|
||||
if (getSettingType(scroller) == "Slider")
|
||||
{
|
||||
MyGUI::TextBox* fovText;
|
||||
getWidget(fovText, "FovText");
|
||||
fovText->setCaption("Field of View (" + boost::lexical_cast<std::string>(int((1-val) * sFovMin + val * sFovMax)) + ")");
|
||||
Settings::Manager::setFloat("field of view", "General", (1-val) * sFovMin + val * sFovMax);
|
||||
}
|
||||
else if (scroller == mAnisotropySlider)
|
||||
{
|
||||
mAnisotropyLabel->setCaption("Anisotropy (" + boost::lexical_cast<std::string>(int(val*16)) + ")");
|
||||
Settings::Manager::setInt("anisotropy", "General", val * 16);
|
||||
}
|
||||
else if (scroller == mMasterVolumeSlider)
|
||||
Settings::Manager::setFloat("master volume", "Sound", val);
|
||||
else if (scroller == mVoiceVolumeSlider)
|
||||
Settings::Manager::setFloat("voice volume", "Sound", val);
|
||||
else if (scroller == mEffectsVolumeSlider)
|
||||
Settings::Manager::setFloat("sfx volume", "Sound", val);
|
||||
else if (scroller == mFootstepsVolumeSlider)
|
||||
Settings::Manager::setFloat("footsteps volume", "Sound", val);
|
||||
else if (scroller == mMusicVolumeSlider)
|
||||
Settings::Manager::setFloat("music volume", "Sound", val);
|
||||
else if (scroller == mCameraSensitivitySlider)
|
||||
Settings::Manager::setFloat("camera sensitivity", "Input", (1-val) * 0.2 + val * 5.f);
|
||||
if (getSettingValueType(scroller) == "Float")
|
||||
{
|
||||
float value = pos / float(scroller->getScrollRange()-1);
|
||||
|
||||
apply();
|
||||
float min,max;
|
||||
getSettingMinMax(scroller, min, max);
|
||||
value = min + (max-min) * value;
|
||||
Settings::Manager::setFloat(getSettingName(scroller), getSettingCategory(scroller), value);
|
||||
|
||||
if (scroller == mFOVSlider)
|
||||
{
|
||||
MyGUI::TextBox* fovText;
|
||||
getWidget(fovText, "FovText");
|
||||
fovText->setCaption("Field of View (" + boost::lexical_cast<std::string>(int(value)) + ")");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings::Manager::setInt(getSettingName(scroller), getSettingCategory(scroller), pos);
|
||||
if (scroller == mAnisotropySlider)
|
||||
{
|
||||
mAnisotropyLabel->setCaption("Anisotropy (" + boost::lexical_cast<std::string>(pos) + ")");
|
||||
}
|
||||
}
|
||||
apply();
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsWindow::apply()
|
||||
|
|
|
@ -19,61 +19,29 @@ namespace MWGui
|
|||
|
||||
void updateControlsBox();
|
||||
|
||||
private:
|
||||
static int const sFovMin = 30;
|
||||
static int const sFovMax = 140;
|
||||
static int const sViewDistMin = 2000;
|
||||
static int const sViewDistMax = 5600;
|
||||
|
||||
protected:
|
||||
protected:
|
||||
MyGUI::Button* mOkButton;
|
||||
|
||||
MyGUI::ScrollBar* mMenuTransparencySlider;
|
||||
MyGUI::ScrollBar* mToolTipDelaySlider;
|
||||
MyGUI::Button* mSubtitlesButton;
|
||||
MyGUI::Button* mCrosshairButton;
|
||||
MyGUI::Button* mBestAttackButton;
|
||||
MyGUI::Button* mGrabCursorButton;
|
||||
|
||||
// graphics
|
||||
MyGUI::ListBox* mResolutionList;
|
||||
MyGUI::Button* mFullscreenButton;
|
||||
MyGUI::Button* mVSyncButton;
|
||||
MyGUI::Button* mFPSButton;
|
||||
MyGUI::ScrollBar* mViewDistanceSlider;
|
||||
MyGUI::ScrollBar* mFOVSlider;
|
||||
MyGUI::ScrollBar* mAnisotropySlider;
|
||||
MyGUI::ComboBox* mTextureFilteringButton;
|
||||
MyGUI::TextBox* mAnisotropyLabel;
|
||||
MyGUI::Widget* mAnisotropyBox;
|
||||
MyGUI::Button* mWaterShaderButton;
|
||||
MyGUI::Button* mReflectObjectsButton;
|
||||
MyGUI::Button* mReflectActorsButton;
|
||||
MyGUI::Button* mReflectTerrainButton;
|
||||
MyGUI::Button* mShadersButton;
|
||||
MyGUI::Button* mShaderModeButton;
|
||||
MyGUI::Button* mRefractionButton;
|
||||
|
||||
MyGUI::Button* mShadowsEnabledButton;
|
||||
MyGUI::Button* mShadowsLargeDistance;
|
||||
MyGUI::ComboBox* mShadowsTextureSize;
|
||||
MyGUI::Button* mActorShadows;
|
||||
MyGUI::Button* mStaticsShadows;
|
||||
MyGUI::Button* mMiscShadows;
|
||||
MyGUI::Button* mTerrainShadows;
|
||||
|
||||
// audio
|
||||
MyGUI::ScrollBar* mMasterVolumeSlider;
|
||||
MyGUI::ScrollBar* mVoiceVolumeSlider;
|
||||
MyGUI::ScrollBar* mEffectsVolumeSlider;
|
||||
MyGUI::ScrollBar* mFootstepsVolumeSlider;
|
||||
MyGUI::ScrollBar* mMusicVolumeSlider;
|
||||
|
||||
// controls
|
||||
MyGUI::ScrollView* mControlsBox;
|
||||
MyGUI::Button* mResetControlsButton;
|
||||
MyGUI::Button* mInvertYButton;
|
||||
MyGUI::ScrollBar* mCameraSensitivitySlider;
|
||||
|
||||
void onOkButtonClicked(MyGUI::Widget* _sender);
|
||||
void onFpsToggled(MyGUI::Widget* _sender);
|
||||
|
@ -84,7 +52,6 @@ namespace MWGui
|
|||
void onResolutionAccept();
|
||||
void onResolutionCancel();
|
||||
|
||||
void onShadersToggled(MyGUI::Widget* _sender);
|
||||
void onShaderModeToggled(MyGUI::Widget* _sender);
|
||||
void onShadowTextureSizeChanged(MyGUI::ComboBox* _sender, size_t pos);
|
||||
|
||||
|
@ -94,6 +61,8 @@ namespace MWGui
|
|||
void onResetDefaultBindingsAccept ();
|
||||
|
||||
void apply();
|
||||
|
||||
void configureWidgets(MyGUI::Widget* widget);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -418,10 +418,8 @@ void Water::applyRTT()
|
|||
void Water::applyVisibilityMask()
|
||||
{
|
||||
mVisibilityFlags = RV_Terrain * Settings::Manager::getBool("reflect terrain", "Water")
|
||||
+ RV_Statics * Settings::Manager::getBool("reflect statics", "Water")
|
||||
+ RV_StaticsSmall * Settings::Manager::getBool("reflect small statics", "Water")
|
||||
+ (RV_Statics + RV_StaticsSmall + RV_Misc) * Settings::Manager::getBool("reflect statics", "Water")
|
||||
+ RV_Actors * Settings::Manager::getBool("reflect actors", "Water")
|
||||
+ RV_Misc * Settings::Manager::getBool("reflect misc", "Water")
|
||||
+ RV_Sky;
|
||||
|
||||
if (mReflection)
|
||||
|
@ -444,8 +442,6 @@ void Water::processChangedSettings(const Settings::CategorySettingVector& settin
|
|||
if ( it->first == "Water" && (
|
||||
it->second == "reflect actors"
|
||||
|| it->second == "reflect terrain"
|
||||
|| it->second == "reflect misc"
|
||||
|| it->second == "reflect small statics"
|
||||
|| it->second == "reflect statics"))
|
||||
applyVisMask = true;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 28 352 18" align="Left Top" name="MenuTransparencySlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="GUI"/>
|
||||
<UserString key="SettingName" value="menu transparency"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="SandText" position="4 52 352 18" align="Left Top">
|
||||
<Property key="Caption" value="#{sFull}"/>
|
||||
|
@ -34,6 +38,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 102 352 18" align="Left Top" name="ToolTipDelaySlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="GUI"/>
|
||||
<UserString key="SettingName" value="tooltip delay"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="SandText" position="4 126 352 18" align="Left Top">
|
||||
<Property key="Caption" value="#{sFast}"/>
|
||||
|
@ -45,28 +53,44 @@
|
|||
</Widget>
|
||||
|
||||
<Widget type="HBox" skin="" position="4 170 260 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="BestAttackButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="BestAttackButton">
|
||||
<UserString key="SettingCategory" value="Game"/>
|
||||
<UserString key="SettingName" value="best attack"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="#{sBestAttack}"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" skin="" position="4 200 260 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="SubtitlesButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="SubtitlesButton">
|
||||
<UserString key="SettingCategory" value="GUI"/>
|
||||
<UserString key="SettingName" value="subtitles"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="#{sSubtitles}"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" skin="" position="4 230 260 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="CrosshairButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="CrosshairButton">
|
||||
<UserString key="SettingCategory" value="HUD"/>
|
||||
<UserString key="SettingName" value="crosshair"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="#{sCursorOff}"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" skin="" position="4 260 260 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="GrabCursorButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="GrabCursorButton">
|
||||
<UserString key="SettingCategory" value="Input"/>
|
||||
<UserString key="SettingName" value="grab cursor"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Grab cursor"/>
|
||||
</Widget>
|
||||
|
@ -81,6 +105,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 28 352 18" align="Left Top" name="MasterVolume">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Sound"/>
|
||||
<UserString key="SettingName" value="master volume"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="TextBox" skin="NormalText" position="4 54 352 18" align="Left Top">
|
||||
|
@ -89,6 +117,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 78 352 18" align="Left Top" name="VoiceVolume">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Sound"/>
|
||||
<UserString key="SettingName" value="voice volume"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="TextBox" skin="NormalText" position="4 104 352 18" align="Left Top">
|
||||
|
@ -97,6 +129,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 128 352 18" align="Left Top" name="EffectsVolume">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Sound"/>
|
||||
<UserString key="SettingName" value="sfx volume"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="TextBox" skin="NormalText" position="4 154 352 18" align="Left Top">
|
||||
|
@ -105,6 +141,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 178 352 18" align="Left Top" name="FootstepsVolume">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Sound"/>
|
||||
<UserString key="SettingName" value="footsteps volume"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="TextBox" skin="NormalText" position="4 204 352 18" align="Left Top">
|
||||
|
@ -113,6 +153,10 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 228 352 18" align="Left Top" name="MusicVolume">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Sound"/>
|
||||
<UserString key="SettingName" value="music volume"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
<Widget type="TabItem" skin="" position="4 28 360 312">
|
||||
|
@ -127,7 +171,11 @@
|
|||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 192 300 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" name="InvertYButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" name="InvertYButton">
|
||||
<UserString key="SettingCategory" value="Input"/>
|
||||
<UserString key="SettingName" value="invert y axis"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText">
|
||||
<Property key="Caption" value="#{sMouseFlip}"/>
|
||||
</Widget>
|
||||
|
@ -139,6 +187,12 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 252 336 18" align="Left Top" name="CameraSensitivitySlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Input"/>
|
||||
<UserString key="SettingName" value="camera sensitivity"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
<UserString key="SettingMin" value="0.2"/>
|
||||
<UserString key="SettingMax" value="5.0"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="SandText" position="4 276 336 18" align="Left Top">
|
||||
<Property key="Caption" value="#{sLow}"/>
|
||||
|
@ -149,8 +203,6 @@
|
|||
<Property key="TextAlign" value="Right"/>
|
||||
</Widget>
|
||||
|
||||
|
||||
|
||||
</Widget>
|
||||
<Widget type="TabItem" skin="" position="4 28 360 312">
|
||||
<Property key="Caption" value=" #{sVideo} "/>
|
||||
|
@ -163,16 +215,23 @@
|
|||
|
||||
<Widget type="ListBox" skin="MW_List" position="0 4 170 170" align="Left Top" name="ResolutionList"/>
|
||||
|
||||
|
||||
<Widget type="HBox" position="182 4 300 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="FullscreenButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="FullscreenButton">
|
||||
<UserString key="SettingCategory" value="Video"/>
|
||||
<UserString key="SettingName" value="fullscreen"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Fullscreen"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="182 34 300 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="VSyncButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="VSyncButton">
|
||||
<UserString key="SettingCategory" value="Video"/>
|
||||
<UserString key="SettingName" value="vsync"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="VSync"/>
|
||||
</Widget>
|
||||
|
@ -186,7 +245,11 @@
|
|||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="182 94 300 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ShadersButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ShadersButton">
|
||||
<UserString key="SettingCategory" value="Objects"/>
|
||||
<UserString key="SettingName" value="shaders"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Object shaders"/>
|
||||
</Widget>
|
||||
|
@ -205,6 +268,12 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="0 222 329 18" align="Left Top" name="FOVSlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="General"/>
|
||||
<UserString key="SettingName" value="field of view"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
<UserString key="SettingMin" value="30"/>
|
||||
<UserString key="SettingMax" value="110"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="SandText" position="0 246 329 18" align="Left Top">
|
||||
<Property key="Caption" value="#{sLow}"/>
|
||||
|
@ -233,8 +302,10 @@
|
|||
<Property key="Caption" value="Anisotropy"/>
|
||||
</Widget>
|
||||
<Widget type="MWScrollBar" skin="MW_HScroll" position="0 28 150 18" align="Left Top" name="AnisotropySlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<Property key="Range" value="17"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="General"/>
|
||||
<UserString key="SettingName" value="anisotropy"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
|
@ -244,6 +315,12 @@
|
|||
<Widget type="MWScrollBar" skin="MW_HScroll" position="4 154 322 18" align="Left Top" name="ViewDistanceSlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="Viewing distance"/>
|
||||
<UserString key="SettingName" value="max viewing distance"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
<UserString key="SettingMin" value="2000"/>
|
||||
<UserString key="SettingMax" value="5600"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="SandText" position="4 178 332 18" align="Left Top">
|
||||
<Property key="Caption" value="#{sNear}"/>
|
||||
|
@ -260,7 +337,11 @@
|
|||
|
||||
|
||||
<Widget type="HBox" position="4 4 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" position="4 4 34 24" align="Left Top" name="WaterShaderButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" position="4 4 34 24" align="Left Top" name="WaterShaderButton">
|
||||
<UserString key="SettingCategory" value="Water"/>
|
||||
<UserString key="SettingName" value="shader"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" position="42 4 120 24" align="Left Top">
|
||||
<Property key="Caption" value="Reflection"/>
|
||||
</Widget>
|
||||
|
@ -269,21 +350,33 @@
|
|||
|
||||
<Widget type="Widget" skin="" position="24 32 300 230">
|
||||
<Widget type="HBox" position="4 0 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ReflectActorsButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ReflectActorsButton">
|
||||
<UserString key="SettingCategory" value="Water"/>
|
||||
<UserString key="SettingName" value="reflect actors"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Reflect actors"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 28 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ReflectObjectsButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ReflectObjectsButton">
|
||||
<UserString key="SettingCategory" value="Water"/>
|
||||
<UserString key="SettingName" value="reflect statics"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Reflect objects"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 56 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ReflectTerrainButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ReflectTerrainButton">
|
||||
<UserString key="SettingCategory" value="Water"/>
|
||||
<UserString key="SettingName" value="reflect terrain"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Reflect terrain"/>
|
||||
</Widget>
|
||||
|
@ -291,7 +384,11 @@
|
|||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 135 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="RefractionButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="RefractionButton">
|
||||
<UserString key="SettingCategory" value="Water"/>
|
||||
<UserString key="SettingName" value="refraction"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Refraction"/>
|
||||
</Widget>
|
||||
|
@ -302,7 +399,11 @@
|
|||
<Property key="Caption" value=" Shadows "/>
|
||||
|
||||
<Widget type="HBox" position="4 4 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ShadowsEnabledButton"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ShadowsEnabledButton">
|
||||
<UserString key="SettingCategory" value="Shadows"/>
|
||||
<UserString key="SettingName" value="enabled"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Enabled"/>
|
||||
</Widget>
|
||||
|
@ -311,35 +412,52 @@
|
|||
<Widget type="Widget" skin="" position="24 32 300 230">
|
||||
|
||||
<Widget type="HBox" position="4 0 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ShadowsLargeDistance"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ShadowsLargeDistance">
|
||||
<UserString key="SettingCategory" value="Shadows"/>
|
||||
<UserString key="SettingName" value="split"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Large distance (PSSM3)"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 28 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="TerrainShadows"/>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Terrain shadows"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="TerrainShadows">
|
||||
<UserString key="SettingCategory" value="Shadows"/>
|
||||
<UserString key="SettingName" value="terrain shadows"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 56 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ActorShadows"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="ActorShadows">
|
||||
<UserString key="SettingCategory" value="Shadows"/>
|
||||
<UserString key="SettingName" value="actor shadows"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Actor shadows"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 84 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="StaticsShadows"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="StaticsShadows">
|
||||
<UserString key="SettingCategory" value="Shadows"/>
|
||||
<UserString key="SettingName" value="statics shadows"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="World shadows"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="HBox" position="4 112 350 24">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="MiscShadows"/>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" align="Left Top" name="MiscShadows">
|
||||
<UserString key="SettingCategory" value="Shadows"/>
|
||||
<UserString key="SettingName" value="misc shadows"/>
|
||||
<UserString key="SettingType" value="CheckButton"/>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" align="Left Top">
|
||||
<Property key="Caption" value="Misc shadows"/>
|
||||
</Widget>
|
||||
|
|
|
@ -137,9 +137,7 @@ refraction = true
|
|||
rtt size = 512
|
||||
reflect terrain = true
|
||||
reflect statics = false
|
||||
reflect small statics = false
|
||||
reflect actors = false
|
||||
reflect misc = false
|
||||
|
||||
[Sound]
|
||||
# Device name. Blank means default
|
||||
|
|
Loading…
Reference in a new issue