24 lines
1.4 KiB
C#
24 lines
1.4 KiB
C#
#if UNITY_EDITOR
|
|
using System;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Threading.Tasks;
|
|
|
|
public static class KVGameLoadValidation
|
|
{
|
|
// Fixed assembly/type/method and explicit case allow-list; no arbitrary reflection arguments.
|
|
public static async Task<string> RunAsync(string caseId)
|
|
{
|
|
if (caseId != "M08-M23" && caseId != "M21-M22-M24" && caseId != "M09-M10-M12" &&
|
|
caseId != "M14" && caseId != "M07" && caseId != "M20-M21-M22-M24-M28-M29" && caseId != "M16-M17" &&
|
|
caseId != "M06-M13" && caseId != "M15-M26-M27" && caseId != "M30" && caseId != "M19" && caseId != "M11" && caseId != "M25" &&
|
|
caseId != "M01-M02-M21-M22-M24" && caseId != "M04-M21-M22-M24" && caseId != "M05-M21-M22-M24" && caseId != "M03" && caseId != "M18" && caseId != "M31" && caseId != "B2-20") throw new ArgumentException("Unknown fixed validation case.");
|
|
var assembly = AppDomain.CurrentDomain.GetAssemblies().Single(a => a.GetName().Name == "HotUpdate");
|
|
var type = assembly.GetType("game.PlayerDataStorage.PlayerKVEditorValidationHost", true);
|
|
var method = type.GetMethod("RunAsync", BindingFlags.Static | BindingFlags.NonPublic, null, new[] { typeof(string) }, null);
|
|
if (method == null) throw new InvalidOperationException("Validation entry unavailable.");
|
|
return await (Task<string>)method.Invoke(null, new object[] { caseId });
|
|
}
|
|
}
|
|
#endif
|