Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"sdk": {
"version": "8.0.100",
"rollForward": "latestMajor",
"rollForward": "latestFeature",
"allowPrerelease": false
}
}
4 changes: 2 additions & 2 deletions osu.Android/Native/VulkanRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public VulkanRenderer()
nativePtr = nVulkanCreate();
}

public void Initialize(Surface surface) => nVulkanInit(nativePtr, surface);
public void Initialize(IntPtr surface) => nVulkanInit(nativePtr, surface);

public void Render() => nVulkanRender(nativePtr);

Expand Down Expand Up @@ -47,7 +47,7 @@ protected virtual void Dispose(bool disposing)
private static extern void nVulkanDestroy(long ptr);

[DllImport("osu.Android.Native")]
private static extern void nVulkanInit(long ptr, Surface surface);
private static extern void nVulkanInit(long ptr, IntPtr surface);

[DllImport("osu.Android.Native")]
private static extern void nVulkanRender(long ptr);
Expand Down
34 changes: 27 additions & 7 deletions osu.Game/Beatmaps/Formats/LegacyStoryboardDecoder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -384,29 +384,49 @@ private void decodeVariables(ref string line)

var sb = new StringBuilder();

for (int i = 0; i < line.Length; )
for (int i = 0; i < line.Length;)
{
if (line[i] == '$')
{
i++;
var variableName = new StringBuilder();
var variableNameBuilder = new StringBuilder();

while (i < line.Length && !char.IsWhiteSpace(line[i]) && line[i] != ',')
{
variableName.Append(line[i]);
variableNameBuilder.Append(line[i]);
i++;
}

if (variables.TryGetValue('$' + variableName.ToString(), out string value))
sb.Append(value);
else
sb.Append('$' + variableName.ToString());
string variableName = variableNameBuilder.ToString();
bool found = false;

// Try to find the longest matching variable
for (int len = variableName.Length; len > 0; len--)
{
string potentialKey = string.Concat("$", variableName.AsSpan(0, len));

if (variables.TryGetValue(potentialKey, out string? value))
{
sb.Append(value);
sb.Append(variableName.AsSpan(len));
found = true;
break;
}
}

if (!found)
{
sb.Append('$');
sb.Append(variableName);
}
}
else
{
sb.Append(line[i]);
i++;
}
}

line = sb.ToString();
}
}
Expand Down
Loading