From fd738a851fe824b40907c07543ed339020bb932d Mon Sep 17 00:00:00 2001 From: Ethan Moffat Date: Wed, 16 Mar 2022 16:30:54 -0700 Subject: [PATCH] Fix errors in EOLib/EndlessClient due to refactor --- EOLib/Domain/Character/CharacterActions.cs | 2 +- EOLib/Net/FileTransfer/FileRequestActions.cs | 8 ++--- EOLib/Net/FileTransfer/FileRequestService.cs | 35 ++++++++++--------- EOLib/PacketHandlers/Items/UseItemHandler.cs | 2 +- EndlessClient/Dialogs/SkillmasterDialog.cs | 18 +++++----- .../HUD/Panels/Old/OldOnlineListPanel.cs | 2 +- EndlessClient/Old/OldCharacter.cs | 18 +++++----- EndlessClient/Old/PacketAPICallbackManager.cs | 2 +- .../CharacterPropertyRendererBuilder.cs | 4 +-- .../Rendering/OldCharacterRenderer.cs | 6 ++-- .../Sprites/CharacterSpriteCalculator.cs | 7 ++-- EndlessClient/Test/CharacterStateTest.cs | 4 +-- 12 files changed, 55 insertions(+), 53 deletions(-) diff --git a/EOLib/Domain/Character/CharacterActions.cs b/EOLib/Domain/Character/CharacterActions.cs index 4083ce690..e0a0b9095 100644 --- a/EOLib/Domain/Character/CharacterActions.cs +++ b/EOLib/Domain/Character/CharacterActions.cs @@ -100,7 +100,7 @@ public void PrepareCastSpell(int spellId) public void CastSpell(int spellId, ISpellTargetable target) { - var data = _spellFileProvider.ESFFile.Data.Single(x => x.ID == spellId); + var data = _spellFileProvider.ESFFile.Single(x => x.ID == spellId); var action = data.Target == IO.SpellTarget.Self ? PacketAction.TargetSelf diff --git a/EOLib/Net/FileTransfer/FileRequestActions.cs b/EOLib/Net/FileTransfer/FileRequestActions.cs index e14a565f5..9b7f08261 100644 --- a/EOLib/Net/FileTransfer/FileRequestActions.cs +++ b/EOLib/Net/FileTransfer/FileRequestActions.cs @@ -72,28 +72,28 @@ public async Task GetMapForWarp(short mapID) public async Task GetItemFileFromServer() { - var itemFile = await _fileRequestService.RequestFile(InitFileType.Item, _playerInfoProvider.PlayerID); + var itemFile = await _fileRequestService.RequestFile(InitFileType.Item, _playerInfoProvider.PlayerID); _pubFileSaveService.SaveFile(PubFileNameConstants.PathToEIFFile, itemFile, rewriteChecksum: false); _pubFileRepository.EIFFile = (EIFFile)itemFile; } public async Task GetNPCFileFromServer() { - var npcFile = await _fileRequestService.RequestFile(InitFileType.Npc, _playerInfoProvider.PlayerID); + var npcFile = await _fileRequestService.RequestFile(InitFileType.Npc, _playerInfoProvider.PlayerID); _pubFileSaveService.SaveFile(PubFileNameConstants.PathToENFFile, npcFile, rewriteChecksum: false); _pubFileRepository.ENFFile = (ENFFile)npcFile; } public async Task GetSpellFileFromServer() { - var spellFile = await _fileRequestService.RequestFile(InitFileType.Spell, _playerInfoProvider.PlayerID); + var spellFile = await _fileRequestService.RequestFile(InitFileType.Spell, _playerInfoProvider.PlayerID); _pubFileSaveService.SaveFile(PubFileNameConstants.PathToESFFile, spellFile, rewriteChecksum: false); _pubFileRepository.ESFFile = (ESFFile)spellFile; } public async Task GetClassFileFromServer() { - var classFile = await _fileRequestService.RequestFile(InitFileType.Class, _playerInfoProvider.PlayerID); + var classFile = await _fileRequestService.RequestFile(InitFileType.Class, _playerInfoProvider.PlayerID); _pubFileSaveService.SaveFile(PubFileNameConstants.PathToECFFile, classFile, rewriteChecksum: false); _pubFileRepository.ECFFile = (ECFFile)classFile; } diff --git a/EOLib/Net/FileTransfer/FileRequestService.cs b/EOLib/Net/FileTransfer/FileRequestService.cs index 26f7cc130..df08d5306 100644 --- a/EOLib/Net/FileTransfer/FileRequestService.cs +++ b/EOLib/Net/FileTransfer/FileRequestService.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using System.Threading.Tasks; using AutomaticTypeMapper; using EOLib.Domain.Protocol; @@ -14,16 +15,16 @@ namespace EOLib.Net.FileTransfer public class FileRequestService : IFileRequestService { private readonly IPacketSendService _packetSendService; - private readonly INumberEncoderService _numberEncoderService; private readonly IMapDeserializer _mapFileSerializer; + private readonly IPubFileDeserializer _pubFileDeserializer; public FileRequestService(IPacketSendService packetSendService, - INumberEncoderService numberEncoderService, - IMapDeserializer mapFileSerializer) + IMapDeserializer mapFileSerializer, + IPubFileDeserializer pubFileDeserializer) { _packetSendService = packetSendService; - _numberEncoderService = numberEncoderService; _mapFileSerializer = mapFileSerializer; + _pubFileDeserializer = pubFileDeserializer; } public async Task RequestMapFile(short mapID, short playerID) @@ -43,7 +44,8 @@ public async Task RequestMapFileForWarp(short mapID) return await GetMapFile(request, mapID, true); } - public async Task RequestFile(InitFileType fileType, short playerID) + public async Task> RequestFile(InitFileType fileType, short playerID) + where TRecord : class, IPubRecord, new() { var request = new PacketBuilder(PacketFamily.Welcome, PacketAction.Agree) .AddChar((byte)fileType) @@ -61,21 +63,21 @@ public async Task RequestFile(InitFileType fileType, short playerID) if (extraByte != 1) throw new MalformedPacketException("Missing extra single byte in file transfer packet", response); - IPubFile retFile; + Func> factory; switch (responseFileType) { - case InitReply.ItemFile: retFile = new EIFFile(); break; - case InitReply.NpcFile: retFile = new ENFFile(); break; - case InitReply.SpellFile: retFile = new ESFFile(); break; - case InitReply.ClassFile: retFile = new ECFFile(); break; + case InitReply.ItemFile: factory = () => (IPubFile)new EIFFile(); break; + case InitReply.NpcFile: factory = () => (IPubFile)new ENFFile(); break; + case InitReply.SpellFile: factory = () => (IPubFile)new ESFFile(); break; + case InitReply.ClassFile: factory = () => (IPubFile)new ECFFile(); break; default: throw new EmptyPacketReceivedException(); } - var responseBytes = response.ReadBytes(response.Length - response.ReadPosition) - .ToArray(); - retFile.DeserializeFromByteArray(responseBytes, _numberEncoderService); + var responseBytes = response + .ReadBytes(response.Length - response.ReadPosition) + .ToArray(); - return retFile; + return _pubFileDeserializer.DeserializeFromByteArray(responseBytes, factory); } private async Task GetMapFile(IPacket request, int mapID, bool isWarp) @@ -109,6 +111,7 @@ public interface IFileRequestService Task RequestMapFileForWarp(short mapID); - Task RequestFile(InitFileType fileType, short playerID); + Task> RequestFile(InitFileType fileType, short playerID) + where TRecord : class, IPubRecord, new(); } } \ No newline at end of file diff --git a/EOLib/PacketHandlers/Items/UseItemHandler.cs b/EOLib/PacketHandlers/Items/UseItemHandler.cs index f6bde45b3..c894b21f9 100644 --- a/EOLib/PacketHandlers/Items/UseItemHandler.cs +++ b/EOLib/PacketHandlers/Items/UseItemHandler.cs @@ -107,7 +107,7 @@ public override bool HandlePacket(IPacket packet) var cureCurseEvade = packet.ReadShort(); var cureCurseArmor = packet.ReadShort(); - var cursedItems = _itemFileProvider.EIFFile.Data.Where(x => x.Special == ItemSpecial.Cursed).ToList(); + var cursedItems = _itemFileProvider.EIFFile.Where(x => x.Special == ItemSpecial.Cursed).ToList(); if (cursedItems.Any(x => x.Graphic == renderProps.BootsGraphic && x.Type == ItemType.Boots)) renderProps = renderProps.WithBootsGraphic(0); if (cursedItems.Any(x => x.Graphic == renderProps.ArmorGraphic && x.Type == ItemType.Armor)) diff --git a/EndlessClient/Dialogs/SkillmasterDialog.cs b/EndlessClient/Dialogs/SkillmasterDialog.cs index 4f8e6d4c7..eda53fd9e 100644 --- a/EndlessClient/Dialogs/SkillmasterDialog.cs +++ b/EndlessClient/Dialogs/SkillmasterDialog.cs @@ -169,7 +169,7 @@ private void _setState(SkillState newState) continue; int localI = i; - var spellData = OldWorld.Instance.ESF.Data[m_skills[localI].ID]; + var spellData = OldWorld.Instance.ESF[m_skills[localI].ID]; ListDialogItem nextListItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Large, index++) { @@ -200,7 +200,7 @@ private void _setState(SkillState newState) if (args.Result == XNADialogResult.Cancel) return; bool found = OldWorld.Instance.MainPlayer.ActiveCharacter.Spells.Any( - _spell => OldWorld.Instance.ESF.Data[_spell.ID].Name.ToLower() == input.ResponseText.ToLower()); + _spell => OldWorld.Instance.ESF[_spell.ID].Name.ToLower() == input.ResponseText.ToLower()); if (!found) { @@ -211,7 +211,7 @@ private void _setState(SkillState newState) if (!m_api.ForgetSpell( OldWorld.Instance.MainPlayer.ActiveCharacter.Spells.Find( - _spell => OldWorld.Instance.ESF.Data[_spell.ID].Name.ToLower() == input.ResponseText.ToLower()).ID)) + _spell => OldWorld.Instance.ESF[_spell.ID].Name.ToLower() == input.ResponseText.ToLower()).ID)) { Close(); ((EOGame)Game).DoShowLostConnectionDialogAndReturnToMainMenu(); @@ -254,11 +254,11 @@ private void _learn(Skill skill) if (skill.ClassReq > 0 && c.Class != skill.ClassReq) { - EOMessageBox.Show(DialogResourceID.SKILL_LEARN_WRONG_CLASS, " " + OldWorld.Instance.ECF.Data[skill.ClassReq].Name + "!", EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); + EOMessageBox.Show(DialogResourceID.SKILL_LEARN_WRONG_CLASS, " " + OldWorld.Instance.ECF[skill.ClassReq].Name + "!", EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); return; } - EOMessageBox.Show(DialogResourceID.SKILL_LEARN_CONFIRMATION, " " + OldWorld.Instance.ESF.Data[skill.ID].Name + "?", EODialogButtons.OkCancel, EOMessageBoxStyle.SmallDialogSmallHeader, + EOMessageBox.Show(DialogResourceID.SKILL_LEARN_CONFIRMATION, " " + OldWorld.Instance.ESF[skill.ID].Name + "?", EODialogButtons.OkCancel, EOMessageBoxStyle.SmallDialogSmallHeader, (o, e) => { if (e.Result != XNADialogResult.OK) @@ -294,12 +294,12 @@ private void _showRequirements(Skill skill) List drawStrings = new List(15) { - OldWorld.Instance.ESF.Data[skill.ID].Name + (skill.ClassReq > 0 ? " [" + OldWorld.Instance.ECF.Data[skill.ClassReq].Name + "]" : ""), + OldWorld.Instance.ESF[skill.ID].Name + (skill.ClassReq > 0 ? " [" + OldWorld.Instance.ECF[skill.ClassReq].Name + "]" : ""), " " }; if (skill.SkillReq.Any(x => x != 0)) { - drawStrings.AddRange(from req in skill.SkillReq where req != 0 select OldWorld.GetString(EOResourceID.SKILLMASTER_WORD_SKILL) + ": " + OldWorld.Instance.ESF.Data[req].Name); + drawStrings.AddRange(from req in skill.SkillReq where req != 0 select OldWorld.GetString(EOResourceID.SKILLMASTER_WORD_SKILL) + ": " + OldWorld.Instance.ESF[req].Name); drawStrings.Add(" "); } @@ -329,7 +329,7 @@ private void _showRequirements(Skill skill) private void _showRequirementsLabel(Skill skill) { - string full = $"{OldWorld.Instance.ESF.Data[skill.ID].Name} {skill.LevelReq} LVL, "; + string full = $"{OldWorld.Instance.ESF[skill.ID].Name} {skill.LevelReq} LVL, "; if (skill.StrReq > 0) full += $"{skill.StrReq} STR, "; if (skill.IntReq > 0) @@ -345,7 +345,7 @@ private void _showRequirementsLabel(Skill skill) if (skill.GoldReq > 0) full += $"{skill.GoldReq} Gold"; if (skill.ClassReq > 0) - full += $", {OldWorld.Instance.ECF.Data[skill.ClassReq].Name}"; + full += $", {OldWorld.Instance.ECF[skill.ClassReq].Name}"; ((EOGame)Game).Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_INFORMATION, full); } diff --git a/EndlessClient/HUD/Panels/Old/OldOnlineListPanel.cs b/EndlessClient/HUD/Panels/Old/OldOnlineListPanel.cs index 5e1dfb46e..3ca0ba03a 100644 --- a/EndlessClient/HUD/Panels/Old/OldOnlineListPanel.cs +++ b/EndlessClient/HUD/Panels/Old/OldOnlineListPanel.cs @@ -24,7 +24,7 @@ public class ClientOnlineEntry : OnlineEntry public ClientOnlineEntry(string name, string title, string guild, int @class, PaperdollIconType icon) : base(name, title, guild, @class, icon) { - var record = OldWorld.Instance.ECF[@class] ?? new ECFRecord {Name = ""}; + var record = OldWorld.Instance.ECF[@class] ?? new ECFRecord().WithNames(new[] { string.Empty }); ClassString = record.ID == 0 ? "-" : record.Name; } diff --git a/EndlessClient/Old/OldCharacter.cs b/EndlessClient/Old/OldCharacter.cs index 8bf8a44bb..7e23f0388 100644 --- a/EndlessClient/Old/OldCharacter.cs +++ b/EndlessClient/Old/OldCharacter.cs @@ -509,11 +509,11 @@ public void UpdateInventoryItem(short id, int characterAmount, byte characterWei public void SetDisplayItemsFromRenderData(CharRenderData newRenderData) { - EquipItem(ItemType.Boots, (short)(OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Boots && x.DollGraphic == newRenderData.boots) ?? new EIFRecord()).ID, newRenderData.boots, true); - EquipItem(ItemType.Armor, (short)(OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Armor && x.DollGraphic == newRenderData.armor) ?? new EIFRecord()).ID, newRenderData.armor, true); - EquipItem(ItemType.Hat, (short)(OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Hat && x.DollGraphic == newRenderData.hat) ?? new EIFRecord()).ID, newRenderData.hat, true); - EquipItem(ItemType.Shield, (short)(OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Shield && x.DollGraphic == newRenderData.shield) ?? new EIFRecord()).ID, newRenderData.shield, true); - EquipItem(ItemType.Weapon, (short)(OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Weapon && x.DollGraphic == newRenderData.weapon) ?? new EIFRecord()).ID, newRenderData.weapon, true); + EquipItem(ItemType.Boots, (short)(OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Boots && x.DollGraphic == newRenderData.boots) ?? new EIFRecord()).ID, newRenderData.boots, true); + EquipItem(ItemType.Armor, (short)(OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Armor && x.DollGraphic == newRenderData.armor) ?? new EIFRecord()).ID, newRenderData.armor, true); + EquipItem(ItemType.Hat, (short)(OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Hat && x.DollGraphic == newRenderData.hat) ?? new EIFRecord()).ID, newRenderData.hat, true); + EquipItem(ItemType.Shield, (short)(OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Shield && x.DollGraphic == newRenderData.shield) ?? new EIFRecord()).ID, newRenderData.shield, true); + EquipItem(ItemType.Weapon, (short)(OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Weapon && x.DollGraphic == newRenderData.weapon) ?? new EIFRecord()).ID, newRenderData.weapon, true); } public void UpdateStatsAfterEquip(PaperdollEquipData data) @@ -543,16 +543,16 @@ public ChestKey CanOpenChest(ChestSpawnMapEntity chest) switch (permission) //note - it would be nice to be able to send the Item IDs of the keys in the welcome packet or something { case ChestKey.Normal: - rec = OldWorld.Instance.EIF.Data.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "normal key"); + rec = OldWorld.Instance.EIF.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "normal key"); break; case ChestKey.Crystal: - rec = OldWorld.Instance.EIF.Data.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "crystal key"); + rec = OldWorld.Instance.EIF.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "crystal key"); break; case ChestKey.Silver: - rec = OldWorld.Instance.EIF.Data.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "silver key"); + rec = OldWorld.Instance.EIF.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "silver key"); break; case ChestKey.Wraith: - rec = OldWorld.Instance.EIF.Data.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "wraith key"); + rec = OldWorld.Instance.EIF.Single(_rec => _rec.Name != null && _rec.Name.ToLower() == "wraith key"); break; default: return permission; diff --git a/EndlessClient/Old/PacketAPICallbackManager.cs b/EndlessClient/Old/PacketAPICallbackManager.cs index 902e5850b..20630c278 100644 --- a/EndlessClient/Old/PacketAPICallbackManager.cs +++ b/EndlessClient/Old/PacketAPICallbackManager.cs @@ -437,7 +437,7 @@ private void _statskillLearnError(SkillMasterReply reply, short id) { //not sure if this will ever actually be sent because client validates data before trying to learn a skill case SkillMasterReply.ErrorWrongClass: - EOMessageBox.Show(DialogResourceID.SKILL_LEARN_WRONG_CLASS, " " + OldWorld.Instance.ECF.Data[id].Name + "!", EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); + EOMessageBox.Show(DialogResourceID.SKILL_LEARN_WRONG_CLASS, " " + OldWorld.Instance.ECF[id].Name + "!", EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); break; case SkillMasterReply.ErrorRemoveItems: EOMessageBox.Show(DialogResourceID.SKILL_RESET_CHARACTER_CLEAR_PAPERDOLL, EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); diff --git a/EndlessClient/Rendering/CharacterProperties/CharacterPropertyRendererBuilder.cs b/EndlessClient/Rendering/CharacterProperties/CharacterPropertyRendererBuilder.cs index 00795a33b..10e9ff9e4 100644 --- a/EndlessClient/Rendering/CharacterProperties/CharacterPropertyRendererBuilder.cs +++ b/EndlessClient/Rendering/CharacterProperties/CharacterPropertyRendererBuilder.cs @@ -72,7 +72,7 @@ private bool IsShieldBehindCharacter(ICharacterRenderProperties renderProperties private bool IsWeaponBehindCharacter(ICharacterRenderProperties renderProperties) { - var weaponInfo = EIFFile.Data.FirstOrDefault( + var weaponInfo = EIFFile.FirstOrDefault( x => x.Type == ItemType.Weapon && x.DollGraphic == renderProperties.WeaponGraphic); @@ -85,7 +85,7 @@ private bool IsWeaponBehindCharacter(ICharacterRenderProperties renderProperties private HatMaskType GetHatMaskType(ICharacterRenderProperties renderProperties) { - var hatInfo = EIFFile.Data.FirstOrDefault( + var hatInfo = EIFFile.FirstOrDefault( x => x.Type == ItemType.Hat && x.DollGraphic == renderProperties.HatGraphic); diff --git a/EndlessClient/Rendering/OldCharacterRenderer.cs b/EndlessClient/Rendering/OldCharacterRenderer.cs index cbe38f2e3..d62b7e58c 100644 --- a/EndlessClient/Rendering/OldCharacterRenderer.cs +++ b/EndlessClient/Rendering/OldCharacterRenderer.cs @@ -284,7 +284,7 @@ private void _updateDisplayDataSprites() { if (OldWorld.Instance.EIF != null) { - shieldInfo = OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Shield && x.DollGraphic == Data.shield); + shieldInfo = OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Shield && x.DollGraphic == Data.shield); if(shieldInfo != null) shield = spriteSheet.GetShield(shieldInfo.Name == "Bag" || shieldInfo.SubType == ItemSubType.Arrows || shieldInfo.SubType == ItemSubType.Wings); } @@ -299,7 +299,7 @@ private void _updateDisplayDataSprites() { if (OldWorld.Instance.EIF != null) { - weaponInfo = OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Weapon && x.DollGraphic == Data.weapon); + weaponInfo = OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Weapon && x.DollGraphic == Data.weapon); if(weaponInfo != null) weapon = spriteSheet.GetWeapon(weaponInfo.SubType == ItemSubType.Ranged); } @@ -321,7 +321,7 @@ private void _updateDisplayDataSprites() lock (hatHairLock) hat = spriteSheet.GetHat(); if (OldWorld.Instance.EIF != null) - hatInfo = OldWorld.Instance.EIF.Data.SingleOrDefault(x => x.Type == ItemType.Hat && x.DollGraphic == Data.hat); + hatInfo = OldWorld.Instance.EIF.SingleOrDefault(x => x.Type == ItemType.Hat && x.DollGraphic == Data.hat); } else { diff --git a/EndlessClient/Rendering/Sprites/CharacterSpriteCalculator.cs b/EndlessClient/Rendering/Sprites/CharacterSpriteCalculator.cs index 73bf55e84..c5f1670ff 100644 --- a/EndlessClient/Rendering/Sprites/CharacterSpriteCalculator.cs +++ b/EndlessClient/Rendering/Sprites/CharacterSpriteCalculator.cs @@ -498,12 +498,11 @@ private int GetOffsetBasedOnState(WeaponSpriteType type) private bool BowIsEquipped(ICharacterRenderProperties characterRenderProperties) { - if (EIFFile == null || EIFFile.Data == null) + if (EIFFile == null) return false; - var itemData = EIFFile.Data; - var weaponInfo = itemData.FirstOrDefault(x => x.Type == ItemType.Weapon && - x.DollGraphic == characterRenderProperties.WeaponGraphic); + var weaponInfo = EIFFile.FirstOrDefault(x => x.Type == ItemType.Weapon && + x.DollGraphic == characterRenderProperties.WeaponGraphic); return weaponInfo != null && weaponInfo.SubType == ItemSubType.Ranged; } diff --git a/EndlessClient/Test/CharacterStateTest.cs b/EndlessClient/Test/CharacterStateTest.cs index e1d9ea979..7e4b757a5 100644 --- a/EndlessClient/Test/CharacterStateTest.cs +++ b/EndlessClient/Test/CharacterStateTest.cs @@ -171,7 +171,7 @@ public override void Update(GameTime gameTime) if (!_isBowEquipped) { _lastGraphic = _baseProperties.WeaponGraphic; - var firstBowWeapon = EIFFile.Data.First(x => x.Type == ItemType.Weapon && x.SubType == ItemSubType.Ranged); + var firstBowWeapon = EIFFile.First(x => x.Type == ItemType.Weapon && x.SubType == ItemSubType.Ranged); _baseProperties = _baseProperties.WithWeaponGraphic((short)firstBowWeapon.DollGraphic, isRanged: true); } else @@ -273,7 +273,7 @@ private bool KeyPressed(Keys key) private short GetNextItemGraphicMatching(ItemType type, short currentGraphic) { var increment = ShiftPressed ? -1 : 1; - var matchingItems = EIFFile.Data.Where(x => x.Type == type).OrderBy(x => x.ID).ToList(); + var matchingItems = EIFFile.Where(x => x.Type == type).OrderBy(x => x.ID).ToList(); _itemIndices[type] = (_itemIndices[type] + increment) % matchingItems.Count; if (_itemIndices[type] + increment < 0)