Peradventure/lua_scripts/map.lua

66 lines
2.2 KiB
Lua

local map = {
map_tiles = {
{ "-", "-", "w", "w", "-", "-", "-", "-", "-", "-" },
{ "-", "_", "w", "w", "-", "-", "-", "-", "-", "-" },
{ "-", "-", "w", "w", "-", "w", "-", "-", "-", "-" },
{ "w", "-", "-", "-", "w", "w", "-", "-", "-", "-" },
{ "w", "-", "ww", "-", "-", "w", "w", "w", "-", "-" },
{ "w", "-", "ww", "-", "-", "w", "-", "-", "-", "-" },
{ "-", "-", "ww", "-", "-", "w", "-", "w", "-", "-" },
{ "-", "-", "-", "-", "-", "-", "-", "w", "-", "-" },
{ "-", "-", "ww", "-", "-", "-", "-", "w", "w", "-" },
{ "-", "-", "ww", "-", "-", "-", "-", "-", "w", "-" }
},
tileset = {
display = { "-", "_", "w", "ww" },
db = { "floor_stone,", "floor_wood", "wall_stone", "wall_wood" }
},
mapCrypt = function(self, tile)
-- stores tiles as detailed names within the DB
for i=1, #self.tileset.display do
if self.tileset.display[i] == tile then
return self.tileset.db[i]
end
end
end,
mapDecrypt = function(self, tile)
-- Decodes tiles into their type (represented by char) and their material
local tileset = {}
if string.find(tile, "wall") then
tileset.char = "w"
elseif string.find(tile, "floor") then
tileset.char = "-"
end
if string.find(tile, "stone") then
tileset.material = "stone"
elseif string.find(tile, "wood") then
tileset.material = "wood"
end
return tileset
end,
-- Map Populate / check if map exists
populate = function(self, map, game)
for h = 1, 10 do
for i = 1, 10 do
local tile = map:create({
x = h,
y = i,
occupied_by_type = self:mapCrypt(self.map_tiles[h][i]),
occupied_by_id = "",
game_ref = game
})
end
end
end,
mapExists = function(self, map)
local f = map:select("limit 1")
if not f[1] then
return false
else
return true
end
end,
}
return map