SHOW:
|
|
- or go back to the newest paste.
| 1 | -- Internal Variables -- | |
| 2 | local buffer = {}
| |
| 3 | local oldbuffer = {}
| |
| 4 | local g = peripheral.find("arController")
| |
| 5 | ||
| 6 | -- Internal Functions -- | |
| 7 | local compareBuffers = function() | |
| 8 | return (textutils.serialise(oldbuffer) == textutils.serialise(buffer)) | |
| 9 | end | |
| 10 | ||
| 11 | local renderObject = function(obj) | |
| 12 | return g[obj.func](table.unpack(obj.args)) | |
| 13 | end | |
| 14 | ||
| 15 | local addToBuffer = function(func,args) | |
| 16 | table.insert(buffer,{["func"]=func,["args"]=args})
| |
| 17 | end | |
| 18 | ||
| 19 | -- External Functions -- | |
| 20 | function render() | |
| 21 | if (compareBuffers()) then | |
| 22 | return false,"identical buffers" | |
| 23 | end | |
| 24 | g.clear() | |
| 25 | for k,v in ipairs(buffer) do | |
| 26 | renderObject(v) | |
| 27 | end | |
| 28 | oldbuffer = buffer | |
| 29 | clear() | |
| 30 | return true,nil | |
| 31 | end | |
| 32 | ||
| 33 | function clear() | |
| 34 | buffer = {}
| |
| 35 | end | |
| 36 | ||
| 37 | -- Text Functions -- | |
| 38 | text = {}
| |
| 39 | text.width = function(str) | |
| 40 | if type(str) == type("string") then
| |
| 41 | return #string*5.25 | |
| 42 | end | |
| 43 | ||
| 44 | local longest = "" | |
| 45 | for k,v in ipairs(str) do | |
| 46 | if (#v > #longest) then | |
| 47 | longest = v | |
| 48 | end | |
| 49 | end | |
| 50 | return #longest*5.25 | |
| 51 | end | |
| 52 | text.height = function(strArr) | |
| 53 | if type(strArr) == type("string") then
| |
| 54 | return 8 | |
| 55 | end | |
| 56 | return #strArr*8 | |
| 57 | end | |
| 58 | ||
| 59 | text.center = function(str,x,y,color) | |
| 60 | addToBuffer("drawCenteredString",{str,x,y,color})
| |
| 61 | end | |
| 62 | text.draw = function(str,x,y,color) | |
| 63 | addToBuffer("drawString",{str,x,y,color})
| |
| 64 | end | |
| 65 | text.left,text.write = text.draw | |
| 66 | text.right = function(str,x,y,color) | |
| 67 | addToBuffer("drawRightboundString",{str,x,y,color})
| |
| 68 | end | |
| 69 | text.formatArrayForMultiline = function(strArr) | |
| 70 | if type(strArr) == type("string") then
| |
| 71 | return {["string"]=strArr,["side"]="left"}
| |
| 72 | end | |
| 73 | local t = {}
| |
| 74 | for k,v in ipairs(strArr) do | |
| 75 | if type(v) == type("string") then
| |
| 76 | table.insert(t,{["string"]=v,["side"]="left"})
| |
| 77 | elseif v.side ~= "left" and v.side ~= "text" and v.side ~= "write" and v.side ~= "right" and v.side ~= "center" then | |
| 78 | table.insert(t,{["string"]=v.string,["side"]="left"})
| |
| 79 | else | |
| 80 | table.insert(t,v) | |
| 81 | end | |
| 82 | end | |
| 83 | return t | |
| 84 | end | |
| 85 | text.multiline = function(strArr,x,y,color) | |
| 86 | strArr = text.formatArrayForMultiline(strArr) | |
| 87 | for k,v in ipairs(strArr) do | |
| 88 | text[v.side](v.string,x,y+((k-1)*8),color) | |
| 89 | end | |
| 90 | end | |
| 91 | ||
| 92 | -- Shape Functions -- | |
| 93 | shapes = {}
| |
| 94 | shapes.lines = {}
| |
| 95 | shapes.fill = {}
| |
| 96 | shapes.stroke = {}
| |
| 97 | ||
| 98 | shapes.lines.h = function(x1,x2,y,color) | |
| 99 | addToBuffer("horizontalLine",{x1,x2,y,color})
| |
| 100 | end | |
| 101 | shapes.lines.v = function(x,y1,y2,color) | |
| 102 | addToBuffer("verticalLine",{x,y1,y2,color})
| |
| 103 | end | |
| 104 | ||
| 105 | shapes.fill.circle = function(x,y,radius,color) | |
| 106 | addToBuffer("fillCircle",{x,y,radius,color})
| |
| 107 | end | |
| 108 | shapes.fill.box = function(x1,y1,x2,y2,color) | |
| 109 | addToBuffer("fill",{x1,y1,x2,y2,color})
| |
| 110 | end | |
| 111 | shapes.fill.gradient = function(x1,y1,x2,y2,colorFrom,colorTo) | |
| 112 | addToBuffer("fillGradient",{x1,y1,x2,y2,colorFrom,colorTo})
| |
| 113 | end | |
| 114 | ||
| 115 | shapes.stroke.circle = function(x,y,radius,color) | |
| 116 | addToBuffer("drawCircle",{x,y,radius,color})
| |
| 117 | end | |
| 118 | shapes.stroke.box = function(x1,y1,x2,y2,color) | |
| 119 | shapes.lines.h(x1,x2,y1,color) | |
| 120 | shapes.lines.h(x1,x2,y2,color) | |
| 121 | shapes.lines.v(x1,y1,y2,color) | |
| 122 | shapes.lines.v(x2,y1,y2,color) | |
| 123 | end | |
| 124 | ||
| 125 | -- Image Functions -- | |
| 126 | images = {}
| |
| 127 | images.item = function(itemId,x,y) | |
| 128 | addToBuffer("drawItemIcon",{itemId,x,y})
| |
| 129 | end | |
| 130 | ||
| 131 | -- Don't change this please <3 -- | |
| 132 | version = "1.0-a" |