diff options
Diffstat (limited to 'shop2/disp.lua')
-rw-r--r-- | shop2/disp.lua | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/shop2/disp.lua b/shop2/disp.lua new file mode 100644 index 0000000..5260cdc --- /dev/null +++ b/shop2/disp.lua @@ -0,0 +1,80 @@ +local ourname = "ac.kst" + +local function printseq(m) return function(q) + for _,v in ipairs(q) do + print(type(v),v) + if type(v) == "number" then + m.setTextColor(v) + elseif type(v) == "string" then + m.write(v) + elseif type(v) == "table" then + if #v == 2 then + -- position + m.setCursorPos(v[1],v[2]) + else + error("unknown format") + end + end + end +end end + +local function pad(s,n) + s=tostring(s) + local l = #s + local p = string.rep(" ",math.max(0,n-l)) + return p..s +end +local function centre(s,w) + s=tostring(s) + local l = #s + local p = math.floor(math.max(0,w-l)/2) + return string.rep(" ",p)..s +end + +local function disp_shopscreen(items) + -- i don't like how hardcoded all the spacing is in this + -- but i also don't feel like rewriting it yet. + local m = peripheral.wrap"left" + m.clear() + m.setTextScale(0.5) + -- Stock Price Adr. Name + -- xxxx xxxkst dmn Diamond + -- 123456789012345678901234567890123456789012345678901234567 + -- 0 1 2 3 4 5 + + -- local function fmt_row(m,y, stock,price,adr,name, colour) + local function fmt_row(m,y, idesc, + colour = colour or colors.cyan + printseq(m) { + {1,y}, colors.white, pad(stock,5), + {8,y}, colors.yellow, pad(price,3), colors.lightGray, "kst", + {16,y}, colour, adr, + {22,y}, colour, name, + } + end + + + printseq(m) { + {1,1}, colors.orange, "Apiaristics Consortium Store", + {1,2}, colors.lightGray, "Stock Price Adr. Name", + } + + -- sort alphabetically + -- todo: more intuitive sort, once more things are for sale + -- + for ix,i in ipairs() do + fmt_row(m,ix+2,i[6],i[2],i[1],i[4],i[5]) + end + + local w,h = m.getSize() + + printseq(m) { + {1,h-1}, colors.blue, centre("/pay <adr>@ac.kst <amount>",w) + } + + + + +end + +disp_shopscreen() |