mirror of
https://github.com/LDDestroier/CC/
synced 2025-01-24 16:06:59 +00:00
Mouse input, kiosk mode, debug option to show keysDown
This commit is contained in:
parent
1012ac4dd0
commit
a960d8d1bb
81
tron.lua
81
tron.lua
@ -6,7 +6,11 @@
|
|||||||
--]]
|
--]]
|
||||||
|
|
||||||
local port = 701
|
local port = 701
|
||||||
|
local kioskMode = true
|
||||||
|
local debugShowKeys = false
|
||||||
|
|
||||||
local scr_x, scr_y = term.getSize()
|
local scr_x, scr_y = term.getSize()
|
||||||
|
local scr_mx, scr_my = scr_x / 2, scr_y / 2
|
||||||
local isColor = term.isColor()
|
local isColor = term.isColor()
|
||||||
|
|
||||||
-- lower value = faster game. I'd reccommend 0.1 for SMP play.
|
-- lower value = faster game. I'd reccommend 0.1 for SMP play.
|
||||||
@ -611,6 +615,16 @@ local render = function(useSetVisible)
|
|||||||
termsetTextColor(player[you].color[1])
|
termsetTextColor(player[you].color[1])
|
||||||
termsetBackgroundColor(tocolors[grid.voidcol])
|
termsetBackgroundColor(tocolors[grid.voidcol])
|
||||||
term.write("P" .. you)
|
term.write("P" .. you)
|
||||||
|
if debugShowKeys then
|
||||||
|
local y = 2
|
||||||
|
for k,v in pairs(keysDown) do
|
||||||
|
if v then
|
||||||
|
term.setCursorPos(1,y)
|
||||||
|
term.write(k.." = "..tostring(v).." ")
|
||||||
|
y = y + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local pleaseWait = function()
|
local pleaseWait = function()
|
||||||
@ -726,6 +740,15 @@ local makeMenu = function(x, y, options, doAnimate)
|
|||||||
tsv(true)
|
tsv(true)
|
||||||
return cpos
|
return cpos
|
||||||
end
|
end
|
||||||
|
elseif evt[1] == "mouse_click" then
|
||||||
|
if evt[4] >= y and evt[4] < y+#options then
|
||||||
|
if cpos == evt[4] - (y - 1) then
|
||||||
|
tsv(true)
|
||||||
|
return cpos
|
||||||
|
else
|
||||||
|
cpos = evt[4] - (y - 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
elseif evt[1] == "timer" and evt[2] == gstID then
|
elseif evt[1] == "timer" and evt[2] == gstID then
|
||||||
gstID = os.startTimer(gameDelayInit)
|
gstID = os.startTimer(gameDelayInit)
|
||||||
drawGrid(gsX, gsY, true)
|
drawGrid(gsX, gsY, true)
|
||||||
@ -741,12 +764,21 @@ end
|
|||||||
|
|
||||||
local titleScreen = function()
|
local titleScreen = function()
|
||||||
termclear()
|
termclear()
|
||||||
local choice = makeMenu(2, scr_y - 4, {
|
local menuOptions
|
||||||
"Start Game",
|
if kioskMode then
|
||||||
"How to Play",
|
menuOptions = {
|
||||||
"Grid Demo",
|
"Start Game",
|
||||||
"Exit"
|
"How to Play",
|
||||||
}, true)
|
}
|
||||||
|
else
|
||||||
|
menuOptions = {
|
||||||
|
"Start Game",
|
||||||
|
"How to Play",
|
||||||
|
"Grid Demo",
|
||||||
|
"Exit"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
local choice = makeMenu(2, scr_y - 4, menuOptions, true)
|
||||||
if choice == 1 then
|
if choice == 1 then
|
||||||
return "start"
|
return "start"
|
||||||
elseif choice == 2 then
|
elseif choice == 2 then
|
||||||
@ -766,8 +798,28 @@ local cleanExit = function()
|
|||||||
print("Thanks for playing!")
|
print("Thanks for playing!")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local parseMouseInput = function(button, x, y)
|
||||||
|
local output = nil
|
||||||
|
local cx, cy = (x - scr_mx) * (scr_y / scr_x), y - scr_my
|
||||||
|
if cx > cy then
|
||||||
|
if -cx > cy then
|
||||||
|
output = "up"
|
||||||
|
else
|
||||||
|
output = "right"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if -cx < cy then
|
||||||
|
output = "down"
|
||||||
|
else
|
||||||
|
output = "left"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return control[output]
|
||||||
|
end
|
||||||
|
|
||||||
local getInput = function()
|
local getInput = function()
|
||||||
local evt
|
local evt
|
||||||
|
local mkey = -1
|
||||||
while true do
|
while true do
|
||||||
evt = {os.pullEvent()}
|
evt = {os.pullEvent()}
|
||||||
if lockInput then
|
if lockInput then
|
||||||
@ -785,6 +837,16 @@ local getInput = function()
|
|||||||
keysDown[evt[2]] = true
|
keysDown[evt[2]] = true
|
||||||
elseif evt[1] == "key_up" then
|
elseif evt[1] == "key_up" then
|
||||||
keysDown[evt[2]] = false
|
keysDown[evt[2]] = false
|
||||||
|
elseif evt[1] == "mouse_click" or evt[1] == "mouse_drag" then
|
||||||
|
keysDown[mkey] = false
|
||||||
|
mkey = parseMouseInput(evt[2], evt[3], evt[4])
|
||||||
|
lastDirectionPressed = revControl[mkey]
|
||||||
|
keysDown[mkey] = true
|
||||||
|
elseif evt[1] == "mouse_up" then
|
||||||
|
keysDown[mkey] = false
|
||||||
|
mkey = parseMouseInput(evt[2], evt[3], evt[4])
|
||||||
|
lastDirectionPressed = nil
|
||||||
|
keysDown[mkey] = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -836,9 +898,12 @@ local sendInfo = function(gameID)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
local waitForKey = function(time)
|
local waitForKey = function(time, blockMouse)
|
||||||
sleep(time or 0.5)
|
sleep(time or 0.5)
|
||||||
os.pullEvent("key")
|
local evt
|
||||||
|
repeat
|
||||||
|
evt = os.pullEvent()
|
||||||
|
until evt == "key" or ((not blockMouse) and evt == "mouse_click")
|
||||||
end
|
end
|
||||||
|
|
||||||
local imageAnim = function(image)
|
local imageAnim = function(image)
|
||||||
|
Loading…
Reference in New Issue
Block a user