Fixed Market laoding and 'search all' issue.

This commit is contained in:
BeniS 2013-02-20 14:44:06 +13:00
parent 6d456994f4
commit 3b9acab7a1
3 changed files with 31 additions and 27 deletions

View File

@ -67,7 +67,7 @@ MiniWindow
icon: /images/topbuttons/healthinfo icon: /images/topbuttons/healthinfo
id: healthInfoWindow id: healthInfoWindow
!text: tr('Health Info') !text: tr('Health Info')
height: 126 height: 124
@onClose: modules.game_healthinfo.onMiniWindowClose() @onClose: modules.game_healthinfo.onMiniWindowClose()
&save: true &save: true

View File

@ -76,6 +76,8 @@ currentItems = {}
lastCreatedOffer = 0 lastCreatedOffer = 0
fee = 0 fee = 0
loaded = false
local offerTableHeader = { local offerTableHeader = {
{['text'] = 'Player Name', ['width'] = 100}, {['text'] = 'Player Name', ['width'] = 100},
{['text'] = 'Amount', ['width'] = 60}, {['text'] = 'Amount', ['width'] = 60},
@ -126,10 +128,7 @@ local function isItemValid(item, category, searchFilter)
return false return false
end end
if searchFilter then if searchFilter then
local checkString = marketData.name:lower() return marketData.name:lower():find(searchFilter)
if not checkString:find(searchFilter) then
return false
end
end end
return true return true
end end
@ -580,22 +579,30 @@ local function onAmountChange()
end end
local function initMarketItems(category) local function initMarketItems(category)
-- initialize market category for c = MarketCategory.First, MarketCategory.Last do
marketItems[category] = {} marketItems[c] = {}
end
-- populate all market items -- populate all market items
local types = g_things.findThingTypeByAttr(ThingAttrMarket, 0) local types = g_things.findThingTypeByAttr(ThingAttrMarket, 0)
for i = 1, #types do for i = 1, #types do
local t = types[i] local t = types[i]
local newItem = Item.create(t:getId()) local newItem = Item.create(t:getId())
if newItem then if newItem then
local marketData = t:getMarketData() local marketData = t:getMarketData()
if not table.empty(marketData) and marketData.category == category then if not table.empty(marketData) then
if marketData.category == category or category == MarketCategory.All then
-- create new item block
local item = { local item = {
ptr = newItem, ptr = newItem,
marketData = marketData marketData = marketData
} }
marketItems[marketData.category][#marketItems[category]+1] = item
-- add new market item
table.insert(marketItems[marketData.category], item)
end
end end
end end
end end
@ -733,9 +740,6 @@ function init()
marketWindow:hide() marketWindow:hide()
initInterface() -- build interface initInterface() -- build interface
for category = MarketCategory.First, MarketCategory.Last do
initMarketItems(category)
end
end end
function terminate() function terminate()
@ -904,20 +908,15 @@ end
function Market.loadMarketItems(category) function Market.loadMarketItems(category)
if table.empty(marketItems[category]) then
initMarketItems(category)
end
clearItems() clearItems()
-- check search filter -- check search filter
local searchFilter = searchEdit:getText():lower() local searchFilter = searchEdit:getText()
if not searchFilter or searchFilter:len() < 3 then if searchFilter and searchFilter:len() > 2 then
searchFilter = nil if filterButtons[MarketFilters.SearchAll]:isChecked() then
end
local filterSearchAll = filterButtons[MarketFilters.SearchAll]:isChecked()
if filterSearchAll and searchFilter then
category = MarketCategory.All category = MarketCategory.All
end end
end
if category == MarketCategory.All then if category == MarketCategory.All then
-- loop all categories -- loop all categories
@ -1070,6 +1069,11 @@ end
-- protocol callback functions -- protocol callback functions
function Market.onMarketEnter(depotItems, offers, balance, vocation) function Market.onMarketEnter(depotItems, offers, balance, vocation)
if not loaded then
initMarketItems(MarketCategory.All)
loaded = true
end
Market.clearSelectedItem() Market.clearSelectedItem()
updateBalance(balance) updateBalance(balance)

View File

@ -34,7 +34,7 @@ end
function g_game.getSupportedProtocols() function g_game.getSupportedProtocols()
return { return {
810, 853, 854, 860, 861, 862, 870, 810, 811, 840, 842, 850, 853, 854, 860, 861, 862, 870,
910, 940, 944, 953, 954, 960, 961, 910, 940, 944, 953, 954, 960, 961,
963, 970, 971, 973 963, 970, 971, 973
} }