level editor improvements

This commit is contained in:
Your Name 2026-08-07 00:56:33 -04:00
parent 886679816b
commit a8b469876d
41 changed files with 8367 additions and 8312 deletions

View file

@ -16,3 +16,32 @@ end
function lerp(a, b, amount) function lerp(a, b, amount)
return (1 - amount) * a + (amount * b) return (1 - amount) * a + (amount * b)
end end
-- Write to the project tree itself (not LÖVE's save dir) so edits persist in the
-- repo during dev. Uses plain io.open against love.filesystem.getSource(), which
-- is the absolute project path when running `love .` from a folder. Falls back to
-- love.filesystem.write (save dir) if the source is a packaged .love archive.
function writeToSource(relPath, contents)
local base = love.filesystem.getSource()
local file = io.open(base .. "/" .. relPath, "w")
if file then
file:write(contents)
file:close()
return true
end
return love.filesystem.write(relPath, contents)
end
-- Read from the project tree directly so a stale copy in LÖVE's save directory
-- can't shadow the real source file. Falls back to love.filesystem for a
-- packaged .love.
function readFromSource(relPath)
local base = love.filesystem.getSource()
local file = io.open(base .. "/" .. relPath, "r")
if file then
local contents = file:read("*a")
file:close()
return contents
end
return love.filesystem.read(relPath)
end

1
art/game/box.meta Normal file
View file

@ -0,0 +1 @@
{class="moveable"}

View file

Before

Width:  |  Height:  |  Size: 879 B

After

Width:  |  Height:  |  Size: 879 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 890 B

After

Width:  |  Height:  |  Size: 890 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 879 B

After

Width:  |  Height:  |  Size: 879 B

Before After
Before After

1
art/game/door.meta Normal file
View file

@ -0,0 +1 @@
{class="door"}

View file

Before

Width:  |  Height:  |  Size: 147 B

After

Width:  |  Height:  |  Size: 147 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 159 B

After

Width:  |  Height:  |  Size: 159 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 162 B

Before After
Before After

1
art/game/player.meta Normal file
View file

@ -0,0 +1 @@
{class="player"}

View file

@ -0,0 +1 @@
{class="immoveable"}

1
art/game/switch.meta Normal file
View file

@ -0,0 +1 @@
{class="switch"}

View file

@ -297,8 +297,10 @@ end
function saveAsset() function saveAsset()
gameAssets[selectedAsset] = assetProperties gameAssets[selectedAsset] = assetProperties
local save = TSerial.pack(gameAssets, nil, true) -- the asset's class lives in its .meta next to the art (source of truth,
love.filesystem.write("assets.prop", save) -- read back by getAllAssets); write it there
local metaPath = "art/" .. assetProperties.directory .. "/" .. selectedAsset .. ".meta"
writeToSource(metaPath, TSerial.pack({ class = assetProperties.class }, nil, true))
assetsView() assetsView()
end end

View file

@ -24,14 +24,22 @@ function getAllAssets()
local name = fileToAnalyze:sub(1, fileToAnalyze:len() - 6) local name = fileToAnalyze:sub(1, fileToAnalyze:len() - 6)
if not globalAssetProperties[name] then if not globalAssetProperties[name] then
globalAssetProperties[name] = {} globalAssetProperties[name] = {}
globalAssetProperties[name].directory = folder globalAssetProperties[name].directory = folder
globalAssetProperties[name].sprites = {} globalAssetProperties[name].sprites = {}
globalAssetProperties[name].class = "unmoveable"
globalAssetProperties[name].preload = false globalAssetProperties[name].preload = false
end end
-- class comes from a <name>.meta sitting next to the art
-- (authoritative); default to immoveable if none exists
local metaPath = topFolder .. "/" .. folder .. "/" .. name .. ".meta"
if love.filesystem.exists(metaPath) then
globalAssetProperties[name].class = TSerial.unpack(love.filesystem.read(metaPath)).class
elseif not globalAssetProperties[name].class then
globalAssetProperties[name].class = "immoveable"
end
local sprite = topFolder .. "/" .. folder .. "/" .. fileToAnalyze local sprite = topFolder .. "/" .. folder .. "/" .. fileToAnalyze
globalAssetProperties[name].sprites[color] = sprite globalAssetProperties[name].sprites[color] = sprite
@ -45,7 +53,5 @@ function getAllAssets()
end end
end end
str = TSerial.pack(globalAssetProperties, nil, true)
love.filesystem.write("assets.prop", str)
return globalAssetProperties return globalAssetProperties
end end

