Code: Select all
Tileset = love.graphics.newImage('tile.bmp')
TileW, TileH = 50,50
tilesetW, tilesetH = Tileset:getWidth(), Tileset:getHeight()
grassq = love.graphics.newQuad(0, 0, TileW, TileH, tilesetW, tilesetH)
BoxQuad = love.graphics.newQuad(32, 0, TileW, TileH, tilesetW, tilesetH)
local tileString = [[
ssssssssssssssss
ssssssssssssssss
ssssssssssssssss
ssssssssssssssss
ssssssssssssssss
ssssssssssssssss
wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww
]]
local quadInfo = {
{ 's', 0, 0 , 0 }, -- sand
{ 'w', 50, 0 , 1}, -- water
{ '#', 10, 0, 0 }, -- tiles
{ 'g', 150, 0 , 0 }, -- grass
}
Quads = {}
for _,info in ipairs(quadInfo) do
-- info[1] = character, info[2]= x, info[3] = y
Quads[info[1]] = love.graphics.newQuad(info[2], info[3], TileW, TileH, tilesetW, tilesetH)
end
TileTable = {}
local width = #(tileString:match("[^\n]+"))
for x = 1,width,1 do TileTable[x] = {} end
local rowIndex,columnIndex = 1,1
for row in tileString:gmatch("[^\n]+") do
assert(#row == width, 'Map is not aligned: width of row ' .. tostring(rowIndex) .. ' should be ' .. tostring(width) .. ', but it is ' .. tostring(#row))
columnIndex = 1
for character in row:gmatch(".") do
TileTable[columnIndex][rowIndex] = character
columnIndex = columnIndex + 1
end
rowIndex=rowIndex+1
end
columntest = 1
rowtest = 1
function drawmap()
for columnIndex,column in ipairs(TileTable) do
for rowIndex,char in ipairs(column) do
local x,y = (columnIndex-columntest)*TileW, (rowIndex-rowtest)*TileH
love.graphics.drawq(Tileset, Quads[char], x, y)
end
end
end