/// <summary> /// Creates a new ItemMetaData entry from the constituent files around the FFXIV file system. /// </summary> /// <param name="root"></param> /// <returns></returns> private static async Task <ItemMetadata> CreateFromRaw(XivDependencyRoot root, bool forceDefault = false) { var _eqp = new Eqp(XivCache.GameInfo.GameDirectory); var _imc = new Imc(XivCache.GameInfo.GameDirectory); // These functions generate the path::offset to each of our // contiguous metadata entries. var imcPaths = await root.GetImcEntryPaths(); var ret = new ItemMetadata(root); if (imcPaths.Count > 0) { ret.ImcEntries = await _imc.GetEntries(imcPaths, forceDefault); } ret.EqpEntry = await _eqp.GetEqpEntry(root.Info, forceDefault); ret.EqdpEntries = await _eqp.GetEquipmentDeformationParameters(root.Info, forceDefault); ret.EstEntries = await Est.GetExtraSkeletonEntries(root, forceDefault); ret.GmpEntry = await _eqp.GetGimmickParameter(root, forceDefault); return(ret); }
private static async Task <GimmickParameter> DeserializeGmpData(byte[] data, XivDependencyRoot root, uint dataVersion) { if (dataVersion == 1) { // Version 1 didn't have GMP data, so include the default GMP data. var _eqp = new Eqp(XivCache.GameInfo.GameDirectory); return(await _eqp.GetGimmickParameter(root, true)); } // 5 Bytes to parse, ezpz lemon sqzy return(new GimmickParameter(data)); }