UI HUGE UPDATE

This commit is contained in:
FloatGaming
2026-06-25 11:48:56 +08:00
parent bd2a06f4c7
commit b2a1e307a4
1806 changed files with 359863 additions and 20822 deletions
@@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using System.IO;
[Serializable]
public class DlcManifestFile
{
public string manifestId;
public string manifestVersion = "1";
public List<DlcManifestEntry> entries = new List<DlcManifestEntry>();
}
[Serializable]
public class DlcManifestEntry
{
public bool enabled = true;
public string dlcKey;
public string version;
public string catalogPath;
public bool autoDownloadDependencies = true;
public string[] dependencyKeys;
public string[] dlcDataLabels;
public string[] songLabels;
public string[] songContentLabels;
public string[] heroSkinLabels;
public string GetSafeDlcKey()
{
return string.IsNullOrWhiteSpace(dlcKey) ? string.Empty : dlcKey.Trim();
}
public string[] GetDlcDataLabels()
{
return GetResolvedLabels(dlcDataLabels, "dlc:" + GetSafeDlcKey() + ":dlcdata");
}
public string[] GetSongLabels()
{
return GetResolvedLabels(songLabels, "dlc:" + GetSafeDlcKey() + ":songs");
}
public string[] GetSongContentLabels()
{
return GetResolvedLabels(songContentLabels, "dlc:" + GetSafeDlcKey() + ":songcontent");
}
public string[] GetHeroSkinLabels()
{
return GetResolvedLabels(heroSkinLabels, "dlc:" + GetSafeDlcKey() + ":heroskins");
}
public string[] GetDependencyKeys()
{
List<string> result = new List<string>();
AppendUnique(result, dependencyKeys);
AppendUnique(result, GetDlcDataLabels());
AppendUnique(result, GetSongLabels());
AppendUnique(result, GetSongContentLabels());
AppendUnique(result, GetHeroSkinLabels());
return result.ToArray();
}
private static string[] GetResolvedLabels(string[] labels, string fallbackLabel)
{
List<string> result = new List<string>();
AppendUnique(result, labels);
if (result.Count == 0 && !string.IsNullOrWhiteSpace(fallbackLabel))
{
result.Add(fallbackLabel.Trim());
}
return result.ToArray();
}
private static void AppendUnique(List<string> target, string[] values)
{
if (target == null || values == null)
{
return;
}
for (int i = 0; i < values.Length; i++)
{
string value = values[i];
if (string.IsNullOrWhiteSpace(value))
{
continue;
}
string trimmed = value.Trim();
if (!target.Contains(trimmed))
{
target.Add(trimmed);
}
}
}
}
public sealed class DlcManifestRuntimeEntry
{
public string manifestId;
public string manifestSourcePath;
public string manifestDirectory;
public DlcManifestEntry entry;
public string resolvedCatalogPath;
public string GetRuntimePackageId()
{
string safeManifest = string.IsNullOrWhiteSpace(manifestId) ? "manifest" : manifestId.Trim();
string safeDlc = entry != null ? entry.GetSafeDlcKey() : string.Empty;
if (string.IsNullOrWhiteSpace(safeDlc))
{
safeDlc = Path.GetFileNameWithoutExtension(manifestSourcePath ?? string.Empty);
}
return safeManifest + "::" + safeDlc;
}
}