mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Move FastFlag config to separate tab
This commit is contained in:
parent
ec93ff0351
commit
bff6efe2c5
136
Bloxstrap/ViewModels/FastFlagsViewModel.cs
Normal file
136
Bloxstrap/ViewModels/FastFlagsViewModel.cs
Normal file
@ -0,0 +1,136 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Windows.Input;
|
||||
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
|
||||
using Bloxstrap.Singletons;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace Bloxstrap.ViewModels
|
||||
{
|
||||
public class FastFlagsViewModel : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
public void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
|
||||
public ICommand OpenClientSettingsCommand => new RelayCommand(OpenClientSettings);
|
||||
|
||||
private void OpenClientSettings() => Utilities.OpenWebsite(Path.Combine(Directories.Modifications, "ClientSettings\\ClientAppSettings.json"));
|
||||
|
||||
public int FramerateLimit
|
||||
{
|
||||
get => Int32.TryParse(App.FastFlags.GetValue("DFIntTaskSchedulerTargetFps"), out int x) ? x : 60;
|
||||
set => App.FastFlags.SetValue("DFIntTaskSchedulerTargetFps", value);
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<string, string> RenderingModes => FastFlagManager.RenderingModes;
|
||||
|
||||
public string SelectedRenderingMode
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var mode in RenderingModes)
|
||||
{
|
||||
if (App.FastFlags.GetValue(mode.Value) == "True")
|
||||
return mode.Key;
|
||||
}
|
||||
|
||||
return "Automatic";
|
||||
}
|
||||
|
||||
set => App.FastFlags.SetRenderingMode(value);
|
||||
}
|
||||
|
||||
// this flag has to be set to false to work, weirdly enough
|
||||
public bool ExclusiveFullscreenEnabled
|
||||
{
|
||||
get => App.FastFlags.GetValue("FFlagHandleAltEnterFullscreenManually") == "False";
|
||||
set
|
||||
{
|
||||
App.FastFlags.SetValue("FFlagHandleAltEnterFullscreenManually", value ? "False" : null);
|
||||
|
||||
if (value)
|
||||
{
|
||||
App.FastFlags.SetRenderingMode("Direct3D 11");
|
||||
OnPropertyChanged(nameof(SelectedRenderingMode));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<string, Dictionary<string, string?>> IGMenuVersions => FastFlagManager.IGMenuVersions;
|
||||
|
||||
public string SelectedIGMenuVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
// yeah this kinda sucks
|
||||
foreach (var version in IGMenuVersions)
|
||||
{
|
||||
bool flagsMatch = true;
|
||||
|
||||
foreach (var flag in version.Value)
|
||||
{
|
||||
if (App.FastFlags.GetValue(flag.Key) != flag.Value)
|
||||
flagsMatch = false;
|
||||
}
|
||||
|
||||
if (flagsMatch)
|
||||
return version.Key;
|
||||
}
|
||||
|
||||
return "Default";
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
foreach (var flag in IGMenuVersions[value])
|
||||
{
|
||||
App.FastFlags.SetValue(flag.Key, flag.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool AlternateGraphicsSelectorEnabled
|
||||
{
|
||||
get => App.FastFlags.GetValue("FFlagFixGraphicsQuality") == "True";
|
||||
set => App.FastFlags.SetValue("FFlagFixGraphicsQuality", value ? "True" : null);
|
||||
}
|
||||
|
||||
public bool MobileLuaAppInterfaceEnabled
|
||||
{
|
||||
get => App.FastFlags.GetValue("FFlagLuaAppSystemBar") == "False";
|
||||
set => App.FastFlags.SetValue("FFlagLuaAppSystemBar", value ? "False" : null);
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<string, string> LightingTechnologies => FastFlagManager.LightingTechnologies;
|
||||
|
||||
// this is basically the same as the code for rendering selection, maybe this could be abstracted in some way?
|
||||
public string SelectedLightingTechnology
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var mode in LightingTechnologies)
|
||||
{
|
||||
if (App.FastFlags.GetValue(mode.Value) == "True")
|
||||
return mode.Key;
|
||||
}
|
||||
|
||||
return "Automatic";
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
foreach (var mode in LightingTechnologies)
|
||||
{
|
||||
if (mode.Key != "Automatic")
|
||||
App.FastFlags.SetValue(mode.Value, null);
|
||||
}
|
||||
|
||||
if (value != "Automatic")
|
||||
App.FastFlags.SetValue(LightingTechnologies[value], "True");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,26 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Windows.Input;
|
||||
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
|
||||
using Bloxstrap.Singletons;
|
||||
|
||||
namespace Bloxstrap.ViewModels
|
||||
{
|
||||
public class ModsViewModel : INotifyPropertyChanged
|
||||
public class ModsViewModel
|
||||
{
|
||||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
public void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
|
||||
public ICommand OpenModsFolderCommand => new RelayCommand(OpenModsFolder);
|
||||
public ICommand OpenClientSettingsCommand => new RelayCommand(OpenClientSettings);
|
||||
|
||||
private void OpenModsFolder() => Process.Start("explorer.exe", Directories.Modifications);
|
||||
private void OpenClientSettings() => Utilities.OpenWebsite(Path.Combine(Directories.Modifications, "ClientSettings\\ClientAppSettings.json"));
|
||||
|
||||
public bool OldDeathSoundEnabled
|
||||
{
|
||||
@ -40,124 +30,10 @@ namespace Bloxstrap.ViewModels
|
||||
set => App.Settings.Prop.UseDisableAppPatch = value;
|
||||
}
|
||||
|
||||
public int FramerateLimit
|
||||
{
|
||||
get => Int32.TryParse(App.FastFlags.GetValue("DFIntTaskSchedulerTargetFps"), out int x) ? x : 60;
|
||||
set => App.FastFlags.SetValue("DFIntTaskSchedulerTargetFps", value);
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<string, string> RenderingModes => FastFlagManager.RenderingModes;
|
||||
|
||||
public string SelectedRenderingMode
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var mode in RenderingModes)
|
||||
{
|
||||
if (App.FastFlags.GetValue(mode.Value) == "True")
|
||||
return mode.Key;
|
||||
}
|
||||
|
||||
return "Automatic";
|
||||
}
|
||||
|
||||
set => App.FastFlags.SetRenderingMode(value);
|
||||
}
|
||||
|
||||
// this flag has to be set to false to work, weirdly enough
|
||||
public bool ExclusiveFullscreenEnabled
|
||||
{
|
||||
get => App.FastFlags.GetValue("FFlagHandleAltEnterFullscreenManually") == "False";
|
||||
set
|
||||
{
|
||||
App.FastFlags.SetValue("FFlagHandleAltEnterFullscreenManually", value ? "False" : null);
|
||||
|
||||
if (value)
|
||||
{
|
||||
App.FastFlags.SetRenderingMode("Direct3D 11");
|
||||
OnPropertyChanged(nameof(SelectedRenderingMode));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<string, Dictionary<string, string?>> IGMenuVersions => FastFlagManager.IGMenuVersions;
|
||||
|
||||
public string SelectedIGMenuVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
// yeah this kinda sucks
|
||||
foreach (var version in IGMenuVersions)
|
||||
{
|
||||
bool flagsMatch = true;
|
||||
|
||||
foreach (var flag in version.Value)
|
||||
{
|
||||
if (App.FastFlags.GetValue(flag.Key) != flag.Value)
|
||||
flagsMatch = false;
|
||||
}
|
||||
|
||||
if (flagsMatch)
|
||||
return version.Key;
|
||||
}
|
||||
|
||||
return "Default";
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
foreach (var flag in IGMenuVersions[value])
|
||||
{
|
||||
App.FastFlags.SetValue(flag.Key, flag.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool AlternateGraphicsSelectorEnabled
|
||||
{
|
||||
get => App.FastFlags.GetValue("FFlagFixGraphicsQuality") == "True";
|
||||
set => App.FastFlags.SetValue("FFlagFixGraphicsQuality", value ? "True" : null);
|
||||
}
|
||||
|
||||
public bool MobileLuaAppInterfaceEnabled
|
||||
{
|
||||
get => App.FastFlags.GetValue("FFlagLuaAppSystemBar") == "False";
|
||||
set => App.FastFlags.SetValue("FFlagLuaAppSystemBar", value ? "False" : null);
|
||||
}
|
||||
|
||||
public bool DisableFullscreenOptimizationsEnabled
|
||||
{
|
||||
get => App.Settings.Prop.DisableFullscreenOptimizations;
|
||||
set => App.Settings.Prop.DisableFullscreenOptimizations = value;
|
||||
}
|
||||
|
||||
public IReadOnlyDictionary<string, string> LightingTechnologies => FastFlagManager.LightingTechnologies;
|
||||
|
||||
// this is basically the same as the code for rendering selection, maybe this could be abstracted in some way?
|
||||
public string SelectedLightingTechnology
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var mode in LightingTechnologies)
|
||||
{
|
||||
if (App.FastFlags.GetValue(mode.Value) == "True")
|
||||
return mode.Key;
|
||||
}
|
||||
|
||||
return "Automatic";
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
foreach (var mode in LightingTechnologies)
|
||||
{
|
||||
if (mode.Key != "Automatic")
|
||||
App.FastFlags.SetValue(mode.Value, null);
|
||||
}
|
||||
|
||||
if (value != "Automatic")
|
||||
App.FastFlags.SetValue(LightingTechnologies[value], "True");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,6 +43,7 @@
|
||||
<ui:NavigationFluent.Items>
|
||||
<ui:NavigationItem Content="Integrations" PageType="{x:Type pages:IntegrationsPage}" Icon="Add28" Tag="integrations" />
|
||||
<ui:NavigationItem Content="Mods" PageType="{x:Type pages:ModsPage}" Icon="WrenchScrewdriver20" Tag="mods" />
|
||||
<ui:NavigationItem Content="FastFlags" PageType="{x:Type pages:FastFlagsPage}" Icon="Flag24" Tag="fastflags" />
|
||||
<ui:NavigationItem Content="Appearance" PageType="{x:Type pages:AppearancePage}" Icon="PaintBrush24" Tag="appearance" />
|
||||
<ui:NavigationItem Content="Behaviour" PageType="{x:Type pages:BehaviourPage}" Icon="Settings24" Tag="behaviour" />
|
||||
<ui:NavigationItem Content="Installation" PageType="{x:Type pages:InstallationPage}" Icon="HardDrive20" Tag="installation" />
|
||||
|
110
Bloxstrap/Views/Pages/FastFlagsPage.xaml
Normal file
110
Bloxstrap/Views/Pages/FastFlagsPage.xaml
Normal file
@ -0,0 +1,110 @@
|
||||
<ui:UiPage x:Class="Bloxstrap.Views.Pages.FastFlagsPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Bloxstrap.Views.Pages"
|
||||
xmlns:models="clr-namespace:Bloxstrap.ViewModels"
|
||||
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="1000" d:DesignWidth="800"
|
||||
Title="FastFlagsPage"
|
||||
Scrollable="True">
|
||||
|
||||
<StackPanel Margin="0,0,14,14">
|
||||
<TextBlock Text="Control how specific Roblox engine parameters and features are configured." FontSize="14" Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
|
||||
<ui:CardAction x:Name="OpenClientSettingsCardAction" Grid.Row="1" Grid.ColumnSpan="2" Margin="0,8,0,0" Padding="16,13,16,12" Icon="DocumentEdit24" Command="{Binding OpenClientSettingsCommand}" IsEnabled="{Binding Source={x:Static models:GlobalViewModel.IsNotFirstRun}, Mode=OneTime}">
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Edit ClientAppSettings.json">
|
||||
<!--this is so fucking stupid the disabled state of the cardaction doesnt change the header text colour-->
|
||||
<TextBlock.Style>
|
||||
<Style>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ElementName=OpenModFolderCardAction, Path=IsEnabled, Mode=OneTime}" Value="False">
|
||||
<Setter Property="TextBlock.Foreground" Value="{DynamicResource TextFillColorDisabledBrush}" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Foreground="{DynamicResource TextFillColorTertiaryBrush}">
|
||||
<TextBlock.Style>
|
||||
<Style>
|
||||
<Setter Property="TextBlock.Text" Value="Where all FastFlags are saved to. Use this to manage your own flags."/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ElementName=OpenModFolderCardAction, Path=IsEnabled, Mode=OneTime}" Value="False">
|
||||
<Setter Property="TextBlock.Text" Value="Bloxstrap must first be installed." />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</ui:CardAction>
|
||||
|
||||
<TextBlock Text="Presets" FontSize="16" FontWeight="Medium" Margin="0,16,0,0" />
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Framerate limit" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="By default, it's 60FPS. Use a really high number like 9999 for no limit." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:TextBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" Text="{Binding FramerateLimit, Mode=TwoWay}" PreviewTextInput="ValidateInt32" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Rendering mode" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Select which renderer Roblox should use. ReShade requires Direct3D 11." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding RenderingModes.Keys, Mode=OneTime}" Text="{Binding SelectedRenderingMode, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use exclusive fullscreen" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Enables using Alt + Enter to enter exclusive fullscreen. Only works with Direct3D 11." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding ExclusiveFullscreenEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use alternate graphics quality selector" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Toggle between using the consolidated 1-10 / fine-grained 1-21 graphics quality slider." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding AlternateGraphicsSelectorEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="In-game menu version" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Choose which version of the in-game menu to use. Current default is v1." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding IGMenuVersions.Keys, Mode=OneTime}" Text="{Binding SelectedIGMenuVersion, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Lighting technology" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Select which lighting technology should always be used in every game." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding LightingTechnologies.Keys, Mode=OneTime}" Text="{Binding SelectedLightingTechnology, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use mobile interface in desktop app" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Why would you want to do this? I don't know. But like, why not?" Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding MobileLuaAppInterfaceEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
</StackPanel>
|
||||
</ui:UiPage>
|
20
Bloxstrap/Views/Pages/FastFlagsPage.xaml.cs
Normal file
20
Bloxstrap/Views/Pages/FastFlagsPage.xaml.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using Bloxstrap.ViewModels;
|
||||
using System.Windows.Input;
|
||||
using System;
|
||||
|
||||
namespace Bloxstrap.Views.Pages
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for FastFlagsPage.xaml
|
||||
/// </summary>
|
||||
public partial class FastFlagsPage
|
||||
{
|
||||
public FastFlagsPage()
|
||||
{
|
||||
DataContext = new FastFlagsViewModel();
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void ValidateInt32(object sender, TextCompositionEventArgs e) => e.Handled = !Int32.TryParse(e.Text, out int _);
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@
|
||||
d:DesignHeight="800" d:DesignWidth="800"
|
||||
Title="ModsPage"
|
||||
Scrollable="True">
|
||||
|
||||
<StackPanel Margin="0,0,14,14">
|
||||
<TextBlock Text="Manage and apply file mods to the Roblox game client." FontSize="14" Foreground="{DynamicResource TextFillColorSecondaryBrush}" />
|
||||
|
||||
@ -49,40 +50,12 @@
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</ui:CardAction>
|
||||
<ui:CardAction Grid.Row="1" Grid.ColumnSpan="2" Margin="0,8,0,0" Padding="16,13,16,12" Icon="BookQuestionMark24" Command="models:GlobalViewModel.OpenWebpageCommand" CommandParameter="https://github.com/pizzaboxer/bloxstrap/wiki/Adding-custom-mods">
|
||||
<ui:CardAction Padding="16,13,16,12" Grid.Row="0" Grid.Column="1" Margin="4,0,0,0" Icon="BookQuestionMark24" Command="models:GlobalViewModel.OpenWebpageCommand" CommandParameter="https://github.com/pizzaboxer/bloxstrap/wiki/Adding-custom-mods">
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Help" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="See info about managing and creating mods." Padding="0,0,16,0" Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardAction>
|
||||
<ui:CardAction x:Name="OpenClientSettingsCardAction" Grid.Row="0" Grid.Column="1" Margin="4,0,0,0" Padding="16,13,16,12" Icon="DocumentEdit24" Command="{Binding OpenClientSettingsCommand}" IsEnabled="{Binding Source={x:Static models:GlobalViewModel.IsNotFirstRun}, Mode=OneTime}">
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Edit FastFlags">
|
||||
<!--this is so fucking stupid the disabled state of the cardaction doesnt change the header text colour-->
|
||||
<TextBlock.Style>
|
||||
<Style>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ElementName=OpenModFolderCardAction, Path=IsEnabled, Mode=OneTime}" Value="False">
|
||||
<Setter Property="TextBlock.Foreground" Value="{DynamicResource TextFillColorDisabledBrush}" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Foreground="{DynamicResource TextFillColorTertiaryBrush}">
|
||||
<TextBlock.Style>
|
||||
<Style>
|
||||
<Setter Property="TextBlock.Text" Value="Open and edit ClientAppSettings.json."/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ElementName=OpenModFolderCardAction, Path=IsEnabled, Mode=OneTime}" Value="False">
|
||||
<Setter Property="TextBlock.Text" Value="Bloxstrap must first be installed." />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</ui:CardAction>
|
||||
</Grid>
|
||||
|
||||
<TextBlock Text="Presets" FontSize="16" FontWeight="Medium" Margin="0,16,0,0" />
|
||||
@ -126,71 +99,6 @@
|
||||
</ui:CardControl>
|
||||
</Grid>
|
||||
|
||||
<TextBlock Text="FastFlag Presets" FontSize="16" FontWeight="Medium" Margin="0,16,0,0" />
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Framerate limit" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="By default, it's 60FPS. Use a really high number like 9999 for no limit." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:TextBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" Text="{Binding FramerateLimit, Mode=TwoWay}" PreviewTextInput="ValidateInt32" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Rendering mode" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Select which renderer Roblox should use. ReShade requires Direct3D 11." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding RenderingModes.Keys, Mode=OneTime}" Text="{Binding SelectedRenderingMode, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use exclusive fullscreen" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Enables using Alt + Enter to enter exclusive fullscreen. Only works with Direct3D 11." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding ExclusiveFullscreenEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use alternate graphics quality selector" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Toggle between using the consolidated 1-10 / fine-grained 1-21 graphics quality slider." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding AlternateGraphicsSelectorEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="In-game menu version" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Choose which version of the in-game menu to use. Current default is v1." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding IGMenuVersions.Keys, Mode=OneTime}" Text="{Binding SelectedIGMenuVersion, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Lighting technology" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Select which lighting technology should always be used in every game." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding LightingTechnologies.Keys, Mode=OneTime}" Text="{Binding SelectedLightingTechnology, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use mobile interface in desktop app" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Why would you want to do this? I don't know. But like, why not?" Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding MobileLuaAppInterfaceEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
|
||||
<StackPanel x:Name="MiscellaneousOptions">
|
||||
<TextBlock Text="Miscellaneous" FontSize="16" FontWeight="Medium" Margin="0,16,0,0" />
|
||||
<ui:CardControl Margin="0,8,0,0" Padding="16,13,16,12">
|
||||
|
@ -20,7 +20,5 @@ namespace Bloxstrap.Views.Pages
|
||||
if (Environment.OSVersion.Version.Build < 17093)
|
||||
this.MiscellaneousOptions.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void ValidateInt32(object sender, TextCompositionEventArgs e) => e.Handled = !Int32.TryParse(e.Text, out int _);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user