Example #1
0
 public OpenTKSound(string filename, SoundDevice device)
     : base(filename, device)
 {
     soundData = new WaveSoundData("Content/" + filename + ".wav");
     length = GetLengthInSeconds();
     bufferHandle = CreateNativeBuffer();
 }
		public XnaVideo(string filename, XnaMedia.VideoPlayer player, XnaDevice graphicsDevice,
			SoundDevice soundDevice)
			: base(filename, soundDevice)
		{
			this.player = player;
			this.graphicsDevice = graphicsDevice;
			image = new VideoImage(graphicsDevice);
		}
Example #3
0
 public OpenTKMusic(string filename, SoundDevice device)
     : base(filename, device)
 {
     musicStream = new Mp3Stream(File.OpenRead("Content/" + filename + ".mp3"));
     format = musicStream.Channels == 2 ? ALFormat.Stereo16 : ALFormat.Mono16;
     source = AL.GenSource();
     buffers = AL.GenBuffers(NumberOfBuffers);
     bufferData = new byte[BufferSize];
 }
Example #4
0
        bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundDevice[] devices)
        {
            var i = 0;
            var options = devices.ToDictionary(d => (i++).ToString(), d => d);

            Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
            {
                var item = ScrollItemWidget.Setup(itemTemplate,
                    () => soundDevice == options[o],
                    () => soundDevice = options[o]);

                var deviceLabel = item.Get<LabelWidget>("LABEL");
                var font = Game.Renderer.Fonts[deviceLabel.Font];
                var label = WidgetUtils.TruncateText(options[o].Label, deviceLabel.Bounds.Width, font);
                deviceLabel.GetText = () => label;
                return item;
            };

            dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem);
            return true;
        }
Example #5
0
        Action ResetAudioPanel(Widget panel)
        {
            var ss = Game.Settings.Sound;
            var dss = new SoundSettings();
            return () =>
            {
                ss.SoundVolume = dss.SoundVolume;
                ss.MusicVolume = dss.MusicVolume;
                ss.VideoVolume = dss.VideoVolume;
                ss.CashTicks = dss.CashTicks;
                ss.Mute = dss.Mute;
                ss.Device = dss.Device;
                ss.Engine = dss.Engine;

                panel.Get<SliderWidget>("SOUND_VOLUME").Value = ss.SoundVolume;
                Game.Sound.SoundVolume = ss.SoundVolume;
                panel.Get<SliderWidget>("MUSIC_VOLUME").Value = ss.MusicVolume;
                Game.Sound.MusicVolume = ss.MusicVolume;
                panel.Get<SliderWidget>("VIDEO_VOLUME").Value = ss.VideoVolume;
                Game.Sound.VideoVolume = ss.VideoVolume;
                Game.Sound.UnmuteAudio();
                soundDevice = Game.Sound.AvailableDevices().First();
            };
        }
Example #6
0
        Action InitAudioPanel(Widget panel)
        {
            var ss = Game.Settings.Sound;

            BindCheckboxPref(panel, "CASH_TICKS", ss, "CashTicks");
            BindCheckboxPref(panel, "MUTE_SOUND", ss, "Mute");

            BindSliderPref(panel, "SOUND_VOLUME", ss, "SoundVolume");
            BindSliderPref(panel, "MUSIC_VOLUME", ss, "MusicVolume");
            BindSliderPref(panel, "VIDEO_VOLUME", ss, "VideoVolume");

            var muteCheckbox = panel.Get<CheckboxWidget>("MUTE_SOUND");
            var muteCheckboxOnClick = muteCheckbox.OnClick;
            muteCheckbox.OnClick = () =>
            {
                muteCheckboxOnClick();

                if (ss.Mute)
                    Game.Sound.MuteAudio();
                else
                    Game.Sound.UnmuteAudio();
            };

            if (!ss.Mute)
            {
                panel.Get<SliderWidget>("SOUND_VOLUME").OnChange += x => Game.Sound.SoundVolume = x;
                panel.Get<SliderWidget>("MUSIC_VOLUME").OnChange += x => Game.Sound.MusicVolume = x;
                panel.Get<SliderWidget>("VIDEO_VOLUME").OnChange += x => Game.Sound.VideoVolume = x;
            }

            var devices = Game.Sound.AvailableDevices();
            soundDevice = devices.FirstOrDefault(d => d.Engine == ss.Engine && d.Device == ss.Device) ?? devices.First();

            var audioDeviceDropdown = panel.Get<DropDownButtonWidget>("AUDIO_DEVICE");
            audioDeviceDropdown.OnMouseDown = _ => ShowAudioDeviceDropdown(audioDeviceDropdown, devices);

            var deviceFont = Game.Renderer.Fonts[audioDeviceDropdown.Font];
            var deviceLabel = new CachedTransform<SoundDevice, string>(
                s => WidgetUtils.TruncateText(s.Label, audioDeviceDropdown.UsableWidth, deviceFont));
            audioDeviceDropdown.GetText = () => deviceLabel.Update(soundDevice);

            return () =>
            {
                ss.Device = soundDevice.Device;
                ss.Engine = soundDevice.Engine;
            };
        }
