diff --git a/EOLib/Domain/Character/PaperdollData.cs b/EOLib/Domain/Character/PaperdollData.cs index 150d0884a..6566a0f9e 100644 --- a/EOLib/Domain/Character/PaperdollData.cs +++ b/EOLib/Domain/Character/PaperdollData.cs @@ -124,6 +124,24 @@ public override bool Equals(object obj) Guild == other.Guild && Rank == other.Rank && PlayerID == other.PlayerID && Class == other.Class && Gender == other.Gender && Icon == other.Icon && Paperdoll.SequenceEqual(other.Paperdoll); } + + public override int GetHashCode() + { + int hashCode = 170256730; + hashCode = hashCode * -1521134295 + Name.GetHashCode(); + hashCode = hashCode * -1521134295 + Home.GetHashCode(); + hashCode = hashCode * -1521134295 + Partner.GetHashCode(); + hashCode = hashCode * -1521134295 + Title.GetHashCode(); + hashCode = hashCode * -1521134295 + Guild.GetHashCode(); + hashCode = hashCode * -1521134295 + Rank.GetHashCode(); + hashCode = hashCode * -1521134295 + PlayerID.GetHashCode(); + hashCode = hashCode * -1521134295 + Class.GetHashCode(); + hashCode = hashCode * -1521134295 + Gender.GetHashCode(); + hashCode = hashCode * -1521134295 + Paperdoll.Select(x => (int)x.Value) + .Aggregate(hashCode * -1521134295, (a, b) => a * -1521134295 + b.GetHashCode()); + hashCode = hashCode * -1521134295 + Icon.GetHashCode(); + return hashCode; + } } public interface IPaperdollData diff --git a/EOLib/Domain/Interact/MapNPCActions.cs b/EOLib/Domain/Interact/MapNPCActions.cs new file mode 100644 index 000000000..eb04fcc91 --- /dev/null +++ b/EOLib/Domain/Interact/MapNPCActions.cs @@ -0,0 +1,31 @@ +using AutomaticTypeMapper; +using EOLib.Net; +using EOLib.Net.Communication; + +namespace EOLib.Domain.Interact +{ + [AutoMappedType] + public class MapNPCActions : IMapNPCActions + { + private readonly IPacketSendService _packetSendService; + + public MapNPCActions(IPacketSendService packetSendService) + { + _packetSendService = packetSendService; + } + + public void RequestShop(byte index) + { + var packet = new PacketBuilder(PacketFamily.Shop, PacketAction.Open) + .AddShort(index) + .Build(); + + _packetSendService.SendPacket(packet); + } + } + + public interface IMapNPCActions + { + void RequestShop(byte index); + } +} diff --git a/EOLib/Domain/Interact/PaperdollActions.cs b/EOLib/Domain/Interact/PaperdollActions.cs new file mode 100644 index 000000000..802033465 --- /dev/null +++ b/EOLib/Domain/Interact/PaperdollActions.cs @@ -0,0 +1,30 @@ +using AutomaticTypeMapper; +using EOLib.Net; +using EOLib.Net.Communication; + +namespace EOLib.Domain.Interact +{ + [AutoMappedType] + public class PaperdollActions : IPaperdollActions + { + private readonly IPacketSendService _packetSendService; + + public PaperdollActions(IPacketSendService packetSendService) + { + _packetSendService = packetSendService; + } + + public void RequestPaperdoll(int characterId) + { + var packet = new PacketBuilder(PacketFamily.PaperDoll, PacketAction.Request) + .AddShort((short)characterId) + .Build(); + _packetSendService.SendPacket(packet); + } + } + + public interface IPaperdollActions + { + void RequestPaperdoll(int characterId); + } +} diff --git a/EOLib/Domain/Interact/Shop/ShopActions.cs b/EOLib/Domain/Interact/Shop/ShopActions.cs new file mode 100644 index 000000000..d6cce78a8 --- /dev/null +++ b/EOLib/Domain/Interact/Shop/ShopActions.cs @@ -0,0 +1,55 @@ +using AutomaticTypeMapper; +using EOLib.Net; +using EOLib.Net.Communication; + +namespace EOLib.Domain.Interact.Shop +{ + [AutoMappedType] + public class ShopActions : IShopActions + { + private readonly IPacketSendService _packetSendService; + + public ShopActions(IPacketSendService packetSendService) + { + _packetSendService = packetSendService; + } + + public void BuyItem(short itemId, int amount) + { + var packet = new PacketBuilder(PacketFamily.Shop, PacketAction.Buy) + .AddShort(itemId) + .AddInt(amount) + .Build(); + + _packetSendService.SendPacket(packet); + } + + public void SellItem(short itemId, int amount) + { + var packet = new PacketBuilder(PacketFamily.Shop, PacketAction.Sell) + .AddShort(itemId) + .AddInt(amount) + .Build(); + + _packetSendService.SendPacket(packet); + } + + public void CraftItem(short itemId) + { + var packet = new PacketBuilder(PacketFamily.Shop, PacketAction.Create) + .AddShort(itemId) + .Build(); + + _packetSendService.SendPacket(packet); + } + } + + public interface IShopActions + { + void BuyItem(short itemId, int amount); + + void SellItem(short itemId, int amount); + + void CraftItem(short itemId); + } +} diff --git a/EOLib/Domain/Interact/Shop/ShopCraftIngredient.cs b/EOLib/Domain/Interact/Shop/ShopCraftIngredient.cs new file mode 100644 index 000000000..3c2f11542 --- /dev/null +++ b/EOLib/Domain/Interact/Shop/ShopCraftIngredient.cs @@ -0,0 +1,22 @@ +namespace EOLib.Domain.Interact.Shop +{ + public class ShopCraftIngredient : IShopCraftIngredient + { + public int ID { get; } + + public int Amount { get; } + + public ShopCraftIngredient(int id, int amount) + { + ID = id; + Amount = amount; + } + } + + public interface IShopCraftIngredient + { + int ID { get; } + + int Amount { get; } + } +} diff --git a/EOLib/Domain/Interact/Shop/ShopCraftItem.cs b/EOLib/Domain/Interact/Shop/ShopCraftItem.cs new file mode 100644 index 000000000..ccc574ebc --- /dev/null +++ b/EOLib/Domain/Interact/Shop/ShopCraftItem.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace EOLib.Domain.Interact.Shop +{ + public class ShopCraftItem : IShopCraftItem + { + public int ID { get; } + + public IReadOnlyList Ingredients { get; } + + public ShopCraftItem(int id, IEnumerable ingredients) + { + ID = id; + Ingredients = new List(ingredients); + } + } + + public interface IShopCraftItem + { + int ID { get; } + + IReadOnlyList Ingredients { get; } + } +} diff --git a/EOLib/Domain/Interact/Shop/ShopDataRepository.cs b/EOLib/Domain/Interact/Shop/ShopDataRepository.cs new file mode 100644 index 000000000..c7b024d13 --- /dev/null +++ b/EOLib/Domain/Interact/Shop/ShopDataRepository.cs @@ -0,0 +1,55 @@ +using AutomaticTypeMapper; +using System.Collections.Generic; + +namespace EOLib.Domain.Interact.Shop +{ + public interface IShopDataRepository : IResettable + { + int ShopID { get; set; } + + string ShopName { get; set; } + + List TradeItems { get; set; } + + List CraftItems { get; set; } + } + + public interface IShopDataProvider : IResettable + { + int ShopID { get; } + + string ShopName { get; } + + IReadOnlyList TradeItems { get; } + + IReadOnlyList CraftItems { get; } + } + + [AutoMappedType(IsSingleton = true)] + public class ShopDataRepository : IShopDataProvider, IShopDataRepository + { + public int ShopID { get; set; } + public string ShopName { get; set; } + + public List TradeItems { get; set; } + + public List CraftItems { get; set; } + + IReadOnlyList IShopDataProvider.TradeItems => TradeItems; + + IReadOnlyList IShopDataProvider.CraftItems => CraftItems; + + public ShopDataRepository() + { + ResetState(); + } + + public void ResetState() + { + ShopID = 0; + ShopName = string.Empty; + TradeItems = new List(); + CraftItems = new List(); + } + } +} diff --git a/EOLib/Domain/Interact/Shop/ShopItem.cs b/EOLib/Domain/Interact/Shop/ShopItem.cs new file mode 100644 index 000000000..4a2de6f57 --- /dev/null +++ b/EOLib/Domain/Interact/Shop/ShopItem.cs @@ -0,0 +1,32 @@ +namespace EOLib.Domain.Interact.Shop +{ + public class ShopItem : IShopItem + { + public int ID { get; } + + public int Buy { get; } + + public int Sell { get; } + + public int MaxBuy { get; } + + public ShopItem(int id, int buyPrice, int sellPrice, int maxBuy) + { + ID = id; + Buy = buyPrice; + Sell = sellPrice; + MaxBuy = maxBuy; + } + } + + public interface IShopItem + { + int ID { get; } + + int Buy { get; } + + int Sell { get; } + + int MaxBuy { get; } + } +} diff --git a/EOLib/Net/API/PacketAPI.cs b/EOLib/Net/API/PacketAPI.cs index 421370cde..f57f3b8cf 100644 --- a/EOLib/Net/API/PacketAPI.cs +++ b/EOLib/Net/API/PacketAPI.cs @@ -29,7 +29,6 @@ public PacketAPI(EOClient client) _createPartyMembers(); _createNPCMembers(); _createQuestMembers(); - _createShopMembers(); _createSpellMembers(); _createStatSkillMembers(); _createTradeMembers(); diff --git a/EOLib/Net/API/Shop.cs b/EOLib/Net/API/Shop.cs deleted file mode 100644 index 2c671c26c..000000000 --- a/EOLib/Net/API/Shop.cs +++ /dev/null @@ -1,205 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using EOLib.Domain.Character; -using EOLib.Net.Handlers; - -namespace EOLib.Net.API -{ - public struct ShopItem - { - private readonly int m_id, m_buy, m_sell, m_maxBuy; - - public int ID => m_id; - public int Buy => m_buy; - public int Sell => m_sell; - public int MaxBuy => m_maxBuy; - - public ShopItem(int ID, int BuyPrice, int SellPrice, int MaxBuy) - { - m_id = ID; - m_buy = BuyPrice; - m_sell = SellPrice; - m_maxBuy = MaxBuy; - } - } - - public struct CraftItem - { - private readonly int m_id; - public int ID => m_id; - - private readonly List> m_ingreds; - public ReadOnlyCollection> Ingredients => m_ingreds.AsReadOnly(); - - public CraftItem(int ID, IEnumerable> Ingredients) - { - m_ingreds = new List>(); - m_ingreds.AddRange(Ingredients.Where(x => x.Item1 != 0 && x.Item2 != 0)); - m_id = ID; - } - } - - partial class PacketAPI - { - public delegate void ShopOpenEvent(int shopID, string name, List tradeItems, List craftItems); - public delegate void ShopTradeEvent(int goldRemaining, short itemID, int amount, byte weight, byte maxWeight, bool isBuy); - public delegate void ShopCraftEvent(short itemID, byte weight, byte maxWeight, List ingredients); - public event ShopOpenEvent OnShopOpen; - public event ShopTradeEvent OnShopTradeItem; - public event ShopCraftEvent OnShopCraftItem; - - private void _createShopMembers() - { - m_client.AddPacketHandler(new FamilyActionPair(PacketFamily.Shop, PacketAction.Open), _handleShopOpen, true); - m_client.AddPacketHandler(new FamilyActionPair(PacketFamily.Shop, PacketAction.Buy), _handleShopBuy, true); - m_client.AddPacketHandler(new FamilyActionPair(PacketFamily.Shop, PacketAction.Sell), _handleShopSell, true); - m_client.AddPacketHandler(new FamilyActionPair(PacketFamily.Shop, PacketAction.Create), _handleShopCreate, true); - } - - public bool RequestShop(short npcIndex) - { - if (!m_client.ConnectedAndInitialized || !Initialized) - return false; - - OldPacket pkt = new OldPacket(PacketFamily.Shop, PacketAction.Open); - pkt.AddShort(npcIndex); - - return m_client.SendPacket(pkt); - } - - /// - /// Buy an item from a shopkeeper - /// - public bool BuyItem(short ItemID, int amount) - { - if (!m_client.ConnectedAndInitialized || !Initialized) - return false; - - OldPacket pkt = new OldPacket(PacketFamily.Shop, PacketAction.Buy); - pkt.AddShort(ItemID); - pkt.AddInt(amount); - - return m_client.SendPacket(pkt); - } - - /// - /// Sell an item to a shopkeeper - /// - public bool SellItem(short ItemID, int amount) - { - if (!m_client.ConnectedAndInitialized || !Initialized) - return false; - - OldPacket pkt = new OldPacket(PacketFamily.Shop, PacketAction.Sell); - pkt.AddShort(ItemID); - pkt.AddInt(amount); - - return m_client.SendPacket(pkt); - } - - /// - /// Craft an item with a shopkeeper - /// - public bool CraftItem(short ItemID) - { - if (!m_client.ConnectedAndInitialized || !Initialized) - return false; - - OldPacket pkt = new OldPacket(PacketFamily.Shop, PacketAction.Create); - pkt.AddShort(ItemID); - - return m_client.SendPacket(pkt); - } - - /// - /// Handles SHOP_OPEN from server, contains shop data for a shop dialog - /// - private void _handleShopOpen(OldPacket pkt) - { - if (OnShopOpen == null) return; - - int shopKeeperID = pkt.GetShort(); - string shopName = pkt.GetBreakString(); - - List tradeItems = new List(); - while (pkt.PeekByte() != 255) - { - ShopItem nextItem = new ShopItem(pkt.GetShort(), pkt.GetThree(), pkt.GetThree(), pkt.GetChar()); - tradeItems.Add(nextItem); - } - pkt.GetByte(); - - List craftItems = new List(); - while (pkt.PeekByte() != 255) - { - int ID = pkt.GetShort(); - List> ingreds = new List>(); - - for (int i = 0; i < 4; ++i) - { - ingreds.Add(new Tuple(pkt.GetShort(), pkt.GetChar())); - } - craftItems.Add(new CraftItem(ID, ingreds)); - } - pkt.GetByte(); - - OnShopOpen(shopKeeperID, shopName, tradeItems, craftItems); - } - - /// - /// Handles SHOP_BUY from server, response to buying an item - /// - private void _handleShopBuy(OldPacket pkt) - { - if (OnShopTradeItem == null) return; - - int charGoldLeft = pkt.GetInt(); - short itemID = pkt.GetShort(); - int amount = pkt.GetInt(); - byte weight = pkt.GetChar(); - byte maxWeight = pkt.GetChar(); - - OnShopTradeItem(charGoldLeft, itemID, amount, weight, maxWeight, true); - } - - /// - /// Handles SHOP_SELL from server, response to selling an item - /// - private void _handleShopSell(OldPacket pkt) - { - if (OnShopTradeItem == null) return; - - int charNumLeft = pkt.GetInt(); - short itemID = pkt.GetShort(); - int charGold = pkt.GetInt(); - byte weight = pkt.GetChar(); - byte maxWeight = pkt.GetChar(); - - OnShopTradeItem(charGold, itemID, charNumLeft, weight, maxWeight, false); - } - - /// - /// Handles SHOP_CREATE from server, response to crafting an item - /// - private void _handleShopCreate(OldPacket pkt) - { - if (OnShopCraftItem == null) return; - - short itemID = pkt.GetShort(); - byte weight = pkt.GetChar(); - byte maxWeight = pkt.GetChar(); - - List inventoryItems = new List(4); - while (pkt.ReadPos != pkt.Length) - { - if (pkt.PeekShort() <= 0) break; - - inventoryItems.Add(new InventoryItem(pkt.GetShort(), pkt.GetInt())); - } - - OnShopCraftItem(itemID, weight, maxWeight, inventoryItems); - } - } -} diff --git a/EOLib/PacketHandlers/Interact/Shop/ShopCraftHandler.cs b/EOLib/PacketHandlers/Interact/Shop/ShopCraftHandler.cs new file mode 100644 index 000000000..6581d2a6a --- /dev/null +++ b/EOLib/PacketHandlers/Interact/Shop/ShopCraftHandler.cs @@ -0,0 +1,74 @@ +using AutomaticTypeMapper; +using EOLib.Domain.Character; +using EOLib.Domain.Login; +using EOLib.Net; +using EOLib.Net.Handlers; +using Optional.Collections; + +namespace EOLib.PacketHandlers.Interact.Shop +{ + [AutoMappedType] + public class ShopCraftHandler : InGameOnlyPacketHandler + { + private readonly ICharacterRepository _characterRepository; + private readonly ICharacterInventoryRepository _characterInventoryRepository; + + public override PacketFamily Family => PacketFamily.Shop; + + public override PacketAction Action => PacketAction.Create; + + public ShopCraftHandler(IPlayerInfoProvider playerInfoProvider, + ICharacterRepository characterRepository, + ICharacterInventoryRepository characterInventoryRepository) + : base(playerInfoProvider) + { + _characterRepository = characterRepository; + _characterInventoryRepository = characterInventoryRepository; + } + + public override bool HandlePacket(IPacket packet) + { + var itemId = packet.ReadShort(); + var weight = packet.ReadChar(); + var maxWeight = packet.ReadChar(); + + while (packet.ReadPosition < packet.Length) + { + if (packet.PeekShort() == 0) break; + + var nextItemId = packet.ReadShort(); + var nextItemAmount = packet.ReadInt(); + + _characterInventoryRepository.ItemInventory.SingleOrNone(x => x.ItemID == nextItemId) + .Match( + some: existing => + { + _characterInventoryRepository.ItemInventory.Remove(existing); + if (nextItemAmount > 0) + _characterInventoryRepository.ItemInventory.Add(existing.WithAmount(nextItemAmount)); + }, + none: () => + { + if (nextItemAmount > 0) + _characterInventoryRepository.ItemInventory.Add(new InventoryItem(nextItemId, nextItemAmount)); + }); + } + + _characterInventoryRepository.ItemInventory.SingleOrNone(x => x.ItemID == itemId) + .Match( + some: existing => + { + _characterInventoryRepository.ItemInventory.Remove(existing); + _characterInventoryRepository.ItemInventory.Add(existing.WithAmount(existing.Amount + 1)); + }, + none: () => _characterInventoryRepository.ItemInventory.Add(new InventoryItem(itemId, 1))); + + var stats = _characterRepository.MainCharacter.Stats; + stats = stats.WithNewStat(CharacterStat.Weight, weight) + .WithNewStat(CharacterStat.MaxWeight, maxWeight); + _characterRepository.MainCharacter = _characterRepository.MainCharacter.WithStats(stats); + + return true; + } + } +} diff --git a/EOLib/PacketHandlers/Interact/Shop/ShopOpenHandler.cs b/EOLib/PacketHandlers/Interact/Shop/ShopOpenHandler.cs new file mode 100644 index 000000000..79e250ad7 --- /dev/null +++ b/EOLib/PacketHandlers/Interact/Shop/ShopOpenHandler.cs @@ -0,0 +1,68 @@ +using AutomaticTypeMapper; +using EOLib.Domain.Interact.Shop; +using EOLib.Domain.Login; +using EOLib.Net; +using EOLib.Net.Handlers; +using System.Collections.Generic; + +namespace EOLib.PacketHandlers.Interact.Shop +{ + [AutoMappedType] + public class ShopOpenHandler : InGameOnlyPacketHandler + { + private readonly IShopDataRepository _shopDataRepository; + + public override PacketFamily Family => PacketFamily.Shop; + + public override PacketAction Action => PacketAction.Open; + + public ShopOpenHandler(IPlayerInfoProvider playerInfoProvider, + IShopDataRepository shopDataRepository) + : base(playerInfoProvider) + { + _shopDataRepository = shopDataRepository; + } + + public override bool HandlePacket(IPacket packet) + { + _shopDataRepository.ShopID = packet.ReadShort(); + _shopDataRepository.ShopName = packet.ReadBreakString(); + + var tradeItems = new List(); + while (packet.PeekByte() != 255) + { + var nextItem = new ShopItem( + id: packet.ReadShort(), + buyPrice: packet.ReadThree(), + sellPrice: packet.ReadThree(), + maxBuy: packet.ReadChar()); + tradeItems.Add(nextItem); + } + packet.ReadByte(); + + _shopDataRepository.TradeItems = tradeItems; + + var craftItems = new List(); + while (packet.PeekByte() != 255) + { + var id = packet.ReadShort(); + var ingreds = new List(); + + for (int i = 0; i < 4; ++i) + { + var nextIngredient = new ShopCraftIngredient(id: packet.ReadShort(), amount: packet.ReadChar()); + if (nextIngredient.ID == 0) + continue; + + ingreds.Add(nextIngredient); + } + craftItems.Add(new ShopCraftItem(id, ingreds)); + } + packet.ReadByte(); + + _shopDataRepository.CraftItems = craftItems; + + return true; + } + } +} diff --git a/EOLib/PacketHandlers/Interact/Shop/ShopTradeHandler.cs b/EOLib/PacketHandlers/Interact/Shop/ShopTradeHandler.cs new file mode 100644 index 000000000..13f10e6c6 --- /dev/null +++ b/EOLib/PacketHandlers/Interact/Shop/ShopTradeHandler.cs @@ -0,0 +1,100 @@ +using AutomaticTypeMapper; +using EOLib.Domain.Character; +using EOLib.Domain.Login; +using EOLib.Net; +using EOLib.Net.Handlers; +using Optional.Collections; + +namespace EOLib.PacketHandlers.Interact.Shop +{ + public abstract class ShopTradeHandler : InGameOnlyPacketHandler + { + private readonly ICharacterRepository _characterRepository; + private readonly ICharacterInventoryRepository _characterInventoryRepository; + + public override PacketFamily Family => PacketFamily.Shop; + + protected ShopTradeHandler(IPlayerInfoProvider playerInfoProvider, + ICharacterRepository characterRepository, + ICharacterInventoryRepository characterInventoryRepository) + : base(playerInfoProvider) + { + _characterRepository = characterRepository; + _characterInventoryRepository = characterInventoryRepository; + } + + public override bool HandlePacket(IPacket packet) + { + var remaining = packet.ReadInt(); // character gold remaining on buy; item amount remaining on sell + var itemId = packet.ReadShort(); + var acquired = packet.ReadInt(); // amount acquired on buy; gold acquired on sell + var weight = packet.ReadChar(); + var maxWeight = packet.ReadChar(); + + if (Action == PacketAction.Buy) + { + var gold = new InventoryItem(1, remaining); + _characterInventoryRepository.ItemInventory.RemoveWhere(x => x.ItemID == 1); + _characterInventoryRepository.ItemInventory.Add(gold); + + var shopBuy = new InventoryItem(itemId, acquired); + _characterInventoryRepository.ItemInventory.SingleOrNone(x => x.ItemID == itemId) + .Match( + some: existing => + { + _characterInventoryRepository.ItemInventory.RemoveWhere(x => x.ItemID == itemId); + _characterInventoryRepository.ItemInventory.Add(shopBuy.WithAmount(existing.Amount + shopBuy.Amount)); + }, + none: () => _characterInventoryRepository.ItemInventory.Add(shopBuy)); + } + else if (Action == PacketAction.Sell) + { + var gold = new InventoryItem(1, acquired); + _characterInventoryRepository.ItemInventory.RemoveWhere(x => x.ItemID == 1); + _characterInventoryRepository.ItemInventory.Add(gold); + + var itemSold = new InventoryItem(itemId, remaining); + _characterInventoryRepository.ItemInventory.RemoveWhere(x => x.ItemID == itemId); + if (itemSold.Amount > 0) + _characterInventoryRepository.ItemInventory.Add(itemSold); + } + else + { + return false; + } + + var stats = _characterRepository.MainCharacter.Stats; + stats = stats.WithNewStat(CharacterStat.Weight, weight) + .WithNewStat(CharacterStat.MaxWeight, maxWeight); + _characterRepository.MainCharacter = _characterRepository.MainCharacter.WithStats(stats); + + return true; + } + } + + [AutoMappedType] + public class ShopBuyHandler : ShopTradeHandler + { + public override PacketAction Action => PacketAction.Buy; + + public ShopBuyHandler(IPlayerInfoProvider playerInfoProvider, + ICharacterRepository characterRepository, + ICharacterInventoryRepository characterInventoryRepository) + : base(playerInfoProvider, characterRepository, characterInventoryRepository) + { + } + } + + [AutoMappedType] + public class ShopSellHandler : ShopTradeHandler + { + public override PacketAction Action => PacketAction.Sell; + + public ShopSellHandler(IPlayerInfoProvider playerInfoProvider, + ICharacterRepository characterRepository, + ICharacterInventoryRepository characterInventoryRepository) + : base(playerInfoProvider, characterRepository, characterInventoryRepository) + { + } + } +} diff --git a/EOLib/misc.cs b/EOLib/misc.cs index 442169185..df3b4ed1b 100644 --- a/EOLib/misc.cs +++ b/EOLib/misc.cs @@ -54,7 +54,7 @@ public static class Constants public const string FontSize07 = @"Fonts/InGame_Main_07"; public const string FontSize08 = @"Fonts/InGame_Main_08"; public const string FontSize08pt5 = @"Fonts/InGame_Main_08pt5"; - public const string FontSize08pt75 = @"Fonts/InGame_Main_08pt75"; + public const string FontSize09 = @"Fonts/InGame_Main_09"; public const string FontSize10 = @"Fonts/InGame_Main_10"; public const int OutOfBand_Packets_Handled_Per_Update = 10; diff --git a/EndlessClient/ContentPipeline/Content.mgcb b/EndlessClient/ContentPipeline/Content.mgcb index 98abe180e..4a83bc742 100644 --- a/EndlessClient/ContentPipeline/Content.mgcb +++ b/EndlessClient/ContentPipeline/Content.mgcb @@ -235,11 +235,11 @@ /processorParam:TextureFormat=Compressed /build:Fonts/InGame_Main_08pt5.spritefont -#begin Fonts/InGame_Main_08pt75.spritefont +#begin Fonts/InGame_Main_09.spritefont /importer:FontDescriptionImporter /processor:FontDescriptionProcessor /processorParam:TextureFormat=Compressed -/build:Fonts/InGame_Main_08pt75.spritefont +/build:Fonts/InGame_Main_09.spritefont #begin Fonts/InGame_Main_10.spritefont /importer:FontDescriptionImporter diff --git a/EndlessClient/ContentPipeline/Fonts/InGame_Main_08pt75.spritefont b/EndlessClient/ContentPipeline/Fonts/InGame_Main_09.spritefont similarity index 98% rename from EndlessClient/ContentPipeline/Fonts/InGame_Main_08pt75.spritefont rename to EndlessClient/ContentPipeline/Fonts/InGame_Main_09.spritefont index eb3fe6b96..81ed2ddf9 100644 --- a/EndlessClient/ContentPipeline/Fonts/InGame_Main_08pt75.spritefont +++ b/EndlessClient/ContentPipeline/Fonts/InGame_Main_09.spritefont @@ -17,7 +17,7 @@ with. Size is a float value, measured in points. Modify this value to change the size of the font. --> - 8.75 + 9