Create visum.lua
This commit is contained in:
parent
bec6abd205
commit
5865a7f6b2
1 changed files with 128 additions and 0 deletions
128
src/apis/visum.lua
Normal file
128
src/apis/visum.lua
Normal file
|
@ -0,0 +1,128 @@
|
|||
--[[
|
||||
Visum API by Sertex-Team
|
||||
Graphical User Interface API for ComputerCraft 1.7^
|
||||
]]--
|
||||
|
||||
local aaTypes = {
|
||||
["left"] = true,
|
||||
["center"] = true,
|
||||
["right"] = true,
|
||||
}
|
||||
|
||||
function version()
|
||||
return 1, "Visum Alpha 1"
|
||||
end
|
||||
|
||||
function align(aType, text, slow, y)
|
||||
if not aType or not aaTypes[aType] then
|
||||
error('Use "left", "center" or "right" as align')
|
||||
end
|
||||
if not text then
|
||||
error("Undefined text (a nil value)")
|
||||
end
|
||||
local cx, cy = term.getCursorPos()
|
||||
local w, h = term.getSize()
|
||||
if aType == "left" then
|
||||
if not y then
|
||||
y = cy
|
||||
end
|
||||
term.setCursorPos(1,y)
|
||||
if slow then
|
||||
textutils.slowWrite(text)
|
||||
else
|
||||
term.write(text)
|
||||
end
|
||||
elseif aType == "center" then
|
||||
if not y then
|
||||
y = cy
|
||||
end
|
||||
term.setCursorPos(math.ceil(w/2) - math.ceil(#text/2), y)
|
||||
if slow then
|
||||
textutils.slowWrite(text)
|
||||
else
|
||||
term.write(text)
|
||||
end
|
||||
elseif aType == "right" then
|
||||
if not y then
|
||||
y = cy
|
||||
end
|
||||
term.setCursorPos(1+w - #text, y)
|
||||
if slow then
|
||||
textutils.slowWrite(text)
|
||||
else
|
||||
term.write(text)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function drawPixelInternal( xPos, yPos ) -- Paintutils API - Made to prevent paintutils overwrite
|
||||
term.setCursorPos( xPos, yPos )
|
||||
term.write(" ")
|
||||
end
|
||||
|
||||
function box(startX,startY,endX,endY,nColour) -- Paintutils API - Made to prevent paintutils overwrite
|
||||
if type( startX ) ~= "number" or type( startX ) ~= "number" or
|
||||
type( endX ) ~= "number" or type( endY ) ~= "number" or
|
||||
(nColour ~= nil and type( nColour ) ~= "number") then
|
||||
error( "Expected startX, startY, endX, endY, colour", 2 )
|
||||
end
|
||||
|
||||
startX = math.floor(startX)
|
||||
startY = math.floor(startY)
|
||||
endX = math.floor(endX)
|
||||
endY = math.floor(endY)
|
||||
|
||||
if nColour then
|
||||
term.setBackgroundColor( nColour )
|
||||
end
|
||||
if startX == endX and startY == endY then
|
||||
drawPixelInternal( startX, startY )
|
||||
return
|
||||
end
|
||||
|
||||
local minX = math.min( startX, endX )
|
||||
if minX == startX then
|
||||
minY = startY
|
||||
maxX = endX
|
||||
maxY = endY
|
||||
else
|
||||
minY = endY
|
||||
maxX = startX
|
||||
maxY = startY
|
||||
end
|
||||
|
||||
for x=minX,maxX do
|
||||
for y=minY,maxY do
|
||||
drawPixelInternal( x, y )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function buttons(buList)
|
||||
if type(buList) ~= "table" then
|
||||
error("invalid arg #1 (table expected, got "..tostring(type(buList))..")", 1)
|
||||
end
|
||||
|
||||
for k, v in pairs(buList) do
|
||||
box(buList[k][2],buList[k][3],buList[k][4],buList[k][5],buList[k][6])
|
||||
term.setCursorPos(buList[k][2],buList[k][3])
|
||||
term.setTextColor(buList[k][7])
|
||||
print(buList[k][8])
|
||||
end
|
||||
while true do
|
||||
e,mk,mx,my = os.pullEvent()
|
||||
if e == "mouse_click" or e == "monitor_touch" then
|
||||
for k, v in ipairs(buList) do
|
||||
if (mx >= v[2] and my >= v[3]) and (mx <= v[4] and my <= v[5]) then
|
||||
return v[1], v[8], mk
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function menu()
|
||||
|
||||
end
|
||||
|
||||
--More functions will be added
|
Loading…
Reference in a new issue