chroma_solstice/door.lua

49 lines
1 KiB
Lua
Raw Permalink Normal View History

2015-03-12 03:04:09 -04:00
require "entity"
Door = class("Door", Entity)
2026-08-07 01:57:48 -04:00
function Door:initialize(x, y, color)
self.doorColor = color
2015-03-15 07:08:35 -04:00
Entity.initialize(self, {
x = x,
y = y,
2026-08-07 01:57:48 -04:00
color = color,
2015-03-15 07:08:35 -04:00
collision = "unmoveable",
2026-08-07 01:57:48 -04:00
sprite = loadSprite("art/game/door_" .. color:sub(1, 1) .. ".png"),
2015-03-15 07:08:35 -04:00
})
self.locked = true
2026-08-07 00:40:45 -04:00
self:refreshSprites()
2015-03-12 03:04:09 -04:00
end
2026-08-07 01:57:48 -04:00
-- A door is one normal, colour-layered entity. The editor can therefore place,
-- delete, and serialize its red/green/blue instances independently.
2026-08-07 00:40:45 -04:00
function Door:refreshSprites()
2026-08-07 01:57:48 -04:00
local sprite
if self.locked then
sprite = loadSprite("art/game/door_" .. self.doorColor:sub(1, 1) .. ".png")
else
sprite = loadSprite("art/game/door_unlocked.png")
2015-03-15 07:08:35 -04:00
end
2026-08-07 01:57:48 -04:00
self.sprites = { [self.doorColor] = sprite }
2015-03-15 07:08:35 -04:00
end
function Door:setColors(colors)
2026-08-07 01:57:48 -04:00
if colors[self.doorColor] then
2015-03-15 07:08:35 -04:00
if self.locked then self:unlock() end
else
if not self.locked then self:lock() end
end
2026-08-07 00:40:45 -04:00
self:refreshSprites()
2015-03-15 07:08:35 -04:00
end
function Door:unlock()
self.locked = false
2015-03-12 03:04:09 -04:00
self.collision = "none"
end
2015-03-15 07:08:35 -04:00
function Door:lock()
self.locked = true
2015-03-12 03:04:09 -04:00
self.collision = "unmoveable"
2026-08-07 01:57:48 -04:00
end