Inheritance: MonoBehaviour
 void Awake()
 {
     if (instance != null && instance != this)
     {
         Destroy(this.gameObject);
         return;
     }
     else
     {
         instance = this;
     }
     DontDestroyOnLoad(this.gameObject);
 }
Ejemplo n.º 2
0
        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)
            };
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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)
            };
        }
    }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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;
        }