View file

@ -15,7 +15,7 @@ require "sprite_manager"
require "level_editor/editor" require "level_editor/editor"
function love.load() function love.load()
globalAssetProperties = TSerial.unpack(love.filesystem.read("assets.prop") or "{}") globalAssetProperties = {} -- rebuilt from the filesystem (art/ + .meta) by getAllAssets
_initDefaults() _initDefaults()
_initGridVars() _initGridVars()

View file

@ -533,43 +533,40 @@ function Room:nextRoomCheck()
end end
-- Instantiate one object from the flat {class,color,x,y} schema. `class` is a -- Instantiate one object from the flat {class,color,x,y} schema. `class` names an
-- key: the built-in behaviour classes (door/switch/player) plus the two generic -- art asset, and its .meta declares the behaviour ("door"/"switch"/"player"/
-- grid pieces (wall/static_wall), and finally any art asset resolved by name via -- "moveable"); anything without a .meta defaults to immoveable. npc is the one
-- the globalAssetProperties registry (this is what the level editor places). -- keyword handled directly since it has no art.
function Room:createEntity(class, color, x, y) function Room:createEntity(class, color, x, y)
if class == "npc" then
self:registerNpc(x, y)
return
end
local props = globalAssetProperties and globalAssetProperties[class]
local behavior = props and props.class or "immoveable"
local entity local entity
if class == "door" then
if behavior == "door" then
entity = Door:new(x, y) entity = Door:new(x, y)
self:registerDoor(entity) self:registerDoor(entity)
elseif class == "switch" then elseif behavior == "switch" then
entity = Switch:new(x, y, color) entity = Switch:new(x, y, color)
self:registerSwitch(entity, color) self:registerSwitch(entity, color)
elseif class == "player" then elseif behavior == "player" then
entity = Player:new(x, y, color) entity = Player:new(x, y, color)
self:registerPlayer(entity, color) self:registerPlayer(entity, color)
self:setActiveColor(color, true) self:setActiveColor(color, true)
elseif class == "wall" then elseif props and props.sprites and props.sprites[color] then
entity = GenericUnmoveable:new(x, y, color, sprites.box[color]) local sprite = loadPlaceImage(props.sprites[color])
self:registerCollidable(entity, {color}) if behavior == "moveable" then
elseif class == "static_wall" then entity = GenericMoveable:new(x, y, color, sprite, class)
entity = GenericUnmoveable:new(x, y, color, sprites.wall) else
self:registerCollidable(entity, {color}) entity = GenericUnmoveable:new(x, y, color, sprite)
elseif class == "npc" then
self:registerNpc(x, y)
else
-- generic art asset placed via the editor, resolved by name
local props = globalAssetProperties and globalAssetProperties[class]
if props and props.sprites and props.sprites[color] then
local sprite = loadPlaceImage(props.sprites[color])
if props.class == "moveable" then
entity = GenericMoveable:new(x, y, color, sprite, class)
else
entity = GenericUnmoveable:new(x, y, color, sprite)
end
self:registerCollidable(entity, {color})
end end
self:registerCollidable(entity, {color})
end end
if entity then entity.saveClass = class end if entity then entity.saveClass = class end
return entity return entity
end end
@ -667,7 +664,7 @@ function Room:attemptPlace(name, props, mouseX, mouseY, color)
end end
function Room:load(name) function Room:load(name)
local room = love.filesystem.read("rooms/" .. name .. ".sav") local room = readFromSource("rooms/" .. name .. ".sav")
if not room then if not room then
-- no save yet: start with a blank room to build in the editor -- no save yet: start with a blank room to build in the editor
print("no save for '" .. name .. "', starting blank") print("no save for '" .. name .. "', starting blank")
@ -686,7 +683,7 @@ function Room:save()
local name = self.name or "test" local name = self.name or "test"
local room = TSerial.pack(self:serialize(), nil, true) local room = TSerial.pack(self:serialize(), nil, true)
local success = love.filesystem.write("rooms/" .. name .. ".sav", room) local success = writeToSource("rooms/" .. name .. ".sav", room)
if not success then error "great job u fool" end if not success then error "great job u fool" end
end end

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,574 +1,574 @@
{ {
objects={ objects={
{ {
name="slime_woman", y=2,
class="npc", class="npc",
x=5, x=5,
y=2 name="slime_woman"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=1, x=1,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=1, x=1,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=1, x=1,
y=1 color="red"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=2, x=2,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=2, x=2,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=2, x=2,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=3, x=3,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=3, x=3,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=3, x=3,
y=1 color="green"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=4, x=4,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=4, x=4,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=4, x=4,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=5, x=5,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=5, x=5,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=5, x=5,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=6, x=6,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=6, x=6,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=6, x=6,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=7, x=7,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=7, x=7,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=7, x=7,
y=1 color="green"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=8, x=8,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=8, x=8,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=8, x=8,
y=1 color="blue"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=9, x=9,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=9, x=9,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=9, x=9,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=10, x=10,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=10, x=10,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=10, x=10,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=11, x=11,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=11, x=11,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=11, x=11,
y=1 color="red"
}, },
{ {
color="blue", y=2,
class="static_wall", class="static_wall",
x=11, x=11,
y=2 color="blue"
}, },
{ {
color="red", y=2,
class="static_wall", class="static_wall",
x=11, x=11,
y=2 color="red"
}, },
{ {
color="green", y=2,
class="static_wall", class="static_wall",
x=11, x=11,
y=2 color="green"
}, },
{ {
color="green", y=3,
class="static_wall", class="static_wall",
x=11, x=11,
y=3 color="green"
}, },
{ {
color="blue", y=3,
class="static_wall", class="static_wall",
x=11, x=11,
y=3 color="blue"
}, },
{ {
color="red", y=3,
class="static_wall", class="static_wall",
x=11, x=11,
y=3 color="red"
}, },
{ {
color="blue", y=4,
class="static_wall", class="static_wall",
x=11, x=11,
y=4 color="blue"
}, },
{ {
color="red", y=4,
class="static_wall", class="static_wall",
x=11, x=11,
y=4 color="red"
}, },
{ {
color="green", y=4,
class="static_wall", class="static_wall",
x=11, x=11,
y=4 color="green"
}, },
{ {
color="green", y=5,
class="static_wall", class="static_wall",
x=11, x=11,
y=5 color="green"
}, },
{ {
color="red", y=5,
class="static_wall", class="static_wall",
x=11, x=11,
y=5 color="red"
}, },
{ {
color="blue", y=5,
class="static_wall", class="static_wall",
x=11, x=11,
y=5 color="blue"
}, },
{ {
color="green", y=6,
class="static_wall", class="static_wall",
x=11, x=11,
y=6 color="green"
}, },
{ {
color="red", y=6,
class="static_wall", class="static_wall",
x=11, x=11,
y=6 color="red"
}, },
{ {
color="blue", y=6,
class="static_wall", class="static_wall",
x=11, x=11,
y=6 color="blue"
}, },
{ {
color="blue", y=7,
class="static_wall", class="static_wall",
x=11, x=11,
y=7 color="blue"
}, },
{ {
color="green", y=7,
class="static_wall", class="static_wall",
x=11, x=11,
y=7 color="green"
}, },
{ {
color="red", y=7,
class="static_wall", class="static_wall",
x=11, x=11,
y=7 color="red"
}, },
{ {
color="red", y=8,
class="static_wall", class="static_wall",
x=11, x=11,
y=8 color="red"
}, },
{ {
color="blue", y=8,
class="static_wall", class="static_wall",
x=11, x=11,
y=8 color="blue"
}, },
{ {
color="green", y=8,
class="static_wall", class="static_wall",
x=11, x=11,
y=8 color="green"
}, },
{ {
color="blue", y=9,
class="static_wall", class="static_wall",
x=11, x=11,
y=9 color="blue"
}, },
{ {
color="red", y=9,
class="static_wall", class="static_wall",
x=11, x=11,
y=9 color="red"
}, },
{ {
color="green", y=9,
class="static_wall", class="static_wall",
x=11, x=11,
y=9 color="green"
}, },
{ {
color="blue", y=10,
class="static_wall", class="static_wall",
x=11, x=11,
y=10 color="blue"
}, },
{ {
color="red", y=10,
class="static_wall", class="static_wall",
x=11, x=11,
y=10 color="red"
}, },
{ {
color="green", y=10,
class="static_wall", class="static_wall",
x=11, x=11,
y=10 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=1, x=1,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=1, x=1,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=1, x=1,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=2, x=2,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=2, x=2,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=2, x=2,
y=11 color="red"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=3, x=3,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=3, x=3,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=3, x=3,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=4, x=4,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=4, x=4,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=4, x=4,
y=11 color="blue"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=5, x=5,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=5, x=5,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=5, x=5,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=6, x=6,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=6, x=6,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=6, x=6,
y=11 color="red"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=7, x=7,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=7, x=7,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=7, x=7,
y=11 color="blue"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=8, x=8,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=8, x=8,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=8, x=8,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=9, x=9,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=9, x=9,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=9, x=9,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=10, x=10,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=10, x=10,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=10, x=10,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=11, x=11,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=11, x=11,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=11, x=11,
y=11 color="green"
}, },
{ {
color="blue", y=2,
class="wall", class="box",
x=4, x=4,
y=2 color="blue"
} }
} }
} }

