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)); }
static void Main(string[] args) { // Download latest natives from nativedb //System.Console.WriteLine("Downloading latest natives from AltV..."); //NativeDbDownloader nativeDbDownloader = new NativeDbDownloader(AltVNativeDbJsonSourceUrl); //Models.NativeDb.NativeDb nativeDb = nativeDbDownloader.DownloadLatest(); // Read nativedb from file System.Console.WriteLine("Reading natives from file..."); string nativeDbFilePath = Path.Combine(Directory.GetCurrentDirectory(), "resources", "natives", "natives.json"); NativeDbFileReader nativeDbFileReader = new NativeDbFileReader(nativeDbFilePath); Models.NativeDb.NativeDb nativeDb = nativeDbFileReader.Read(); if (nativeDb == null) { System.Console.WriteLine("Failed to read natives from file. File doesnt exist or is invalid."); return; } TypeDefFromNativeDbGenerator typeDefGenerator = new TypeDefFromNativeDbGenerator(Interfaces, Types, "natives"); typeDefGenerator.AddFunctionsFromNativeDb(nativeDb); TypeDef typingDefinition = typeDefGenerator.GetTypingDefinition(); TypeDefFileGenerator typeDefFileGenerator = new TypeDefFileGenerator(typingDefinition); string typingFileContent = typeDefFileGenerator.Generate(true, new List <string>() { $" Natives retrieved from alt:V / NativeDB at http://natives.altv.mp/#/ - VersionHash: {nativeDb.VersionHash}" }); string filePath = Path.Combine(Directory.GetCurrentDirectory(), "native-types", "natives.d.ts"); if (!Directory.Exists(Path.GetDirectoryName(filePath))) { Directory.CreateDirectory(Path.GetDirectoryName(filePath)); } File.WriteAllText(filePath, typingFileContent); System.Console.WriteLine($"Done writing natives typings to file: {filePath}"); TypeDefCSharpFileGenerator typeDefCSharpFileGenerator = new TypeDefCSharpFileGenerator(typingDefinition); string csharpTypingFileContent = typeDefCSharpFileGenerator.Generate(); }
public Models.NativeDb.NativeDb Read() { if (!File.Exists(_filePath)) { return(null); } string nativesJson = File.ReadAllText(_filePath); string nativesHash = nativesJson.GetSha256Hash(); try { Models.NativeDb.NativeDb nativeDb = JsonConvert.DeserializeObject <Models.NativeDb.NativeDb>(nativesJson); nativeDb.VersionHash = nativesHash; return(nativeDb); } catch (Exception) { return(null); } }