Example #7
0
        Action InitAudioPanel(Widget panel)
        {
            var ss = Game.Settings.Sound;

            BindCheckboxPref(panel, "SHELLMAP_MUSIC", ss, "MapMusic");
            BindCheckboxPref(panel, "CASH_TICKS", ss, "CashTicks");

            BindSliderPref(panel, "SOUND_VOLUME", ss, "SoundVolume");
            BindSliderPref(panel, "MUSIC_VOLUME", ss, "MusicVolume");
            BindSliderPref(panel, "VIDEO_VOLUME", ss, "VideoVolume");

            // Update volume immediately
            panel.Get<SliderWidget>("SOUND_VOLUME").OnChange += x => Sound.SoundVolume = x;
            panel.Get<SliderWidget>("MUSIC_VOLUME").OnChange += x => Sound.MusicVolume = x;
            panel.Get<SliderWidget>("VIDEO_VOLUME").OnChange += x => Sound.VideoVolume = x;

            var devices = Sound.AvailableDevices();
            soundDevice = devices.FirstOrDefault(d => d.Engine == ss.Engine && d.Device == ss.Device) ?? devices.First();

            var audioDeviceDropdown = panel.Get<DropDownButtonWidget>("AUDIO_DEVICE");
            audioDeviceDropdown.OnMouseDown = _ => ShowAudioDeviceDropdown(audioDeviceDropdown, devices);
            audioDeviceDropdown.GetText = () => soundDevice.Label;

            return () =>
            {
                ss.Device = soundDevice.Device;
                ss.Engine = soundDevice.Engine;
            };
        }
		protected SharpDXVideo(string contentName, SoundDevice soundDevice)
			: base(contentName, soundDevice)
		{
			CreateBuffers();
		}
