/// <summary> /// Save Assets Data File /// </summary> /// <param name="buildPath"></param> /// <param name="pack"></param> /// <returns>True if Overwrited existing file, otherwise False</returns> public void SaveAssetsDataFile(string buildPath, AssetsPack pack) { var bytes = BinarySerializer.Serialize(pack); var filePath = Path.Combine(buildPath, "Assets.pck"); File.WriteAllBytes(filePath, bytes); }
public async Task <BuildResult> Build(GameProject gameProject, bool releaseMode = false) { BuildResult result = new BuildResult(); string targetDirectory = releaseMode ? gameProject.DistDirectory : gameProject.BuildDirectory; StringBuilder messageBuilder = new StringBuilder(); FileInfo mainScriptFile = new FileInfo(Path.Combine(gameProject.ScriptsDirectory, gameProject.MainScript)); if (mainScriptFile.Exists) { ScriptsCompileResult scriptsCompileResult = await _scriptsBuilder.Build(gameProject, mainScriptFile, releaseMode); bool scriptsOk = scriptsCompileResult.Errors == null; if (scriptsOk) { if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } result.ScriptData = scriptsCompileResult.ScriptData; bool assetsOk = true; result.AssetsInvalidated = false; // Build Resource Pack List <AssetCompileResult> assetCompileResults = await _assetsBuilder.Build(gameProject); if (assetCompileResults != null && assetCompileResults.Count > 0) { result.AssetsInvalidated = true; foreach (var assetCompileResult in assetCompileResults) { if (!string.IsNullOrEmpty(assetCompileResult.Error)) { if (assetsOk) { messageBuilder.AppendLine("Error building assets:"); } assetsOk = false; messageBuilder.AppendLine($"In Resource: {assetCompileResult.AssetData.Name} : {assetCompileResult.Error}"); } } AssetsPack assetPack = new AssetsPack(); foreach (var assetCompileResult in assetCompileResults) { assetPack.AddAssetData(assetCompileResult.AssetData.Name, assetCompileResult.AssetData); } _assetsBuilder.SaveAssetsDataFile(targetDirectory, assetPack); } if (assetsOk) { result.Ok = true; } else { result.ResultMessage = messageBuilder.ToString(); } return(result); } // Build Error: messageBuilder.AppendLine("Error compiling scripts:"); foreach (var error in scriptsCompileResult.Errors) { messageBuilder.AppendLine(error); } result.ResultMessage = messageBuilder.ToString(); result.Ok = false; return(result); } else { result.ResultMessage = "Missing Main Script!"; result.Ok = false; return(result); } }