level editor improvements
29
_helpers.lua
|
|
@ -16,3 +16,32 @@ end
|
|||
function lerp(a, b, amount)
|
||||
return (1 - amount) * a + (amount * b)
|
||||
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
|
|
@ -0,0 +1 @@
|
|||
{class="moveable"}
|
||||
|
Before Width: | Height: | Size: 879 B After Width: | Height: | Size: 879 B |
|
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 890 B |
|
Before Width: | Height: | Size: 879 B After Width: | Height: | Size: 879 B |
1
art/game/door.meta
Normal file
|
|
@ -0,0 +1 @@
|
|||
{class="door"}
|
||||
|
Before Width: | Height: | Size: 147 B After Width: | Height: | Size: 147 B |
|
Before Width: | Height: | Size: 159 B After Width: | Height: | Size: 159 B |
|
Before Width: | Height: | Size: 162 B After Width: | Height: | Size: 162 B |
1
art/game/player.meta
Normal file
|
|
@ -0,0 +1 @@
|
|||
{class="player"}
|
||||
1
art/game/static_wall.meta
Normal file
|
|
@ -0,0 +1 @@
|
|||
{class="immoveable"}
|
||||
1
art/game/switch.meta
Normal file
|
|
@ -0,0 +1 @@
|
|||
{class="switch"}
|
||||
|
|
@ -297,8 +297,10 @@ end
|
|||
|
||||
function saveAsset()
|
||||
gameAssets[selectedAsset] = assetProperties
|
||||
local save = TSerial.pack(gameAssets, nil, true)
|
||||
love.filesystem.write("assets.prop", save)
|
||||
-- the asset's class lives in its .meta next to the art (source of truth,
|
||||
-- read back by getAllAssets); write it there
|
||||
local metaPath = "art/" .. assetProperties.directory .. "/" .. selectedAsset .. ".meta"
|
||||
writeToSource(metaPath, TSerial.pack({ class = assetProperties.class }, nil, true))
|
||||
assetsView()
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,18 @@ function getAllAssets()
|
|||
globalAssetProperties[name] = {}
|
||||
globalAssetProperties[name].directory = folder
|
||||
globalAssetProperties[name].sprites = {}
|
||||
globalAssetProperties[name].class = "unmoveable"
|
||||
globalAssetProperties[name].preload = false
|
||||
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
|
||||
globalAssetProperties[name].sprites[color] = sprite
|
||||
|
||||
|
|
@ -45,7 +53,5 @@ function getAllAssets()
|
|||
end
|
||||
end
|
||||
|
||||
str = TSerial.pack(globalAssetProperties, nil, true)
|
||||
love.filesystem.write("assets.prop", str)
|
||||
return globalAssetProperties
|
||||
end
|
||||
2
main.lua
|
|
@ -15,7 +15,7 @@ require "sprite_manager"
|
|||
require "level_editor/editor"
|
||||
|
||||
function love.load()
|
||||
globalAssetProperties = TSerial.unpack(love.filesystem.read("assets.prop") or "{}")
|
||||
globalAssetProperties = {} -- rebuilt from the filesystem (art/ + .meta) by getAllAssets
|
||||
|
||||
_initDefaults()
|
||||
_initGridVars()
|
||||
|
|
|
|||
43
room.lua
|
|
@ -533,43 +533,40 @@ function Room:nextRoomCheck()
|
|||
end
|
||||
|
||||
|
||||
-- Instantiate one object from the flat {class,color,x,y} schema. `class` is a
|
||||
-- key: the built-in behaviour classes (door/switch/player) plus the two generic
|
||||
-- grid pieces (wall/static_wall), and finally any art asset resolved by name via
|
||||
-- the globalAssetProperties registry (this is what the level editor places).
|
||||
-- Instantiate one object from the flat {class,color,x,y} schema. `class` names an
|
||||
-- art asset, and its .meta declares the behaviour ("door"/"switch"/"player"/
|
||||
-- "moveable"); anything without a .meta defaults to immoveable. npc is the one
|
||||
-- keyword handled directly since it has no art.
|
||||
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
|
||||
if class == "door" then
|
||||
|
||||
if behavior == "door" then
|
||||
entity = Door:new(x, y)
|
||||
self:registerDoor(entity)
|
||||
elseif class == "switch" then
|
||||
elseif behavior == "switch" then
|
||||
entity = Switch:new(x, y, color)
|
||||
self:registerSwitch(entity, color)
|
||||
elseif class == "player" then
|
||||
elseif behavior == "player" then
|
||||
entity = Player:new(x, y, color)
|
||||
self:registerPlayer(entity, color)
|
||||
self:setActiveColor(color, true)
|
||||
elseif class == "wall" then
|
||||
entity = GenericUnmoveable:new(x, y, color, sprites.box[color])
|
||||
self:registerCollidable(entity, {color})
|
||||
elseif class == "static_wall" then
|
||||
entity = GenericUnmoveable:new(x, y, color, sprites.wall)
|
||||
self:registerCollidable(entity, {color})
|
||||
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
|
||||
elseif props and props.sprites and props.sprites[color] then
|
||||
local sprite = loadPlaceImage(props.sprites[color])
|
||||
if props.class == "moveable" then
|
||||
if behavior == "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
|
||||
|
||||
if entity then entity.saveClass = class end
|
||||
return entity
|
||||
end
|
||||
|
|
@ -667,7 +664,7 @@ function Room:attemptPlace(name, props, mouseX, mouseY, color)
|
|||
end
|
||||
|
||||
function Room:load(name)
|
||||
local room = love.filesystem.read("rooms/" .. name .. ".sav")
|
||||
local room = readFromSource("rooms/" .. name .. ".sav")
|
||||
if not room then
|
||||
-- no save yet: start with a blank room to build in the editor
|
||||
print("no save for '" .. name .. "', starting blank")
|
||||
|
|
@ -686,7 +683,7 @@ function Room:save()
|
|||
local name = self.name or "test"
|
||||
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
|
||||
end
|
||||
|
||||
|
|
|
|||
588
rooms/2.sav
616
rooms/3.sav
528
rooms/4.sav
578
rooms/5.sav
1360
rooms/start.sav
|
|
@ -1,574 +1,574 @@
|
|||
{
|
||||
objects={
|
||||
{
|
||||
name="slime_woman",
|
||||
y=2,
|
||||
class="npc",
|
||||
x=5,
|
||||
y=2
|
||||
name="slime_woman"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=2,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=2
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=2,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=2
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=2,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=2
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=3,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=3
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=3,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=3
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=3,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=3
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=4,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=4
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=4,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=4
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=4,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=4
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=5
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=5
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=5
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=6,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=6
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=6,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=6
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=6,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=6
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=7
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=7
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=7
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=8,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=8
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=8,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=8
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=8,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=8
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=9,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=9
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=9,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=9
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=9,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=9
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=10,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=10
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=10,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=10
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=10,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=10
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
class="wall",
|
||||
y=2,
|
||||
class="box",
|
||||
x=4,
|
||||
y=2
|
||||
color="blue"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,652 +1,652 @@
|
|||
{
|
||||
objects={
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="door",
|
||||
x=6,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=6,
|
||||
class="door",
|
||||
x=3,
|
||||
y=6
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=1
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=1
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=1,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=1
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=2,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=2
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=2,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=2
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=2,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=2
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=3,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=3
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=3,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=3
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=3,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=3
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=4,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=4
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=4,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=4
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=4,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=4
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=5
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=5
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=5
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=5
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=5
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=5
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=5
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=5
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=5,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=5
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=6,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=6
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=6,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=6
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=6,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=6
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=7
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=7
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=7
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=7
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=7
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=7
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=7
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=7
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=7,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=7
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=8,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=8
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=8,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=8
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=8,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=8
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=9,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=9
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=9,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=9
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=9,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=9
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=10,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=10
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=10,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=10
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=10,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=10
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=1,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=2,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=3,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=4,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=5,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=6,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=7,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=8,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=9,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=10,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=11
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=11
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="blue",
|
||||
y=11,
|
||||
class="static_wall",
|
||||
x=11,
|
||||
y=11
|
||||
color="blue"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
y=3,
|
||||
class="switch",
|
||||
x=3,
|
||||
y=3
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
y=6,
|
||||
class="switch",
|
||||
x=6,
|
||||
y=6
|
||||
color="red"
|
||||
},
|
||||
{
|
||||
color="green",
|
||||
class="wall",
|
||||
y=3,
|
||||
class="box",
|
||||
x=9,
|
||||
y=3
|
||||
color="green"
|
||||
},
|
||||
{
|
||||
color="red",
|
||||
class="wall",
|
||||
y=9,
|
||||
class="box",
|
||||
x=6,
|
||||
y=9
|
||||
color="red"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,15 +2,15 @@ sprites = {
|
|||
player = love.graphics.newImage("art/game/player.png"),
|
||||
wall = love.graphics.newImage("art/game/static_wall.png"),
|
||||
box = {
|
||||
red = love.graphics.newImage("art/game/wall_r.png"),
|
||||
green = love.graphics.newImage("art/game/wall_g.png"),
|
||||
blue = love.graphics.newImage("art/game/wall_b.png")
|
||||
red = love.graphics.newImage("art/game/box_r.png"),
|
||||
green = love.graphics.newImage("art/game/box_g.png"),
|
||||
blue = love.graphics.newImage("art/game/box_b.png")
|
||||
},
|
||||
door = {
|
||||
white = love.graphics.newImage("art/game/door_locked_w.png"),
|
||||
red = love.graphics.newImage("art/game/door_locked_r.png"),
|
||||
green = love.graphics.newImage("art/game/door_locked_g.png"),
|
||||
blue = love.graphics.newImage("art/game/door_locked_b.png"),
|
||||
red = love.graphics.newImage("art/game/door_r.png"),
|
||||
green = love.graphics.newImage("art/game/door_g.png"),
|
||||
blue = love.graphics.newImage("art/game/door_b.png"),
|
||||
unlocked = love.graphics.newImage("art/game/door_unlocked.png")
|
||||
},
|
||||
switch = {
|
||||
|
|
|
|||