mirror of
https://github.com/LDDestroier/CC/
synced 2024-11-16 06:44:52 +00:00
139 lines
3.1 KiB
Lua
139 lines
3.1 KiB
Lua
local windont, ONE, TWO, INSTRUCTIONS
|
|
|
|
term.clear()
|
|
|
|
local x1, y1 = 2, 5
|
|
local x2, y2 = 13, 2
|
|
|
|
-- demo transformation function
|
|
-- mess with these all you like
|
|
-- just remember that they apply in reverse (x and y are positions on the screen from 1 to the window's width/height)
|
|
local TF = {
|
|
-- returns new X, new Y, and new character / text color / background color
|
|
char = function(x, y, meta)
|
|
return x, y, nil
|
|
end,
|
|
text = function(x, y, meta)
|
|
return x, y, nil
|
|
end,
|
|
back = function(x, y, meta)
|
|
return x, y, nil
|
|
end
|
|
}
|
|
|
|
local keysDown = {}
|
|
|
|
local tickTimer = os.startTimer(0.05)
|
|
|
|
local scr_x, scr_y = term.current().getSize()
|
|
|
|
local pBlit = function(t, y, str)
|
|
t.setCursorPos(1, y)
|
|
t.blit(str, str, str)
|
|
end
|
|
|
|
windont = dofile("windont.lua")
|
|
|
|
windont.doClearScreen = true
|
|
windont.default.alwaysRender = false
|
|
|
|
INSTRUCTIONS = windont.newWindow(2, scr_y - 5, scr_x - 4, 3, {backColor = "-"})
|
|
ONE = windont.newWindow(1, 1, 9, 5, {backColor = "e"})
|
|
TWO = windont.newWindow(1, 1, 19, 10, {backColor = "-"})
|
|
|
|
INSTRUCTIONS.setCursorPos(1, 1)
|
|
INSTRUCTIONS.write("Arrow keys to move windon't ONE (red)")
|
|
INSTRUCTIONS.setCursorPos(1, 2)
|
|
INSTRUCTIONS.write("WASD keys to move windon't TWO (blue)")
|
|
INSTRUCTIONS.setCursorPos(1, 3)
|
|
INSTRUCTIONS.write("Press 'Q' to quit")
|
|
|
|
ONE.setTextColor(0)
|
|
ONE.setBackgroundColor(colors.gray)
|
|
ONE.setCursorPos(2, 2)
|
|
ONE.write(" I'm ")
|
|
ONE.setCursorPos(2, 3)
|
|
ONE.write("Stencil")
|
|
ONE.setCursorPos(2, 4)
|
|
ONE.write(" Man ")
|
|
|
|
TWO.setTextColor(colors.gray)
|
|
TWO.setBackgroundColor(colors.green)
|
|
pBlit(TWO, 1, "------5------------")
|
|
pBlit(TWO, 2, "5-55-----555---555-")
|
|
pBlit(TWO, 3, "55--5-5-5---5-5---5")
|
|
pBlit(TWO, 4, "5---5-5-5-----55555")
|
|
pBlit(TWO, 5, "5---5-5-5---5-5----")
|
|
pBlit(TWO, 6, "5---5-5--555---5555")
|
|
pBlit(TWO, 8, "ddddddddddddddddddd")
|
|
pBlit(TWO, 9, "ddddddddddddddddddd")
|
|
pBlit(TWO, 10, "ddddddddddddddddddd")
|
|
|
|
ONE.meta.charTransformation = TF.char
|
|
ONE.meta.textTransformation = TF.text
|
|
ONE.meta.backTransformation = TF.back
|
|
|
|
while true do
|
|
|
|
evt = {os.pullEvent()}
|
|
scr_x, scr_y = term.current().getSize()
|
|
|
|
if evt[1] == "timer" and evt[2] == tickTimer then
|
|
tickTimer = os.startTimer(0.05)
|
|
|
|
-- control windont ONE
|
|
if keysDown[keys.up] then
|
|
y1 = y1 - 1
|
|
end
|
|
if keysDown[keys.down] then
|
|
y1 = y1 + 1
|
|
end
|
|
if keysDown[keys.left] then
|
|
x1 = x1 - 1
|
|
end
|
|
if keysDown[keys.right] then
|
|
x1 = x1 + 1
|
|
end
|
|
|
|
-- control windont TWO
|
|
if keysDown[keys.w] then
|
|
y2 = y2 - 1
|
|
end
|
|
if keysDown[keys.s] then
|
|
y2 = y2 + 1
|
|
end
|
|
if keysDown[keys.a] then
|
|
x2 = x2 - 1
|
|
end
|
|
if keysDown[keys.d] then
|
|
x2 = x2 + 1
|
|
end
|
|
|
|
ONE.reposition(x1, y1)
|
|
TWO.reposition(x2, y2)
|
|
|
|
windont.render(ONE, TWO, INSTRUCTIONS)
|
|
|
|
TWO.setCursorPos(2, 9)
|
|
TWO.write("blits: " .. windont.info.BLIT_CALLS .. " ")
|
|
|
|
for k,v in pairs(keysDown) do
|
|
keysDown[k] = v + 1
|
|
end
|
|
|
|
elseif evt[1] == "key" and evt[3] == false then
|
|
keysDown[evt[2]] = 0
|
|
if evt[2] == keys.q then
|
|
sleep(0)
|
|
break
|
|
elseif evt[2] == keys.r then
|
|
x1, y1 = 2, 5
|
|
x2, y2 = 13, 2
|
|
end
|
|
elseif evt[1] == "key_up" then
|
|
keysDown[evt[2]] = nil
|
|
end
|
|
end
|
|
|
|
term.setCursorPos(1, scr_y)
|