private StringBuilder GenerateModule(TypeDefModule typeDefModule) { StringBuilder result = new StringBuilder(string.Empty); result.Append($"using System.Numerics;\n"); result.Append($"using WebAssembly;\n"); result.Append($"using WebAssembly.Core;\n\n"); result.Append($"namespace AltV.Net.Client\n{{\n"); result.Append($"\tpublic class NativeNatives\n\t{{\n"); result.Append($"\t\tprivate readonly JSObject native;\n\n"); foreach (var typeDefFunction in typeDefModule.Functions) { result.Append($"\t\tprivate Function {GetFixedTypeDefFunctionName(typeDefFunction.Name)};\n"); } result.Append($"\n"); result.Append($"\t\tpublic NativeNatives(JSObject native)\n\t\t{{\n"); result.Append($"\t\t\tthis.native = native;\n"); result.Append($"\t\t}}\n\n"); result.Append("\t\tprivate static Vector3 JSObjectToVector3(object obj) {\n"); result.Append("\t\t\tvar jsObject = (JSObject) obj;\n"); result.Append("\t\t\treturn new Vector3((float) jsObject.GetObjectProperty(\"x\"), (float) jsObject.GetObjectProperty(\"y\"),(float) jsObject.GetObjectProperty(\"z\"));\n"); result.Append("\t\t}\n\n"); result = typeDefModule.Functions.Aggregate(result, (current, typeDefFunction) => current.Append($"{GenerateFunction(typeDefFunction)}\n")); result.Append("\t}\n"); result.Append("}"); return(result); }
private StringBuilder GenerateModule(TypeDefModule typeDefModule) { StringBuilder result = new StringBuilder(string.Empty); result.Append($"declare module \"{typeDefModule.Name}\" {{\n"); result.Append(typeDefModule.Interfaces.Aggregate(new StringBuilder(), (current, typeDefInterface) => current.Append(GenerateInterface(typeDefInterface)).Append("\n"))); result.Append("\n"); result.Append(typeDefModule.Types.Aggregate(new StringBuilder(), (current, typeDefType) => current.Append(GenerateType(typeDefType)).Append("\n"))); result.Append("\n"); result = typeDefModule.Functions.Aggregate(result, (current, typeDefFunction) => current.Append($"{GenerateFunction(typeDefFunction)}\n")); result.Append("}"); return(result); }
public void AddFunctionsFromNativeDb(Models.NativeDb.NativeDb nativeDb) { TypeDefModule nativesModule = _typeDefinition.Modules.First(m => m.Name == "natives"); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Graphics)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.System)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.App)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Audio)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Brain)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Cam)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Clock)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Cutscene)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Datafile)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Decorator)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Dlc)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Entity)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Event)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Files)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Fire)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Hud)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Interior)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Itemset)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Loadingscreen)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Localization)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Misc)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Mobile)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Money)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Netshopping)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Network)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Object)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Pad)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Pathfind)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Ped)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Physics)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Player)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Recording)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Replay)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Script)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Shapetest)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Socialclub)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Stats)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Streaming)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Task)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Vehicle)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Water)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Weapon)); nativesModule.Functions.AddRange(GetFunctionsFromNativeGroup(nativeDb.Zone)); }
private StringBuilder GenerateModule(TypeDefModule typeDefModule) { StringBuilder result = new StringBuilder(string.Empty); result.Append($"using WebAssembly;\n"); result.Append($"using WebAssembly.Core;\n\n"); result.Append($"namespace AltV.Net.Client\n{{\n"); result.Append($"\tpublic class NativeNatives\n\t{{\n"); result.Append($"\t\tprivate readonly JSObject native;\n\n"); foreach (var typeDefFunction in typeDefModule.Functions) { result.Append($"\t\tprivate Function {GetFixedTypeDefFunctionName(typeDefFunction.Name)};\n"); } result.Append($"\n"); result.Append($"\t\tpublic NativeNatives(JSObject native)\n\t\t{{\n"); result.Append($"\t\t\tthis.native = native;\n"); result.Append($"\t\t}}\n\n"); result = typeDefModule.Functions.Aggregate(result, (current, typeDefFunction) => current.Append($"{GenerateFunction(typeDefFunction)}\n")); result.Append("\t}\n"); result.Append("}"); return(result); }