local ourname = "ac.kst" local stock=require"shop2.stock" local function printseq(m) return function(q) for _,v in ipairs(q) do 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 mon = peripheral.find"monitor" local si = stock.take_stock() -- Stock Price Adr. Name -- xxxx xxxkst dmn Diamond -- 123456789012345678901234567890123456789012345678901234567 -- 0 1 2 3 4 5 -- took stock before clear, to avoid flickering mon.clear() mon.setTextScale(1) local w,h = mon.getSize() printseq(mon) { {1,1}, colors.orange, centre("BEE MART",w), {1,2}, colors.lightGray, "Stock Price Adr. Name", } local function fmt_row(y, idesc, amt) colour = idesc.colour or colors.white printseq(mon) { {1,y}, colors.white, pad(amt,5), {8,y}, colors.yellow, pad(idesc.price,3), colors.lightGray, "kst", {16,y}, colour, idesc.adr, {22,y}, colour, idesc.hname, } end for ix,idesc in ipairs(items) do local amt = stock.amt_of(si,idesc) fmt_row(ix+2, idesc,amt) end printseq(mon) { {1,h}, colors.blue, centre("/pay @"..ourname.." ",w) } end local items = require"shop2.items" local function run() while true do disp_shopscreen(items) os.sleep(2) end end return {run=run}