private static IEnumerator DelayedMockCounterUpdate <T>(T settings) where T : ConfigModel
        {
            yield return(new WaitForEndOfFrame());

            settings?.Save();
            MockCounter.Update(settings);
        }
 public static void UpdateSettings <T>(T settings, SettingsInfo info) where T : ConfigModel
 {
     try
     {
         if (!(settings is null))
         {
             MockCounter.Highlight(settings);
         }
         ClearScreen();
         if (!(info is null))
         {
             if (info.IsCustom)
             {
                 CreateBase(settings, (settings as CustomConfigModel).RestrictedPositions);
             }
             else
             {
                 SubMenu sub = CreateBase(settings);
                 AdvancedCounterSettings.counterUIItems[settings](sub, settings);
             }
         }
         Instance.SelectedSettingsInfo = info;
         Instance.SelectedConfigModel  = settings;
         settingsTitle           = BeatSaberUI.CreateText(rect, $"{settings.DisplayName} Settings", Vector2.zero);
         settingsTitle.fontSize  = 6;
         settingsTitle.alignment = TextAlignmentOptions.Center;
         SetPositioning(settingsTitle.rectTransform, 0, 0.85f, 1, 0.166f, 0.5f);
         LoadedElements.Add(settingsTitle.gameObject);
         InitSettings();
     }
     catch (Exception e) { Plugin.Log(e.ToString(), LogInfo.Fatal, "Go to the Counters+ GitHub and open an Issue. This shouldn't happen!"); }
 }
