diff --git a/Dalamud/Game/Internal/Network/GameNetwork.cs b/Dalamud/Game/Internal/Network/GameNetwork.cs index 947a4651c..dff3ac535 100644 --- a/Dalamud/Game/Internal/Network/GameNetwork.cs +++ b/Dalamud/Game/Internal/Network/GameNetwork.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; +using Dalamud.Game.Network; using Dalamud.Hooking; using Serilog; diff --git a/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/IMarketBoardUploader.cs similarity index 93% rename from Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/IMarketBoardUploader.cs index 9820ac237..a867261f2 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/IMarketBoardUploader.cs @@ -1,6 +1,6 @@ using Dalamud.Game.Network.Structures; -namespace Dalamud.Game.Network.MarketBoardUploaders +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders { /// /// An interface binding for the Universalis uploader. diff --git a/Dalamud/Game/Network/Internal/MarketBoardUploaders/MarketBoardItemRequest.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/MarketBoardItemRequest.cs new file mode 100644 index 000000000..63d51f0e1 --- /dev/null +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/MarketBoardItemRequest.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; + +using Dalamud.Game.Network.Structures; + +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders +{ + /// + /// This represents a submission to a marketboard aggregation website. + /// + internal class MarketBoardItemRequest + { + /// + /// Gets or sets the catalog ID. + /// + public uint CatalogId { get; set; } + + /// + /// Gets or sets the amount to arrive. + /// + public byte AmountToArrive { get; set; } + + /// + /// Gets or sets the offered item listings. + /// + public List Listings { get; set; } + + /// + /// Gets or sets the historical item listings. + /// + public List History { get; set; } + + /// + /// Gets or sets the listing request ID. + /// + public int ListingsRequestId { get; set; } = -1; + + /// + /// Gets a value indicating whether the upload is complete. + /// + public bool IsDone => this.Listings.Count == this.AmountToArrive && this.History.Count != 0; + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisHistoryEntry.cs similarity index 95% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisHistoryEntry.cs index ba60d484d..37467377c 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisHistoryEntry.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisHistoryUploadRequest.cs similarity index 91% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisHistoryUploadRequest.cs index 1c92171af..afa8bf417 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisHistoryUploadRequest.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingDeleteRequest.cs similarity index 88% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingDeleteRequest.cs index f6994e60f..ea96f934a 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingDeleteRequest.cs @@ -1,11 +1,11 @@ using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// Request payload for market board purchases. /// - public class UniversalisItemListingDeleteRequest + internal class UniversalisItemListingDeleteRequest { /// /// Gets or sets the object ID of the retainer associated with the sale. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingsEntry.cs similarity index 97% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingsEntry.cs index 745c2a66e..42ff15668 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingsEntry.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingsUploadRequest.cs similarity index 91% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingsUploadRequest.cs index 3623769c9..c055b30d9 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemListingsUploadRequest.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemMateria.cs similarity index 85% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemMateria.cs index 5c2cae7c6..8c9c99bb5 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisItemMateria.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisTaxData.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs similarity index 93% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisTaxData.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs index dd56a25ed..0a93f788b 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisTaxData.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxData.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisTaxUploadRequest.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxUploadRequest.cs similarity index 90% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisTaxUploadRequest.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxUploadRequest.cs index bdf9715a0..a11ac0e89 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisTaxUploadRequest.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/Types/UniversalisTaxUploadRequest.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types { /// /// A Universalis API structure. diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs similarity index 62% rename from Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs rename to Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs index 58c7810ad..5e4ac76e1 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs +++ b/Dalamud/Game/Network/Internal/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs @@ -1,14 +1,15 @@ using System; using System.Collections.Generic; -using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; -using Dalamud.Game.Network.MarketBoardUploaders; -using Dalamud.Game.Network.MarketBoardUploaders.Universalis; +using Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis.Types; using Dalamud.Game.Network.Structures; using Newtonsoft.Json; using Serilog; -namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders +namespace Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis { /// /// This class represents an uploader for contributing data to Universalis. @@ -16,8 +17,8 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders internal class UniversalisMarketBoardUploader : IMarketBoardUploader { private const string ApiBase = "https://universalis.app"; - // private const string ApiBase = "https://127.0.0.1:443"; + private const string ApiKey = "GGD6RdSfGyRiHM5WDnAo0Nj9Nv7aC5NDhMj3BebT"; private readonly Dalamud dalamud; @@ -34,14 +35,14 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders /// public void Upload(MarketBoardItemRequest request) { - using var client = new WebClient(); - - client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + using var client = new HttpClient(); Log.Verbose("Starting Universalis upload."); var uploader = this.dalamud.ClientState.LocalContentId; - var listingsRequestObject = new UniversalisItemListingsUploadRequest + // ==================================================================================== + + var listingsUploadObject = new UniversalisItemListingsUploadRequest { WorldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0, UploaderId = uploader.ToString(), @@ -76,14 +77,17 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders }); } - listingsRequestObject.Listings.Add(universalisListing); + listingsUploadObject.Listings.Add(universalisListing); } - var upload = JsonConvert.SerializeObject(listingsRequestObject); - Log.Verbose(upload); - client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", upload); + var listingPath = "/upload"; + var listingUpload = JsonConvert.SerializeObject(listingsUploadObject); + Log.Verbose($"{listingPath}: {listingUpload}"); + client.PostAsync($"{ApiBase}{listingPath}/{ApiKey}", new StringContent(listingUpload, Encoding.UTF8, "application/json")).GetAwaiter().GetResult(); - var historyRequestObject = new UniversalisHistoryUploadRequest + // ==================================================================================== + + var historyUploadObject = new UniversalisHistoryUploadRequest { WorldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0, UploaderId = uploader.ToString(), @@ -93,7 +97,7 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders foreach (var marketBoardHistoryListing in request.History) { - historyRequestObject.Entries.Add(new UniversalisHistoryEntry + historyUploadObject.Entries.Add(new UniversalisHistoryEntry { BuyerName = marketBoardHistoryListing.BuyerName, Hq = marketBoardHistoryListing.IsHq, @@ -104,11 +108,12 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders }); } - client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + var historyPath = "/upload"; + var historyUpload = JsonConvert.SerializeObject(historyUploadObject); + Log.Verbose($"{historyPath}: {historyUpload}"); + client.PostAsync($"{ApiBase}{historyPath}/{ApiKey}", new StringContent(historyUpload, Encoding.UTF8, "application/json")).GetAwaiter().GetResult(); - var historyUpload = JsonConvert.SerializeObject(historyRequestObject); - Log.Verbose(historyUpload); - client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", historyUpload); + // ==================================================================================== Log.Verbose("Universalis data upload for item#{0} completed.", request.CatalogId); } @@ -116,9 +121,11 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders /// public void UploadTax(MarketTaxRates taxRates) { - using var client = new WebClient(); + using var client = new HttpClient(); - var taxRatesRequest = new UniversalisTaxUploadRequest + // ==================================================================================== + + var taxUploadObject = new UniversalisTaxUploadRequest { WorldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0, UploaderId = this.dalamud.ClientState.LocalContentId.ToString(), @@ -133,26 +140,35 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders }, }; - client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + var taxPath = "/upload"; + var taxUpload = JsonConvert.SerializeObject(taxUploadObject); + Log.Verbose($"{taxPath}: {taxUpload}"); - var historyUpload = JsonConvert.SerializeObject(taxRatesRequest); - Log.Verbose(historyUpload); - client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", historyUpload); + client.PostAsync($"{ApiBase}{taxPath}/{ApiKey}", new StringContent(taxUpload, Encoding.UTF8, "application/json")).GetAwaiter().GetResult(); + + // ==================================================================================== Log.Verbose("Universalis tax upload completed."); } /// + /// + /// It may seem backwards that an upload only performs a delete request, however this is not trying + /// to track the available listings, that is done via the listings packet. All this does is remove + /// a listing, or delete it, when a purchase has been made. + /// public void UploadPurchase(MarketBoardPurchaseHandler purchaseHandler) { - using var client = new WebClient(); - client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); - client.Headers.Add(HttpRequestHeader.Authorization, ApiKey); + using var client = new HttpClient(); + + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(ApiKey); var itemId = purchaseHandler.CatalogId; var worldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0; - var purchaseRequest = new UniversalisItemListingDeleteRequest + // ==================================================================================== + + var deleteListingObject = new UniversalisItemListingDeleteRequest { PricePerUnit = purchaseHandler.PricePerUnit, Quantity = purchaseHandler.ItemQuantity, @@ -161,11 +177,13 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders UploaderId = this.dalamud.ClientState.LocalContentId.ToString(), }; - var requestPath = ApiBase + $"/api/{worldId}/{itemId}/delete"; - var purchaseUpload = JsonConvert.SerializeObject(purchaseRequest); - Log.Verbose($"Making request to {requestPath}"); - Log.Verbose(purchaseUpload); - client.UploadString(requestPath, "POST", purchaseUpload); + var deletePath = $"/api/{worldId}/{itemId}/delete"; + var deleteListing = JsonConvert.SerializeObject(deleteListingObject); + Log.Verbose($"{deletePath}: {deleteListing}"); + + client.PostAsync($"{ApiBase}{deletePath}", new StringContent(deleteListing, Encoding.UTF8, "application/json")).GetAwaiter().GetResult(); + + // ==================================================================================== Log.Verbose("Universalis purchase upload completed."); } diff --git a/Dalamud/Game/Network/NetworkHandlers.cs b/Dalamud/Game/Network/Internal/NetworkHandlers.cs similarity index 92% rename from Dalamud/Game/Network/NetworkHandlers.cs rename to Dalamud/Game/Network/Internal/NetworkHandlers.cs index 0b7aa7694..bf20122b0 100644 --- a/Dalamud/Game/Network/NetworkHandlers.cs +++ b/Dalamud/Game/Network/Internal/NetworkHandlers.cs @@ -5,14 +5,13 @@ using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; -using Dalamud.Game.Internal.Network; -using Dalamud.Game.Network.MarketBoardUploaders; +using Dalamud.Game.Network.Internal.MarketBoardUploaders; +using Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis; using Dalamud.Game.Network.Structures; -using Dalamud.Game.Network.Universalis.MarketBoardUploaders; using Lumina.Excel.GeneratedSheets; using Serilog; -namespace Dalamud.Game.Network +namespace Dalamud.Game.Network.Internal { /// /// This class handles network notifications and uploading market board data. @@ -141,7 +140,7 @@ namespace Dalamud.Game.Network var request = this.marketBoardRequests.LastOrDefault(r => r.CatalogId == listing.ItemListings[0].CatalogId && !r.IsDone); - if (request == null) + if (request == default) { Log.Error($"Market Board data arrived without a corresponding request: item#{listing.ItemListings[0].CatalogId}"); return; @@ -207,17 +206,15 @@ namespace Dalamud.Game.Network var request = this.marketBoardRequests.LastOrDefault(r => r.CatalogId == listing.CatalogId); - if (request == null) + if (request == default) { - Log.Error( - $"Market Board data arrived without a corresponding request: item#{listing.CatalogId}"); + Log.Error($"Market Board data arrived without a corresponding request: item#{listing.CatalogId}"); return; } if (request.ListingsRequestId != -1) { - Log.Error( - $"Market Board data history sequence break: {request.ListingsRequestId}, {request.Listings.Count}"); + Log.Error($"Market Board data history sequence break: {request.ListingsRequestId}, {request.Listings.Count}"); return; } @@ -243,6 +240,7 @@ namespace Dalamud.Game.Network if (opCode == this.dalamud.Data.ServerOpCodes["MarketTaxRates"]) { var category = (uint)Marshal.ReadInt32(dataPtr); + // Result dialog packet does not contain market tax rates if (category != 720905) { @@ -279,9 +277,9 @@ namespace Dalamud.Game.Network // Transaction succeeded if (purchase.ItemQuantity == this.marketBoardPurchaseHandler.ItemQuantity && (purchase.CatalogId == this.marketBoardPurchaseHandler.CatalogId - || purchase.CatalogId == this.marketBoardPurchaseHandler.CatalogId + 1000000)) + || purchase.CatalogId == this.marketBoardPurchaseHandler.CatalogId + 1_000_000)) { // HQ - Log.Information("Bought " + purchase.ItemQuantity + "x " + this.marketBoardPurchaseHandler.CatalogId + " for " + (this.marketBoardPurchaseHandler.PricePerUnit * purchase.ItemQuantity) + " gils, listing id is " + this.marketBoardPurchaseHandler.ListingId); + Log.Verbose($"Bought {purchase.ItemQuantity}x {this.marketBoardPurchaseHandler.CatalogId} for {this.marketBoardPurchaseHandler.PricePerUnit * purchase.ItemQuantity} gils, listing id is {this.marketBoardPurchaseHandler.ListingId}"); var handler = this.marketBoardPurchaseHandler; // Capture the object so that we don't pass in a null one when the task starts. Task.Run(() => this.uploader.UploadPurchase(handler)); } diff --git a/Dalamud/Game/Network/MarketBoardItemRequest.cs b/Dalamud/Game/Network/MarketBoardItemRequest.cs deleted file mode 100644 index df08ce09e..000000000 --- a/Dalamud/Game/Network/MarketBoardItemRequest.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; - -using Dalamud.Game.Network.Structures; - -namespace Dalamud.Game.Network -{ - internal class MarketBoardItemRequest - { - public uint CatalogId { get; set; } - - public byte AmountToArrive { get; set; } - - public List Listings { get; set; } - - public List History { get; set; } - - public int ListingsRequestId { get; set; } = -1; - - public bool IsDone => this.Listings.Count == this.AmountToArrive && this.History.Count != 0; - } -} diff --git a/Dalamud/Game/Internal/Network/NetworkMessageDirection.cs b/Dalamud/Game/Network/NetworkMessageDirection.cs similarity index 89% rename from Dalamud/Game/Internal/Network/NetworkMessageDirection.cs rename to Dalamud/Game/Network/NetworkMessageDirection.cs index 22de9cb54..79d9d2df2 100644 --- a/Dalamud/Game/Internal/Network/NetworkMessageDirection.cs +++ b/Dalamud/Game/Network/NetworkMessageDirection.cs @@ -1,4 +1,4 @@ -namespace Dalamud.Game.Internal.Network +namespace Dalamud.Game.Network { /// /// This represents the direction of a network message. diff --git a/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs b/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs index 2ac0f8886..ad19f48c5 100644 --- a/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs +++ b/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs @@ -5,14 +5,43 @@ using System.Text; namespace Dalamud.Game.Network.Structures { + /// + /// This class represents the current market board offerings from a game network packet. + /// public class MarketBoardCurrentOfferings { - public List ItemListings; + /// + /// Initializes a new instance of the class. + /// + internal MarketBoardCurrentOfferings() + { + } - public int ListingIndexEnd; - public int ListingIndexStart; - public int RequestId; + /// + /// Gets the list of individual item listings. + /// + public List ItemListings { get; internal set; } + /// + /// Gets the listing end index. + /// + public int ListingIndexEnd { get; internal set; } + + /// + /// Gets the listing start index. + /// + public int ListingIndexStart { get; internal set; } + + /// + /// Gets the request ID. + /// + public int RequestId { get; internal set; } + + /// + /// Read a object from memory. + /// + /// Address to read. + /// A new object. public static unsafe MarketBoardCurrentOfferings Read(IntPtr dataPtr) { var output = new MarketBoardCurrentOfferings(); @@ -80,32 +109,124 @@ namespace Dalamud.Game.Network.Structures return output; } + /// + /// This class represents the current market board offering of a single item from the network packet. + /// public class MarketBoardItemListing { - public ulong ArtisanId; - public uint CatalogId; - public bool IsHq; - public uint ItemQuantity; - public DateTime LastReviewTime; - public ulong ListingId; + /// + /// Initializes a new instance of the class. + /// + internal MarketBoardItemListing() + { + } - public List Materia; - public int MateriaCount; - public bool OnMannequin; - public string PlayerName; - public uint PricePerUnit; - public int RetainerCityId; - public ulong RetainerId; + /// + /// Gets the artisan ID. + /// + public ulong ArtisanId { get; internal set; } - public string RetainerName; - public ulong RetainerOwnerId; - public int StainId; - public uint TotalTax; + /// + /// Gets the catalog ID. + /// + public uint CatalogId { get; internal set; } + /// + /// Gets a value indicating whether the item is HQ. + /// + public bool IsHq { get; internal set; } + + /// + /// Gets the item quantity. + /// + public uint ItemQuantity { get; internal set; } + + /// + /// Gets the time this offering was last reviewed. + /// + public DateTime LastReviewTime { get; internal set; } + + /// + /// Gets the listing ID. + /// + public ulong ListingId { get; internal set; } + + /// + /// Gets the list of materia attached to this item. + /// + public List Materia { get; internal set; } + + /// + /// Gets the amount of attached materia. + /// + public int MateriaCount { get; internal set; } + + /// + /// Gets a value indicating whether this item is on a mannequin. + /// + public bool OnMannequin { get; internal set; } + + /// + /// Gets the player name. + /// + public string PlayerName { get; internal set; } + + /// + /// Gets the price per unit. + /// + public uint PricePerUnit { get; internal set; } + + /// + /// Gets the city ID of the retainer selling the item. + /// + public int RetainerCityId { get; internal set; } + + /// + /// Gets the ID of the retainer selling the item. + /// + public ulong RetainerId { get; internal set; } + + /// + /// Gets the name of the retainer. + /// + public string RetainerName { get; internal set; } + + /// + /// Gets the ID of the retainer's owner. + /// + public ulong RetainerOwnerId { get; internal set; } + + /// + /// Gets the stain or applied dye of the item. + /// + public int StainId { get; internal set; } + + /// + /// Gets the total tax. + /// + public uint TotalTax { get; internal set; } + + /// + /// This represents the materia slotted to an . + /// public class ItemMateria { - public int Index; - public int MateriaId; + /// + /// Initializes a new instance of the class. + /// + internal ItemMateria() + { + } + + /// + /// Gets the materia index. + /// + public int Index { get; internal set; } + + /// + /// Gets the materia ID. + /// + public int MateriaId { get; internal set; } } } } diff --git a/Dalamud/Game/Network/Structures/MarketBoardHistory.cs b/Dalamud/Game/Network/Structures/MarketBoardHistory.cs index b2f3e3ad0..c73529da3 100644 --- a/Dalamud/Game/Network/Structures/MarketBoardHistory.cs +++ b/Dalamud/Game/Network/Structures/MarketBoardHistory.cs @@ -5,13 +5,38 @@ using System.Text; namespace Dalamud.Game.Network.Structures { + /// + /// This class represents the market board history from a game network packet. + /// public class MarketBoardHistory { - public uint CatalogId; - public uint CatalogId2; + /// + /// Initializes a new instance of the class. + /// + internal MarketBoardHistory() + { + } - public List HistoryListings; + /// + /// Gets the catalog ID. + /// + public uint CatalogId { get; internal set; } + /// + /// Gets the second catalog ID. + /// + public uint CatalogId2 { get; internal set; } + + /// + /// Gets the list of individual item history listings. + /// + public List HistoryListings { get; internal set; } + + /// + /// Read a object from memory. + /// + /// Address to read. + /// A new object. public static unsafe MarketBoardHistory Read(IntPtr dataPtr) { var output = new MarketBoardHistory(); @@ -47,16 +72,52 @@ namespace Dalamud.Game.Network.Structures return output; } + /// + /// This class represents the market board history of a single item from the network packet. + /// public class MarketBoardHistoryListing { - public string BuyerName; + /// + /// Initializes a new instance of the class. + /// + internal MarketBoardHistoryListing() + { + } - public uint CatalogId; - public bool IsHq; - public bool OnMannequin; - public DateTime PurchaseTime; - public uint Quantity; - public uint SalePrice; + /// + /// Gets the buyer's name. + /// + public string BuyerName { get; internal set; } + + /// + /// Gets the catalog ID. + /// + public uint CatalogId { get; internal set; } + + /// + /// Gets a value indicating whether the item is HQ. + /// + public bool IsHq { get; internal set; } + + /// + /// Gets a value indicating whether the item is on a mannequin. + /// + public bool OnMannequin { get; internal set; } + + /// + /// Gets the time of purchase. + /// + public DateTime PurchaseTime { get; internal set; } + + /// + /// Gets the quantity. + /// + public uint Quantity { get; internal set; } + + /// + /// Gets the sale price. + /// + public uint SalePrice { get; internal set; } } } } diff --git a/Dalamud/Game/Network/Structures/MarketTaxRates.cs b/Dalamud/Game/Network/Structures/MarketTaxRates.cs index 4a79c0242..5b27b9415 100644 --- a/Dalamud/Game/Network/Structures/MarketTaxRates.cs +++ b/Dalamud/Game/Network/Structures/MarketTaxRates.cs @@ -3,15 +3,53 @@ using System.IO; namespace Dalamud.Game.Network.Structures { + /// + /// This class represents the market tax rates from a game network packet. + /// public class MarketTaxRates { - public uint LimsaLominsaTax; - public uint GridaniaTax; - public uint UldahTax; - public uint IshgardTax; - public uint KuganeTax; - public uint CrystariumTax; + /// + /// Initializes a new instance of the class. + /// + internal MarketTaxRates() + { + } + /// + /// Gets the tax rate in Limsa Lominsa. + /// + public uint LimsaLominsaTax { get; internal set; } + + /// + /// Gets the tax rate in Gridania. + /// + public uint GridaniaTax { get; internal set; } + + /// + /// Gets the tax rate in Ul'dah. + /// + public uint UldahTax { get; internal set; } + + /// + /// Gets the tax rate in Ishgard. + /// + public uint IshgardTax { get; internal set; } + + /// + /// Gets the tax rate in Kugane. + /// + public uint KuganeTax { get; internal set; } + + /// + /// Gets the tax rate in the Crystarium. + /// + public uint CrystariumTax { get; internal set; } + + /// + /// Read a object from memory. + /// + /// Address to read. + /// A new object. public static unsafe MarketTaxRates Read(IntPtr dataPtr) { var output = new MarketTaxRates();