Compare commits

...

3 commits

Author SHA1 Message Date
Your Name
ec745f87ab Update authored puzzle levels 2026-08-12 14:52:06 -04:00
Your Name
6f4b2fe696 Add player color Venn HUD 2026-08-12 14:52:06 -04:00
Your Name
9b5b9ce182 Remove wired device overlay markers 2026-08-12 14:52:06 -04:00
11 changed files with 4096 additions and 3242 deletions

88
game_ui.lua Normal file
View file

@ -0,0 +1,88 @@
-- Player-facing HUD drawn into gameCanvas. Keeping it here (rather than in
-- the editor sidebar) means its RGB circles use the same screen blend as the
-- room, so their overlaps are the real additive colour combinations.
local GameUI = {}
local channelColor = {
red = {1, 0, 0},
green = {0, 1, 0},
blue = {0, 0, 1},
}
local vennSize = 32
local vennLayout = {
red = {x = 12, y = 10},
green = {x = 20, y = 10},
blue = {x = 16, y = 18},
}
local function drawDottedCircle(x, y, radius, color, dotRadius)
local dots = math.max(14, math.floor((2 * math.pi * radius) / (dotRadius * 4)))
love.graphics.setColor(color[1], color[2], color[3], 1)
for index = 0, dots - 1 do
local angle = index / dots * math.pi * 2
love.graphics.circle("fill", x + math.cos(angle) * radius, y + math.sin(angle) * radius, dotRadius)
end
end
function GameUI.init()
uiVennCanvas = love.graphics.newCanvas(vennSize, vennSize)
uiVennCanvas:setFilter("nearest", "nearest")
end
function GameUI.drawBacking()
if not gameUiBox then return end
love.graphics.setBlendMode("alpha")
love.graphics.setColor(0, 0, 0, 1)
love.graphics.rectangle("fill", gameUiBox.x, gameUiBox.y, gameUiBox.w, gameUiBox.h)
end
function GameUI.drawVennOverlay()
if not gameUiBox or not uiVennCanvas then return end
local cellSize = width / gridWidth
local sidebarWidth = cellSize * 2
if gameUiBox.w < sidebarWidth then return end
love.graphics.setBlendMode("screen")
love.graphics.setColor(1, 1, 1, 1)
local scale = cellSize / 22
local vennWidth = vennSize * scale
local left = gameUiBox.x + (gameUiBox.w - vennWidth) / 2
love.graphics.draw(uiVennCanvas, left, cellSize * 1.1, 0, scale, scale)
end
function GameUI.drawColorVenn(room)
if not room or not gameUiBox then return end
GameUI.drawBacking()
local cellSize = width / gridWidth
local sidebarWidth = cellSize * 2
if gameUiBox.w < sidebarWidth or not uiVennCanvas then return end
love.graphics.setCanvas(uiVennCanvas)
love.graphics.clear(0, 0, 0, 0)
love.graphics.setBlendMode("screen")
local radius = 9
local dotRadius = 1
local active = {}
for _, color in ipairs(room:getActiveColors()) do active[color] = true end
for _, color in ipairs({"red", "green", "blue"}) do
if room.player[color] then
local layout = vennLayout[color]
local x, y = layout.x, layout.y
local rgb = channelColor[color]
if active[color] then
love.graphics.setColor(rgb[1], rgb[2], rgb[3], 1)
love.graphics.circle("fill", x, y, radius)
else
drawDottedCircle(x, y, radius, rgb, dotRadius)
end
end
end
love.graphics.setCanvas(gameCanvas)
GameUI.drawVennOverlay()
end
return GameUI

View file

@ -1138,10 +1138,10 @@ local function openWorldRoom(cellX, cellY)
end end
function editorMouseHandler(x, y, button) function editorMouseHandler(x, y, button)
if x > width then if x >= sideBarBox.x and x < sideBarBox.x + sideBarBox.w then
-- map from real window coords into the sidebar's fixed virtual space -- map from real window coords into the sidebar's fixed virtual space
-- (same transform used to scale the sidebar canvas up in love.draw) -- (same transform used to scale the sidebar canvas up in love.draw)
x = (x - width) * sb.w / sideBarBox.w x = (x - sideBarBox.x) * sb.w / sideBarBox.w
y = y * sb.h / sideBarBox.h y = y * sb.h / sideBarBox.h
if editorView == "room" then if editorView == "room" then