Exemplo n.º 3
0
 public static void UpdateSettings <T>(T settings) where T : ConfigModel
 {
     try
     {
         if (settings is null)
         {
             return;
         }
         wasInMainSettingsMenu = false;
         SelectedConfigModel   = settings;
         ClearScreen(true);
         MockCounter.Highlight(settings);
         string name = string.Join("", settings.DisplayName.Split(' '));
         if (settings is CustomConfigModel custom)
         {
             ConfigModelController.GenerateController(custom.CustomCounter.CustomSettingsHandler,
                                                      Instance.SettingsContainer, custom.CustomCounter.CustomSettingsResource, true, settings);
             name = custom.CustomCounter.Name;
         }
         else
         {
             Type controllerType = Type.GetType($"CountersPlus.UI.ViewControllers.ConfigModelControllers.{name}Controller");
             ConfigModelController controller = ConfigModelController.GenerateController(settings, controllerType, Instance.SettingsContainer);
         }
         Instance.SettingsName.text = $"{(settings is null ? "Oops!" : $"{settings.DisplayName} Settings")}";
     }
        internal static void ShowMainSettings()
        {
            ClearScreen();
            MockCounter.Highlight <ConfigModel>(null);
            settingsTitle           = BeatSaberUI.CreateText(rect, "Main Settings", Vector2.zero);
            settingsTitle.fontSize  = 6;
            settingsTitle.alignment = TextAlignmentOptions.Center;
            SetPositioning(settingsTitle.rectTransform, 0, 0.85f, 1, 0.166f, 0.5f);
            LoadedElements.Add(settingsTitle.gameObject);

            SubMenu sub     = new SubMenu(rect);
            var     enabled = AddList(ref sub, null as ConfigModel, "Enabled", "Toggles Counters+ on or off.", 2);

            enabled.GetTextForValue = (v) => (v != 0f) ? "ON" : "OFF";
            enabled.GetValue        = () => CountersController.settings.Enabled ? 1f : 0f;
            enabled.SetValue        = (v) => CountersController.settings.Enabled = v != 0f;

            var toggleCounters = AddList(ref sub, null as ConfigModel, "Advanced Mock Counters", "Allows the mock counters to display more settings. To increase preformance, and reduce chances of bugs, disable this option.", 2);

            toggleCounters.GetTextForValue = (v) => (v != 0f) ? "ON" : "OFF";
            toggleCounters.GetValue        = () => CountersController.settings.AdvancedCounterInfo ? 1f : 0f;
            toggleCounters.SetValue        = (v) => CountersController.settings.AdvancedCounterInfo = v != 0f;

            var comboOffset = AddList(ref sub, null as ConfigModel, "Combo Offset", "How far from the Combo counters should be before Distance is taken into account.", 20);

            comboOffset.GetTextForValue = (v) => ((v - 10) / 10).ToString();
            comboOffset.GetValue        = () => (CountersController.settings.ComboOffset * 10) + 10;
            comboOffset.SetValue        = (v) => CountersController.settings.ComboOffset = ((v - 10) / 10);

            var multiOffset = AddList(ref sub, null as ConfigModel, "Multiplier Offset", "How far from the Multiplier counters should be before Distance is taken into account.", 20);

            multiOffset.GetTextForValue = (v) => ((v - 10) / 10).ToString();
            multiOffset.GetValue        = () => (CountersController.settings.MultiplierOffset * 10) + 10;
            multiOffset.SetValue        = (v) => CountersController.settings.MultiplierOffset = ((v - 10) / 10);

            var hideCombo = AddList(ref sub, null as ConfigModel, "Hide Combo In-Game", "The combo counter wasn't good enough anyways.", 2);

            hideCombo.GetTextForValue = (v) => (v != 0f) ? "ON" : "OFF";
            hideCombo.GetValue        = () => CountersController.settings.HideCombo ? 1f : 0f;
            hideCombo.SetValue        = (v) => CountersController.settings.HideCombo = v != 0f;

            var hideMultiplier = AddList(ref sub, null as ConfigModel, "Hide Multiplier In-Game", "The multiplier wasn't good enough anyways.", 2);

            hideMultiplier.GetTextForValue = (v) => (v != 0f) ? "ON" : "OFF";
            hideMultiplier.GetValue        = () => CountersController.settings.HideMultiplier ? 1f : 0f;
            hideMultiplier.SetValue        = (v) => CountersController.settings.HideMultiplier = v != 0f;

            toggleCounters.SetValue += (v) => CountersPlusSettingsFlowCoordinator.UpdateMockCounters();
            comboOffset.SetValue    += (v) => CountersPlusSettingsFlowCoordinator.UpdateMockCounters();
            multiOffset.SetValue    += (v) => CountersPlusSettingsFlowCoordinator.UpdateMockCounters();

            foreach (ListViewController list in LoadedSettings) //Should be cleared from the ClearScreen function.
            {
                list.SetValue += (v) => CountersController.settings.Save();
            }

            InitSettings();
        }
Exemplo n.º 5
0
        internal static void ShowMainSettings()
        {
            ClearScreen(true);
            Instance.SettingsName.text = "Main Settings";
            Type controllerType = Type.GetType($"CountersPlus.UI.ViewControllers.ConfigModelControllers.MainSettingsController");

            ConfigModelController.GenerateController(controllerType, Instance.SettingsContainer, "CountersPlus.UI.BSML.MainSettings.bsml");
            MockCounter.Highlight <ConfigModel>(null);
            SelectedConfigModel   = null;
            wasInMainSettingsMenu = true;
        }
Exemplo n.º 6
0
        private static (FakeHttpClientHandler, MockCounter) MakeFakeHttpClientHandler()
        {
            MockCounter mockCounter = new MockCounter();

            return(new FakeHttpClientHandler(r =>
            {
                var counter = ++mockCounter.Counter;

                string response = counter % 2 == 0 ? _result2Str : _result1Str;

                return new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ByteArrayContent(Encoding.UTF8.GetBytes(response))
                };
            }), mockCounter);
        }
Exemplo n.º 7
0
        public override void OnCellSelect(TableView view, int row, CountersPlusHorizontalSettingsListViewController settings)
        {
            CountersPlusEditViewController.ClearScreen(true);
            MockCounter.Highlight <ConfigModel>(null);
            switch (row)
            {
            case 0:
                RefreshScreen("General", "General HUD Settings");
                break;

            case 1:
                RefreshScreen("Camera", "HUD Camera Settings");
                break;

            case 2:
                RefreshScreen("Position", "HUD Position Offset");
                break;

            case 3:
                RefreshScreen("Rotation", "HUD Rotation");
                break;
            }
        }
 public void StopCounting(MockCounter<ILogger> logCounter)
 {
     lock (this.lockObject)
     {
         logCounter.Dispose();
         this.currentCounters.Remove(logCounter);
     }
 }
 public MockCounter<ILogger> StartCounting(Expression<Action<ILogger>> setupAction)
 {
     lock (this.lockObject)
     {
         var counter = new MockCounter<ILogger>(this.wrappedMock, setupAction);
         this.currentCounters.Add(counter);
         return counter;
     }
 }