summaryrefslogtreecommitdiff
path: root/shop2/disp.lua
blob: 5260cdc674edc638c90a1800b005d812cd423286 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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()