v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
102
assets/devel/testconsole1/testconsole1gui.lua
Normal file
102
assets/devel/testconsole1/testconsole1gui.lua
Normal file
|
@ -0,0 +1,102 @@
|
|||
lightGridSize = 9
|
||||
lightSize = 16
|
||||
lightShrink = 2
|
||||
lightXStart = 120
|
||||
lightYStart = 30
|
||||
|
||||
function lightPosition(light)
|
||||
return {(light[1] - 1) * lightSize + lightXStart, (light[2] - 1) * lightSize + lightYStart}
|
||||
end
|
||||
|
||||
function lightFor(pos)
|
||||
return {math.floor((pos[1] - lightXStart) / lightSize) + 1, math.floor((pos[2] - lightYStart) / lightSize) + 1}
|
||||
end
|
||||
|
||||
function lightWithinRange(light)
|
||||
return light[1] >= 1 and light[1] <= lightGridSize and light[2] >= 1 and light[2] <= lightGridSize
|
||||
end
|
||||
|
||||
function lightValue(light)
|
||||
if lightWithinRange(light) then
|
||||
return self.lights[light[1]..":"..light[2]]
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function setLightValue(light, val)
|
||||
if lightWithinRange then
|
||||
self.lights[light[1]..":"..light[2]] = val
|
||||
end
|
||||
end
|
||||
|
||||
function toggleLightValue(light)
|
||||
setLightValue(light, not lightValue(light))
|
||||
end
|
||||
|
||||
function init()
|
||||
self.lights = {}
|
||||
for x = 1, lightGridSize do
|
||||
for y = 1, lightGridSize do
|
||||
setLightValue({x, y}, true)
|
||||
end
|
||||
end
|
||||
|
||||
self.canvas = widget.bindCanvas("scriptCanvas")
|
||||
widget.focus("scriptCanvas")
|
||||
end
|
||||
|
||||
function update()
|
||||
self.canvas:clear()
|
||||
|
||||
for x = 1, lightGridSize do
|
||||
for y = 1, lightGridSize do
|
||||
if lightValue({x, y}) then
|
||||
local pos = lightPosition({x, y})
|
||||
|
||||
self.canvas:drawRect(
|
||||
{pos[1] + lightShrink, pos[2] + lightShrink, pos[1] + lightSize - lightShrink, pos[2] + lightSize - lightShrink},
|
||||
{255, 255, 255}
|
||||
)
|
||||
|
||||
local gridMin = {lightXStart, lightYStart}
|
||||
local gridMax = {lightXStart + lightSize * lightGridSize, lightYStart + lightSize * lightGridSize}
|
||||
|
||||
self.canvas:drawPoly(
|
||||
{{gridMin[1], gridMin[2]}, {gridMax[1], gridMin[2]}, {gridMax[1], gridMax[2]}, {gridMin[1], gridMax[2]}},
|
||||
{255, 255, 255}
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local allGone = true
|
||||
for x = 1, lightGridSize do
|
||||
for y = 1, lightGridSize do
|
||||
if lightValue({x, y}) then
|
||||
allGone = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if allGone then
|
||||
world.sendEntityMessage(pane.sourceEntity(), "youwin")
|
||||
pane.dismiss()
|
||||
end
|
||||
end
|
||||
|
||||
function canvasClickEvent(position, button, buttonDown)
|
||||
if buttonDown then
|
||||
local light = lightFor(position)
|
||||
if lightWithinRange(light) then
|
||||
if button == 1 then
|
||||
pane.playSound("/sfx/interface/keypad_press.ogg", 0, 1.0)
|
||||
toggleLightValue({light[1], light[2]})
|
||||
toggleLightValue({light[1] - 1, light[2]})
|
||||
toggleLightValue({light[1], light[2] - 1})
|
||||
toggleLightValue({light[1] + 1, light[2]})
|
||||
toggleLightValue({light[1], light[2] + 1})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue