diff --git a/modules/game_market/market.lua b/modules/game_market/market.lua index 845d2b0c..95f36ad5 100644 --- a/modules/game_market/market.lua +++ b/modules/game_market/market.lua @@ -345,7 +345,6 @@ local function updateBalance(balance) if balance < 0 then balance = 0 end information.balance = balance - balanceLabel = marketWindow:recursiveGetChildById('balanceLabel') balanceLabel:setText('Balance: '..balance..'gp') balanceLabel:resizeToText() end @@ -406,13 +405,15 @@ local function openAmountWindow(callback, type, actionText) amountWindow:lock() local spinbox = amountWindow:getChildById('amountSpinBox') - local scrollbar = amountWindow:getChildById('amountScrollBar') spinbox:setMaximum(selectedOffer[type]:getAmount()) spinbox:setMinimum(1) spinbox:setValue(1) + + local scrollbar = amountWindow:getChildById('amountScrollBar') scrollbar:setMaximum(selectedOffer[type]:getAmount()) scrollbar:setMinimum(1) scrollbar:setValue(1) + scrollbar.onValueChange = function(self, value) spinbox:setValue(value) end spinbox.onValueChange = function(self, value) scrollbar:setValue(value) end @@ -473,7 +474,11 @@ local function onSelectBuyOffer(table, selectedRow, previousSelectedRow) for _, offer in pairs(marketOffers[MarketAction.Buy]) do if offer:isEqual(selectedRow.ref) then selectedOffer[MarketAction.Sell] = offer - sellButton:setEnabled(true) + if Market.depotContains(offer:getItem():getId()) >= offer:getAmount() then + sellButton:setEnabled(true) + else + sellButton:setEnabled(false) + end end end end @@ -619,6 +624,8 @@ local function initInterface() offerHistoryPanel = g_ui.loadUI('ui/myoffers/offerhistory.otui') offersTabBar:addTab(tr('Offer History'), offerHistoryPanel) + balanceLabel = marketWindow:getChildById('balanceLabel') + -- setup offers buyButton = itemOffersPanel:getChildById('buyButton') buyButton.onClick = function() openAmountWindow(Market.buyMarketOffer, MarketAction.Buy, 'Buy') end @@ -715,6 +722,8 @@ end function Market.reset() balanceLabel:setColor('#bbbbbb') + marketWindow:unlock() + marketWindow:hide() categoryList:setCurrentOption(getMarketCategoryName(MarketCategory.First)) Market.clearSelectedItem() clearFilters() @@ -938,20 +947,24 @@ function Market.createNewOffer() MarketProtocol.sendMarketCreateOffer(type, spriteId, amount, piecePrice, anonymous) if type == MarketAction.Sell then - updateDepotItemCount(spriteId, amount) -- remove count from depot tmp + --[[ + This is require due to bot protected protocol (cannot update browse item without user input) + normal way is to use the new retrieved depot items in onMarketEnter and refresh the items widget. + ]] + updateDepotItemCount(spriteId, amount) Market.refreshItemsWidget(spriteId) end Market.resetCreateOffer() end function Market.buyMarketOffer(amount, timestamp, counter) - if timestamp > 0 and counter > 0 and amount > 0 then + if timestamp > 0 and amount > 0 then MarketProtocol.sendMarketAcceptOffer(timestamp, counter, amount) end end function Market.sellMarketOffer(amount, timestamp, counter) - if timestamp > 0 and counter > 0 and amount > 0 then + if timestamp > 0 and amount > 0 then MarketProtocol.sendMarketAcceptOffer(timestamp, counter, amount) end end @@ -976,12 +989,6 @@ function Market.onMarketEnter(depotItems, offers, balance, vocation) Market.loadDepotItems(depotItems) if table.empty(currentItems) then Market.loadMarketItems(MarketCategory.First) - --[[else - -- TODO: Create function to handle this on showing market (seperate from parsing!) - if Market.isItemSelected() then - local spriteId = selectedItem.item.ptr:getId() - Market.refreshItemsWidget(spriteId) - end]] end -- build offer table header @@ -999,6 +1006,7 @@ function Market.onMarketEnter(depotItems, offers, balance, vocation) end function Market.onMarketLeave() + marketWindow:unlock() marketWindow:hide() end diff --git a/modules/game_market/marketprotocol.lua b/modules/game_market/marketprotocol.lua index da87c973..a9cf413c 100644 --- a/modules/game_market/marketprotocol.lua +++ b/modules/game_market/marketprotocol.lua @@ -205,11 +205,11 @@ function MarketProtocol.sendMarketCreateOffer(type, spriteId, amount, price, ano end end -function MarketProtocol.sendMarketCancelOffer(counter) +function MarketProtocol.sendMarketCancelOffer(timestamp, counter) if g_game.getFeature(GamePlayerMarket) then local msg = OutputMessage.create() msg:addU8(ClientOpcodes.ClientMarketCancel) - msg:addU32(os.time()) + msg:addU32(timestamp) msg:addU16(counter) send(msg) else @@ -224,7 +224,6 @@ function MarketProtocol.sendMarketAcceptOffer(timestamp, counter, amount) msg:addU32(timestamp) msg:addU16(counter) msg:addU16(amount) - print('sent') send(msg) else g_logger.error('MarketProtocol.sendMarketAcceptOffer does not support the current protocol.') diff --git a/modules/game_market/ui/marketoffers/search.otui b/modules/game_market/ui/marketoffers/search.otui index 8b2ffa37..11da49ae 100644 --- a/modules/game_market/ui/marketoffers/search.otui +++ b/modules/game_market/ui/marketoffers/search.otui @@ -2,8 +2,11 @@ Panel background-color: #22283399 margin: 1 - Label - !text: tr('Search') + TextEdit + id: searchEdit anchors.top: parent.top anchors.left: parent.left - margin-left: 10 + anchors.right: parent.right + margin-top: 10 + margin-left: 6 + margin-right: 6