|
14 | 14 | // You should have received a copy of the GNU General Public License
|
15 | 15 | // along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16 | 16 |
|
17 |
| -using HelixToolkit.SharpDX.Core; |
18 | 17 | using System;
|
19 | 18 | using System.Collections.Generic;
|
20 | 19 | using System.IO;
|
21 | 20 | using System.Threading.Tasks;
|
22 | 21 | using xivModdingFramework.General.Enums;
|
23 |
| -using xivModdingFramework.Helpers; |
24 | 22 | using xivModdingFramework.Items;
|
25 | 23 | using xivModdingFramework.Items.DataContainers;
|
26 | 24 | using xivModdingFramework.Items.Enums;
|
27 | 25 | using xivModdingFramework.Items.Interfaces;
|
28 |
| -using xivModdingFramework.Models.FileTypes; |
29 |
| -using xivModdingFramework.Resources; |
30 | 26 | using xivModdingFramework.SqPack.FileTypes;
|
31 | 27 | using xivModdingFramework.Variants.DataContainers;
|
32 | 28 |
|
@@ -130,19 +126,31 @@ public async Task<FullImcInfo> GetFullImcInfo(string path)
|
130 | 126 | //weapons and monsters do not have variant sets
|
131 | 127 | if (imcData.TypeIdentifier == ImcType.NonSet)
|
132 | 128 | {
|
133 |
| - // Identifier used by weapons and monsters. |
| 129 | + // This type uses the first short for both Variant and VFX. |
| 130 | + var variantAndVfx = br.ReadUInt16(); |
| 131 | + var mask = br.ReadUInt16(); |
| 132 | + var alwaysZero = br.ReadUInt16(); |
| 133 | + |
134 | 134 | imcData.DefaultSubset.Add(new XivImc
|
135 | 135 | {
|
136 |
| - Variant = br.ReadUInt16(), |
137 |
| - Mask = br.ReadUInt16(), |
138 |
| - Vfx = br.ReadUInt16() |
| 136 | + Variant = variantAndVfx, |
| 137 | + Mask = mask, |
| 138 | + Vfx = variantAndVfx |
139 | 139 | });
|
140 | 140 |
|
141 | 141 | for (var i = 0; i < subsetCount; i++)
|
142 | 142 | {
|
143 |
| - var subset = new List<XivImc>() { |
144 |
| - new XivImc {Variant = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()} |
| 143 | + variantAndVfx = br.ReadUInt16(); |
| 144 | + mask = br.ReadUInt16(); |
| 145 | + alwaysZero = br.ReadUInt16(); |
| 146 | + |
| 147 | + var newEntry = new XivImc |
| 148 | + { |
| 149 | + Variant = variantAndVfx, |
| 150 | + Mask = mask, |
| 151 | + Vfx = variantAndVfx |
145 | 152 | };
|
| 153 | + var subset = new List<XivImc>() { newEntry }; |
146 | 154 | }
|
147 | 155 | }
|
148 | 156 | else if(imcData.TypeIdentifier == ImcType.Set)
|
@@ -252,14 +260,14 @@ public async Task SaveFullImcInfo(FullImcInfo info, string path, string itemName
|
252 | 260 | // The rest of this is easy, it's literally just post all the sets in order.
|
253 | 261 | foreach(var entry in info.DefaultSubset)
|
254 | 262 | {
|
255 |
| - data.AddRange(entry.GetBytes()); |
| 263 | + data.AddRange(entry.GetBytes(info.TypeIdentifier)); |
256 | 264 | }
|
257 | 265 |
|
258 | 266 | foreach(var set in info.SubsetList)
|
259 | 267 | {
|
260 | 268 | foreach (var entry in set)
|
261 | 269 | {
|
262 |
| - data.AddRange(entry.GetBytes()); |
| 270 | + data.AddRange(entry.GetBytes(info.TypeIdentifier)); |
263 | 271 | }
|
264 | 272 | }
|
265 | 273 |
|
|
0 commit comments