private ArmorPiece CreateArmorPiece(ArmorPieceContainer container) { ArmorPiecePrimitive primitive = container.Primitive; IEvent foundEventPrimitive = CreateEvent( container.Primitive.Material1, container.Primitive.Material2, container.Primitive.Material3, container.Primitive.Material4 ); return(new ArmorPiece( primitive.Id, container.Names, container.Type, primitive.Rarity, ParseSlots(primitive.Slots), ParseAbilities(primitive), ParseArmorSetSkills(primitive), new ArmorPieceDefense(primitive.MinDef, primitive.MaxDef, primitive.AugmentedDef), new ArmorPieceResistances(primitive.FireRes, primitive.WaterRes, primitive.ThunderRes, primitive.IceRes, primitive.DragonRes), CreateArmorPieceAttributes(primitive), ArmorPieceAssets.Null, null, foundEventPrimitive )); }
private IEnumerable <ArmorPieceContainer> LoadArmorPieceParts(EquipmentType type, string filename) { string fullFilename = Path.Combine(dataFolderPath, filename); string[] allLines = File.ReadAllLines(fullFilename); Dictionary <string, string[]> localizations = LoadLocalizations(filename); (int headerIndex, int dataIndex) = FindIndexes(allLines); if (headerIndex < 0) { Console.WriteLine($"[ERROR] Failed to create data loader for {type}"); yield break; } var dataLoader = new DataLoader <ArmorPiecePrimitive>(allLines[headerIndex].Substring(1).Split(','), logger); for (int i = dataIndex; i < allLines.Length; i++) { ArmorPiecePrimitive armorPiecePrimitive = dataLoader.CreateObject(allLines[i].Split(','), i + dataIndex); if (string.IsNullOrWhiteSpace(armorPiecePrimitive.Name)) { continue; } if (armorPiecePrimitive.Name == "Chainmail Armor") { armorPiecePrimitive.Name = "Chainmail Vest"; } armorPiecePrimitive.Id = i - dataIndex; var container = new ArmorPieceContainer { Primitive = armorPiecePrimitive, Names = localizations.ToDictionary(kv1 => kv1.Key, kv2 => kv2.Value[i - dataIndex]), Type = type }; yield return(container); } }