View file

@ -15,6 +15,7 @@ require "room"
require "world" require "world"
require "world_seed" require "world_seed"
require "shaders" require "shaders"
GameUI = require "game_ui"
require "level_editor/editor" require "level_editor/editor"
-- Ink dialogue: ship the pre-parsed book (LÖVE has no lpeg to parse .ink at -- Ink dialogue: ship the pre-parsed book (LÖVE has no lpeg to parse .ink at
@ -110,6 +111,7 @@ function love.draw()
else else
currentRoom:draw() currentRoom:draw()
end end
GameUI.drawColorVenn(currentRoom)
love.graphics.setCanvas(finalCanvas) love.graphics.setCanvas(finalCanvas)
love.graphics.clear() love.graphics.clear()
@ -158,6 +160,10 @@ function love.draw()
love.graphics.setBlendMode("alpha") love.graphics.setBlendMode("alpha")
love.graphics.setColor(1, 1, 1, 1) love.graphics.setColor(1, 1, 1, 1)
love.graphics.draw(finalCanvas, 0, 0) love.graphics.draw(finalCanvas, 0, 0)
GameUI.drawBacking()
GameUI.drawVennOverlay()
love.graphics.setBlendMode("alpha")
love.graphics.setColor(1, 1, 1, 1)
if DEBUG then love.graphics.draw(sideBarCanvas, sideBarBox.x, sideBarBox.y) end if DEBUG then love.graphics.draw(sideBarCanvas, sideBarBox.x, sideBarBox.y) end
love.graphics.print("Current FPS: "..tostring(love.timer.getFPS( )), 10, 10) love.graphics.print("Current FPS: "..tostring(love.timer.getFPS( )), 10, 10)
PerfProfiler:draw() PerfProfiler:draw()
@ -265,7 +271,7 @@ end
function love.wheelmoved(dx, dy) function love.wheelmoved(dx, dy)
if not DEBUG then return end if not DEBUG then return end
-- Scroll the editor's asset/folder list when the cursor is over the sidebar. -- Scroll the editor's asset/folder list when the cursor is over the sidebar.
if editorView == "room" and love.mouse.getX() > width then if editorView == "room" and love.mouse.getX() >= sideBarBox.x then
editorScrollRoomList(dy) editorScrollRoomList(dy)
end end
end end
@ -304,7 +310,10 @@ function _computeDimensions()
height = width height = width
end end
sideBarBox = {x = width, y = 0, w = love.graphics.getWidth() - width, h = height} local availableWidth = love.graphics.getWidth() - width
local hudWidth = math.min(availableWidth, width / (gridWidth or 11) * 2)
gameUiBox = {x = width, y = 0, w = hudWidth, h = height}
sideBarBox = {x = gameUiBox.x + gameUiBox.w, y = 0, w = availableWidth - gameUiBox.w, h = height}
-- The editor sidebar is authored in a fixed virtual space and scaled up to -- The editor sidebar is authored in a fixed virtual space and scaled up to
-- fill the real panel, so every element keeps the same size relative to the -- fill the real panel, so every element keeps the same size relative to the
@ -333,6 +342,7 @@ function _initCanvases()
porousRoomCanvas = love.graphics.newCanvas() porousRoomCanvas = love.graphics.newCanvas()
sideBarCanvas = love.graphics.newCanvas(math.max(1, sideBarBox.w), math.max(1, sideBarBox.h)) sideBarCanvas = love.graphics.newCanvas(math.max(1, sideBarBox.w), math.max(1, sideBarBox.h))
sideBarCanvas:setFilter("nearest", "nearest") -- never average when sampled sideBarCanvas:setFilter("nearest", "nearest") -- never average when sampled
GameUI.init()
end end
function _initGridVars() function _initGridVars()

File diff suppressed because it is too large Load diff

View file

@ -1,217 +1,196 @@
{ {
objects={ objects={
{ {
color="green", class="wired_door",
x=3, y=8,
y=7, circuit="wire_6a7bdb2a_0001",
active=true,
class="player"
},
{
color="blue",
x=3,
y=7,
active=true,
class="player"
},
{
color="red", color="red",
x=3, x=9
y=7,
active=true,
class="player"
}, },
{ {
color="green", class="wired_door",
x=9,
y=8, y=8,
circuit="wire_6a7bdb2a_0001", circuit="wire_6a7bdb2a_0001",
class="wired_door"
},
{
color="green", color="green",
x=5, x=9
y=8,
class="box"
}, },
{ {
color="blue", class="box",
x=9, color="green",
y=8,
x=5
},
{
class="wired_door",
y=8, y=8,
circuit="wire_6a7bdb2a_0001", circuit="wire_6a7bdb2a_0001",
class="wired_door" color="blue",
x=9
}, },
{ {
color="blue", class="wired_door",
x=7,
y=4, y=4,
circuit="wire_6a7bd969_000a", circuit="wire_6a7bd969_000a",
class="wired_door" color="blue",
}, x=7
{
color="red",
x=9,
y=8,
circuit="wire_6a7bdb2a_0001",
class="wired_door"
}, },
{ {
class="wired_switch",
color="green", color="green",
x=5,
y=7, y=7,
class="wired_switch" x=5
} }
}, },
wires={ wires={
{ {
edges=12,
x=1, x=1,
y=3, y=3,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=12
}, },
{ {
edges=3,
x=1, x=1,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=3
}, },
{ {
edges=10,
x=2, x=2,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=10
}, },
{ {
edges=10,
x=3, x=3,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=10
}, },
{ {
edges=10,
x=4, x=4,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=10
}, },
{ {
edges=10,
x=5, x=5,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=10
}, },
{ {
edges=10,
x=6, x=6,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=10
}, },
{ {
edges=8,
x=7, x=7,
y=4, y=4,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=8
}, },
{ {
edges=4,
x=7, x=7,
y=4, y=4,
circuit="wire_6a7bdf16_0001" circuit="wire_6a7bdf16_0001",
edges=4
}, },
{ {
edges=5,
x=7, x=7,
y=5, y=5,
circuit="wire_6a7bdf16_0001" circuit="wire_6a7bdf16_0001",
edges=5
}, },
{ {
edges=6,
x=5, x=5,
y=6, y=6,
circuit="wire_6a7bdf16_0001" circuit="wire_6a7bdf16_0001",
edges=6
}, },
{ {
edges=10,
x=6, x=6,
y=6, y=6,
circuit="wire_6a7bdf16_0001" circuit="wire_6a7bdf16_0001",
edges=10
}, },
{ {
edges=9,
x=7, x=7,
y=6, y=6,
circuit="wire_6a7bdf16_0001" circuit="wire_6a7bdf16_0001",
edges=9
}, },
{ {
edges=0,
x=5, x=5,
y=7, y=7,
circuit="wire_6a7bd969_000a" circuit="wire_6a7bd969_000a",
edges=0
}, },
{ {
edges=1,
x=5, x=5,
y=7, y=7,
circuit="wire_6a7bdf16_0001" circuit="wire_6a7bdf16_0001",
edges=1
}, },
{ {
edges=4,
x=9, x=9,
y=8, y=8,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=4
}, },
{ {
edges=10,
x=1, x=1,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=2, x=2,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=3, x=3,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=4, x=4,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=5, x=5,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=6, x=6,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=7, x=7,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=10,
x=8, x=8,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=10
}, },
{ {
edges=9,
x=9, x=9,
y=9, y=9,
circuit="wire_6a7bdb2a_0001" circuit="wire_6a7bdb2a_0001",
edges=9
} }
} }
} }

796
rooms/room_12_14.sav Normal file
View file

@ -0,0 +1,796 @@
{
objects={
{
color="green",
active=true,
x=1,
y=6,
class="player"
},
{
color="blue",
active=true,
x=1,
y=6,
class="player"
},
{
color="red",
active=true,
x=1,
y=6,
class="player"
},
{
x=11,
color="green",
y=1,
class="static_wall"
},
{
x=11,
color="green",
y=11,
class="static_wall"
},
{
x=10,
color="green",
y=11,
class="static_wall"
},
{
x=9,
color="green",
y=11,
class="static_wall"
},
{
x=8,
color="green",
y=11,
class="static_wall"
},
{
x=7,
color="green",
y=11,
class="static_wall"
},
{
x=8,
color="green",
y=11,
class="static_wall"
},
{
x=9,
color="green",
y=11,
class="static_wall"
},
{
x=10,
color="green",
y=11,
class="static_wall"
},
{
x=11,
color="green",
y=11,
class="static_wall"
},
{
x=6,
color="green",
y=11,
class="static_wall"
},
{
x=5,
color="green",
y=11,
class="static_wall"
},
{
x=4,
color="green",
y=11,
class="static_wall"
},
{
x=3,
color="green",
y=11,
class="static_wall"
},
{
x=2,
color="green",
y=11,
class="static_wall"
},
{
x=1,
color="green",
y=11,
class="static_wall"
},
{
x=1,
color="green",
y=10,
class="static_wall"
},
{
x=1,
color="green",
y=9,
class="static_wall"
},
{
x=1,
color="green",
y=8,
class="static_wall"
},
{
x=1,
color="green",
y=7,
class="static_wall"
},
{
x=1,
color="green",
y=5,
class="static_wall"
},
{
x=1,
color="green",
y=4,
class="static_wall"
},
{
x=1,
color="green",
y=3,
class="static_wall"
},
{
x=1,
color="green",
y=2,
class="static_wall"
},
{
x=1,
color="green",
y=1,
class="static_wall"
},
{
x=2,
color="green",
y=1,
class="static_wall"
},
{
x=3,
color="green",
y=1,
class="static_wall"
},
{
x=4,
color="green",
y=1,
class="static_wall"
},
{
x=5,
color="green",
y=1,
class="static_wall"
},
{
x=6,
color="green",
y=1,
class="static_wall"
},
{
x=7,
color="green",
y=1,
class="static_wall"
},
{
x=8,
color="green",
y=1,
class="static_wall"
},
{
x=9,
color="green",
y=1,
class="static_wall"
},
{
x=10,
color="green",
y=1,
class="static_wall"
},
{
x=11,
color="green",
y=4,
class="static_wall"
},
{
x=9,
color="green",
y=2,
class="static_wall"
},
{
x=10,
color="green",
y=4,
class="static_wall"
},
{
x=9,
color="green",
y=4,
class="static_wall"
},
{
color="green",
circuit="wire_6a7ca485_0005",
x=9,
y=3,
class="wired_door"
},
{
x=5,
color="green",
y=6,
class="box"
},
{
x=8,
color="green",
y=6,
class="box"
},
{
x=11,
color="blue",
y=1,
class="static_wall"
},
{
x=11,
color="blue",
y=11,
class="static_wall"
},
{
x=10,
color="blue",
y=11,
class="static_wall"
},
{
x=9,
color="blue",
y=11,
class="static_wall"
},
{
x=8,
color="blue",
y=11,
class="static_wall"
},
{
x=7,
color="blue",
y=11,
class="static_wall"
},
{
x=8,
color="blue",
y=11,
class="static_wall"
},
{
x=9,
color="blue",
y=11,
class="static_wall"
},
{
x=10,
color="blue",
y=11,
class="static_wall"
},
{
x=11,
color="blue",
y=11,
class="static_wall"
},
{
x=6,
color="blue",
y=11,
class="static_wall"
},
{
x=5,
color="blue",
y=11,
class="static_wall"
},
{
x=4,
color="blue",
y=11,
class="static_wall"
},
{
x=3,
color="blue",
y=11,
class="static_wall"
},
{
x=2,
color="blue",
y=11,
class="static_wall"
},
{
x=1,
color="blue",
y=11,
class="static_wall"
},
{
x=1,
color="blue",
y=10,
class="static_wall"
},
{
x=1,
color="blue",
y=9,
class="static_wall"
},
{
x=1,
color="blue",
y=8,
class="static_wall"
},
{
x=1,
color="blue",
y=7,
class="static_wall"
},
{
x=1,
color="blue",
y=5,
class="static_wall"
},
{
x=1,
color="blue",
y=4,
class="static_wall"
},
{
x=1,
color="blue",
y=3,
class="static_wall"
},
{
x=1,
color="blue",
y=2,
class="static_wall"
},
{
x=1,
color="blue",
y=1,
class="static_wall"
},
{
x=2,
color="blue",
y=1,
class="static_wall"
},
{
x=3,
color="blue",
y=1,
class="static_wall"
},
{
x=4,
color="blue",
y=1,
class="static_wall"
},
{
x=5,
color="blue",
y=1,
class="static_wall"
},
{
x=6,
color="blue",
y=1,
class="static_wall"
},
{
x=7,
color="blue",
y=1,
class="static_wall"
},
{
x=8,
color="blue",
y=1,
class="static_wall"
},
{
x=9,
color="blue",
y=1,
class="static_wall"
},
{
x=10,
color="blue",
y=1,
class="static_wall"
},
{
x=6,
color="blue",
y=7,
class="box"
},
{
x=11,
color="red",
y=1,
class="static_wall"
},
{
x=11,
color="red",
y=11,
class="static_wall"
},
{
x=10,
color="red",
y=11,
class="static_wall"
},
{
x=9,
color="red",
y=11,
class="static_wall"
},
{
x=8,
color="red",
y=11,
class="static_wall"
},
{
x=7,
color="red",
y=11,
class="static_wall"
},
{
x=8,
color="red",
y=11,
class="static_wall"
},
{
x=9,
color="red",
y=11,
class="static_wall"
},
{
x=10,
color="red",
y=11,
class="static_wall"
},
{
x=11,
color="red",
y=11,
class="static_wall"
},
{
x=6,
color="red",
y=11,
class="static_wall"
},
{
x=5,
color="red",
y=11,
class="static_wall"
},
{
x=4,
color="red",
y=11,
class="static_wall"
},
{
x=3,
color="red",
y=11,
class="static_wall"
},
{
x=2,
color="red",
y=11,
class="static_wall"
},
{
x=1,
color="red",
y=11,
class="static_wall"
},
{
x=1,
color="red",
y=10,
class="static_wall"
},
{
x=1,
color="red",
y=9,
class="static_wall"
},
{
x=1,
color="red",
y=8,
class="static_wall"
},
{
x=1,
color="red",
y=7,
class="static_wall"
},
{
x=1,
color="red",
y=5,
class="static_wall"
},
{
x=1,
color="red",
y=4,
class="static_wall"
},
{
x=1,
color="red",
y=3,
class="static_wall"
},
{
x=1,
color="red",
y=2,
class="static_wall"
},
{
x=1,
color="red",
y=1,
class="static_wall"
},
{
x=2,
color="red",
y=1,
class="static_wall"
},
{
x=3,
color="red",
y=1,
class="static_wall"
},
{
x=4,
color="red",
y=1,
class="static_wall"
},
{
x=5,
color="red",
y=1,
class="static_wall"
},
{
x=6,
color="red",
y=1,
class="static_wall"
},
{
x=7,
color="red",
y=1,
class="static_wall"
},
{
x=8,
color="red",
y=1,
class="static_wall"
},
{
x=9,
color="red",
y=1,
class="static_wall"
},
{
x=10,
color="red",
y=1,
class="static_wall"
},
{
x=10,
color="green",
y=3,
class="wired_switch"
},
{
x=4,
color="blue",
y=3,
class="wired_switch"
}
},
wires={
{
edges=6,
x=4,
y=2,
circuit="wire_6a7ca485_0005"
},
{
edges=12,
x=5,
y=2,
circuit="wire_6a7ca485_0005"
},
{
edges=1,
x=4,
y=3,
circuit="wire_6a7ca485_0005"
},
{
edges=3,
x=5,
y=3,
circuit="wire_6a7ca485_0005"
},
{
edges=10,
x=6,
y=3,
circuit="wire_6a7ca485_0005"
},
{
edges=10,
x=7,
y=3,
circuit="wire_6a7ca485_0005"
},
{
edges=10,
x=8,
y=3,
circuit="wire_6a7ca485_0005"
},
{
edges=8,
x=9,
y=3,
circuit="wire_6a7ca485_0005"
},
{
edges=2,
x=10,
y=3,
circuit="wire_6a7ca47f_0004"
},
{
edges=12,
x=11,
y=3,
circuit="wire_6a7ca47f_0004"
},
{
edges=5,
x=11,
y=4,
circuit="wire_6a7ca47f_0004"
},
{
edges=5,
x=11,
y=5,
circuit="wire_6a7ca47f_0004"
},
{
edges=6,
x=10,
y=6,
circuit="wire_6a7ca47f_0004"
},
{
edges=9,
x=11,
y=6,
circuit="wire_6a7ca47f_0004"
},
{
edges=3,
x=10,
y=7,
circuit="wire_6a7ca47f_0004"
},
{
edges=10,
x=11,
y=7,
circuit="wire_6a7ca47f_0004"
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,252 +1,257 @@
{ {
height=18,
rooms={ rooms={
{ {
x=10,
name="3", name="3",
y=10, y=10
x=10
}, },
{ {
x=12,
name="5", name="5",
y=10, y=10
x=12
}, },
{ {
x=12,
name="village_1", name="village_1",
y=9, y=9
x=12
}, },
{ {
x=11,
name="village_4", name="village_4",
y=8, y=8
x=11
}, },
{ {
x=11,
name="yellow_1", name="yellow_1",
y=7, y=7
x=11
}, },
{ {
x=11,
name="yellow_3", name="yellow_3",
y=6, y=6
x=11
}, },
{ {
x=12,
name="yellow_2", name="yellow_2",
y=7, y=7
x=12
}, },
{ {
x=11,
name="yellow_4", name="yellow_4",
y=5, y=5
x=11
}, },
{ {
x=11,
name="yellow_5", name="yellow_5",
y=4, y=4
x=11
}, },
{ {
x=10,
name="yellow_6", name="yellow_6",
y=5, y=5
x=10
}, },
{ {
x=1,
name="default", name="default",
y=1, y=1
x=1
}, },
{ {
x=3,
name="old_yellow_3", name="old_yellow_3",
y=1, y=1
x=3
}, },
{ {
x=5,
name="test_patt", name="test_patt",
y=1, y=1
x=5
}, },
{ {
x=7,
name="test_patt_update", name="test_patt_update",
y=1, y=1
x=7
}, },
{ {
x=9,
name="white_asymmetrical", name="white_asymmetrical",
y=1, y=1
x=9
}, },
{ {
x=11,
name="white_ok", name="white_ok",
y=1, y=1
x=11
}, },
{ {
x=13,
name="white_primary", name="white_primary",
y=1, y=1
x=13
}, },
{ {
x=15,
name="yellow_arches", name="yellow_arches",
y=1, y=1
x=15
}, },
{ {
x=17,
name="yellow_asymmetrical", name="yellow_asymmetrical",
y=1, y=1
x=17
}, },
{ {
x=1,
name="yellow_cc_moustache", name="yellow_cc_moustache",
y=3, y=3
x=1
}, },
{ {
x=3,
name="yellow_color_changing_levvel_1", name="yellow_color_changing_levvel_1",
y=3, y=3
x=3
}, },
{ {
x=7,
name="yellow_smile", name="yellow_smile",
y=3, y=3
x=7
}, },
{ {
x=9,
name="2", name="2",
y=10, y=10
x=9
}, },
{ {
x=11,
name="room_11_09", name="room_11_09",
y=9, y=9
x=11
}, },
{ {
x=9,
name="yellow_skull", name="yellow_skull",
y=3, y=3
x=9
}, },
{ {
x=5,
name="jorge_room", name="jorge_room",
y=5, y=5
x=5
}, },
{ {
x=11,
name="4", name="4",
y=10, y=10
x=11
}, },
{ {
x=1,
name="room_01_05", name="room_01_05",
y=5, y=5
x=1
}, },
{ {
x=2,
name="ok", name="ok",
y=8, y=8
x=2
}, },
{ {
x=5,
name="room_05_18", name="room_05_18",
y=18, y=18
x=5
}, },
{ {
x=9,
name="village_start", name="village_start",
y=11, y=11
x=9
}, },
{ {
x=4,
name="spiky_test", name="spiky_test",
y=8, y=8
x=4
}, },
{ {
x=5,
name="corner_trimino_test", name="corner_trimino_test",
y=7, y=7
x=5
}, },
{ {
x=6,
name="tetromino_loop_t", name="tetromino_loop_t",
y=7, y=7
x=6
}, },
{ {
x=5,
name="corner_trimino_test_copy", name="corner_trimino_test_copy",
y=6, y=6
x=5
}, },
{ {
x=7,
name="blocker_test", name="blocker_test",
y=7, y=7
x=7
}, },
{ {
x=5,
name="spiky_test_2", name="spiky_test_2",
y=8, y=8
x=5
}, },
{ {
x=5,
name="spiky_test_3", name="spiky_test_3",
y=9, y=9
x=5
}, },
{ {
x=3,
name="jorge2", name="jorge2",
y=14, y=14
x=3
}, },
{ {
x=8,
name="room_08_07", name="room_08_07",
y=7, y=7
x=8
}, },
{ {
x=13,
name="village_3", name="village_3",
y=8, y=8
x=13
}, },
{ {
x=12,
name="village_2", name="village_2",
y=8, y=8
x=12
}, },
{ {
x=14,
name="room_14_07", name="room_14_07",
y=7, y=7
x=14
}, },
{ {
x=9,
name="room_09_13", name="room_09_13",
y=13, y=13
x=9
}, },
{ {
x=8,
name="room_08_13", name="room_08_13",
y=13, y=13
x=8
}, },
{ {
x=9,
name="room_10_15", name="room_10_15",
y=15, y=15
x=9
}, },
{ {
x=13,
name="room_13_14", name="room_13_14",
y=14, y=14
x=13
}, },
{ {
x=14,
name="room_14_14", name="room_14_14",
y=14, y=14
x=14
}, },
{ {
x=13,
name="room_13_13", name="room_13_13",
y=13, y=13
x=13 },
{
x=12,
name="room_12_14",
y=14
} }
}, },
lastRoom="room_14_14", lastRoom="room_13_14",
width=18, width=18
height=18
} }

View file

@ -1,7 +1,5 @@
require "door" require "door"
local Wire = require "wire"
WiredDoor = class("WiredDoor", Door) WiredDoor = class("WiredDoor", Door)
function WiredDoor:initialize(x, y, color, circuitId) function WiredDoor:initialize(x, y, color, circuitId)
@ -18,13 +16,3 @@ function WiredDoor:setPowered(powered, canClose)
end end
self:refreshSprites() self:refreshSprites()
end end
function WiredDoor:draw(channel)
Entity.draw(self, channel)
if not self.sprites[channel] then return end
local p = self:getDrawPos()
local color = Wire.color(self.circuitId)
love.graphics.setColor(color[1], color[2], color[3], 1)
love.graphics.setLineWidth(math.max(1, drawScale))
love.graphics.circle("line", p.x + 8 * drawScale, p.y + 8 * drawScale, 3 * drawScale)
end

View file

@ -6,12 +6,3 @@ function WiredSwitch:initialize(x, y, color)
Switch.initialize(self, x, y, color) Switch.initialize(self, x, y, color)
self.wired = true self.wired = true
end end
function WiredSwitch:draw(channel)
Entity.draw(self, channel)
if not self.sprites[channel] then return end
local p = self:getDrawPos()
love.graphics.setColor(1, 1, 1, 0.9)
love.graphics.setLineWidth(math.max(1, drawScale))
love.graphics.rectangle("line", p.x + 5 * drawScale, p.y + 5 * drawScale, 6 * drawScale, 6 * drawScale)
end