Skip to content

Commit d4b7a49

Browse files
committed
FVariable versioning!
1 parent c42f668 commit d4b7a49

9 files changed

Lines changed: 404 additions & 23 deletions

‎Config/LatestReleaseTag.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v2025.05.01
1+
v2025.12.03

‎ProjectSrc/Forms/FlagEditor.cs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
using Newtonsoft.Json;
1414
using Newtonsoft.Json.Linq;
15-
using RbxFFlagDumper.Lib;
1615

1716
namespace RobloxStudioModManager
1817
{
@@ -211,12 +210,12 @@ private async void InitializeEditor()
211210
string lastFlagScanVersion = versionRegistry.LastFlagScanVersion;
212211
string versionGuid = versionRegistry.VersionGuid;
213212

213+
var cppFlags = StudioFFlagDumper.DumpCppFlags(studioPath);
214214
var flagDump = Path.Combine(studioDir, "FFlags.json");
215215
var flagInfo = new FileInfo(flagDump);
216216

217217
if (lastFlagScanVersion != versionGuid || !flagInfo.Exists)
218218
{
219-
var cppFlags = StudioFFlagDumper.DumpCppFlags(studioPath);
220219
cppFlags.ForEach(flag => flagNames.Add(flag));
221220

222221
var newJson = JsonConvert.SerializeObject(flagNames);

‎ProjectSrc/Program.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ static class Program
1818
public const string RepoOwner = "MaximumADHD";
1919
public const string RepoName = "Roblox-Studio-Mod-Manager";
2020

21-
public const string ReleaseTag = "v2025.05.01";
21+
public const string ReleaseTag = "v2025.12.03";
2222
public static readonly string BaseConfigUrl = $"https://raw.githubusercontent.com/{RepoOwner}/{RepoName}/{RepoBranch}/Config/";
2323

2424
public static readonly RegistryKey LegacyRegistry = Registry.CurrentUser.GetSubKey("SOFTWARE", "Roblox Studio Mod Manager");

‎ProjectSrc/RobloxStudioModManager.csproj‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,10 @@
176176
<Compile Include="Utility\KnownRoot.cs" />
177177
<Compile Include="Utility\OrdinalSortJson.cs" />
178178
<Compile Include="Utility\Package.cs" />
179+
<Compile Include="Utility\PatternScanner.cs" />
180+
<Compile Include="Utility\RawFFlagData.cs" />
179181
<Compile Include="Utility\RobloxInternal.cs" />
182+
<Compile Include="Utility\StudioFFlagDumper.cs" />
180183
<Compile Include="Utility\SystemEvent.cs" />
181184
<Compile Include="Bootstrapper\*.cs" />
182185
<Compile Include="Forms\BootstrapperForm.cs">
@@ -239,10 +242,6 @@
239242
<EmbeddedResource Include="Resources\Icon.ico" />
240243
</ItemGroup>
241244
<ItemGroup>
242-
<ProjectReference Include="..\..\rbxfflagdumper\RbxFFlagDumper.Lib\RbxFFlagDumper.Lib.csproj">
243-
<Project>{c92d12e8-7435-4a6b-9c7e-c8e4aef37b1c}</Project>
244-
<Name>RbxFFlagDumper.Lib</Name>
245-
</ProjectReference>
246245
<ProjectReference Include="..\..\Roblox-Deploy-History\RobloxDeployHistory.csproj">
247246
<Project>{1ce1a9df-c2ff-49c4-9b7c-792c962c339f}</Project>
248247
<Name>RobloxDeployHistory</Name>
@@ -264,6 +263,9 @@
264263
<PackageReference Include="Newtonsoft.Json">
265264
<Version>13.0.1</Version>
266265
</PackageReference>
266+
<PackageReference Include="PeNet">
267+
<Version>5.1.0</Version>
268+
</PackageReference>
267269
</ItemGroup>
268270
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
269271
<PropertyGroup>

‎ProjectSrc/RobloxStudioModManager.sln‎

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Include", "Include", "{599F
99
EndProject
1010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RobloxDeployHistory", "..\..\Roblox-Deploy-History\RobloxDeployHistory.csproj", "{1CE1A9DF-C2FF-49C4-9B7C-792C962C339F}"
1111
EndProject
12-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RbxFFlagDumper.Lib", "..\..\rbxfflagdumper\RbxFFlagDumper.Lib\RbxFFlagDumper.Lib.csproj", "{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}"
13-
EndProject
1412
Global
1513
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1614
Debug|Any CPU = Debug|Any CPU
@@ -45,25 +43,12 @@ Global
4543
{1CE1A9DF-C2FF-49C4-9B7C-792C962C339F}.Release|Any CPU.Build.0 = Release|Any CPU
4644
{1CE1A9DF-C2FF-49C4-9B7C-792C962C339F}.Release|x64.ActiveCfg = Release|x64
4745
{1CE1A9DF-C2FF-49C4-9B7C-792C962C339F}.Release|x64.Build.0 = Release|x64
48-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
49-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
50-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Debug|x64.ActiveCfg = Debug|Any CPU
51-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Debug|x64.Build.0 = Debug|Any CPU
52-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Internal|Any CPU.ActiveCfg = Debug|Any CPU
53-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Internal|Any CPU.Build.0 = Debug|Any CPU
54-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Internal|x64.ActiveCfg = Debug|Any CPU
55-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Internal|x64.Build.0 = Debug|Any CPU
56-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
57-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Release|Any CPU.Build.0 = Release|Any CPU
58-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Release|x64.ActiveCfg = Release|Any CPU
59-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C}.Release|x64.Build.0 = Release|Any CPU
6046
EndGlobalSection
6147
GlobalSection(SolutionProperties) = preSolution
6248
HideSolutionNode = FALSE
6349
EndGlobalSection
6450
GlobalSection(NestedProjects) = preSolution
6551
{1CE1A9DF-C2FF-49C4-9B7C-792C962C339F} = {599F227F-86C3-4CB6-B12D-6CBF086B240E}
66-
{C92D12E8-7435-4A6B-9C7E-C8E4AEF37B1C} = {599F227F-86C3-4CB6-B12D-6CBF086B240E}
6752
EndGlobalSection
6853
GlobalSection(ExtensibilityGlobals) = postSolution
6954
SolutionGuid = {C54D42A8-8071-46D8-8581-22530C90CE09}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Forked from:
2+
// https://github.com/pizzaboxer/rbxfflagdumper/blob/main/RbxFFlagDumper.Lib/PatternScanner.cs
3+
4+
using System.Collections.Generic;
5+
using System.Globalization;
6+
using System;
7+
8+
namespace RobloxStudioModManager
9+
{
10+
public class PatternScanner
11+
{
12+
private readonly byte[] _binary;
13+
private readonly List<byte?> _pattern = new List<byte?>();
14+
15+
private static readonly IFormatProvider _invariant = NumberFormatInfo.InvariantInfo;
16+
private static readonly NumberStyles _hexNumber = NumberStyles.HexNumber;
17+
18+
private readonly int _end;
19+
private int _pos = 0;
20+
21+
public PatternScanner(byte[] binary, string patternStr, int start, int length)
22+
{
23+
_binary = binary;
24+
_pos = start;
25+
26+
foreach (string bit in patternStr.Split(' '))
27+
{
28+
byte? value = null;
29+
30+
if (byte.TryParse(bit, _hexNumber, _invariant, out byte result))
31+
value = result;
32+
33+
_pattern.Add(value);
34+
35+
}
36+
37+
_end = start + length - _pattern.Count;
38+
}
39+
40+
public PatternScanner(byte[] binary, string patternStr)
41+
: this(binary, patternStr, 0, binary.Length)
42+
{
43+
}
44+
45+
public int FindNext()
46+
{
47+
while (!Finished)
48+
{
49+
for (int i = 0; i < _pattern.Count; i++)
50+
{
51+
if (!(_pattern[i] is null))
52+
if (_binary[_pos+i] != _pattern[i])
53+
break;
54+
55+
if (i == _pattern.Count-1)
56+
{
57+
int result = _pos;
58+
_pos += _pattern.Count;
59+
return result;
60+
}
61+
}
62+
63+
_pos++;
64+
}
65+
66+
return Finished ? _pos : -1;
67+
}
68+
69+
public bool Finished => _pos >= _end;
70+
public void Reset() => _pos = 0;
71+
}
72+
}

‎ProjectSrc/Utility/RawFFlagData.cs‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Forked from:
2+
// https://github.com/pizzaboxer/rbxfflagdumper/blob/main/RbxFFlagDumper.Lib/RawFFlagData.cs
3+
4+
namespace RobloxStudioModManager
5+
{
6+
internal class RawFFlagData
7+
{
8+
public int DataTypeId;
9+
10+
public int ByteParam;
11+
12+
public string Name;
13+
14+
public RawFFlagData(int dataTypeId, int byteParam, string name)
15+
{
16+
DataTypeId = dataTypeId;
17+
ByteParam = byteParam;
18+
Name = name;
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)