Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require('component')
- local sides = require('sides')
- local geolyzer = component.geolyzer
- local gpu = component.gpu
- local px = require('unicode').char(0x2580)
- local side, size, min_hardness, max_hardness = 0, 8, 0, 50
- local scan = {}
- local colors = {
- 0XFFF,
- 0X1FFF,
- 0X2FFF,
- 0X3FFF,
- 0X4FFF,
- 0X5FFF,
- 0X6FFF,
- 0X7FFF,
- 0X8FFF,
- 0X9FFF,
- 0XAFFF,
- 0XBFFF,
- 0XCFFF,
- 0XDFFF,
- 0XEFFF,
- 0XFFFF,
- 0XFFF0,
- 0XFFE0,
- 0XFFD0,
- 0XFFC0,
- 0XFFB0,
- 0XFFA0,
- 0XFF90,
- 0XFF80,
- 0XFF70,
- 0XFF60,
- 0XFF50,
- 0XFF40,
- 0XFF30,
- 0XFF20,
- 0XFF10,
- 0XFF00,
- 0XFFF00,
- 0X1FFF00,
- 0X2FFF00,
- 0X3FFF00,
- 0X4FFF00,
- 0X5FFF00,
- 0X6FFF00,
- 0X7FFF00,
- 0X8FFF00,
- 0X9FFF00,
- 0XAFFF00,
- 0XBFFF00,
- 0XCFFF00,
- 0XDFFF00,
- 0XEFFF00,
- 0XFFFF00,
- 0XFFF000,
- 0XFFE000,
- 0XFFD000,
- 0XFFC000,
- 0XFFB000,
- 0XFFA000,
- 0XFF9000,
- 0XFF8000,
- 0XFF7000,
- 0XFF6000,
- 0XFF5000,
- 0XFF4000,
- 0XFF3000,
- 0XFF2000,
- 0XFF1000,
- 0XFF0000
- }
- local tw = {{32, 1, -1}, {1, 32, 1}}
- local ob = {{-1, 1, 1}, {1, -1, -1}}
- local function get(side)
- local n, e1, e2, f, t, s, index, test = 1, 1, 1
- if side == 1 then
- e2, n = 2, 2
- elseif side == 0 or side == 4 then
- e1, e2 = 2, 2
- elseif side == 3 then
- e1, e2, n = 2, 2, 2
- elseif side == 2 then
- e1 = 2
- elseif side == 5 then
- e1, n = 2, 2
- end
- f, t, s = table.unpack(tw[n])
- for z = size*ob[e1][1], size*ob[e1][2], ob[e1][3] do
- for x = size*ob[e2][1], size*ob[e2][2], ob[e2][3] do
- if side == 0 then
- test = geolyzer.scan(x, z, -32, 1, 1, 32)
- elseif side == 1 then
- test = geolyzer.scan(x, z, 1, 1, 1, 32)
- elseif side == 2 then
- test = geolyzer.scan(x, 1, z, 1, -32, 1)
- elseif side == 3 then
- test = geolyzer.scan(x, 1, z, 1, 32, 1)
- elseif side == 4 then
- test = geolyzer.scan(1, x, z, -32, 1, 1)
- elseif side == 5 then
- test = geolyzer.scan(1, x, z, 32, 1, 1)
- end
- local a
- for i = f, t, s do
- if test[i] > min_hardness and test[i] < max_hardness then
- if side == 1 or side == 3 or side == 5 then
- index = (32-i)*2
- else
- index = i*2
- end
- table.insert(scan, colors[index])
- a = true
- break
- end
- end
- if not a then
- table.insert(scan, 0)
- end
- end
- end
- end
- local function draw()
- local x, y = 1, 1
- for i = 1, #scan do
- gpu.setForeground(scan[i])
- if i+1+size*2 <= #scan then
- gpu.setBackground(scan[i+1+size*2])
- end
- gpu.set(x, (y+(y%2))/2, px)
- if x-1 == size*2 then
- x, y = 1, y+1
- else
- x = x+1
- end
- end
- end
- local args = {...}
- if args[1] then
- side = sides[args[1]:lower()]
- end
- if args[2] then
- size = tonumber(args[2])
- end
- gpu.setResolution(size*2+1, size+1)
- get(side)
- draw()
- os.sleep(10)
- gpu.setForeground(0xffffff)
- gpu.setBackground(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement