private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig) { Children = new Drawable[] { new SettingsCheckbox { LabelText = "Show log overlay", Bindable = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) }, new SettingsCheckbox { LabelText = "Performance logging", Bindable = frameworkConfig.GetBindable <bool>(FrameworkSetting.PerformanceLogging) }, new SettingsCheckbox { LabelText = "Bypass caching (slow)", Bindable = config.GetBindable <bool>(DebugSetting.BypassCaching) }, new SettingsCheckbox { LabelText = "Bypass front-to-back render pass", Bindable = config.GetBindable <bool>(DebugSetting.BypassFrontToBackPass) } }; }
private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig, IPerformFromScreenRunner performer) { Children = new Drawable[] { new SettingsCheckbox { LabelText = DebugSettingsStrings.ShowLogOverlay, Current = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) }, new SettingsCheckbox { LabelText = DebugSettingsStrings.BypassFrontToBackPass, Current = config.GetBindable <bool>(DebugSetting.BypassFrontToBackPass) }, new SettingsButton { Text = DebugSettingsStrings.ImportFiles, Action = () => performer?.PerformFromScreen(menu => menu.Push(new FileImportScreen())) }, new SettingsButton { Text = @"Run latency certifier", Action = () => performer?.PerformFromScreen(menu => menu.Push(new LatencyCertifierScreen())) } }; }
private void setupConfig() { Dependencies.Cache(debugConfig = new FrameworkDebugConfigManager()); Dependencies.Cache(config = new FrameworkConfigManager(Storage)); Dependencies.Cache(Localisation = new LocalisationEngine(config)); activeGCMode = debugConfig.GetBindable <GCLatencyMode>(DebugSetting.ActiveGCMode); activeGCMode.ValueChanged += newMode => { GCSettings.LatencyMode = IsActive ? newMode : GCLatencyMode.Interactive; }; frameSyncMode = config.GetBindable <FrameSync>(FrameworkSetting.FrameSync); frameSyncMode.ValueChanged += newMode => { float refreshRate = DisplayDevice.Default.RefreshRate; float drawLimiter = refreshRate; float updateLimiter = drawLimiter * 2; setVSyncMode(); switch (newMode) { case FrameSync.VSync: drawLimiter = int.MaxValue; updateLimiter *= 2; break; case FrameSync.Limit2x: drawLimiter *= 2; updateLimiter *= 2; break; case FrameSync.Limit4x: drawLimiter *= 4; updateLimiter *= 4; break; case FrameSync.Limit8x: drawLimiter *= 8; updateLimiter *= 8; break; case FrameSync.Unlimited: drawLimiter = updateLimiter = int.MaxValue; break; } if (DrawThread != null) { DrawThread.ActiveHz = drawLimiter; } if (UpdateThread != null) { UpdateThread.ActiveHz = updateLimiter; } }; }
private void setupConfig() { Dependencies.Cache(debugConfig = new FrameworkDebugConfigManager()); Dependencies.Cache(config = new FrameworkConfigManager(Storage)); activeGCMode = debugConfig.GetBindable <GCLatencyMode>(FrameworkDebugConfig.ActiveGCMode); activeGCMode.ValueChanged += delegate { setLatencyMode(); }; }
private void load(FrameworkDebugConfigManager debugConfig, TextureStore store) { var texture = store.Get(@"sample-texture"); var repeatedTexture = store.Get(@"sample-texture", WrapMode.Repeat, WrapMode.Repeat); var edgeClampedTexture = store.Get(@"sample-texture", WrapMode.ClampToEdge, WrapMode.ClampToEdge); var borderClampedTexture = store.Get(@"sample-texture", WrapMode.ClampToBorder, WrapMode.ClampToBorder); AddStep("add sprites", () => addMoreDrawables(texture, new RectangleF(0, 0, 1, 1))); AddStep("add sprites with shrink", () => addMoreDrawables(texture, new RectangleF(0.25f, 0.25f, 0.5f, 0.5f))); AddStep("add sprites with repeat", () => addMoreDrawables(repeatedTexture, new RectangleF(0.25f, 0.25f, 0.5f, 0.5f))); AddStep("add sprites with edge clamp", () => addMoreDrawables(edgeClampedTexture, new RectangleF(0.25f, 0.25f, 0.5f, 0.5f))); AddStep("add sprites with border clamp", () => addMoreDrawables(borderClampedTexture, new RectangleF(0.25f, 0.25f, 0.5f, 0.5f))); AddStep("add boxes", () => addMoreDrawables(Texture.WhitePixel, new RectangleF(0, 0, 1, 1))); AddToggleStep("disable front to back", val => { debugConfig.SetValue(DebugSetting.BypassFrontToBackPass, val); Invalidate(Invalidation.DrawNode); // reset counts }); Add(new Container { AutoSizeAxes = Axes.Both, Depth = float.NegativeInfinity, Anchor = Anchor.Centre, Origin = Anchor.Centre, Children = new Drawable[] { new Box { Colour = Color4.Black, RelativeSizeAxes = Axes.Both, Alpha = 0.8f, }, new FillFlowContainer { AutoSizeAxes = Axes.Both, Padding = new MarginPadding(10), Direction = FillDirection.Vertical, Children = new Drawable[] { labelDrawables = new SpriteText { Font = FrameworkFont.Condensed }, labelFrag = new SpriteText { Font = FrameworkFont.Condensed }, labelFrag2 = new SpriteText { Font = FrameworkFont.Condensed }, } }, } }); }
private void load(FrameworkDebugConfigManager config, GameHost host) { Children = new Drawable[] { new SettingsButton { Text = "清理所有缓存", Action = host.Collect }, }; }
private void load(FrameworkDebugConfigManager config, GameHost host) { Children = new Drawable[] { new SettingsButton { Text = DebugSettingsStrings.ClearAllCaches, Action = host.Collect }, }; }
private void load(FrameworkDebugConfigManager config) { Children = new Drawable[] { new OsuCheckbox { LabelText = "Bypass caching", Bindable = config.GetBindable <bool>(FrameworkDebugConfig.BypassCaching) } }; }
private void load(FrameworkDebugConfigManager config) { Children = new Drawable[] { new SettingsButton { Text = "Force garbage collection", Action = GC.Collect }, }; }
public DatabaseController(GameHost host, DependencyContainer dependencies) { Dependencies = dependencies; Connection = host.Storage.GetDatabase(@"client"); Dependencies.Cache(debugConfig = new FrameworkDebugConfigManager()); Dependencies.Cache(config = new FrameworkConfigManager(host.Storage)); Dependencies.Cache(Localisation = new LocalisationEngine(config)); Dependencies.Cache(RulesetDatabase = new RulesetDatabase(host.Storage, Connection)); Dependencies.Cache(BeatmapDatabase = new BeatmapDatabase(host.Storage, Connection, RulesetDatabase, host)); Dependencies.Cache(ScoreDatabase = new ScoreDatabase(host.Storage, Connection, host, BeatmapDatabase)); }
private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig) { Children = new Drawable[] { new SettingsCheckbox { LabelText = "Show log overlay", Current = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) }, new SettingsCheckbox { LabelText = "Bypass front-to-back render pass", Current = config.GetBindable <bool>(DebugSetting.BypassFrontToBackPass) } }; }
private void load(FrameworkDebugConfigManager config) { Children = new Drawable[] { new SettingsEnumDropdown <GCLatencyMode> { LabelText = "Active mode", Bindable = config.GetBindable <GCLatencyMode>(DebugSetting.ActiveGCMode) }, new SettingsButton { Text = "Force garbage collection", Action = GC.Collect }, }; }
private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig) { Children = new Drawable[] { new SettingsCheckbox { LabelText = "Bypass caching", Bindable = config.GetBindable <bool>(DebugSetting.BypassCaching) }, new SettingsCheckbox { LabelText = "Debug logs", Bindable = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) } }; }
private void load(FrameworkDebugConfigManager config) { Children = new Drawable[] { new OptionEnumDropDown <GCLatencyMode> { LabelText = "Active mode", Bindable = config.GetBindable <GCLatencyMode>(FrameworkDebugConfig.ActiveGCMode) }, new OsuButton { RelativeSizeAxes = Axes.X, Text = "Force garbage collection", Action = () => GC.Collect() }, }; }
private void load(FrameworkDebugConfigManager debugConfig) { AddStep("add more drawables", addMoreDrawables); AddToggleStep("disable front to back", val => { debugConfig.Set(DebugSetting.BypassFrontToBackPass, val); Invalidate(Invalidation.DrawNode); // reset counts }); Add(new Container { AutoSizeAxes = Axes.Both, Depth = float.NegativeInfinity, Anchor = Anchor.Centre, Origin = Anchor.Centre, Children = new Drawable[] { new Box { Colour = Color4.Black, RelativeSizeAxes = Axes.Both, Alpha = 0.8f }, new FillFlowContainer { AutoSizeAxes = Axes.Both, Padding = new MarginPadding(10), Direction = FillDirection.Vertical, Children = new Drawable[] { labelDrawables = new SpriteText { Font = FrameworkFont.Condensed }, labelFrag = new SpriteText { Font = FrameworkFont.Condensed }, labelFrag2 = new SpriteText { Font = FrameworkFont.Condensed }, } }, } }); }
private void load(FrameworkDebugConfigManager config) { Children = new Drawable[] { new SettingsEnumDropdown <LatencyMode> { LabelText = "Active mode", Bindable = latencyMode }, new SettingsButton { Text = "Force garbage collection", Action = GC.Collect }, }; configLatencyMode = config.GetBindable <GCLatencyMode>(DebugSetting.ActiveGCMode); configLatencyMode.BindValueChanged(mode => latencyMode.Value = (LatencyMode)mode.NewValue, true); latencyMode.BindValueChanged(mode => configLatencyMode.Value = (GCLatencyMode)mode.NewValue); }
private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig) { Children = new Drawable[] { new SettingsCheckbox { LabelText = "显示日志Overlay", Bindable = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) }, new SettingsCheckbox { LabelText = "记录性能相关信息", Bindable = frameworkConfig.GetBindable <bool>(FrameworkSetting.PerformanceLogging) }, new SettingsCheckbox { LabelText = "绕过 front-to-back 渲染检查(render pass)", Bindable = config.GetBindable <bool>(DebugSetting.BypassFrontToBackPass) } }; }
private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig, OsuGame game) { Children = new Drawable[] { new SettingsCheckbox { LabelText = "Show log overlay", Current = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) }, new SettingsCheckbox { LabelText = "Bypass front-to-back render pass", Current = config.GetBindable <bool>(DebugSetting.BypassFrontToBackPass) } }; Add(new SettingsButton { Text = "Import files", Action = () => game?.PerformFromScreen(menu => menu.Push(new FileImportScreen())) }); }
private void load(FrameworkDebugConfigManager config, FrameworkConfigManager frameworkConfig, OsuGame game) { Children = new Drawable[] { new SettingsCheckbox { LabelText = "顯示日誌圖層", Current = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay) }, new SettingsCheckbox { LabelText = "不使用\"前到後\"渲染設定", Current = config.GetBindable <bool>(DebugSetting.BypassFrontToBackPass) } }; Add(new SettingsButton { Text = "匯入檔案...", Action = () => game?.PerformFromScreen(menu => menu.Push(new FileImportScreen())) }); }
private void setupConfig() { Dependencies.Cache(debugConfig = new FrameworkDebugConfigManager()); Dependencies.Cache(config = new FrameworkConfigManager(Storage)); Dependencies.Cache(Localisation = new LocalisationEngine(config)); activeGCMode = debugConfig.GetBindable <GCLatencyMode>(DebugSetting.ActiveGCMode); activeGCMode.ValueChanged += newMode => { GCSettings.LatencyMode = IsActive ? newMode : GCLatencyMode.Interactive; }; frameSyncMode = config.GetBindable <FrameSync>(FrameworkSetting.FrameSync); frameSyncMode.ValueChanged += newMode => { float refreshRate = DisplayDevice.Default.RefreshRate; // For invalid refresh rates let's assume 60 Hz as it is most common. if (refreshRate <= 0) { refreshRate = 60; } float drawLimiter = refreshRate; float updateLimiter = drawLimiter * 2; setVSyncMode(); switch (newMode) { case FrameSync.VSync: drawLimiter = int.MaxValue; updateLimiter *= 2; break; case FrameSync.Limit2x: drawLimiter *= 2; updateLimiter *= 2; break; case FrameSync.Limit4x: drawLimiter *= 4; updateLimiter *= 4; break; case FrameSync.Limit8x: drawLimiter *= 8; updateLimiter *= 8; break; case FrameSync.Unlimited: drawLimiter = updateLimiter = int.MaxValue; break; } if (DrawThread != null) { DrawThread.ActiveHz = drawLimiter; } if (UpdateThread != null) { UpdateThread.ActiveHz = updateLimiter; } }; ignoredInputHandlers = config.GetBindable <string>(FrameworkSetting.IgnoredInputHandlers); ignoredInputHandlers.ValueChanged += ignoredString => { var configIgnores = ignoredString.Split(' ').Where(s => !string.IsNullOrWhiteSpace(s)); // for now, we always want at least one handler disabled (don't want raw and non-raw mouse at once). bool restoreDefaults = !configIgnores.Any(); if (restoreDefaults) { resetInputHandlers(); ignoredInputHandlers.Value = string.Join(" ", AvailableInputHandlers.Where(h => !h.Enabled).Select(h => h.ToString())); } else { foreach (var handler in AvailableInputHandlers) { var handlerType = handler.ToString(); handler.Enabled.Value = configIgnores.All(ch => ch != handlerType); } } }; cursorSensitivity = config.GetBindable <double>(FrameworkSetting.CursorSensitivity); performanceLogging = config.GetBindable <bool>(FrameworkSetting.PerformanceLogging); performanceLogging.ValueChanged += enabled => threads.ForEach(t => t.Monitor.EnablePerformanceProfiling = enabled); performanceLogging.TriggerChange(); }
private void load(VignetteConfigManager gameConfig, FrameworkConfigManager frameworkConfig, FrameworkDebugConfigManager debugConfig, VignetteGameBase game, Storage storage) { AddRange(new Drawable[] { new Container { AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, Margin = new MarginPadding { Bottom = 30 }, Child = versionText = new ThemableSpriteText { Anchor = Anchor.Centre, Origin = Anchor.Centre, Text = game.Version, Font = SegoeUI.Bold.With(size: 24), }, }, new SettingsCheckbox { Label = "Show FPS", Current = gameConfig.GetBindable <bool>(VignetteSetting.ShowFpsOverlay), }, new SettingsCheckbox { Label = "Show log overlay", Current = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay), }, new SettingsCheckbox { Label = "Bypass front-to-back render pass", Current = debugConfig.GetBindable <bool>(DebugSetting.BypassFrontToBackPass), }, new SettingsButton { Label = "Open logs folder", Action = () => storage.OpenPathInNativeExplorer("./logs"), }, }); if (!game.IsDeployedBuild && game.IsDebugBuild) { versionText.Colour = ThemeSlot.Error; } else if (!game.IsDeployedBuild) { versionText.Colour = ThemeSlot.Success; } else { versionText.Colour = ThemeSlot.Gray190; } }
private void setupConfig() { Dependencies.Cache(debugConfig = new FrameworkDebugConfigManager()); Dependencies.Cache(config = new FrameworkConfigManager(Storage)); Dependencies.Cache(Localisation = new LocalisationEngine(config)); activeGCMode = debugConfig.GetBindable <GCLatencyMode>(DebugSetting.ActiveGCMode); activeGCMode.ValueChanged += newMode => { GCSettings.LatencyMode = IsActive ? newMode : GCLatencyMode.Interactive; }; frameSyncMode = config.GetBindable <FrameSync>(FrameworkSetting.FrameSync); frameSyncMode.ValueChanged += newMode => { float refreshRate = DisplayDevice.Default.RefreshRate; // For invalid refresh rates let's assume 60 Hz as it is most common. if (refreshRate <= 0) { refreshRate = 60; } float drawLimiter = refreshRate; float updateLimiter = drawLimiter * 2; setVSyncMode(); switch (newMode) { case FrameSync.VSync: drawLimiter = int.MaxValue; updateLimiter *= 2; break; case FrameSync.Limit2x: drawLimiter *= 2; updateLimiter *= 2; break; case FrameSync.Limit4x: drawLimiter *= 4; updateLimiter *= 4; break; case FrameSync.Limit8x: drawLimiter *= 8; updateLimiter *= 8; break; case FrameSync.Unlimited: drawLimiter = updateLimiter = int.MaxValue; break; } if (DrawThread != null) { DrawThread.ActiveHz = drawLimiter; } if (UpdateThread != null) { UpdateThread.ActiveHz = updateLimiter; } }; enabledInputHandlers = config.GetBindable <string>(FrameworkSetting.ActiveInputHandlers); enabledInputHandlers.ValueChanged += enabledString => { var configHandlers = enabledString.Split(' ').Where(s => !string.IsNullOrWhiteSpace(s)); bool useDefaults = !configHandlers.Any(); // make sure all the handlers in the configuration file are available, else reset to sane defaults. foreach (string handler in configHandlers) { if (AvailableInputHandlers.All(h => h.ToString() != handler)) { useDefaults = true; break; } } if (useDefaults) { resetInputHandlers(); enabledInputHandlers.Value = string.Join(" ", AvailableInputHandlers.Where(h => h.Enabled).Select(h => h.ToString())); } else { foreach (var handler in AvailableInputHandlers) { var handlerType = handler.ToString(); handler.Enabled.Value = configHandlers.Any(ch => ch == handlerType); } } }; cursorSensitivity = config.GetBindable <double>(FrameworkSetting.CursorSensitivity); }
private void load(FrameworkDebugConfigManager debugConfig) { AddToggleStep("disable front to back", val => debugConfig.Set(DebugSetting.BypassFrontToBackPass, val)); }