void Awake() { if (instance != null && instance != this) { Destroy(this.gameObject); return; } else { instance = this; } DontDestroyOnLoad(this.gameObject); }
protected override void SetLabels() { float x = 60 + (_isInMainMenu ? 0 : 9); float y = 28 - GameConstants.LineOffset - (GlobalState.CurrentLanguage == Language.ZH_CN ? 1 : 0); float yStep = GameConstants.FONT_LINE_HEIGHT - GameConstants.LineOffset; Color color = _isInMainMenu ? new Color(116, 140, 144) : Color.White; var keybindsLabel = new UILabel(new Vector2(x, y), true, DialogueManager.GetDialogue("misc", "any", "config", 1), color); var bgmLabel = new UILabel(new Vector2(x, keybindsLabel.Position.Y + yStep * 2), true, "BGM", color, forceEnglish: true); var sfxLabel = new UILabel(new Vector2(x, bgmLabel.Position.Y + 12), true, "SFX", color, forceEnglish: true); //TODO: localize var gameplayLabel = new UILabel(new Vector2(x, sfxLabel.Position.Y + yStep * 2), true, "Gameplay", color, forceEnglish: true); var graphicsLabel = new UILabel(new Vector2(x, gameplayLabel.Position.Y + yStep * 2), true, "Graphics", color, forceEnglish: true); var languageLabel = new UILabel(new Vector2(x, graphicsLabel.Position.Y + yStep * 2), true, DialogueManager.GetDialogue("misc", "any", "config", 17), color); var musicSlider = new AudioSlider(new Vector2(bgmLabel.Position.X + bgmLabel.Writer.WriteArea.Width - 5, bgmLabel.Position.Y), GlobalState.settings.music_volume_scale, 0f, 1f, 0.1f, _isInMainMenu ? MenuStyle.MainMenu : MenuStyle.PauseMenu) { ValueChangedEvent = (value, index) => { float vol = SoundManager.GetVolume(); GlobalState.settings.music_volume_scale = value; SoundManager.SetSongVolume(vol); } }; var sfxSlider = new AudioSlider(new Vector2(sfxLabel.Position.X + sfxLabel.Writer.WriteArea.Width - 5, sfxLabel.Position.Y), GlobalState.settings.sfx_volume_scale, 0f, 1f, 0.1f, _isInMainMenu ? MenuStyle.MainMenu : MenuStyle.PauseMenu) { ValueChangedEvent = (value, index) => { GlobalState.settings.sfx_volume_scale = value; } }; var languageSetter = new TextSelector(new Vector2(x + languageLabel.Writer.WriteArea.Width - 8, languageLabel.Position.Y + GameConstants.LineOffset), GlobalState.CurrentLanguage == Language.ZH_CN ? 40 : 30, (int)GlobalState.CurrentLanguage, true, Enum.GetNames(GlobalState.CurrentLanguage.GetType()).Select(s => s.ToLower().Replace('_', '-')).ToArray()) { ValueChangedEvent = LanguageValueChanged }; options = new() { (keybindsLabel, new SubstateOption <ControlsSubstate>()), (bgmLabel, musicSlider), (sfxLabel, sfxSlider), (gameplayLabel, new SubstateOption <GameplayMenu>()), (graphicsLabel, new SubstateOption <GraphicsMenu>()), (languageLabel, languageSetter) }; }
void AddSliders() { // var lblPitch = new CCLabel("Pitch", "fonts/arial", 14, CCLabelFormat.SpriteFont); // AddChildAt(lblPitch, 0.67f, 0.4f); // sliderPitch = new AudioSlider(AudioSlider.Direction.Horizontal); sliderPitch.SetValue(0.5f, 2, 1); // AddChildAt(sliderPitch, 0.72f, 0.39f); // var lblPan = new CCLabel("Pan", "fonts/arial", 14, CCLabelFormat.SpriteFont); // AddChildAt(lblPan, 0.67f, 0.3f); sliderPan = new AudioSlider(); sliderPan.SetValue(-1, 1, 0); // AddChildAt(sliderPan, 0.72f, 0.29f); // // var lblGain = new CCLabel("Gain", "fonts/arial", 14, CCLabelFormat.SpriteFont); // AddChildAt(lblGain, 0.67f, 0.2f); sliderGain = new AudioSlider(); sliderGain.SetValue(0, 1, 1); // AddChildAt(sliderGain, 0.72f, 0.19f); var lblEffectsVolume = new CCLabel("Effects Volume", "fonts/arial", 14, CCLabelFormat.SpriteFont); AddChildAt(lblEffectsVolume, 0.62f, 0.5f); sliderEffectsVolume = new AudioSlider(); sliderEffectsVolume.SetValue(0, 1, CCSimpleAudioEngine.SharedEngine.EffectsVolume); AddChildAt(sliderEffectsVolume, 0.71f, 0.49f); var lblMusicVolume = new CCLabel("Music Volume", "fonts/arial", 14, CCLabelFormat.SpriteFont); AddChildAt(lblMusicVolume, 0.12f, 0.5f); sliderMusicVolume = new AudioSlider(); sliderMusicVolume.SetValue(0, 1, CCSimpleAudioEngine.SharedEngine.BackgroundMusicVolume); AddChildAt(sliderMusicVolume, 0.21f, 0.49f); }
protected override void SetLabels() { float x = GameConstants.SCREEN_WIDTH_IN_PIXELS / 2 - 136 / 2; float menuX = x + 10; float y = 10; float yStep = GameConstants.FONT_LINE_HEIGHT - GameConstants.LineOffset + 3; _bgBox = new UIEntity(new Vector2(x, y), "pop_menu", 136, 126, Drawing.DrawOrder.TEXTBOX); var resolutionLabel = new UILabel(new Vector2(menuX, y + yStep), true, DialogueManager.GetDialogue("misc", "any", "config", 12), layer: Drawing.DrawOrder.TEXT); var scalingLabel = new UILabel(new Vector2(menuX, resolutionLabel.Position.Y + yStep * 2), true, DialogueManager.GetDialogue("misc", "any", "config", 16), layer: Drawing.DrawOrder.TEXT); var resolutionSelect = new TextSelector(resolutionLabel.Position + new Vector2(10, yStep), 90, (int)GlobalState.settings.resolution, false, Drawing.DrawOrder.TEXT, DialogueManager.GetDialogue("misc", "any", "config", 13), DialogueManager.GetDialogue("misc", "any", "config", 14), DialogueManager.GetDialogue("misc", "any", "config", 15)) { ValueChangedEvent = (s, index) => { GlobalState.ResolutionDirty = GlobalState.settings.resolution != (Resolution)index; GlobalState.settings.resolution = (Resolution)index; } }; var scalingSelect = new TextSelector(scalingLabel.Position + new Vector2(50, 0), 20, GlobalState.settings.scale - 1, true, Drawing.DrawOrder.TEXT, "1x", "2x", "3x", "4x") { ValueChangedEvent = (s, index) => { GlobalState.ResolutionDirty = GlobalState.settings.scale != index + 1; GlobalState.settings.scale = index + 1; }, noLoop = true, noConfirm = true }; _flashLabel = new UILabel(new Vector2(menuX, scalingLabel.Position.Y + (int)(yStep * 1.5f)), true, "Screen flash", layer: Drawing.DrawOrder.TEXT, forceEnglish: true); var brightnessLabel = new UILabel(new Vector2(menuX + 8, _flashLabel.Position.Y + yStep), true, "Max:", layer: Drawing.DrawOrder.TEXT, forceEnglish: true); var brightnessSelect = new AudioSlider(brightnessLabel.Position + Vector2.UnitX * 40, GlobalState.settings.flash_brightness, 0f, 1f, 0.1f, MenuStyle.SubMenu, Drawing.DrawOrder.SUBMENU_SLIDER) { ValueChangedEvent = (value, index) => { GlobalState.settings.flash_brightness = value; } }; var easingLabel = new UILabel(brightnessLabel.Position + Vector2.UnitY * yStep, true, "Easing:", layer: Drawing.DrawOrder.TEXT, forceEnglish: true); var easingSelect = new AudioSlider(easingLabel.Position + Vector2.UnitX * 40, GlobalState.settings.flash_easing, 0f, 0.2f, 0.02f, MenuStyle.SubMenu, Drawing.DrawOrder.SUBMENU_SLIDER) { ValueChangedEvent = (value, index) => { GlobalState.settings.flash_easing = value; } }; var testLabel = new UILabel(easingLabel.Position + Vector2.UnitY * yStep, true, "Test", layer: Drawing.DrawOrder.TEXT, forceEnglish: true); var shakeLabel = new UILabel(new Vector2(menuX, testLabel.Position.Y + (int)(yStep * 1.5f)), true, "Screen shake:", layer: Drawing.DrawOrder.TEXT, forceEnglish: true); var shakeSetting = new CheckBox(new Vector2(x + 120, shakeLabel.Position.Y), GlobalState.settings.screenshake, MenuStyle.SubMenu, Drawing.DrawOrder.SUBMENU_SLIDER) { ValueChangedEvent = (val) => { GlobalState.settings.screenshake = val; } }; options = new() { (resolutionLabel, resolutionSelect), (scalingLabel, scalingSelect), (brightnessLabel, brightnessSelect), (easingLabel, easingSelect), (testLabel, new ActionOption(() => GlobalState.flash.Flash(1.0f, Color.White))), (shakeLabel, shakeSetting) }; } }
void AddSliders() { // var lblPitch = new CCLabel("Pitch", "arial", 14, CCLabelFormat.SystemFont); // AddChildAt(lblPitch, 0.67f, 0.4f); // sliderPitch = new AudioSlider(AudioSlider.Direction.Horizontal); sliderPitch.SetValue(0.5f, 2, 1); // AddChildAt(sliderPitch, 0.72f, 0.39f); // var lblPan = new CCLabel("Pan", "arial", 14, CCLabelFormat.SystemFont); // AddChildAt(lblPan, 0.67f, 0.3f); sliderPan = new AudioSlider(); sliderPan.SetValue(-1, 1, 0); // AddChildAt(sliderPan, 0.72f, 0.29f); // // var lblGain = new CCLabel("Gain", "arial", 14, CCLabelFormat.SystemFont); // AddChildAt(lblGain, 0.67f, 0.2f); sliderGain = new AudioSlider(); sliderGain.SetValue(0, 1, 1); // AddChildAt(sliderGain, 0.72f, 0.19f); var lblEffectsVolume = new CCLabel("Effects Volume", "arial", 16, CCLabelFormat.SystemFont); AddChildAt(lblEffectsVolume, 0.62f, 0.5f); sliderEffectsVolume = new AudioSlider(); sliderEffectsVolume.SetValue(0, 1, CCSimpleAudioEngine.SharedEngine.EffectsVolume); AddChildAt(sliderEffectsVolume, 0.71f, 0.49f); var lblMusicVolume = new CCLabel("Music Volume", "arial", 16, CCLabelFormat.SystemFont); AddChildAt(lblMusicVolume, 0.12f, 0.5f); sliderMusicVolume = new AudioSlider(); sliderMusicVolume.SetValue(0, 1, CCSimpleAudioEngine.SharedEngine.BackgroundMusicVolume); AddChildAt(sliderMusicVolume, 0.21f, 0.49f); }
private void SetLabels() { float x = 69; float y = 28 - GameConstants.LineOffset - (GlobalState.CurrentLanguage == Language.ZH_CN ? 1 : 0); float yStep = GameConstants.FONT_LINE_HEIGHT - GameConstants.LineOffset; _keybindsLabel = new UILabel(new Vector2(x, y), true); _bgmLabel = new UILabel(new Vector2(x, _keybindsLabel.Position.Y + yStep * 2), true); _sfxLabel = new UILabel(new Vector2(x, _bgmLabel.Position.Y + 12), true); _autosaveLabel = new UILabel(new Vector2(x, _sfxLabel.Position.Y + yStep * 2), true); _resolutionLabel = new UILabel(new Vector2(x, _autosaveLabel.Position.Y + yStep * 4), true); _scalingLabel = new UILabel(new Vector2(x, _resolutionLabel.Position.Y + yStep * 3), true); _languageLabel = new UILabel(new Vector2(x, _scalingLabel.Position.Y + yStep * 2), true); _keybindsLabel.Initialize(); _bgmLabel.Initialize(true); _sfxLabel.Initialize(true); _autosaveLabel.Initialize(); _resolutionLabel.Initialize(); _scalingLabel.Initialize(); _languageLabel.Initialize(); _keybindsLabel.SetText(DialogueManager.GetDialogue("misc", "any", "config", 1)); _bgmLabel.SetText("BGM"); _sfxLabel.SetText("SFX"); _autosaveLabel.SetText(DialogueManager.GetDialogue("misc", "any", "config", 3)); _resolutionLabel.SetText(DialogueManager.GetDialogue("misc", "any", "config", 6)); _scalingLabel.SetText(DialogueManager.GetDialogue("misc", "any", "config", 16)); _languageLabel.SetText(DialogueManager.GetDialogue("misc", "any", "config", 17)); _musicSlider = new AudioSlider(new Vector2(_bgmLabel.Position.X + _bgmLabel.Writer.WriteArea.Width - 5, _bgmLabel.Position.Y), GlobalState.music_volume_scale, 0f, 1f, 0.1f) { ValueChangedEvent = BgmValueChanged }; _sfxSlider = new AudioSlider(new Vector2(_sfxLabel.Position.X + _sfxLabel.Writer.WriteArea.Width - 5, _sfxLabel.Position.Y), GlobalState.sfx_volume_scale, 0f, 1f, 0.1f) { ValueChangedEvent = SfxValueChanged }; Vector2 autosavePos = Vector2.Zero; if (GlobalState.CurrentLanguage == Language.ZH_CN) { autosavePos = new Vector2(x + 44, _autosaveLabel.Position.Y + GameConstants.FONT_LINE_HEIGHT + 5); } else { autosavePos = new Vector2(x + 16, _autosaveLabel.Position.Y + GameConstants.FONT_LINE_HEIGHT * 2.5f); } _autosaveSetter = new TextSelector(autosavePos, 40, GlobalState.autosave_on ? 1 : 0, DialogueManager.GetDialogue("misc", "any", "config", 4), DialogueManager.GetDialogue("misc", "any", "config", 5)) { ValueChangedEvent = AutoSaveValueChanged }; _languageSetter = new TextSelector(new Vector2(x + _languageLabel.Writer.WriteArea.Width - 8, _languageLabel.Position.Y + GameConstants.LineOffset), GlobalState.CurrentLanguage == Language.ZH_CN ? 40 : 30, (int)GlobalState.CurrentLanguage, Enum.GetNames(GlobalState.CurrentLanguage.GetType()).Select(s => s.ToLower().Replace('_', '-')).ToArray()) { ValueChangedEvent = LanguageValueChanged }; _state = _lastState; }