private void MainForm_Load(object sender, EventArgs e) { //Engine.config parameters string renderingSystemComponentName = ""; bool allowShaders = true; bool depthBufferAccess = true; string fullSceneAntialiasing = ""; RendererWorld.FilteringModes filtering = RendererWorld.FilteringModes.RecommendedSetting; string renderTechnique = ""; bool fullScreen = true; string videoMode = ""; bool multiMonitorMode = false; bool verticalSync = true; bool allowChangeDisplayFrequency = true; string physicsSystemComponentName = ""; //bool physicsAllowHardwareAcceleration = false; string soundSystemComponentName = ""; string language = "Autodetect"; bool localizeEngine = true; bool localizeToolset = true; string renderingDeviceName = ""; int renderingDeviceIndex = 0; //load from Deployment.config if (VirtualFileSystem.Deployed) { if (!string.IsNullOrEmpty(VirtualFileSystem.DeploymentParameters.DefaultLanguage)) language = VirtualFileSystem.DeploymentParameters.DefaultLanguage; } //load from Engine.config { string error; TextBlock block = TextBlockUtils.LoadFromRealFile( VirtualFileSystem.GetRealPathByVirtual("user:Configs/Engine.config"), out error); if (block != null) { //Renderer TextBlock rendererBlock = block.FindChild("Renderer"); if (rendererBlock != null) { renderingSystemComponentName = rendererBlock.GetAttribute("implementationComponent"); if (rendererBlock.IsAttributeExist("renderingDeviceName")) renderingDeviceName = rendererBlock.GetAttribute("renderingDeviceName"); if (rendererBlock.IsAttributeExist("renderingDeviceIndex")) renderingDeviceIndex = int.Parse(rendererBlock.GetAttribute("renderingDeviceIndex")); if (rendererBlock.IsAttributeExist("allowShaders")) allowShaders = bool.Parse(rendererBlock.GetAttribute("allowShaders")); if (rendererBlock.IsAttributeExist("depthBufferAccess")) depthBufferAccess = bool.Parse(rendererBlock.GetAttribute("depthBufferAccess")); if (rendererBlock.IsAttributeExist("fullSceneAntialiasing")) fullSceneAntialiasing = rendererBlock.GetAttribute("fullSceneAntialiasing"); if (rendererBlock.IsAttributeExist("filtering")) { try { filtering = (RendererWorld.FilteringModes) Enum.Parse(typeof(RendererWorld.FilteringModes), rendererBlock.GetAttribute("filtering")); } catch { } } if (rendererBlock.IsAttributeExist("renderTechnique")) renderTechnique = rendererBlock.GetAttribute("renderTechnique"); if (rendererBlock.IsAttributeExist("fullScreen")) fullScreen = bool.Parse(rendererBlock.GetAttribute("fullScreen")); if (rendererBlock.IsAttributeExist("videoMode")) videoMode = rendererBlock.GetAttribute("videoMode"); if (rendererBlock.IsAttributeExist("multiMonitorMode")) multiMonitorMode = bool.Parse(rendererBlock.GetAttribute("multiMonitorMode")); if (rendererBlock.IsAttributeExist("verticalSync")) verticalSync = bool.Parse(rendererBlock.GetAttribute("verticalSync")); if (rendererBlock.IsAttributeExist("allowChangeDisplayFrequency")) allowChangeDisplayFrequency = bool.Parse( rendererBlock.GetAttribute("allowChangeDisplayFrequency")); } //Physics system TextBlock physicsSystemBlock = block.FindChild("PhysicsSystem"); if (physicsSystemBlock != null) { physicsSystemComponentName = physicsSystemBlock.GetAttribute("implementationComponent"); //if( physicsSystemBlock.IsAttributeExist( "allowHardwareAcceleration" ) ) //{ // physicsAllowHardwareAcceleration = // bool.Parse( physicsSystemBlock.GetAttribute( "allowHardwareAcceleration" ) ); //} } //Sound system TextBlock soundSystemBlock = block.FindChild("SoundSystem"); if (soundSystemBlock != null) soundSystemComponentName = soundSystemBlock.GetAttribute("implementationComponent"); //Localization TextBlock localizationBlock = block.FindChild("Localization"); if (localizationBlock != null) { if (localizationBlock.IsAttributeExist("language")) language = localizationBlock.GetAttribute("language"); if (localizationBlock.IsAttributeExist("localizeEngine")) localizeEngine = bool.Parse(localizationBlock.GetAttribute("localizeEngine")); if (localizationBlock.IsAttributeExist("localizeToolset")) localizeToolset = bool.Parse(localizationBlock.GetAttribute("localizeToolset")); } } } //init toolset language if (localizeToolset) { if (!string.IsNullOrEmpty(language)) { string language2 = language; if (string.Compare(language2, "autodetect", true) == 0) language2 = DetectLanguage(); string languageDirectory = Path.Combine(LanguageManager.LanguagesDirectory, language2); string fileName = Path.Combine(languageDirectory, "Configurator.language"); ToolsLocalization.Init(fileName); } } //fill render system { EngineComponentManager.ComponentInfo[] components = GetSortedComponentsByType( EngineComponentManager.ComponentTypeFlags.RenderingSystem); if (string.IsNullOrEmpty(renderingSystemComponentName)) { //find component by default foreach (EngineComponentManager.ComponentInfo component2 in components) { if (component2.IsEnabledByDefaultForThisPlatform()) { renderingSystemComponentName = component2.Name; break; } } } //rendering systems combo box foreach (EngineComponentManager.ComponentInfo component in components) { string text = component.FullName; if (component.IsEnabledByDefaultForThisPlatform()) text = string.Format(Translate("{0} (default)"), text); int itemId = comboBoxRenderSystems.Items.Add(text); if (renderingSystemComponentName == component.Name) comboBoxRenderSystems.SelectedIndex = itemId; } if (comboBoxRenderSystems.Items.Count != 0 && comboBoxRenderSystems.SelectedIndex == -1) comboBoxRenderSystems.SelectedIndex = 0; //rendering device { if (comboBoxRenderingDevices.Items.Count > 1 && !string.IsNullOrEmpty(renderingDeviceName)) { int deviceCountWithSelectedName = 0; for (int n = 1; n < comboBoxRenderingDevices.Items.Count; n++) { string name = (string)comboBoxRenderingDevices.Items[n]; if (name == renderingDeviceName) { comboBoxRenderingDevices.SelectedIndex = n; deviceCountWithSelectedName++; } } if (deviceCountWithSelectedName > 1) { int comboBoxIndex = renderingDeviceIndex + 1; if (comboBoxIndex < comboBoxRenderingDevices.Items.Count) { string name = (string)comboBoxRenderingDevices.Items[comboBoxIndex]; if (name == renderingDeviceName) comboBoxRenderingDevices.SelectedIndex = comboBoxIndex; } } } if (comboBoxRenderingDevices.SelectedIndex == -1 && comboBoxRenderingDevices.Items.Count != 0) comboBoxRenderingDevices.SelectedIndex = 0; } //allowShaders checkBoxAllowShaders.Checked = allowShaders; //depthBufferAccess comboBoxDepthBufferAccess.Items.Add(Translate("No")); comboBoxDepthBufferAccess.Items.Add(Translate("Yes")); comboBoxDepthBufferAccess.SelectedIndex = depthBufferAccess ? 1 : 0; //fullSceneAntialiasing for (int n = 0; n < comboBoxAntialiasing.Items.Count; n++) { ComboBoxItem item = (ComboBoxItem)comboBoxAntialiasing.Items[n]; if (item.Identifier == fullSceneAntialiasing) comboBoxAntialiasing.SelectedIndex = n; } if (comboBoxAntialiasing.SelectedIndex == -1) comboBoxAntialiasing.SelectedIndex = 0; //filtering { Type enumType = typeof(RendererWorld.FilteringModes); LocalizedEnumConverter enumConverter = new LocalizedEnumConverter(enumType); RendererWorld.FilteringModes[] values = (RendererWorld.FilteringModes[])Enum.GetValues(enumType); for (int n = 0; n < values.Length; n++) { RendererWorld.FilteringModes value = values[n]; int index = comboBoxFiltering.Items.Add(enumConverter.ConvertToString(value)); if (filtering == value) comboBoxFiltering.SelectedIndex = index; } } //renderTechnique { comboBoxRenderTechnique.Items.Add(new ComboBoxItem("RecommendedSetting", "Recommended setting")); comboBoxRenderTechnique.Items.Add(new ComboBoxItem("Standard", "Low Dynamic Range (Standard)")); comboBoxRenderTechnique.Items.Add(new ComboBoxItem("HDR", "64-bit High Dynamic Range (HDR)")); for (int n = 0; n < comboBoxRenderTechnique.Items.Count; n++) { ComboBoxItem item = (ComboBoxItem)comboBoxRenderTechnique.Items[n]; if (item.Identifier == renderTechnique) comboBoxRenderTechnique.SelectedIndex = n; } if (comboBoxRenderTechnique.SelectedIndex == -1) comboBoxRenderTechnique.SelectedIndex = 0; } //video mode { comboBoxVideoMode.Items.Add(Translate("Current screen resolution")); comboBoxVideoMode.SelectedIndex = 0; comboBoxVideoMode.Items.Add(Translate("Use all displays (multi-monitor mode)")); if (multiMonitorMode) comboBoxVideoMode.SelectedIndex = 1; foreach (Vec2I mode in DisplaySettings.VideoModes) { if (mode.X < 640) continue; comboBoxVideoMode.Items.Add(string.Format("{0}x{1}", mode.X, mode.Y)); if (mode.ToString() == videoMode) comboBoxVideoMode.SelectedIndex = comboBoxVideoMode.Items.Count - 1; } if (!string.IsNullOrEmpty(videoMode) && comboBoxVideoMode.SelectedIndex == 0) { try { Vec2I mode = Vec2I.Parse(videoMode); comboBoxVideoMode.Items.Add(string.Format("{0}x{1}", mode.X, mode.Y)); comboBoxVideoMode.SelectedIndex = comboBoxVideoMode.Items.Count - 1; } catch { } } } //full screen checkBoxFullScreen.Checked = fullScreen; //vertical sync checkBoxVerticalSync.Checked = verticalSync; } //fill physics system page { EngineComponentManager.ComponentInfo[] components = GetSortedComponentsByType( EngineComponentManager.ComponentTypeFlags.PhysicsSystem); if (string.IsNullOrEmpty(physicsSystemComponentName)) { //find component by default foreach (EngineComponentManager.ComponentInfo component2 in components) { if (component2.IsEnabledByDefaultForThisPlatform()) { physicsSystemComponentName = component2.Name; break; } } } //update combo box foreach (EngineComponentManager.ComponentInfo component in components) { string text = component.FullName; if (component.IsEnabledByDefaultForThisPlatform()) text = string.Format(Translate("{0} (default)"), text); int itemId = comboBoxPhysicsSystems.Items.Add(text); if (physicsSystemComponentName == component.Name) comboBoxPhysicsSystems.SelectedIndex = itemId; } if (comboBoxPhysicsSystems.SelectedIndex == -1) comboBoxPhysicsSystems.SelectedIndex = 0; //if( checkBoxPhysicsAllowHardwareAcceleration.Enabled ) // checkBoxPhysicsAllowHardwareAcceleration.Checked = physicsAllowHardwareAcceleration; } //fill sound system page { EngineComponentManager.ComponentInfo[] components = GetSortedComponentsByType( EngineComponentManager.ComponentTypeFlags.SoundSystem); if (string.IsNullOrEmpty(soundSystemComponentName)) { //find component by default foreach (EngineComponentManager.ComponentInfo component2 in components) { if (component2.IsEnabledByDefaultForThisPlatform()) { soundSystemComponentName = component2.Name; break; } } } //update combo box foreach (EngineComponentManager.ComponentInfo component in components) { string text = component.FullName; if (component.IsEnabledByDefaultForThisPlatform()) text = string.Format(Translate("{0} (default)"), text); int itemId = comboBoxSoundSystems.Items.Add(text); if (soundSystemComponentName == component.Name) comboBoxSoundSystems.SelectedIndex = itemId; } if (comboBoxSoundSystems.SelectedIndex == -1) comboBoxSoundSystems.SelectedIndex = 0; } //fill localization page { List<string> languages = new List<string>(); { languages.Add(Translate("Autodetect")); string[] directories = VirtualDirectory.GetDirectories(LanguageManager.LanguagesDirectory, "*.*", SearchOption.TopDirectoryOnly); foreach (string directory in directories) languages.Add(Path.GetFileNameWithoutExtension(directory)); } foreach (string lang in languages) { int itemId = comboBoxLanguages.Items.Add(lang); if (string.Compare(language, lang, true) == 0) comboBoxLanguages.SelectedIndex = itemId; } if (comboBoxLanguages.SelectedIndex == -1) comboBoxLanguages.SelectedIndex = 0; checkBoxLocalizeEngine.Checked = localizeEngine; checkBoxLocalizeToolset.Checked = localizeToolset; } Translate(); formLoaded = true; }
/////////////////////////////////////////// protected override void OnAttach() { base.OnAttach(); ComboBox comboBox; ScrollBar scrollBar; CheckBox checkBox; TextBox textBox; window = ControlDeclarationManager.Instance.CreateControl( "Gui\\OptionsWindow.gui" ); Controls.Add( window ); tabControl = (TabControl)window.Controls[ "TabControl" ]; BackColor = new ColorValue( 0, 0, 0, .5f ); MouseCover = true; //load Engine.config TextBlock engineConfigBlock = LoadEngineConfig(); TextBlock rendererBlock = null; if( engineConfigBlock != null ) rendererBlock = engineConfigBlock.FindChild( "Renderer" ); //page buttons pageButtons[ 0 ] = (Button)window.Controls[ "ButtonVideo" ]; pageButtons[ 1 ] = (Button)window.Controls[ "ButtonShadows" ]; pageButtons[ 2 ] = (Button)window.Controls[ "ButtonSound" ]; pageButtons[ 3 ] = (Button)window.Controls[ "ButtonControls" ]; pageButtons[ 4 ] = (Button)window.Controls[ "ButtonLanguage" ]; foreach( Button pageButton in pageButtons ) pageButton.Click += new Button.ClickDelegate( pageButton_Click ); //Close button ( (Button)window.Controls[ "Close" ] ).Click += delegate( Button sender ) { SetShouldDetach(); }; //pageVideo { Control pageVideo = tabControl.Controls[ "Video" ]; Vec2I currentMode = EngineApp.Instance.VideoMode; //screenResolutionComboBox comboBox = (ComboBox)pageVideo.Controls[ "ScreenResolution" ]; comboBox.Enable = !EngineApp.Instance.MultiMonitorMode; comboBoxResolution = comboBox; if( EngineApp.Instance.MultiMonitorMode ) { comboBox.Items.Add( string.Format( "{0}x{1} (multi-monitor)", currentMode.X, currentMode.Y ) ); comboBox.SelectedIndex = 0; } else { foreach( Vec2I mode in DisplaySettings.VideoModes ) { if( mode.X < 640 ) continue; comboBox.Items.Add( string.Format( "{0}x{1}", mode.X, mode.Y ) ); if( mode == currentMode ) comboBox.SelectedIndex = comboBox.Items.Count - 1; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { ChangeVideoMode(); }; } //gamma scrollBar = (ScrollBar)pageVideo.Controls[ "Gamma" ]; scrollBar.Value = GameEngineApp._Gamma; scrollBar.Enable = true; scrollBar.ValueChange += delegate( ScrollBar sender ) { float value = float.Parse( sender.Value.ToString( "F1" ) ); GameEngineApp._Gamma = value; pageVideo.Controls[ "GammaValue" ].Text = value.ToString( "F1" ); }; pageVideo.Controls[ "GammaValue" ].Text = GameEngineApp._Gamma.ToString( "F1" ); //MaterialScheme { comboBox = (ComboBox)pageVideo.Controls[ "MaterialScheme" ]; foreach( MaterialSchemes materialScheme in Enum.GetValues( typeof( MaterialSchemes ) ) ) { comboBox.Items.Add( materialScheme.ToString() ); if( GameEngineApp.MaterialScheme == materialScheme ) comboBox.SelectedIndex = comboBox.Items.Count - 1; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { if( sender.SelectedIndex != -1 ) GameEngineApp.MaterialScheme = (MaterialSchemes)sender.SelectedIndex; }; } //fullScreen checkBox = (CheckBox)pageVideo.Controls[ "FullScreen" ]; checkBox.Enable = !EngineApp.Instance.MultiMonitorMode; checkBox.Checked = EngineApp.Instance.FullScreen; checkBox.CheckedChange += delegate( CheckBox sender ) { EngineApp.Instance.FullScreen = sender.Checked; }; //RenderTechnique { comboBox = (ComboBox)pageVideo.Controls[ "RenderTechnique" ]; comboBox.Items.Add( new ComboBoxItem( "RecommendedSetting", Translate( "Recommended setting" ) ) ); comboBox.Items.Add( new ComboBoxItem( "Standard", Translate( "Low Dynamic Range (Standard)" ) ) ); comboBox.Items.Add( new ComboBoxItem( "HDR", Translate( "High Dynamic Range (HDR)" ) ) ); string renderTechnique = ""; if( rendererBlock != null && rendererBlock.IsAttributeExist( "renderTechnique" ) ) renderTechnique = rendererBlock.GetAttribute( "renderTechnique" ); for( int n = 0; n < comboBox.Items.Count; n++ ) { ComboBoxItem item = (ComboBoxItem)comboBox.Items[ n ]; if( item.Identifier == renderTechnique ) comboBox.SelectedIndex = n; } if( comboBox.SelectedIndex == -1 ) comboBox.SelectedIndex = 0; comboBox.SelectedIndexChange += comboBoxRenderTechnique_SelectedIndexChange; } //Filtering { comboBox = (ComboBox)pageVideo.Controls[ "Filtering" ]; Type enumType = typeof( RendererWorld.FilteringModes ); LocalizedEnumConverter enumConverter = new LocalizedEnumConverter( enumType ); RendererWorld.FilteringModes filtering = RendererWorld.FilteringModes.RecommendedSetting; //get value from Engine.config. if( rendererBlock != null && rendererBlock.IsAttributeExist( "filtering" ) ) { try { filtering = (RendererWorld.FilteringModes)Enum.Parse( enumType, rendererBlock.GetAttribute( "filtering" ) ); } catch { } } RendererWorld.FilteringModes[] values = (RendererWorld.FilteringModes[])Enum.GetValues( enumType ); for( int n = 0; n < values.Length; n++ ) { RendererWorld.FilteringModes value = values[ n ]; string valueStr = enumConverter.ConvertToString( value ); comboBox.Items.Add( new ComboBoxItem( value.ToString(), Translate( valueStr ) ) ); if( filtering == value ) comboBox.SelectedIndex = comboBox.Items.Count - 1; } if( comboBox.SelectedIndex == -1 ) comboBox.SelectedIndex = 0; comboBox.SelectedIndexChange += comboBoxFiltering_SelectedIndexChange; } //DepthBufferAccess { checkBox = (CheckBox)pageVideo.Controls[ "DepthBufferAccess" ]; checkBoxDepthBufferAccess = checkBox; bool depthBufferAccess = true; //get value from Engine.config. if( rendererBlock != null && rendererBlock.IsAttributeExist( "depthBufferAccess" ) ) depthBufferAccess = bool.Parse( rendererBlock.GetAttribute( "depthBufferAccess" ) ); checkBox.Checked = depthBufferAccess; checkBox.CheckedChange += checkBoxDepthBufferAccess_CheckedChange; } //FSAA { comboBox = (ComboBox)pageVideo.Controls[ "FSAA" ]; comboBoxAntialiasing = comboBox; UpdateComboBoxAntialiasing(); string fullSceneAntialiasing = ""; if( rendererBlock != null && rendererBlock.IsAttributeExist( "fullSceneAntialiasing" ) ) fullSceneAntialiasing = rendererBlock.GetAttribute( "fullSceneAntialiasing" ); for( int n = 0; n < comboBoxAntialiasing.Items.Count; n++ ) { ComboBoxItem item = (ComboBoxItem)comboBoxAntialiasing.Items[ n ]; if( item.Identifier == fullSceneAntialiasing ) comboBoxAntialiasing.SelectedIndex = n; } comboBoxAntialiasing.SelectedIndexChange += comboBoxAntialiasing_SelectedIndexChange; } //VerticalSync { checkBox = (CheckBox)pageVideo.Controls[ "VerticalSync" ]; bool verticalSync = RendererWorld.InitializationOptions.VerticalSync; //get value from Engine.config. if( rendererBlock != null && rendererBlock.IsAttributeExist( "verticalSync" ) ) verticalSync = bool.Parse( rendererBlock.GetAttribute( "verticalSync" ) ); checkBox.Checked = verticalSync; checkBox.CheckedChange += checkBoxVerticalSync_CheckedChange; } //VideoRestart { Button button = (Button)pageVideo.Controls[ "VideoRestart" ]; button.Click += buttonVideoRestart_Click; } //waterReflectionLevel comboBox = (ComboBox)pageVideo.Controls[ "WaterReflectionLevel" ]; foreach( WaterPlane.ReflectionLevels level in Enum.GetValues( typeof( WaterPlane.ReflectionLevels ) ) ) { comboBox.Items.Add( level ); if( GameEngineApp.WaterReflectionLevel == level ) comboBox.SelectedIndex = comboBox.Items.Count - 1; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { GameEngineApp.WaterReflectionLevel = (WaterPlane.ReflectionLevels)sender.SelectedItem; }; //showDecorativeObjects checkBox = (CheckBox)pageVideo.Controls[ "ShowDecorativeObjects" ]; checkBox.Checked = GameEngineApp.ShowDecorativeObjects; checkBox.CheckedChange += delegate( CheckBox sender ) { GameEngineApp.ShowDecorativeObjects = sender.Checked; }; //showSystemCursorCheckBox checkBox = (CheckBox)pageVideo.Controls[ "ShowSystemCursor" ]; checkBox.Checked = GameEngineApp._ShowSystemCursor; checkBox.CheckedChange += delegate( CheckBox sender ) { GameEngineApp._ShowSystemCursor = sender.Checked; sender.Checked = GameEngineApp._ShowSystemCursor; }; //showFPSCheckBox checkBox = (CheckBox)pageVideo.Controls[ "ShowFPS" ]; checkBox.Checked = GameEngineApp._DrawFPS; checkBox.CheckedChange += delegate( CheckBox sender ) { GameEngineApp._DrawFPS = sender.Checked; sender.Checked = GameEngineApp._DrawFPS; }; } //pageShadows { Control pageShadows = tabControl.Controls[ "Shadows" ]; //ShadowTechnique { comboBox = (ComboBox)pageShadows.Controls[ "ShadowTechnique" ]; comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.None, "None" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.ShadowmapLow, "Shadowmap Low" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.ShadowmapMedium, "Shadowmap Medium" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.ShadowmapHigh, "Shadowmap High" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.ShadowmapLowPSSM, "PSSMx3 Low" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.ShadowmapMediumPSSM, "PSSMx3 Medium" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.ShadowmapHighPSSM, "PSSMx3 High" ) ); comboBox.Items.Add( new ShadowTechniqueItem( ShadowTechniques.Stencil, "Stencil" ) ); for( int n = 0; n < comboBox.Items.Count; n++ ) { ShadowTechniqueItem item = (ShadowTechniqueItem)comboBox.Items[ n ]; if( item.Technique == GameEngineApp.ShadowTechnique ) comboBox.SelectedIndex = n; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { if( sender.SelectedIndex != -1 ) { ShadowTechniqueItem item = (ShadowTechniqueItem)sender.SelectedItem; GameEngineApp.ShadowTechnique = item.Technique; } UpdateShadowControlsEnable(); }; UpdateShadowControlsEnable(); } //ShadowUseMapSettings { checkBox = (CheckBox)pageShadows.Controls[ "ShadowUseMapSettings" ]; checkBox.Checked = GameEngineApp.ShadowUseMapSettings; checkBox.CheckedChange += delegate( CheckBox sender ) { GameEngineApp.ShadowUseMapSettings = sender.Checked; if( sender.Checked && Map.Instance != null ) { GameEngineApp.ShadowPSSMSplitFactors = Map.Instance.InitialShadowPSSMSplitFactors; GameEngineApp.ShadowFarDistance = Map.Instance.InitialShadowFarDistance; GameEngineApp.ShadowColor = Map.Instance.InitialShadowColor; } UpdateShadowControlsEnable(); if( sender.Checked ) { ( (ScrollBar)pageShadows.Controls[ "ShadowFarDistance" ] ).Value = GameEngineApp.ShadowFarDistance; pageShadows.Controls[ "ShadowFarDistanceValue" ].Text = ( (int)GameEngineApp.ShadowFarDistance ).ToString(); ColorValue color = GameEngineApp.ShadowColor; ( (ScrollBar)pageShadows.Controls[ "ShadowColor" ] ).Value = ( color.Red + color.Green + color.Blue ) / 3; } }; } //ShadowPSSMSplitFactor1 scrollBar = (ScrollBar)pageShadows.Controls[ "ShadowPSSMSplitFactor1" ]; scrollBar.Value = GameEngineApp.ShadowPSSMSplitFactors[ 0 ]; scrollBar.ValueChange += delegate( ScrollBar sender ) { GameEngineApp.ShadowPSSMSplitFactors = new Vec2( sender.Value, GameEngineApp.ShadowPSSMSplitFactors[ 1 ] ); pageShadows.Controls[ "ShadowPSSMSplitFactor1Value" ].Text = ( GameEngineApp.ShadowPSSMSplitFactors[ 0 ].ToString( "F2" ) ).ToString(); }; pageShadows.Controls[ "ShadowPSSMSplitFactor1Value" ].Text = ( GameEngineApp.ShadowPSSMSplitFactors[ 0 ].ToString( "F2" ) ).ToString(); //ShadowPSSMSplitFactor2 scrollBar = (ScrollBar)pageShadows.Controls[ "ShadowPSSMSplitFactor2" ]; scrollBar.Value = GameEngineApp.ShadowPSSMSplitFactors[ 1 ]; scrollBar.ValueChange += delegate( ScrollBar sender ) { GameEngineApp.ShadowPSSMSplitFactors = new Vec2( GameEngineApp.ShadowPSSMSplitFactors[ 0 ], sender.Value ); pageShadows.Controls[ "ShadowPSSMSplitFactor2Value" ].Text = ( GameEngineApp.ShadowPSSMSplitFactors[ 1 ].ToString( "F2" ) ).ToString(); }; pageShadows.Controls[ "ShadowPSSMSplitFactor2Value" ].Text = ( GameEngineApp.ShadowPSSMSplitFactors[ 1 ].ToString( "F2" ) ).ToString(); //ShadowFarDistance scrollBar = (ScrollBar)pageShadows.Controls[ "ShadowFarDistance" ]; scrollBar.Value = GameEngineApp.ShadowFarDistance; scrollBar.ValueChange += delegate( ScrollBar sender ) { GameEngineApp.ShadowFarDistance = sender.Value; pageShadows.Controls[ "ShadowFarDistanceValue" ].Text = ( (int)GameEngineApp.ShadowFarDistance ).ToString(); }; pageShadows.Controls[ "ShadowFarDistanceValue" ].Text = ( (int)GameEngineApp.ShadowFarDistance ).ToString(); //ShadowColor scrollBar = (ScrollBar)pageShadows.Controls[ "ShadowColor" ]; scrollBar.Value = ( GameEngineApp.ShadowColor.Red + GameEngineApp.ShadowColor.Green + GameEngineApp.ShadowColor.Blue ) / 3; scrollBar.ValueChange += delegate( ScrollBar sender ) { float color = sender.Value; GameEngineApp.ShadowColor = new ColorValue( color, color, color, color ); }; //ShadowDirectionalLightTextureSize { comboBox = (ComboBox)pageShadows.Controls[ "ShadowDirectionalLightTextureSize" ]; for( int value = 256, index = 0; value <= 8192; value *= 2, index++ ) { comboBox.Items.Add( value ); if( GameEngineApp.ShadowDirectionalLightTextureSize == value ) comboBox.SelectedIndex = index; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { GameEngineApp.ShadowDirectionalLightTextureSize = (int)sender.SelectedItem; }; } ////ShadowDirectionalLightMaxTextureCount //{ // comboBox = (EComboBox)pageVideo.Controls[ "ShadowDirectionalLightMaxTextureCount" ]; // for( int n = 0; n < 3; n++ ) // { // int count = n + 1; // comboBox.Items.Add( count ); // if( count == GameEngineApp.ShadowDirectionalLightMaxTextureCount ) // comboBox.SelectedIndex = n; // } // comboBox.SelectedIndexChange += delegate( EComboBox sender ) // { // GameEngineApp.ShadowDirectionalLightMaxTextureCount = (int)sender.SelectedItem; // }; //} //ShadowSpotLightTextureSize { comboBox = (ComboBox)pageShadows.Controls[ "ShadowSpotLightTextureSize" ]; for( int value = 256, index = 0; value <= 8192; value *= 2, index++ ) { comboBox.Items.Add( value ); if( GameEngineApp.ShadowSpotLightTextureSize == value ) comboBox.SelectedIndex = index; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { GameEngineApp.ShadowSpotLightTextureSize = (int)sender.SelectedItem; }; } //ShadowSpotLightMaxTextureCount { comboBox = (ComboBox)pageShadows.Controls[ "ShadowSpotLightMaxTextureCount" ]; for( int n = 0; n < 3; n++ ) { int count = n + 1; comboBox.Items.Add( count ); if( count == GameEngineApp.ShadowSpotLightMaxTextureCount ) comboBox.SelectedIndex = n; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { GameEngineApp.ShadowSpotLightMaxTextureCount = (int)sender.SelectedItem; }; } //ShadowPointLightTextureSize { comboBox = (ComboBox)pageShadows.Controls[ "ShadowPointLightTextureSize" ]; for( int value = 256, index = 0; value <= 8192; value *= 2, index++ ) { comboBox.Items.Add( value ); if( GameEngineApp.ShadowPointLightTextureSize == value ) comboBox.SelectedIndex = index; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { GameEngineApp.ShadowPointLightTextureSize = (int)sender.SelectedItem; }; } //ShadowPointLightMaxTextureCount { comboBox = (ComboBox)pageShadows.Controls[ "ShadowPointLightMaxTextureCount" ]; for( int n = 0; n < 3; n++ ) { int count = n + 1; comboBox.Items.Add( count ); if( count == GameEngineApp.ShadowPointLightMaxTextureCount ) comboBox.SelectedIndex = n; } comboBox.SelectedIndexChange += delegate( ComboBox sender ) { GameEngineApp.ShadowPointLightMaxTextureCount = (int)sender.SelectedItem; }; } } //pageSound { bool enabled = SoundWorld.Instance.DriverName != "NULL"; Control pageSound = tabControl.Controls[ "Sound" ]; //soundVolumeCheckBox scrollBar = (ScrollBar)pageSound.Controls[ "SoundVolume" ]; scrollBar.Value = enabled ? GameEngineApp.SoundVolume : 0; scrollBar.Enable = enabled; scrollBar.ValueChange += delegate( ScrollBar sender ) { GameEngineApp.SoundVolume = sender.Value; }; //musicVolumeCheckBox scrollBar = (ScrollBar)pageSound.Controls[ "MusicVolume" ]; scrollBar.Value = enabled ? GameEngineApp.MusicVolume : 0; scrollBar.Enable = enabled; scrollBar.ValueChange += delegate( ScrollBar sender ) { GameEngineApp.MusicVolume = sender.Value; }; } #region pageControls //pageControls { Control pageControls = tabControl.Controls[ "Controls" ]; //MouseHSensitivity scrollBar = (ScrollBar)pageControls.Controls[ "MouseHSensitivity" ]; scrollBar.Value = GameControlsManager.Instance.MouseSensitivity.X; scrollBar.ValueChange += delegate( ScrollBar sender ) { Vec2 value = GameControlsManager.Instance.MouseSensitivity; value.X = sender.Value; GameControlsManager.Instance.MouseSensitivity = value; }; //MouseVSensitivity scrollBar = (ScrollBar)pageControls.Controls[ "MouseVSensitivity" ]; scrollBar.Value = Math.Abs( GameControlsManager.Instance.MouseSensitivity.Y ); scrollBar.ValueChange += delegate( ScrollBar sender ) { Vec2 value = GameControlsManager.Instance.MouseSensitivity; bool invert = ( (CheckBox)pageControls.Controls[ "MouseVInvert" ] ).Checked; value.Y = sender.Value * ( invert ? -1.0f : 1.0f ); GameControlsManager.Instance.MouseSensitivity = value; }; //MouseVInvert checkBox = (CheckBox)pageControls.Controls[ "MouseVInvert" ]; checkBox.Checked = GameControlsManager.Instance.MouseSensitivity.Y < 0; checkBox.CheckedChange += delegate( CheckBox sender ) { Vec2 value = GameControlsManager.Instance.MouseSensitivity; value.Y = ( (ScrollBar)pageControls.Controls[ "MouseVSensitivity" ] ).Value * ( sender.Checked ? -1.0f : 1.0f ); GameControlsManager.Instance.MouseSensitivity = value; }; //AlwaysRun checkBox = (CheckBox)pageControls.Controls[ "AlwaysRun" ]; checkBox.Checked = GameControlsManager.Instance.AlwaysRun; checkBox.CheckedChange += delegate( CheckBox sender ) { GameControlsManager.Instance.AlwaysRun = sender.Checked; }; //Incin -- change Axis Filter alone axisfilterbutton = ( (Button)pageControls.Controls[ "ChangeAxisfilter" ] ); axisfilterbutton.Click += delegate( Button sender ) { if( controlsList.SelectedItem == null || axisfilterbutton == null || !( controlsList.SelectedItem is GameControlsManager.SystemJoystickValue ) ) return; var item = controlsList.SelectedItem as GameControlsManager.SystemJoystickValue; if( item.Type == GameControlsManager.SystemJoystickValue.Types.Axis || item.Type == GameControlsManager.SystemJoystickValue.Types.Slider ) CreateAxisFilterDialogue(); }; axisfilterbutton.Enable = false; //Devices cmbBoxDevice = (ComboBox)pageControls.Controls[ "InputDevices" ]; comboBoxInputDevices = cmbBoxDevice; cmbBoxDevice.Items.Add( "Keyboard/Mouse" ); if( InputDeviceManager.Instance != null ) { foreach( InputDevice device in InputDeviceManager.Instance.Devices ) cmbBoxDevice.Items.Add( device ); } cmbBoxDevice.SelectedIndex = 0; cmbBoxDevice.SelectedIndexChange += delegate( ComboBox sender ) { if( axisfilterbutton != null ) axisfilterbutton.Enable = false; UpdateBindedInputControlsListBox(); if( controlsList.SelectedIndex != -1 ) controlsList.SelectedIndex = 0; }; scrollBar = (ScrollBar)pageControls.Controls[ "DeadzoneVScroll" ]; scrollBar.Value = GameControlsManager.Instance.DeadZone; textBox = (TextBox)pageControls.Controls[ "DeadZoneValue" ]; textBox.Text = GameControlsManager.Instance.DeadZone.ToString(); scrollBar.ValueChange += delegate( ScrollBar sender ) { GameControlsManager.Instance.DeadZone = sender.Value; textBox.Text = sender.Value.ToString(); }; ( (Button)pageControls.Controls[ "ControlSave" ] ).Click += delegate( Button sender ) { GameControlsManager.Instance.SaveCustomConfig(); }; Control message = window.Controls[ "TabControl/Controls/ListControls/Message" ]; controlsList = pageControls.Controls[ "ListControls" ] as ListBox; controlsList.ItemMouseDoubleClick += delegate( object sender, ListBox.ItemMouseEventArgs e ) { message.Text = "Type the new key (ESC to cancel)"; message.ColorMultiplier = new ColorValue( 1, 0, 0 ); Controls.Add( new KeyListener( sender ) ); }; controlsList.SelectedIndexChange += delegate( ListBox sender ) { if( controlsList.SelectedItem == null || axisfilterbutton == null || !( controlsList.SelectedItem is GameControlsManager.SystemJoystickValue ) ) return; var item = controlsList.SelectedItem as GameControlsManager.SystemJoystickValue; axisfilterbutton.Enable = item.Type == GameControlsManager.SystemJoystickValue.Types.Axis || item.Type == GameControlsManager.SystemJoystickValue.Types.Slider; }; ( (Button)pageControls.Controls[ "Default" ] ).Click += delegate( Button sender ) { GameControlsManager.Instance.ResetKeyMouseSettings(); GameControlsManager.Instance.ResetJoystickSettings(); UpdateBindedInputControlsListBox(); }; //Controls UpdateBindedInputControlsListBox(); if( controlsList.SelectedIndex != -1 ) controlsList.SelectedIndex = 0; } #endregion //pageLanguage { Control pageLanguage = tabControl.Controls[ "Language" ]; //Language { comboBox = (ComboBox)pageLanguage.Controls[ "Language" ]; List<string> languages = new List<string>(); { languages.Add( "Autodetect" ); string[] directories = VirtualDirectory.GetDirectories( LanguageManager.LanguagesDirectory, "*.*", SearchOption.TopDirectoryOnly ); foreach( string directory in directories ) languages.Add( Path.GetFileNameWithoutExtension( directory ) ); } string language = "Autodetect"; if( engineConfigBlock != null ) { TextBlock localizationBlock = engineConfigBlock.FindChild( "Localization" ); if( localizationBlock != null && localizationBlock.IsAttributeExist( "language" ) ) language = localizationBlock.GetAttribute( "language" ); } foreach( string lang in languages ) { string displayName = lang; if( lang == "Autodetect" ) displayName = Translate( lang ); comboBox.Items.Add( new ComboBoxItem( lang, displayName ) ); if( string.Compare( language, lang, true ) == 0 ) comboBox.SelectedIndex = comboBox.Items.Count - 1; } if( comboBox.SelectedIndex == -1 ) comboBox.SelectedIndex = 0; comboBox.SelectedIndexChange += comboBoxLanguage_SelectedIndexChange; } //LanguageRestart { Button button = (Button)pageLanguage.Controls[ "LanguageRestart" ]; button.Click += buttonLanguageRestart_Click; } } tabControl.SelectedIndex = lastPageIndex; tabControl.SelectedIndexChange += tabControl_SelectedIndexChange; UpdatePageButtonsState(); }
public List <TimeWrapper> UpdateTimes(int[] timeids, PaymentStatus status) { var timeTrackingEngine = EngineFactory.GetTimeTrackingEngine(); var times = new List <TimeWrapper>(); foreach (var timeid in timeids) { var time = timeTrackingEngine.GetByID(timeid).NotFoundIfNull(); timeTrackingEngine.ChangePaymentStatus(time, status); times.Add(new TimeWrapper(time)); } MessageService.Send(_context, MessageAction.TaskTimesUpdatedStatus, times.Select(t => t.Note), LocalizedEnumConverter.ConvertToString(status)); return(times); }