Some performance fixes, added UITable widget for easy tables (needs more work still), Worked on Market order displaying.

master
BeniS 12 years ago
parent 3461761739
commit 9c8134c8a6

@ -28,7 +28,8 @@ local skin = {
'splitters.otui',
'miniwindow.otui',
'items.otui',
'creatures.otui'
'creatures.otui',
'tables.otui'
},
particles = {

@ -0,0 +1,9 @@
Table < UITable
layout: verticalBox
TableRow < UIScrollArea
layout: horizontalBox
height: 10
TableColumn < UIScrollArea
width: 30

@ -0,0 +1,86 @@
-- @docclass
UITable = extends(UIScrollArea)
function UITable.create()
local table = UITable.internalCreate()
table.rows = {}
table.rows.columns = {}
table.rowStyle = {}
table.columStyle = {}
return table
end
function UITable:destroy()
for k,row in pairs(self.rows) do
row.onClick = nil
end
self.rows = {}
end
function UITable:onStyleApply(styleName, styleNode)
UIScrollArea.onStyleApply(self, styleName, styleNode)
for name, value in pairs(styleNode) do
if name == 'column-style' then
addEvent(function()
self:setRowStyle(self:getParent():getChildById(value))
end)
elseif name == 'row-style' then
addEvent(function()
self:setRowStyle(self:getParent():getChildById(value))
end)
end
end
end
function UITable:addRow(columns, rowStyle, columStyle)
local row = g_ui.createWidget(rowStyle, self)
row.columns = {}
for k, data in pairs(columns) do
local col = g_ui.createWidget(columStyle, row)
col:setText(data)
table.insert(row.columns, col)
end
row.onClick = function(row) self:selectRow(row) end
table.insert(self.rows, row)
return row
end
function UITable:removeRow(row)
if self.selectedRow == row then
self:selectRow(nil)
end
row.onClick = nil
table.removevalue(self.rows, row)
end
function UITable:selectRow(selectedRow)
if selectedRow == self.selectedRow then return end
local previousSelectedRow = self.selectedRow
self.selectedRow = selectedRow
if previousSelectedRow then
previousSelectedRow:setChecked(false)
end
if selectedRow then
selectedRow:setChecked(true)
end
signalcall(self.onSelectionChange, self, selectedRow, previousSelectedRow)
end
function UITable:setRowStyle(style)
self.rowStyle = style
for k, row in pairs(self.rows) do
row:setStyle(style)
end
end
function UITable:setColumnStyle(style)
self.columStyle = style
for k, col in pairs(self.rows.columns) do
col:setStyle(style)
end
end

@ -62,15 +62,15 @@ local function initMarketItems()
-- populate all market items
marketItems = {}
local types = g_things.findThingTypeByAttr(ThingAttrMarket)
for idx = 1, #types do
local t = types[idx]
for i = 1, #types do
local t = types[i]
local newItem = Item.create(t:getId())
if newItem then
local item = {
ptr = newItem,
marketData = t:getMarketData()
}
table.insert(marketItems, item)
marketItems[#marketItems+1] = item
end
end
end
@ -92,7 +92,8 @@ local function updateItemsWidget()
end
radioItemSet = UIRadioGroup.create()
for _, item in pairs(currentItems) do
for i = 1, #currentItems do
local item = currentItems[i]
local itemBox = g_ui.createWidget('MarketItemBox', itemsPanel)
local itemWidget = itemBox:getChildById('item')
@ -108,7 +109,8 @@ end
local function loadDepotItems(depotItems)
information.depotItems = {}
for _, data in pairs(depotItems) do
for i = 1, #depotItems do
local data = depotItems[i]
local item = Item.create(data[1])
if not item then
break
@ -229,8 +231,9 @@ function Market.loadMarketItems(_category)
end
currentItems = {}
for _, item in pairs(marketItems) do
for i = 1, #marketItems do
-- filter items here
local item = marketItems[i]
local category = item.marketData.category
if category == _category or _category == MarketCategory[0] then
table.insert(currentItems, item)
@ -244,20 +247,32 @@ function Market.updateOffers(offers)
marketOffers[MarketAction.Buy] = {}
marketOffers[MarketAction.Sell] = {}
local buyOfferList = marketWindow:recursiveGetChildById('buyingList')
buyOfferList:destroyChildren()
local buyOfferTable = marketWindow:recursiveGetChildById('buyingTable')
buyOfferTable:destroyChildren()
local sellOfferList = marketWindow:recursiveGetChildById('sellingList')
sellOfferList:destroyChildren()
local sellOfferTable = marketWindow:recursiveGetChildById('sellingTable')
sellOfferTable:destroyChildren()
for k, offer in pairs(offers) do
if offer and offer:getAction() == MarketAction.Buy then
local label = g_ui.createWidget('OfferListLabel', buyOfferList)
label:setText(offer:getPlayer()..' '..offer:getAmount()..' '..(offer:getPrice()*offer:getAmount())..' '..offer:getPrice()..' '..offer:getTimeStamp())
local data = {
offer:getPlayer(),
offer:getAmount(),
offer:getPrice()*offer:getAmount(),
offer:getPrice(),
offer:getTimeStamp()
}
local row = buyOfferTable:addRow(data, 'OfferTableRow', 'OfferTableColumn')
table.insert(marketOffers[MarketAction.Buy], offer)
else
local label = g_ui.createWidget('OfferListLabel', sellOfferList)
label:setText(offer:getPlayer()..' '..offer:getAmount()..' '..(offer:getPrice()*offer:getAmount())..' '..offer:getPrice()..' '..offer:getTimeStamp())
local data = {
offer:getPlayer(),
offer:getAmount(),
offer:getPrice()*offer:getAmount(),
offer:getPrice(),
offer:getTimeStamp()
}
local row = sellOfferTable:addRow(data, 'OfferTableRow', 'OfferTableColumn')
table.insert(marketOffers[MarketAction.Sell], offer)
end
end

@ -1,14 +1,22 @@
OfferListLabel < Label
OfferTableRow < TableRow
font: verdana-11px-monochrome
background-color: alpha
text-offset: 2 0
focusable: true
color: #cccccc
height: 25
$focus:
background-color: #294f6d
color: #ffffff
OfferTableColumn < TableColumn
font: verdana-11px-monochrome
background-color: alpha
text-offset: 2 0
color: #cccccc
width: 80
Panel
background-color: #22283399
margin: 1
@ -28,8 +36,8 @@ Panel
margin-top: 44
margin-left: 6
TextList
id: sellingList
Table
id: sellingTable
anchors.top: prev.bottom
anchors.left: prev.left
anchors.right: parent.right
@ -39,10 +47,13 @@ Panel
margin-right: 6
padding: 1
focusable: false
vertical-scrollbar: sellingListScrollBar
background-color: #222833
border-width: 1
border-color: #191f27
vertical-scrollbar: sellingTableScrollBar
VerticalScrollBar
id: sellingListScrollBar
id: sellingTableScrollBar
anchors.top: prev.top
anchors.bottom: prev.bottom
anchors.right: prev.right
@ -65,8 +76,8 @@ Panel
margin-top: 9
margin-left: 6
TextList
id: buyingList
Table
id: buyingTable
anchors.top: prev.bottom
anchors.left: prev.left
anchors.right: parent.right
@ -76,10 +87,13 @@ Panel
height: 120
padding: 1
focusable: false
vertical-scrollbar: buyingListScrollBar
background-color: #222833
border-width: 1
border-color: #191f27
vertical-scrollbar: buyingTableScrollBar
VerticalScrollBar
id: buyingListScrollBar
id: buyingTableScrollBar
anchors.top: prev.top
anchors.bottom: prev.bottom
anchors.right: prev.right

@ -111,9 +111,10 @@ local function updateOutfit()
end
outfit.addons = 0
for k, addon in pairs(prevAddons) do
if addon and addons[k].widget:isEnabled() then
addons[k].widget:setChecked(true)
for i = 1, #prevAddons do
local addon = prevAddons[i]
if addon and addons[i].widget:isEnabled() then
addons[i].widget:setChecked(true)
end
end
@ -185,7 +186,7 @@ function Outfit.create(creatureOutfit, outfitList, creatureMount, mountList)
[3] = {widget = outfitWindow:getChildById('addon3'), value = 4}
}
for k, addon in pairs(addons) do
for _, addon in pairs(addons) do
addon.widget.onCheckChange = function(self) onAddonCheckChange(self, addon.value) end
end
@ -216,7 +217,7 @@ function Outfit.create(creatureOutfit, outfitList, creatureMount, mountList)
colorBox:setChecked(true)
end
colorBox.onCheckChange = onColorCheckChange
table.insert(colorBoxes, colorBox)
colorBoxes[#colorBoxes+1] = colorBox
end
end
@ -260,10 +261,10 @@ function Outfit.randomize()
outfitWindow:getChildById('detail')
}
for k, section in pairs(outfitTemplate) do
section:setChecked(true)
for i = 1, #outfitTemplate do
outfitTemplate[i]:setChecked(true)
colorBoxes[math.random(1, #colorBoxes)]:setChecked(true)
section:setChecked(false)
outfitTemplate[i]:setChecked(false)
end
outfitTemplate[1]:setChecked(true)
end

Loading…
Cancel
Save