View file

@ -1,652 +1,652 @@
{ {
objects={ objects={
{ {
color="red", y=1,
class="door", class="door",
x=6, x=6,
y=1 color="red"
}, },
{ {
color="green", y=6,
class="door", class="door",
x=3, x=3,
y=6 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=1, x=1,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=1, x=1,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=1, x=1,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=2, x=2,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=2, x=2,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=2, x=2,
y=1 color="blue"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=3, x=3,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=3, x=3,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=3, x=3,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=4, x=4,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=4, x=4,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=4, x=4,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=5, x=5,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=5, x=5,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=5, x=5,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=7, x=7,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=7, x=7,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=7, x=7,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=8, x=8,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=8, x=8,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=8, x=8,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=9, x=9,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=9, x=9,
y=1 color="blue"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=9, x=9,
y=1 color="green"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=10, x=10,
y=1 color="green"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=10, x=10,
y=1 color="red"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=10, x=10,
y=1 color="blue"
}, },
{ {
color="red", y=1,
class="static_wall", class="static_wall",
x=11, x=11,
y=1 color="red"
}, },
{ {
color="green", y=1,
class="static_wall", class="static_wall",
x=11, x=11,
y=1 color="green"
}, },
{ {
color="blue", y=1,
class="static_wall", class="static_wall",
x=11, x=11,
y=1 color="blue"
}, },
{ {
color="green", y=2,
class="static_wall", class="static_wall",
x=1, x=1,
y=2 color="green"
}, },
{ {
color="blue", y=2,
class="static_wall", class="static_wall",
x=1, x=1,
y=2 color="blue"
}, },
{ {
color="red", y=2,
class="static_wall", class="static_wall",
x=1, x=1,
y=2 color="red"
}, },
{ {
color="green", y=3,
class="static_wall", class="static_wall",
x=1, x=1,
y=3 color="green"
}, },
{ {
color="blue", y=3,
class="static_wall", class="static_wall",
x=1, x=1,
y=3 color="blue"
}, },
{ {
color="red", y=3,
class="static_wall", class="static_wall",
x=1, x=1,
y=3 color="red"
}, },
{ {
color="green", y=4,
class="static_wall", class="static_wall",
x=1, x=1,
y=4 color="green"
}, },
{ {
color="red", y=4,
class="static_wall", class="static_wall",
x=1, x=1,
y=4 color="red"
}, },
{ {
color="blue", y=4,
class="static_wall", class="static_wall",
x=1, x=1,
y=4 color="blue"
}, },
{ {
color="green", y=5,
class="static_wall", class="static_wall",
x=1, x=1,
y=5 color="green"
}, },
{ {
color="red", y=5,
class="static_wall", class="static_wall",
x=1, x=1,
y=5 color="red"
}, },
{ {
color="blue", y=5,
class="static_wall", class="static_wall",
x=1, x=1,
y=5 color="blue"
}, },
{ {
color="blue", y=5,
class="static_wall", class="static_wall",
x=2, x=2,
y=5 color="blue"
}, },
{ {
color="green", y=5,
class="static_wall", class="static_wall",
x=2, x=2,
y=5 color="green"
}, },
{ {
color="red", y=5,
class="static_wall", class="static_wall",
x=2, x=2,
y=5 color="red"
}, },
{ {
color="green", y=5,
class="static_wall", class="static_wall",
x=3, x=3,
y=5 color="green"
}, },
{ {
color="blue", y=5,
class="static_wall", class="static_wall",
x=3, x=3,
y=5 color="blue"
}, },
{ {
color="red", y=5,
class="static_wall", class="static_wall",
x=3, x=3,
y=5 color="red"
}, },
{ {
color="red", y=6,
class="static_wall", class="static_wall",
x=1, x=1,
y=6 color="red"
}, },
{ {
color="green", y=6,
class="static_wall", class="static_wall",
x=1, x=1,
y=6 color="green"
}, },
{ {
color="blue", y=6,
class="static_wall", class="static_wall",
x=1, x=1,
y=6 color="blue"
}, },
{ {
color="green", y=7,
class="static_wall", class="static_wall",
x=1, x=1,
y=7 color="green"
}, },
{ {
color="red", y=7,
class="static_wall", class="static_wall",
x=1, x=1,
y=7 color="red"
}, },
{ {
color="blue", y=7,
class="static_wall", class="static_wall",
x=1, x=1,
y=7 color="blue"
}, },
{ {
color="red", y=7,
class="static_wall", class="static_wall",
x=2, x=2,
y=7 color="red"
}, },
{ {
color="blue", y=7,
class="static_wall", class="static_wall",
x=2, x=2,
y=7 color="blue"
}, },
{ {
color="green", y=7,
class="static_wall", class="static_wall",
x=2, x=2,
y=7 color="green"
}, },
{ {
color="blue", y=7,
class="static_wall", class="static_wall",
x=3, x=3,
y=7 color="blue"
}, },
{ {
color="green", y=7,
class="static_wall", class="static_wall",
x=3, x=3,
y=7 color="green"
}, },
{ {
color="red", y=7,
class="static_wall", class="static_wall",
x=3, x=3,
y=7 color="red"
}, },
{ {
color="blue", y=8,
class="static_wall", class="static_wall",
x=1, x=1,
y=8 color="blue"
}, },
{ {
color="green", y=8,
class="static_wall", class="static_wall",
x=1, x=1,
y=8 color="green"
}, },
{ {
color="red", y=8,
class="static_wall", class="static_wall",
x=1, x=1,
y=8 color="red"
}, },
{ {
color="red", y=9,
class="static_wall", class="static_wall",
x=1, x=1,
y=9 color="red"
}, },
{ {
color="blue", y=9,
class="static_wall", class="static_wall",
x=1, x=1,
y=9 color="blue"
}, },
{ {
color="green", y=9,
class="static_wall", class="static_wall",
x=1, x=1,
y=9 color="green"
}, },
{ {
color="red", y=10,
class="static_wall", class="static_wall",
x=1, x=1,
y=10 color="red"
}, },
{ {
color="blue", y=10,
class="static_wall", class="static_wall",
x=1, x=1,
y=10 color="blue"
}, },
{ {
color="green", y=10,
class="static_wall", class="static_wall",
x=1, x=1,
y=10 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=1, x=1,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=1, x=1,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=1, x=1,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=2, x=2,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=2, x=2,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=2, x=2,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=3, x=3,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=3, x=3,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=3, x=3,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=4, x=4,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=4, x=4,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=4, x=4,
y=11 color="red"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=5, x=5,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=5, x=5,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=5, x=5,
y=11 color="green"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=6, x=6,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=6, x=6,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=6, x=6,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=7, x=7,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=7, x=7,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=7, x=7,
y=11 color="blue"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=8, x=8,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=8, x=8,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=8, x=8,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=9, x=9,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=9, x=9,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=9, x=9,
y=11 color="blue"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=10, x=10,
y=11 color="green"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=10, x=10,
y=11 color="blue"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=10, x=10,
y=11 color="red"
}, },
{ {
color="green", y=11,
class="static_wall", class="static_wall",
x=11, x=11,
y=11 color="green"
}, },
{ {
color="red", y=11,
class="static_wall", class="static_wall",
x=11, x=11,
y=11 color="red"
}, },
{ {
color="blue", y=11,
class="static_wall", class="static_wall",
x=11, x=11,
y=11 color="blue"
}, },
{ {
color="green", y=3,
class="switch", class="switch",
x=3, x=3,
y=3 color="green"
}, },
{ {
color="red", y=6,
class="switch", class="switch",
x=6, x=6,
y=6 color="red"
}, },
{ {
color="green", y=3,
class="wall", class="box",
x=9, x=9,
y=3 color="green"
}, },
{ {
color="red", y=9,
class="wall", class="box",
x=6, x=6,
y=9 color="red"
} }
} }
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2,15 +2,15 @@ sprites = {
player = love.graphics.newImage("art/game/player.png"), player = love.graphics.newImage("art/game/player.png"),
wall = love.graphics.newImage("art/game/static_wall.png"), wall = love.graphics.newImage("art/game/static_wall.png"),
box = { box = {
red = love.graphics.newImage("art/game/wall_r.png"), red = love.graphics.newImage("art/game/box_r.png"),
green = love.graphics.newImage("art/game/wall_g.png"), green = love.graphics.newImage("art/game/box_g.png"),
blue = love.graphics.newImage("art/game/wall_b.png") blue = love.graphics.newImage("art/game/box_b.png")
}, },
door = { door = {
white = love.graphics.newImage("art/game/door_locked_w.png"), white = love.graphics.newImage("art/game/door_locked_w.png"),
red = love.graphics.newImage("art/game/door_locked_r.png"), red = love.graphics.newImage("art/game/door_r.png"),
green = love.graphics.newImage("art/game/door_locked_g.png"), green = love.graphics.newImage("art/game/door_g.png"),
blue = love.graphics.newImage("art/game/door_locked_b.png"), blue = love.graphics.newImage("art/game/door_b.png"),
unlocked = love.graphics.newImage("art/game/door_unlocked.png") unlocked = love.graphics.newImage("art/game/door_unlocked.png")
}, },
switch = { switch = {