Skip to content

Commit d58db36

Browse files
committed
Refactoring of IItem (and derivative) members. Addition of some supporting functions for IItems
1 parent 3af17e1 commit d58db36

File tree

29 files changed

+613
-368
lines changed

29 files changed

+613
-368
lines changed

xivModdingFramework/General/Enums/XivCategory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
namespace xivModdingFramework.General.Enums
99
{
10-
public static class XivCategorys
10+
public static class XivCategories
1111
{
1212
static List<string> _keys = null;
13-
static XivCategorys()
13+
static XivCategories()
1414
{
1515
_keys = typeof(XivStrings).GetProperties(BindingFlags.Static|BindingFlags.NonPublic).Select(it => it.Name).ToList();
1616
}

xivModdingFramework/General/XivModelChara.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static async Task<Dictionary<int, byte[]>> GetModelCharaData(DirectoryInf
5050
/// <returns>The XivModelInfo data</returns>
5151
public static async Task<XivModelInfo> GetModelInfo(DirectoryInfo gameDirectory, int index)
5252
{
53-
var xivModelInfo = new XivModelInfo();
53+
var xivModelInfo = new XivMonsterModelInfo();
5454

5555
// These are the offsets to relevant data
5656
// These will need to be changed if data gets added or removed with a patch
@@ -62,12 +62,12 @@ public static async Task<XivModelInfo> GetModelInfo(DirectoryInfo gameDirectory,
6262
// Big Endian Byte Order
6363
using (var br = new BinaryReaderBE(new MemoryStream(modelCharaEx[index])))
6464
{
65-
xivModelInfo.ModelID = br.ReadInt16();
65+
xivModelInfo.PrimaryID = br.ReadInt16();
6666

6767
br.BaseStream.Seek(modelDataOffset, SeekOrigin.Begin);
6868
var modelType = br.ReadByte();
69-
xivModelInfo.Body = br.ReadByte();
70-
xivModelInfo.Variant = br.ReadByte();
69+
xivModelInfo.SecondaryID = br.ReadByte();
70+
xivModelInfo.ImcSubsetID = br.ReadByte();
7171

7272
if (modelType == 2)
7373
{
@@ -94,7 +94,7 @@ public static async Task<XivModelInfo> GetModelInfo(DirectoryInfo gameDirectory,
9494
/// <returns>The XivModelInfo data</returns>
9595
public static XivModelInfo GetModelInfo(Dictionary<int, byte[]> modelCharaEx, int index)
9696
{
97-
var xivModelInfo = new XivModelInfo();
97+
var xivModelInfo = new XivMonsterModelInfo();
9898

9999
// These are the offsets to relevant data
100100
// These will need to be changed if data gets added or removed with a patch
@@ -103,12 +103,12 @@ public static XivModelInfo GetModelInfo(Dictionary<int, byte[]> modelCharaEx, in
103103
// Big Endian Byte Order
104104
using (var br = new BinaryReaderBE(new MemoryStream(modelCharaEx[index])))
105105
{
106-
xivModelInfo.ModelID = br.ReadInt16();
106+
xivModelInfo.PrimaryID = br.ReadInt16();
107107

108108
br.BaseStream.Seek(modelDataOffset, SeekOrigin.Begin);
109109
var modelType = br.ReadByte();
110-
xivModelInfo.Body = br.ReadByte();
111-
xivModelInfo.Variant = br.ReadByte();
110+
xivModelInfo.SecondaryID = br.ReadByte();
111+
xivModelInfo.ImcSubsetID = br.ReadByte();
112112

113113
if (modelType == 2)
114114
{

xivModdingFramework/Helpers/IOUtil.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,36 +92,36 @@ public static string MakeItemSavePath(IItem item, DirectoryInfo saveDirectory, X
9292
validItemName = string.Join(":", item.Name.Split(Path.GetInvalidFileNameChars()));
9393
}
9494

95-
if (item.Category.Equals("UI"))
95+
if (item.PrimaryCategory.Equals("UI"))
9696
{
97-
if (item.ItemSubCategory != null && !item.ItemCategory.Equals(string.Empty))
97+
if (item.TertiaryCategory != null && !item.SecondaryCategory.Equals(string.Empty))
9898
{
99-
path = $"{saveDirectory.FullName}/{item.Category}/{item.ItemCategory}/{item.ItemSubCategory}/{validItemName}";
99+
path = $"{saveDirectory.FullName}/{item.PrimaryCategory}/{item.SecondaryCategory}/{item.TertiaryCategory}/{validItemName}";
100100
}
101101
else
102102
{
103-
path = $"{saveDirectory.FullName}/{item.Category}/{item.ItemCategory}/{validItemName}";
103+
path = $"{saveDirectory.FullName}/{item.PrimaryCategory}/{item.SecondaryCategory}/{validItemName}";
104104
}
105105

106106
if (path.Contains("???"))
107107
{
108108
path = path.Replace("???", "Unk");
109109
}
110110
}
111-
else if (item.Category.Equals(XivStrings.Character))
111+
else if (item.PrimaryCategory.Equals(XivStrings.Character))
112112
{
113113
if (item.Name.Equals(XivStrings.Equipment_Decals) || item.Name.Equals(XivStrings.Face_Paint))
114114
{
115-
path = $"{saveDirectory.FullName}/{item.Category}/{validItemName}";
115+
path = $"{saveDirectory.FullName}/{item.PrimaryCategory}/{validItemName}";
116116
}
117117
else
118118
{
119-
path = $"{saveDirectory.FullName}/{item.Category}/{validItemName}/{race}/{((IItemModel)item).ModelInfo.Body}";
119+
path = $"{saveDirectory.FullName}/{item.PrimaryCategory}/{validItemName}/{race}/{((IItemModel)item).ModelInfo.SecondaryID}";
120120
}
121121
}
122122
else
123123
{
124-
path = $"{saveDirectory.FullName}/{item.ItemCategory}/{validItemName}";
124+
path = $"{saveDirectory.FullName}/{item.SecondaryCategory}/{validItemName}";
125125
}
126126

127127
return path;

xivModdingFramework/Items/Categories/Character.cs

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,24 @@ public Task<List<XivCharacter>> GetCharacterList()
5353
var characterList = new List<XivCharacter>
5454
{
5555
new XivCharacter
56-
{Name = XivStrings.Body, Category = XivStrings.Character, ItemCategory = XivStrings.Body},
56+
{Name = XivStrings.Body, PrimaryCategory = XivStrings.Character, SecondaryCategory = XivStrings.Body},
5757
new XivCharacter
58-
{Name = XivStrings.Face, Category = XivStrings.Character, ItemCategory = XivStrings.Face},
58+
{Name = XivStrings.Face, PrimaryCategory = XivStrings.Character, SecondaryCategory = XivStrings.Face},
5959
new XivCharacter
60-
{Name = XivStrings.Hair, Category = XivStrings.Character, ItemCategory = XivStrings.Hair},
60+
{Name = XivStrings.Hair, PrimaryCategory = XivStrings.Character, SecondaryCategory = XivStrings.Hair},
6161
new XivCharacter
62-
{Name = XivStrings.Tail, Category = XivStrings.Character, ItemCategory = XivStrings.Tail},
62+
{Name = XivStrings.Tail, PrimaryCategory = XivStrings.Character, SecondaryCategory = XivStrings.Tail},
6363
new XivCharacter
64-
{Name = XivStrings.Ears, Category = XivStrings.Character, ItemCategory = XivStrings.Ears},
64+
{Name = XivStrings.Ears, PrimaryCategory = XivStrings.Character, SecondaryCategory = XivStrings.Ears},
6565
new XivCharacter
6666
{
67-
Name = XivStrings.Face_Paint, Category = XivStrings.Character,
68-
ItemCategory = XivStrings.Face_Paint
67+
Name = XivStrings.Face_Paint, PrimaryCategory = XivStrings.Character,
68+
SecondaryCategory = XivStrings.Face_Paint
6969
},
7070
new XivCharacter
7171
{
72-
Name = XivStrings.Equipment_Decals, Category = XivStrings.Character,
73-
ItemCategory = XivStrings.Equipment_Decals
72+
Name = XivStrings.Equipment_Decals, PrimaryCategory = XivStrings.Character,
73+
SecondaryCategory = XivStrings.Equipment_Decals
7474
}
7575
};
7676

@@ -96,15 +96,15 @@ public async Task<Dictionary<XivRace, int[]>> GetRacesAndNumbersForTextures(XivC
9696

9797
var folder = "";
9898

99-
if (charaItem.ItemCategory == XivStrings.Hair)
99+
if (charaItem.SecondaryCategory == XivStrings.Hair)
100100
{
101101
folder = XivStrings.HairMtrlFolder;
102102
}
103-
else if (charaItem.ItemCategory == XivStrings.Face)
103+
else if (charaItem.SecondaryCategory == XivStrings.Face)
104104
{
105105
folder = XivStrings.FaceMtrlFolder;
106106
}
107-
else if (charaItem.ItemCategory == XivStrings.Body)
107+
else if (charaItem.SecondaryCategory == XivStrings.Body)
108108
{
109109
if (_language != XivLanguage.Korean )
110110
{
@@ -116,7 +116,7 @@ public async Task<Dictionary<XivRace, int[]>> GetRacesAndNumbersForTextures(XivC
116116
}
117117

118118
}
119-
else if (charaItem.ItemCategory == XivStrings.Tail)
119+
else if (charaItem.SecondaryCategory == XivStrings.Tail)
120120
{
121121
if (_language != XivLanguage.Korean )
122122
{
@@ -127,7 +127,7 @@ public async Task<Dictionary<XivRace, int[]>> GetRacesAndNumbersForTextures(XivC
127127
folder = XivStrings.TailMtrlFolderOld;
128128
}
129129
}
130-
else if (charaItem.ItemCategory == XivStrings.Ears)
130+
else if (charaItem.SecondaryCategory == XivStrings.Ears)
131131
{
132132
folder = XivStrings.EarsMtrlFolder;
133133
}
@@ -173,23 +173,23 @@ public async Task<Dictionary<XivRace, int[]>> GetRacesAndNumbersForModels(XivCha
173173

174174
var folder = "";
175175

176-
if (charaItem.ItemCategory == XivStrings.Hair)
176+
if (charaItem.SecondaryCategory == XivStrings.Hair)
177177
{
178178
folder = XivStrings.HairMDLFolder;
179179
}
180-
else if (charaItem.ItemCategory == XivStrings.Face)
180+
else if (charaItem.SecondaryCategory == XivStrings.Face)
181181
{
182182
folder = XivStrings.FaceMDLFolder;
183183
}
184-
else if (charaItem.ItemCategory == XivStrings.Body)
184+
else if (charaItem.SecondaryCategory == XivStrings.Body)
185185
{
186186
folder = XivStrings.BodyMDLFolder;
187187
}
188-
else if (charaItem.ItemCategory == XivStrings.Tail)
188+
else if (charaItem.SecondaryCategory == XivStrings.Tail)
189189
{
190190
folder = XivStrings.TailMDLFolder;
191191
}
192-
else if (charaItem.ItemCategory == XivStrings.Ears)
192+
else if (charaItem.SecondaryCategory == XivStrings.Ears)
193193
{
194194
folder = XivStrings.EarsMDLFolder;
195195
}
@@ -236,20 +236,20 @@ public async Task<Dictionary<string, char[]>> GetTypePartForTextures(XivCharacte
236236

237237
var parts = Constants.Alphabet;
238238

239-
if (charaItem.ItemCategory == XivStrings.Hair)
239+
if (charaItem.SecondaryCategory == XivStrings.Hair)
240240
{
241241
folder = string.Format(XivStrings.HairMtrlFolder, race.GetRaceCode(),
242242
num.ToString().PadLeft(4, '0'));
243243
file = XivStrings.HairMtrlFile;
244244
}
245-
else if (charaItem.ItemCategory == XivStrings.Face)
245+
else if (charaItem.SecondaryCategory == XivStrings.Face)
246246
{
247247
folder = string.Format(XivStrings.FaceMtrlFolder, race.GetRaceCode(),
248248
num.ToString().PadLeft(4, '0'));
249249
typeDict = FaceSlotAbbreviationDictionary;
250250
file = XivStrings.FaceMtrlFile;
251251
}
252-
else if (charaItem.ItemCategory == XivStrings.Ears)
252+
else if (charaItem.SecondaryCategory == XivStrings.Ears)
253253
{
254254
folder = string.Format(XivStrings.EarsMtrlFolder, race.GetRaceCode(),
255255
num.ToString().PadLeft(4, '0'));
@@ -301,7 +301,7 @@ public async Task<char[]> GetPartForTextures(XivCharacter charaItem, XivRace rac
301301

302302
var parts = Constants.Alphabet;
303303

304-
if (charaItem.ItemCategory == XivStrings.Body)
304+
if (charaItem.SecondaryCategory == XivStrings.Body)
305305
{
306306
if (_language != XivLanguage.Korean )
307307
{
@@ -313,7 +313,7 @@ public async Task<char[]> GetPartForTextures(XivCharacter charaItem, XivRace rac
313313
}
314314
file = XivStrings.BodyMtrlFile;
315315
}
316-
else if (charaItem.ItemCategory == XivStrings.Tail)
316+
else if (charaItem.SecondaryCategory == XivStrings.Tail)
317317
{
318318
if (_language != XivLanguage.Korean )
319319
{
@@ -325,7 +325,7 @@ public async Task<char[]> GetPartForTextures(XivCharacter charaItem, XivRace rac
325325
}
326326
file = XivStrings.TailMtrlFile;
327327
}
328-
else if (charaItem.ItemCategory == XivStrings.Ears)
328+
else if (charaItem.SecondaryCategory == XivStrings.Ears)
329329
{
330330
folder = string.Format(XivStrings.EarsMtrlFolder, race.GetRaceCode(), num.ToString().PadLeft(4, '0'));
331331

@@ -344,7 +344,7 @@ public async Task<List<int>> GetVariantsForTextures(XivCharacter charaItem, XivR
344344
{
345345
var variantList = new List<int>();
346346

347-
if (charaItem.ItemCategory == XivStrings.Body)
347+
if (charaItem.SecondaryCategory == XivStrings.Body)
348348
{
349349
if (_language != XivLanguage.Korean )
350350
{
@@ -365,7 +365,7 @@ public async Task<List<int>> GetVariantsForTextures(XivCharacter charaItem, XivR
365365
}
366366
}
367367

368-
if (charaItem.ItemCategory == XivStrings.Tail)
368+
if (charaItem.SecondaryCategory == XivStrings.Tail)
369369
{
370370
if (_language != XivLanguage.Korean )
371371
{
@@ -402,35 +402,35 @@ public async Task<List<string>> GetTypeForModels(XivCharacter charaItem, XivRace
402402
var file = "";
403403
var typeDict = HairSlotAbbreviationDictionary;
404404

405-
if (charaItem.ItemCategory == XivStrings.Body)
405+
if (charaItem.SecondaryCategory == XivStrings.Body)
406406
{
407407
folder = string.Format(XivStrings.BodyMDLFolder, race.GetRaceCode(),
408408
num.ToString().PadLeft(4, '0'));
409409
typeDict = BodySlotAbbreviationDictionary;
410410
file = XivStrings.BodyMDLFile;
411411
}
412-
else if (charaItem.ItemCategory == XivStrings.Hair)
412+
else if (charaItem.SecondaryCategory == XivStrings.Hair)
413413
{
414414
folder = string.Format(XivStrings.HairMDLFolder, race.GetRaceCode(),
415415
num.ToString().PadLeft(4, '0'));
416416
typeDict = HairSlotAbbreviationDictionary;
417417
file = XivStrings.HairMDLFile;
418418
}
419-
else if (charaItem.ItemCategory == XivStrings.Face)
419+
else if (charaItem.SecondaryCategory == XivStrings.Face)
420420
{
421421
folder = string.Format(XivStrings.FaceMDLFolder, race.GetRaceCode(),
422422
num.ToString().PadLeft(4, '0'));
423423
typeDict = FaceSlotAbbreviationDictionary;
424424
file = XivStrings.FaceMDLFile;
425425
}
426-
else if (charaItem.ItemCategory == XivStrings.Tail)
426+
else if (charaItem.SecondaryCategory == XivStrings.Tail)
427427
{
428428
folder = string.Format(XivStrings.TailMDLFolder, race.GetRaceCode(),
429429
num.ToString().PadLeft(4, '0'));
430430
typeDict = TailSlotAbbreviationDictionary;
431431
file = XivStrings.TailMDLFile;
432432
}
433-
else if (charaItem.ItemCategory == XivStrings.Ears)
433+
else if (charaItem.SecondaryCategory == XivStrings.Ears)
434434
{
435435
folder = string.Format(XivStrings.EarsMDLFolder, race.GetRaceCode(),
436436
num.ToString().PadLeft(4, '0'));
@@ -460,7 +460,7 @@ public async Task<int[]> GetDecalNums(IItem item)
460460
var decalList = new List<int>();
461461
List<int> fileList;
462462

463-
if (item.ItemCategory.Equals(XivStrings.Face_Paint))
463+
if (item.SecondaryCategory.Equals(XivStrings.Face_Paint))
464464
{
465465
fileList = await _index.GetAllHashedFilesInFolder(HashGenerator.GetHash(XivStrings.FacePaintFolder),
466466
XivDataFile._04_Chara);

0 commit comments

Comments
 (0)