mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Add option to use pre-2013 mouse cursor
This commit is contained in:
parent
88ea69c56d
commit
ade4a89338
@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
@ -24,10 +24,12 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resources\Mods\Cursor\From2006\ArrowCursor.png" />
|
||||
<EmbeddedResource Include="Resources\Mods\Cursor\From2006\ArrowFarCursor.png" />
|
||||
<EmbeddedResource Include="Resources\Mods\Cursor\From2013\ArrowCursor.png" />
|
||||
<EmbeddedResource Include="Resources\Mods\Cursor\From2013\ArrowFarCursor.png" />
|
||||
<EmbeddedResource Include="Resources\Mods\Empty.mp3" />
|
||||
<EmbeddedResource Include="Resources\Mods\OldCursor.png" />
|
||||
<EmbeddedResource Include="Resources\Mods\OldDeath.ogg" />
|
||||
<EmbeddedResource Include="Resources\Mods\OldFarCursor.png" />
|
||||
<EmbeddedResource Include="Resources\Mods\OldJump.mp3" />
|
||||
<EmbeddedResource Include="Resources\Mods\OldWalk.mp3" />
|
||||
</ItemGroup>
|
||||
|
@ -998,15 +998,20 @@ namespace Bloxstrap
|
||||
if (!Directory.Exists(modFolder))
|
||||
Directory.CreateDirectory(modFolder);
|
||||
|
||||
await CheckModPreset(App.Settings.Prop.UseOldDeathSound, @"content\sounds\ouch.ogg", "OldDeath.ogg");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldMouseCursor, @"content\textures\Cursors\KeyboardMouse\ArrowCursor.png", "OldCursor.png");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldMouseCursor, @"content\textures\Cursors\KeyboardMouse\ArrowFarCursor.png", "OldFarCursor.png");
|
||||
// cursors
|
||||
await CheckModPreset(App.Settings.Prop.CursorType != CursorType.Default, @"content\textures\Cursors\KeyboardMouse\ArrowCursor.png", $"Cursor.{App.Settings.Prop.CursorType}.ArrowCursor.png");
|
||||
await CheckModPreset(App.Settings.Prop.CursorType != CursorType.Default, @"content\textures\Cursors\KeyboardMouse\ArrowFarCursor.png", $"Cursor.{App.Settings.Prop.CursorType}.ArrowFarCursor.png");
|
||||
|
||||
// character sounds
|
||||
await CheckModPreset(App.Settings.Prop.UseOldCharacterSounds, @"content\sounds\action_footsteps_plastic.mp3", "OldWalk.mp3");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldCharacterSounds, @"content\sounds\action_jump.mp3", "OldJump.mp3");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldCharacterSounds, @"content\sounds\action_falling.mp3", "Empty.mp3");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldCharacterSounds, @"content\sounds\action_jump_land.mp3", "Empty.mp3");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldCharacterSounds, @"content\sounds\action_swim.mp3", "Empty.mp3");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldCharacterSounds, @"content\sounds\impact_water.mp3", "Empty.mp3");
|
||||
await CheckModPreset(App.Settings.Prop.UseOldDeathSound, @"content\sounds\ouch.ogg", "OldDeath.ogg");
|
||||
|
||||
// misc
|
||||
await CheckModPreset(App.Settings.Prop.UseDisableAppPatch && !_launchCommandLine.Contains("--deeplink"), @"ExtraContent\places\Mobile.rbxl", "");
|
||||
|
||||
// emoji presets are downloaded remotely from github due to how large they are
|
||||
@ -1104,26 +1109,22 @@ namespace Bloxstrap
|
||||
|
||||
private static async Task CheckModPreset(bool condition, string location, string name)
|
||||
{
|
||||
string modFolderLocation = Path.Combine(Directories.Modifications, location);
|
||||
byte[] binaryData = string.IsNullOrEmpty(name) ? Array.Empty<byte>() : await Resource.Get(name);
|
||||
string fullLocation = Path.Combine(Directories.Modifications, location);
|
||||
byte[] embeddedData = string.IsNullOrEmpty(name) ? Array.Empty<byte>() : await Resource.Get(name);
|
||||
|
||||
if (condition)
|
||||
string fileHash = File.Exists(fullLocation) ? Utility.MD5Hash.FromFile(fullLocation) : "";
|
||||
string embeddedHash = Utility.MD5Hash.FromBytes(embeddedData);
|
||||
|
||||
if (condition && fileHash != embeddedHash)
|
||||
{
|
||||
if (!File.Exists(modFolderLocation))
|
||||
{
|
||||
string? directory = Path.GetDirectoryName(modFolderLocation);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(fullLocation)!);
|
||||
File.Delete(fullLocation);
|
||||
|
||||
if (directory is null)
|
||||
return;
|
||||
|
||||
Directory.CreateDirectory(directory);
|
||||
|
||||
await File.WriteAllBytesAsync(modFolderLocation, binaryData);
|
||||
}
|
||||
await File.WriteAllBytesAsync(fullLocation, embeddedData);
|
||||
}
|
||||
else if (File.Exists(modFolderLocation) && Utility.MD5Hash.FromFile(modFolderLocation) == Utility.MD5Hash.FromBytes(binaryData))
|
||||
else if (!condition && fileHash != "")
|
||||
{
|
||||
File.Delete(modFolderLocation);
|
||||
File.Delete(fullLocation);
|
||||
}
|
||||
}
|
||||
|
||||
|
9
Bloxstrap/Enums/CursorType.cs
Normal file
9
Bloxstrap/Enums/CursorType.cs
Normal file
@ -0,0 +1,9 @@
|
||||
namespace Bloxstrap.Enums
|
||||
{
|
||||
public enum CursorType
|
||||
{
|
||||
Default,
|
||||
From2006,
|
||||
From2013
|
||||
}
|
||||
}
|
16
Bloxstrap/Extensions/CursorTypeEx.cs
Normal file
16
Bloxstrap/Extensions/CursorTypeEx.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Bloxstrap.Enums;
|
||||
|
||||
namespace Bloxstrap.Extensions
|
||||
{
|
||||
static class CursorTypeEx
|
||||
{
|
||||
public static IReadOnlyDictionary<string, CursorType> Selections => new Dictionary<string, CursorType>
|
||||
{
|
||||
{ "Default", CursorType.Default },
|
||||
{ "Before 2022", CursorType.From2013 },
|
||||
{ "Before 2013", CursorType.From2006 },
|
||||
};
|
||||
}
|
||||
}
|
@ -29,8 +29,8 @@ namespace Bloxstrap.Models
|
||||
// mod preset configuration
|
||||
public bool UseOldDeathSound { get; set; } = true;
|
||||
public bool UseOldCharacterSounds { get; set; } = false;
|
||||
public bool UseOldMouseCursor { get; set; } = false;
|
||||
public bool UseDisableAppPatch { get; set; } = false;
|
||||
public CursorType CursorType { get; set; } = CursorType.Default;
|
||||
public EmojiType EmojiType { get; set; } = EmojiType.Default;
|
||||
public bool DisableFullscreenOptimizations { get; set; } = false;
|
||||
}
|
||||
|
BIN
Bloxstrap/Resources/Mods/Cursor/From2006/ArrowCursor.png
Normal file
BIN
Bloxstrap/Resources/Mods/Cursor/From2006/ArrowCursor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
BIN
Bloxstrap/Resources/Mods/Cursor/From2006/ArrowFarCursor.png
Normal file
BIN
Bloxstrap/Resources/Mods/Cursor/From2006/ArrowFarCursor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 232 B After Width: | Height: | Size: 232 B |
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 235 B |
@ -60,67 +60,56 @@
|
||||
</Grid>
|
||||
|
||||
<TextBlock Text="Presets" FontSize="16" FontWeight="Medium" Margin="0,16,0,0" />
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<ui:CardControl Grid.Row="0" Grid.Column="0" Margin="0,8,4,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use old death sound" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Bring back the classic 'oof' death sound." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding OldDeathSoundEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Grid.Row="0" Grid.Column="1" Margin="4,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use old mouse cursor" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Use the pre-2022 style mouse cursor." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding OldMouseCursorEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Grid.Row="0" Grid.Column="0" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Use old death sound" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Bring back the classic 'oof' death sound." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding OldDeathSoundEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
|
||||
<ui:CardControl Grid.Row="1" Grid.ColumnSpan="2" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Emulate old character sounds" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="An attempt to roughly bring back the character sounds used prior to 2014." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding OldCharacterSoundsEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Grid.Row="0" Grid.Column="1" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Preferred mouse cursor" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Choose between using two classic Roblox cursor styles." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding CursorTypes.Keys, Mode=OneTime}" Text="{Binding SelectedCursorType, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
|
||||
<ui:CardControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Disable desktop app" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Stops the desktop app from showing, especially when you leave a game." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding DisableAppPatchEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
<ui:CardControl Grid.Row="1" Grid.ColumnSpan="2" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Emulate old character sounds" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="An attempt to roughly bring back the character sounds used prior to 2014." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding OldCharacterSoundsEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
|
||||
<ui:CardControl Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Preferred emoji type" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Choose which type of emoji should Roblox use." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding EmojiTypes.Keys, Mode=OneTime}" Text="{Binding SelectedEmojiType, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
</Grid>
|
||||
<ui:CardControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Disable desktop app" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Stops the desktop app from showing, especially when you leave a game." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ui:ToggleSwitch IsChecked="{Binding DisableAppPatchEnabled, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
|
||||
<ui:CardControl Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,8,0,0">
|
||||
<ui:CardControl.Header>
|
||||
<StackPanel>
|
||||
<TextBlock FontSize="14" Text="Preferred emoji type" />
|
||||
<TextBlock Margin="0,2,0,0" FontSize="12" Text="Choose which type of emoji should Roblox use." Foreground="{DynamicResource TextFillColorTertiaryBrush}" />
|
||||
</StackPanel>
|
||||
</ui:CardControl.Header>
|
||||
<ComboBox Margin="5,0,0,0" Padding="10,5,10,5" Width="200" ItemsSource="{Binding EmojiTypes.Keys, Mode=OneTime}" Text="{Binding SelectedEmojiType, Mode=TwoWay}" />
|
||||
</ui:CardControl>
|
||||
|
||||
<StackPanel x:Name="MiscellaneousOptions">
|
||||
<TextBlock Text="Miscellaneous" FontSize="16" FontWeight="Medium" Margin="0,16,0,0" />
|
||||
|
@ -28,10 +28,12 @@ namespace Bloxstrap.UI.ViewModels.Menu
|
||||
set => App.Settings.Prop.UseOldCharacterSounds = value;
|
||||
}
|
||||
|
||||
public bool OldMouseCursorEnabled
|
||||
public IReadOnlyDictionary<string, Enums.CursorType> CursorTypes => CursorTypeEx.Selections;
|
||||
|
||||
public string SelectedCursorType
|
||||
{
|
||||
get => App.Settings.Prop.UseOldMouseCursor;
|
||||
set => App.Settings.Prop.UseOldMouseCursor = value;
|
||||
get => CursorTypes.FirstOrDefault(x => x.Value == App.Settings.Prop.CursorType).Key;
|
||||
set => App.Settings.Prop.CursorType = CursorTypes[value];
|
||||
}
|
||||
|
||||
public bool DisableAppPatchEnabled
|
||||
|
Loading…
Reference in New Issue
Block a user