Example #9
0
 private static void InitializeWindowAndSoundDevice(Window window, SoundDevice soundDevice)
 {
     AppWindow   = window;
     SoundDevice = soundDevice;
 }
        public SettingsMenuLogic(Action onExit)
        {
            bg = Ui.Root.Get<BackgroundWidget>("SETTINGS_MENU");
            var tabs = bg.Get<ContainerWidget>("TAB_CONTAINER");

            //Tabs
            tabs.Get<ButtonWidget>("GENERAL").OnClick = () => FlipToTab("GENERAL_PANE");
            tabs.Get<ButtonWidget>("AUDIO").OnClick = () => FlipToTab("AUDIO_PANE");
            tabs.Get<ButtonWidget>("DISPLAY").OnClick = () => FlipToTab("DISPLAY_PANE");
            tabs.Get<ButtonWidget>("KEYS").OnClick = () => FlipToTab("KEYS_PANE");
            tabs.Get<ButtonWidget>("DEBUG").OnClick = () => FlipToTab("DEBUG_PANE");
            FlipToTab("GENERAL_PANE");

            //General
            var general = bg.Get("GENERAL_PANE");

            var name = general.Get<TextFieldWidget>("NAME");
            name.Text = Game.Settings.Player.Name;
            name.OnLoseFocus = () =>
            {
                name.Text = name.Text.Trim();
                if (name.Text.Length == 0)
                    name.Text = Game.Settings.Player.Name;
                else
                    Game.Settings.Player.Name = name.Text;
            };
            name.OnEnterKey = () => { name.YieldKeyboardFocus(); return true; };

            var edgescrollCheckbox = general.Get<CheckboxWidget>("EDGE_SCROLL");
            edgescrollCheckbox.IsChecked = () => Game.Settings.Game.ViewportEdgeScroll;
            edgescrollCheckbox.OnClick = () => Game.Settings.Game.ViewportEdgeScroll ^= true;

            var edgeScrollSlider = general.Get<SliderWidget>("EDGE_SCROLL_AMOUNT");
            edgeScrollSlider.Value = Game.Settings.Game.ViewportEdgeScrollStep;
            edgeScrollSlider.OnChange += x => Game.Settings.Game.ViewportEdgeScrollStep = x;

            var inversescroll = general.Get<CheckboxWidget>("INVERSE_SCROLL");
            inversescroll.IsChecked = () => Game.Settings.Game.MouseScroll == MouseScrollType.Inverted;
            inversescroll.OnClick = () => Game.Settings.Game.MouseScroll = (Game.Settings.Game.MouseScroll == MouseScrollType.Inverted) ? MouseScrollType.Standard : MouseScrollType.Inverted;

            var teamchatCheckbox = general.Get<CheckboxWidget>("TEAMCHAT_TOGGLE");
            teamchatCheckbox.IsChecked = () => Game.Settings.Game.TeamChatToggle;
            teamchatCheckbox.OnClick = () => Game.Settings.Game.TeamChatToggle ^= true;

            var showShellmapCheckbox = general.Get<CheckboxWidget>("SHOW_SHELLMAP");
            showShellmapCheckbox.IsChecked = () => Game.Settings.Game.ShowShellmap;
            showShellmapCheckbox.OnClick = () => Game.Settings.Game.ShowShellmap ^= true;

            var useClassicMouseStyleCheckbox = general.Get<CheckboxWidget>("USE_CLASSIC_MOUSE_STYLE_CHECKBOX");
            useClassicMouseStyleCheckbox.IsChecked = () => Game.Settings.Game.UseClassicMouseStyle;
            useClassicMouseStyleCheckbox.OnClick = () => Game.Settings.Game.UseClassicMouseStyle ^= true;

            var allowNatDiscoveryCheckbox = general.Get<CheckboxWidget>("ALLOW_NAT_DISCOVERY_CHECKBOX");
            allowNatDiscoveryCheckbox.IsChecked = () => Game.Settings.Server.DiscoverNatDevices;
            allowNatDiscoveryCheckbox.OnClick = () => Game.Settings.Server.DiscoverNatDevices ^= true;

            // Audio
            var audio = bg.Get("AUDIO_PANE");
            var soundSettings = Game.Settings.Sound;

            var soundslider = audio.Get<SliderWidget>("SOUND_VOLUME");
            soundslider.OnChange += x => Sound.SoundVolume = x;
            soundslider.Value = Sound.SoundVolume;

            var musicslider = audio.Get<SliderWidget>("MUSIC_VOLUME");
            musicslider.OnChange += x => Sound.MusicVolume = x;
            musicslider.Value = Sound.MusicVolume;

            var videoslider = audio.Get<SliderWidget>("VIDEO_VOLUME");
            videoslider.OnChange += x => Sound.VideoVolume = x;
            videoslider.Value = Sound.VideoVolume;

            var cashticksdropdown = audio.Get<DropDownButtonWidget>("CASH_TICK_TYPE");
            cashticksdropdown.OnMouseDown = _ => ShowSoundTickDropdown(cashticksdropdown, soundSettings);
            cashticksdropdown.GetText = () => soundSettings.SoundCashTickType == SoundCashTicks.Extreme ?
                "Extreme" : soundSettings.SoundCashTickType == SoundCashTicks.Normal ? "Normal" : "Disabled";

            var mapMusicCheckbox = audio.Get<CheckboxWidget>("MAP_MUSIC_CHECKBOX");
            mapMusicCheckbox.IsChecked = () => Game.Settings.Sound.MapMusic;
            mapMusicCheckbox.OnClick = () => Game.Settings.Sound.MapMusic ^= true;

            var devices = Sound.AvailableDevices();
            soundDevice = devices.FirstOrDefault(d => d.Engine == soundSettings.Engine && d.Device == soundSettings.Device) ?? devices.First();

            var audioDeviceDropdown = audio.Get<DropDownButtonWidget>("AUDIO_DEVICE");
            audioDeviceDropdown.OnMouseDown = _ => ShowAudioDeviceDropdown(audioDeviceDropdown, soundSettings, devices);
            audioDeviceDropdown.GetText = () => soundDevice.Label;

            // Display
            var display = bg.Get("DISPLAY_PANE");
            var gs = Game.Settings.Graphics;

            var windowModeDropdown = display.Get<DropDownButtonWidget>("MODE_DROPDOWN");
            windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, gs);
            windowModeDropdown.GetText = () => gs.Mode == WindowMode.Windowed ?
                "Windowed" : gs.Mode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen";

            display.Get("WINDOW_RESOLUTION").IsVisible = () => gs.Mode == WindowMode.Windowed;
            var windowWidth = display.Get<TextFieldWidget>("WINDOW_WIDTH");
            windowWidth.Text = gs.WindowedSize.X.ToString();

            var windowHeight = display.Get<TextFieldWidget>("WINDOW_HEIGHT");
            windowHeight.Text = gs.WindowedSize.Y.ToString();

            var pixelDoubleCheckbox = display.Get<CheckboxWidget>("PIXELDOUBLE_CHECKBOX");
            pixelDoubleCheckbox.IsChecked = () => gs.PixelDouble;
            pixelDoubleCheckbox.OnClick = () =>
            {
                gs.PixelDouble ^= true;
                Game.viewport.Zoom = gs.PixelDouble ? 2 : 1;
            };

            var capFrameRateCheckbox = display.Get<CheckboxWidget>("CAPFRAMERATE_CHECKBOX");
            capFrameRateCheckbox.IsChecked = () => gs.CapFramerate;
            capFrameRateCheckbox.OnClick = () => gs.CapFramerate ^= true;

            var maxFrameRate = display.Get<TextFieldWidget>("MAX_FRAMERATE");
            maxFrameRate.Text = gs.MaxFramerate.ToString();

            // Keys
            var keys = bg.Get("KEYS_PANE");
            var keyConfig = Game.Settings.Keys;

            var specialHotkeyList = keys.Get<ScrollPanelWidget>("SPECIALHOTKEY_LIST");
            var specialHotkeyTemplate = specialHotkeyList.Get<ScrollItemWidget>("SPECIALHOTKEY_TEMPLATE");

            var pauseKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(pauseKey, "Pause the game:", () => keyConfig.PauseKey, k => keyConfig.PauseKey = k);
            specialHotkeyList.AddChild(pauseKey);

            var viewportToBase = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(viewportToBase, "Move Viewport to Base:", () => keyConfig.CycleBaseKey, k => keyConfig.CycleBaseKey = k);
            specialHotkeyList.AddChild(viewportToBase);

            var lastEventKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(lastEventKey, "Move Viewport to Last Event:", () => keyConfig.ToLastEventKey, k => keyConfig.ToLastEventKey = k);
            specialHotkeyList.AddChild(lastEventKey);

            var viewportToSelectionKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(viewportToSelectionKey, "Move Viewport to Selection:", () => keyConfig.ToSelectionKey, k => keyConfig.ToSelectionKey = k);
            specialHotkeyList.AddChild(viewportToSelectionKey);

            var sellKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(sellKey, "Switch to Sell-Cursor:", () => keyConfig.SellKey, k => keyConfig.SellKey = k);
            specialHotkeyList.AddChild(sellKey);

            var powerDownKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(powerDownKey, "Switch to Power-Down-Cursor:", () => keyConfig.PowerDownKey, k => keyConfig.PowerDownKey = k);
            specialHotkeyList.AddChild(powerDownKey);

            var repairKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(repairKey, "Switch to Repair-Cursor:", () => keyConfig.RepairKey, k => keyConfig.RepairKey = k);
            specialHotkeyList.AddChild(repairKey);

            var tabCycleKey = ScrollItemWidget.Setup(specialHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(tabCycleKey, "Cycle Tabs (+Shift to Reverse):", () => keyConfig.CycleTabsKey, k => keyConfig.CycleTabsKey = k);
            specialHotkeyList.AddChild(tabCycleKey);

            var unitCommandHotkeyList = keys.Get<ScrollPanelWidget>("UNITCOMMANDHOTKEY_LIST");
            var unitCommandHotkeyTemplate = unitCommandHotkeyList.Get<ScrollItemWidget>("UNITCOMMANDHOTKEY_TEMPLATE");

            var attackKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(attackKey, "Attack Move:", () => keyConfig.AttackMoveKey, k => keyConfig.AttackMoveKey = k);
            unitCommandHotkeyList.AddChild(attackKey);

            var stopKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(stopKey, "Stop:", () => keyConfig.StopKey, k => keyConfig.StopKey = k);
            unitCommandHotkeyList.AddChild(stopKey);

            var scatterKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(scatterKey, "Scatter:", () => keyConfig.ScatterKey, k => keyConfig.ScatterKey = k);
            unitCommandHotkeyList.AddChild(scatterKey);

            var stanceCycleKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(stanceCycleKey, "Cycle Stance:", () => keyConfig.StanceCycleKey, k => keyConfig.StanceCycleKey = k);
            unitCommandHotkeyList.AddChild(stanceCycleKey);

            var deployKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => {});
            SetupKeyBinding(deployKey, "Deploy:", () => keyConfig.DeployKey, k => keyConfig.DeployKey = k);
            unitCommandHotkeyList.AddChild(deployKey);

            var guardKey = ScrollItemWidget.Setup(unitCommandHotkeyTemplate, () => false, () => { });
            SetupKeyBinding(guardKey, "Guard: ", () => keyConfig.GuardKey, k => keyConfig.GuardKey = k);
            unitCommandHotkeyList.AddChild(guardKey);

            // Debug
            var debug = bg.Get("DEBUG_PANE");

            var perfgraphCheckbox = debug.Get<CheckboxWidget>("PERFGRAPH_CHECKBOX");
            perfgraphCheckbox.IsChecked = () => Game.Settings.Debug.PerfGraph;
            perfgraphCheckbox.OnClick = () => Game.Settings.Debug.PerfGraph ^= true;

            var perftextCheckbox = debug.Get<CheckboxWidget>("PERFTEXT_CHECKBOX");
            perftextCheckbox.IsChecked = () => Game.Settings.Debug.PerfText;
            perftextCheckbox.OnClick = () => Game.Settings.Debug.PerfText ^= true;

            var sampleSlider = debug.Get<SliderWidget>("PERFTEXT_SAMPLE_AMOUNT");
            sampleSlider.Value = sampleSlider.MaximumValue-Game.Settings.Debug.Samples;
            sampleSlider.OnChange += x => Game.Settings.Debug.Samples = (int)sampleSlider.MaximumValue-(int)Math.Round(x);

            var checkunsyncedCheckbox = debug.Get<CheckboxWidget>("CHECKUNSYNCED_CHECKBOX");
            checkunsyncedCheckbox.IsChecked = () => Game.Settings.Debug.SanityCheckUnsyncedCode;
            checkunsyncedCheckbox.OnClick = () => Game.Settings.Debug.SanityCheckUnsyncedCode ^= true;

            var botdebugCheckbox = debug.Get<CheckboxWidget>("BOTDEBUG_CHECKBOX");
            botdebugCheckbox.IsChecked = () => Game.Settings.Debug.BotDebug;
            botdebugCheckbox.OnClick = () => Game.Settings.Debug.BotDebug ^= true;

            var verboseNatDiscoveryCheckbox = debug.Get<CheckboxWidget>("VERBOSE_NAT_DISCOVERY_CHECKBOX");
            verboseNatDiscoveryCheckbox.IsChecked = () => Game.Settings.Server.VerboseNatDiscovery;
            verboseNatDiscoveryCheckbox.OnClick = () => Game.Settings.Server.VerboseNatDiscovery ^= true;

            var developerMenuCheckbox = debug.Get<CheckboxWidget>("DEVELOPER_MENU_CHECKBOX");
            developerMenuCheckbox.IsChecked = () => Game.Settings.Debug.DeveloperMenu;
            developerMenuCheckbox.OnClick = () => Game.Settings.Debug.DeveloperMenu ^= true;

            var showFatalErrorDialog = debug.Get<CheckboxWidget>("SHOW_FATAL_ERROR_DIALOG_CHECKBOX");
            showFatalErrorDialog.IsChecked = () => Game.Settings.Debug.ShowFatalErrorDialog;
            showFatalErrorDialog.OnClick = () => Game.Settings.Debug.ShowFatalErrorDialog ^= true;

            bg.Get<ButtonWidget>("BUTTON_CLOSE").OnClick = () =>
            {
                int x, y;
                int.TryParse(windowWidth.Text, out x);
                int.TryParse(windowHeight.Text, out y);
                gs.WindowedSize = new int2(x,y);
                int.TryParse(maxFrameRate.Text, out gs.MaxFramerate);
                soundSettings.Device = soundDevice.Device;
                soundSettings.Engine = soundDevice.Engine;
                Game.Settings.Save();
                Ui.CloseWindow();
                onExit();
            };
        }
