public StoreOffer ReadLegacyStoreOffer(Internal.CommunicationStream message) { bool supportsHighlighting = OpenTibiaUnity.GameManager.GetFeature(GameFeature.GameIngameStoreHighlights); uint offerId = message.ReadUnsignedInt(); string offerName = message.ReadString(); string offerDescription = message.ReadString(); var storeOffer = new StoreOffer(offerName, offerDescription); uint price = message.ReadUnsignedInt(); var highlightState = message.ReadEnum <StoreHighlightState>(); uint saleValidUntil = 0, saleBasePrice = 0; if (highlightState == StoreHighlightState.Sale && supportsHighlighting && OpenTibiaUnity.GameManager.ClientVersion >= 1097) { saleValidUntil = message.ReadUnsignedInt(); saleBasePrice = message.ReadUnsignedInt(); } var disabledState = message.ReadEnum <StoreOfferDisableState>(); string disabledReason = string.Empty; if (supportsHighlighting && disabledState == StoreOfferDisableState.Disabled) { disabledReason = message.ReadString(); } var quantityConfiguration = new StoreOfferQuantityConfiguration(offerId, price, 1, highlightState, false); quantityConfiguration.DisabledState = disabledState; if (disabledState == StoreOfferDisableState.Disabled) { quantityConfiguration.DisabledReasons.Add(disabledReason); } if (highlightState == StoreHighlightState.Sale && supportsHighlighting && OpenTibiaUnity.GameManager.ClientVersion >= 1097) { quantityConfiguration.SetSaleParameters(saleValidUntil, saleBasePrice); } storeOffer.AddQuantityConfiguration(quantityConfiguration); int iconCount = message.ReadUnsignedByte(); for (int i = 0; i < iconCount; i++) { storeOffer.AddVisualisation(new Store.Visualisations.StoreIconVisualisation(message.ReadString())); } int productCount = message.ReadUnsignedShort(); for (int i = 0; i < productCount; i++) { storeOffer.AddProduct(ReadStoreProduct(message)); } return(storeOffer); }
public StoreOfferQuantityConfiguration ReadStoreOfferQuantityConfiguration(Internal.CommunicationStream message) { uint offerId = message.ReadUnsignedInt(); ushort amount = message.ReadUnsignedShort(); uint price = message.ReadUnsignedInt(); bool useTransferableCoins = message.ReadBoolean(); bool disabled = message.ReadBoolean(); var disabledReasons = new List <string>(); if (disabled) { int errorCount = message.ReadUnsignedByte(); for (int i = 0; i < errorCount; i++) { disabledReasons.Add(message.ReadString()); } } var highlightState = message.ReadEnum <StoreHighlightState>(); if (highlightState == StoreHighlightState.Sale) { uint saleValidUntilTimestamp = message.ReadUnsignedInt(); uint basePrice = message.ReadUnsignedInt(); } var quantityConfiguration = new StoreOfferQuantityConfiguration(offerId, price, amount, highlightState, useTransferableCoins); quantityConfiguration.DisabledReasons.AddRange(disabledReasons); if (disabled) { quantityConfiguration.DisabledState = StoreOfferDisableState.Disabled; } return(quantityConfiguration); }