Example #11
0
		public MockMusic(string contentName, SoundDevice device)
			: base(contentName, device) {}
Example #12
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SoundDevice obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
Example #13
0
        Func <bool> InitPanel(Widget panel)
        {
            var musicPlaylist = worldRenderer.World.WorldActor.Trait <MusicPlaylist>();
            var ss            = Game.Settings.Sound;

            SettingsUtils.BindCheckboxPref(panel, "CASH_TICKS", ss, "CashTicks");
            SettingsUtils.BindCheckboxPref(panel, "MUTE_SOUND", ss, "Mute");
            SettingsUtils.BindCheckboxPref(panel, "MUTE_BACKGROUND_MUSIC", ss, "MuteBackgroundMusic");

            SettingsUtils.BindSliderPref(panel, "SOUND_VOLUME", ss, "SoundVolume");
            SettingsUtils.BindSliderPref(panel, "MUSIC_VOLUME", ss, "MusicVolume");
            SettingsUtils.BindSliderPref(panel, "VIDEO_VOLUME", ss, "VideoVolume");

            var muteCheckbox          = panel.Get <CheckboxWidget>("MUTE_SOUND");
            var muteCheckboxOnClick   = muteCheckbox.OnClick;
            var muteCheckboxIsChecked = muteCheckbox.IsChecked;

            muteCheckbox.IsChecked  = () => muteCheckboxIsChecked() || Game.Sound.DummyEngine;
            muteCheckbox.IsDisabled = () => Game.Sound.DummyEngine;
            muteCheckbox.OnClick    = () =>
            {
                muteCheckboxOnClick();

                if (ss.Mute)
                {
                    Game.Sound.MuteAudio();
                }
                else
                {
                    Game.Sound.UnmuteAudio();
                }
            };

            var muteBackgroundMusicCheckbox        = panel.Get <CheckboxWidget>("MUTE_BACKGROUND_MUSIC");
            var muteBackgroundMusicCheckboxOnClick = muteBackgroundMusicCheckbox.OnClick;

            muteBackgroundMusicCheckbox.OnClick = () =>
            {
                muteBackgroundMusicCheckboxOnClick();

                if (!musicPlaylist.AllowMuteBackgroundMusic)
                {
                    return;
                }

                if (musicPlaylist.CurrentSongIsBackground)
                {
                    musicPlaylist.Stop();
                }
            };

            // Replace controls with a warning label if sound is disabled
            var noDeviceLabel = panel.GetOrNull("NO_AUDIO_DEVICE");

            if (noDeviceLabel != null)
            {
                noDeviceLabel.Visible = Game.Sound.DummyEngine;
            }

            var controlsContainer = panel.GetOrNull("AUDIO_CONTROLS");

            if (controlsContainer != null)
            {
                controlsContainer.Visible = !Game.Sound.DummyEngine;
            }

            var soundVolumeSlider = panel.Get <SliderWidget>("SOUND_VOLUME");

            soundVolumeSlider.OnChange += x => Game.Sound.SoundVolume = x;

            var musicVolumeSlider = panel.Get <SliderWidget>("MUSIC_VOLUME");

            musicVolumeSlider.OnChange += x => Game.Sound.MusicVolume = x;

            var videoVolumeSlider = panel.Get <SliderWidget>("VIDEO_VOLUME");

            videoVolumeSlider.OnChange += x => Game.Sound.VideoVolume = x;

            var devices = Game.Sound.AvailableDevices();

            soundDevice = devices.FirstOrDefault(d => d.Device == ss.Device) ?? devices.First();

            var audioDeviceDropdown = panel.Get <DropDownButtonWidget>("AUDIO_DEVICE");

            audioDeviceDropdown.OnMouseDown = _ => ShowAudioDeviceDropdown(audioDeviceDropdown, devices);

            var deviceFont  = Game.Renderer.Fonts[audioDeviceDropdown.Font];
            var deviceLabel = new CachedTransform <SoundDevice, string>(
                s => WidgetUtils.TruncateText(s.Label, audioDeviceDropdown.UsableWidth, deviceFont));

            audioDeviceDropdown.GetText = () => deviceLabel.Update(soundDevice);

            return(() =>
            {
                ss.Device = soundDevice.Device;

                return ss.Device != OriginalSoundDevice;
            });
        }
        /// <summary>
        /// Sends a byte to the port with the specified address
        /// </summary>
        /// <param name="addr">Port address</param>
        /// <param name="data">Data to write to the port</param>
        /// <returns>Byte read from the memory</returns>
        public override void OnWritePort(ushort addr, byte data)
        {
            HandleSpectrum48PortWrites(addr, data);

            // --- Port 0x7FFD, bit 14 set, bit 15 and bit 1 reset
            if ((addr & 0xC002) == 0x4000)
            {
                // --- When paging is disabled, it will be enabled next time
                // --- only after reset
                if (PagingEnabled)
                {
                    // --- Choose the RAM bank for Slot 3 (0xc000-0xffff)
                    LastSlot3Index = data & 0x07;
                    MemoryDevice.PageIn(3, LastSlot3Index);

                    // --- Choose screen (Bank 5 or 7)
                    MemoryDevice.UseShadowScreen = ((data >> 3) & 0x01) == 0x01;

                    // --- Choose ROM bank for Slot 0 (0x0000-0x3fff)
                    SelectRomLow = (byte)((data >> 4) & 0x01);

                    // --- Enable/disable paging
                    PagingEnabled = (data & 0x20) == 0x00;

                    // --- Page the ROM according to current settings
                    MemoryDevice.SelectRom(SelectRomHigh | SelectRomLow);
                }
            }
            // --- Port 0x1FFD, bit 12 set, bit 1, 13, 14 and 15 reset
            else if ((addr & 0xF002) == 0x1000)
            {
                PagingMode        = (data & 0x01) != 0;
                SpecialConfig     = (byte)((data >> 1) & 0x03);
                DiskMotorState    = (data & 0x08) != 0;
                PrinterPortStrobe = (data & 0x10) != 0;
                SelectRomHigh     = (byte)((data >> 1) & 0x02);

                // --- Page the ROM according to current settings
                if (PagingMode)
                {
                    // --- Special paging mode
                    switch (SpecialConfig)
                    {
                    case 0:
                        MemoryDevice.PageIn(0, 0);
                        MemoryDevice.PageIn(1, 1);
                        MemoryDevice.PageIn(2, 2);
                        MemoryDevice.PageIn(3, 3);
                        break;

                    case 1:
                        MemoryDevice.PageIn(0, 4);
                        MemoryDevice.PageIn(1, 5);
                        MemoryDevice.PageIn(2, 6);
                        MemoryDevice.PageIn(3, 7);
                        break;

                    case 2:
                        MemoryDevice.PageIn(0, 4);
                        MemoryDevice.PageIn(1, 5);
                        MemoryDevice.PageIn(2, 6);
                        MemoryDevice.PageIn(3, 3);
                        break;

                    case 3:
                        MemoryDevice.PageIn(0, 4);
                        MemoryDevice.PageIn(1, 7);
                        MemoryDevice.PageIn(2, 6);
                        MemoryDevice.PageIn(3, 3);
                        break;
                    }
                }
                else
                {
                    // --- Normal mode
                    MemoryDevice.PageIn(1, 5);
                    MemoryDevice.PageIn(2, 2);
                    MemoryDevice.PageIn(3, LastSlot3Index);
                    MemoryDevice.SelectRom(SelectRomHigh | SelectRomLow);
                }
            }
            else if (addr == 0xFFFD)
            {
                SoundDevice.SetRegisterIndex(data);
            }
            else if (addr == 0xBFFD || addr == 0xBEFD)
            {
                SoundDevice.SetRegisterValue(data);
            }
        }
Example #15
0
		public MockVideo(string contentName, SoundDevice soundDevice)
			: base(contentName, soundDevice) {}
Example #16
0
        private List<SoundDevice> GetDeviceList(AutomationElement aeSoundDialog)
        {
            List<SoundDevice> devices = new List<SoundDevice>();

            // Get the ListView
            AutomationElement aeListView = aeSoundDialog.FindFirst
            (TreeScope.Descendants, new PropertyCondition
            (AutomationElement.AutomationIdProperty, CID_DEVICE_LISTVIEW.ToString()));

            TreeWalker walker = TreeWalker.ContentViewWalker;
            for (AutomationElement child = walker.GetFirstChild(aeListView);
                child != null; child = walker.GetNextSibling(child))
            {
                Debug.WriteLine(child.Current.Name);
                SoundDevice dev = new SoundDevice();
                dev.deviceName = child.Current.Name;
                dev.automationElement = child;
                devices.Add(dev);
            }

            return devices;
        }
Example #17
0
        public CncSettingsLogic(Widget widget, World world, Action onExit)
        {
            this.world = world;
            var panel = widget.Get("SETTINGS_PANEL");

            // General pane
            var generalButton = panel.Get<ButtonWidget>("GENERAL_BUTTON");
            generalButton.OnClick = () => settingsPanel = PanelType.General;
            generalButton.IsHighlighted = () => settingsPanel == PanelType.General;

            var generalPane = panel.Get("GENERAL_CONTROLS");
            generalPane.IsVisible = () => settingsPanel == PanelType.General;

            var gameSettings = Game.Settings.Game;
            var playerSettings = Game.Settings.Player;
            var debugSettings = Game.Settings.Debug;
            var graphicsSettings = Game.Settings.Graphics;
            var soundSettings = Game.Settings.Sound;

            // Player profile
            var nameTextfield = generalPane.Get<TextFieldWidget>("NAME_TEXTFIELD");
            nameTextfield.Text = playerSettings.Name;

            colorPreview = panel.Get<ColorPreviewManagerWidget>("COLOR_MANAGER");
            colorPreview.Color = playerSettings.Color;

            var colorDropdown = generalPane.Get<DropDownButtonWidget>("COLOR");
            colorDropdown.OnMouseDown = _ => ShowColorPicker(colorDropdown, playerSettings);
            colorDropdown.Get<ColorBlockWidget>("COLORBLOCK").GetColor = () => playerSettings.Color.RGB;

            // Debug
            var perftextCheckbox = generalPane.Get<CheckboxWidget>("PERFTEXT_CHECKBOX");
            perftextCheckbox.IsChecked = () => debugSettings.PerfText;
            perftextCheckbox.OnClick = () => debugSettings.PerfText ^= true;

            var perfgraphCheckbox = generalPane.Get<CheckboxWidget>("PERFGRAPH_CHECKBOX");
            perfgraphCheckbox.IsChecked = () => debugSettings.PerfGraph;
            perfgraphCheckbox.OnClick = () => debugSettings.PerfGraph ^= true;

            var checkunsyncedCheckbox = generalPane.Get<CheckboxWidget>("CHECKUNSYNCED_CHECKBOX");
            checkunsyncedCheckbox.IsChecked = () => debugSettings.SanityCheckUnsyncedCode;
            checkunsyncedCheckbox.OnClick = () => debugSettings.SanityCheckUnsyncedCode ^= true;

            var showFatalErrorDialog = generalPane.Get<CheckboxWidget>("SHOW_FATAL_ERROR_DIALOG_CHECKBOX");
            showFatalErrorDialog.IsChecked = () => Game.Settings.Debug.ShowFatalErrorDialog;
            showFatalErrorDialog.OnClick = () => Game.Settings.Debug.ShowFatalErrorDialog ^= true;

            // Video
            var windowModeDropdown = generalPane.Get<DropDownButtonWidget>("MODE_DROPDOWN");
            windowModeDropdown.OnMouseDown = _ => SettingsMenuLogic.ShowWindowModeDropdown(windowModeDropdown, graphicsSettings);
            windowModeDropdown.GetText = () => graphicsSettings.Mode == WindowMode.Windowed ?
                "Windowed" : graphicsSettings.Mode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen";

            var pixelDoubleCheckbox = generalPane.Get<CheckboxWidget>("PIXELDOUBLE_CHECKBOX");
            pixelDoubleCheckbox.IsChecked = () => graphicsSettings.PixelDouble;
            pixelDoubleCheckbox.OnClick = () =>
            {
                graphicsSettings.PixelDouble ^= true;
                Game.viewport.Zoom = graphicsSettings.PixelDouble ? 2 : 1;
            };

            var showShellmapCheckbox = generalPane.Get<CheckboxWidget>("SHOW_SHELLMAP");
            showShellmapCheckbox.IsChecked = () => gameSettings.ShowShellmap;
            showShellmapCheckbox.OnClick = () => gameSettings.ShowShellmap ^= true;

            generalPane.Get("WINDOW_RESOLUTION").IsVisible = () => graphicsSettings.Mode == WindowMode.Windowed;
            var windowWidth = generalPane.Get<TextFieldWidget>("WINDOW_WIDTH");
            windowWidth.Text = graphicsSettings.WindowedSize.X.ToString();

            var windowHeight = generalPane.Get<TextFieldWidget>("WINDOW_HEIGHT");
            windowHeight.Text = graphicsSettings.WindowedSize.Y.ToString();

            // Audio
            var soundSlider = generalPane.Get<SliderWidget>("SOUND_SLIDER");
            soundSlider.OnChange += x => { soundSettings.SoundVolume = x; Sound.SoundVolume = x; };
            soundSlider.Value = soundSettings.SoundVolume;

            var musicSlider = generalPane.Get<SliderWidget>("MUSIC_SLIDER");
            musicSlider.OnChange += x => { soundSettings.MusicVolume = x; Sound.MusicVolume = x; };
            musicSlider.Value = soundSettings.MusicVolume;

            var shellmapMusicCheckbox = generalPane.Get<CheckboxWidget>("SHELLMAP_MUSIC");
            shellmapMusicCheckbox.IsChecked = () => soundSettings.MapMusic;
            shellmapMusicCheckbox.OnClick = () => soundSettings.MapMusic ^= true;

            var devices = Sound.AvailableDevices();
            soundDevice = devices.FirstOrDefault(d => d.Engine == soundSettings.Engine && d.Device == soundSettings.Device) ?? devices.First();

            var audioDeviceDropdown = generalPane.Get<DropDownButtonWidget>("AUDIO_DEVICE");
            audioDeviceDropdown.OnMouseDown = _ => ShowAudioDeviceDropdown(audioDeviceDropdown, soundSettings, devices);
            audioDeviceDropdown.GetText = () => soundDevice.Label;

            // Input pane
            var inputPane = panel.Get("INPUT_CONTROLS");
            inputPane.IsVisible = () => settingsPanel == PanelType.Input;

            var inputButton = panel.Get<ButtonWidget>("INPUT_BUTTON");
            inputButton.OnClick = () => settingsPanel = PanelType.Input;
            inputButton.IsHighlighted = () => settingsPanel == PanelType.Input;

            var classicMouseCheckbox = inputPane.Get<CheckboxWidget>("CLASSICORDERS_CHECKBOX");
            classicMouseCheckbox.IsChecked = () => gameSettings.UseClassicMouseStyle;
            classicMouseCheckbox.OnClick = () => gameSettings.UseClassicMouseStyle ^= true;

            var scrollSlider = inputPane.Get<SliderWidget>("SCROLLSPEED_SLIDER");
            scrollSlider.Value = gameSettings.ViewportEdgeScrollStep;
            scrollSlider.OnChange += x => gameSettings.ViewportEdgeScrollStep = x;

            var edgescrollCheckbox = inputPane.Get<CheckboxWidget>("EDGESCROLL_CHECKBOX");
            edgescrollCheckbox.IsChecked = () => gameSettings.ViewportEdgeScroll;
            edgescrollCheckbox.OnClick = () => gameSettings.ViewportEdgeScroll ^= true;

            var mouseScrollDropdown = inputPane.Get<DropDownButtonWidget>("MOUSE_SCROLL");
            mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gameSettings);
            mouseScrollDropdown.GetText = () => gameSettings.MouseScroll.ToString();

            var teamchatCheckbox = inputPane.Get<CheckboxWidget>("TEAMCHAT_CHECKBOX");
            teamchatCheckbox.IsChecked = () => gameSettings.TeamChatToggle;
            teamchatCheckbox.OnClick = () => gameSettings.TeamChatToggle ^= true;

            panel.Get<ButtonWidget>("BACK_BUTTON").OnClick = () =>
            {
                playerSettings.Name = nameTextfield.Text;
                int x, y;
                int.TryParse(windowWidth.Text, out x);
                int.TryParse(windowHeight.Text, out y);
                graphicsSettings.WindowedSize = new int2(x, y);
                soundSettings.Device = soundDevice.Device;
                soundSettings.Engine = soundDevice.Engine;
                Game.Settings.Save();
                Ui.CloseWindow();
                onExit();
            };
        }
        bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundSettings s, SoundDevice[] devices)
        {
            var i = 0;
            var options = devices.ToDictionary(d => (i++).ToString(), d => d);

            Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
            {
                var item = ScrollItemWidget.Setup(itemTemplate,
                    () => soundDevice == options[o],
                    () => soundDevice = options[o]);

                item.Get<LabelWidget>("LABEL").GetText = () => options[o].Label;
                return item;
            };

            dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem);
            return true;
        }
Example #19
0
 /// <summary>
 /// A parameterized constructor of CallVolumeRecord.
 /// </summary>
 /// <param name="device">Call sound device.</param>
 /// <param name="type">Call sound type.</param>
 /// <param name="volume">Call sound volume.</param>
 public CallVolumeRecord(SoundDevice device, SoundType type, SoundVolume volume)
 {
     _device = device;
     _type   = type;
     _volume = volume;
 }