| @@ -0,0 +1,47 @@ | |||
| -- bring in the util module | |||
| local util = require("util") | |||
| local entities = {} | |||
| -- initialize the entities table | |||
| function entities.init() | |||
| entities.staticEntities = {} | |||
| entities.dynamicEntities = {} | |||
| end | |||
| -- load all sprites to memory | |||
| function entities.loadSprites() | |||
| entities.sprites = {} | |||
| entities.sprites.town = love.graphics.newImage("img/building.png") | |||
| end | |||
| -- create a new static entity that will always align with the map grid | |||
| function entities.newStatic(x, y, z, type) | |||
| local static = {} | |||
| static.x = x | |||
| static.y = y | |||
| static.z = z | |||
| static.type = type | |||
| table.insert(entities.staticEntities, static) | |||
| end | |||
| -- render all entities | |||
| function entities.render(offset) | |||
| -- render static entities | |||
| for _, entity in ipairs(entities.staticEntities) do | |||
| local type = entity.type | |||
| local loc = util.cartToIso({x = entity.x, y = entity.y}) | |||
| if type == "town" then | |||
| image = entities.sprites.town | |||
| end | |||
| if image ~= nil then | |||
| love.graphics.draw(image, loc.x * 16 + offset.x, loc.y * 16 + offset.y - entity.z * 16) | |||
| end | |||
| end | |||
| end | |||
| return entities | |||
| @@ -1,5 +1,7 @@ | |||
| -- world module | |||
| local world = require("world") | |||
| -- entities module | |||
| local entities = require("entities") | |||
| -- love's load function | |||
| function love.load() | |||
| @@ -8,10 +10,16 @@ function love.load() | |||
| x = 304, | |||
| y = 48 | |||
| } | |||
| -- generate the world and load the files | |||
| world.new(20, 20, 3) | |||
| world.generate() | |||
| world.loadTiles() | |||
| -- entities initialization | |||
| entities.init() | |||
| entities.loadSprites() | |||
| entities.newStatic(7, 7, 3, "town") | |||
| end | |||
| -- love's update function | |||
| @@ -50,4 +58,7 @@ function love.draw() | |||
| -- draw the map | |||
| world.render(offset) | |||
| -- draw the entities | |||
| entities.render(offset) | |||
| end | |||
| @@ -16,7 +16,7 @@ local world = {} | |||
| for y = 1, world.depth do | |||
| world[x][y] = {} | |||
| for z = 1, world.height do | |||
| world[x][y][z] = "nothing" | |||
| world[x][y][z] = "air" | |||
| end | |||
| end | |||
| end | |||
| @@ -24,7 +24,22 @@ local world = {} | |||
| -- generates a world, should be called after world.new() | |||
| function world.generate() | |||
| -- draw the bottom layer of dirt | |||
| for x = 1, world.width do | |||
| for y = 1, world.depth do | |||
| world[x][y][1] = "dirt" | |||
| end | |||
| end | |||
| -- draw the grass | |||
| for x = 1, world.width do | |||
| for y = 1, world.depth do | |||
| world[x][y][2] = "grass" | |||
| end | |||
| end | |||
| -- draw a stream | |||
| for x = 1, world.width do | |||
| world[x][5][2] = "water" | |||
| end | |||
| end | |||
| -- load the tile files | |||
| @@ -50,16 +65,20 @@ local world = {} | |||
| image = world.tiles.dirt | |||
| elseif tile == "water" then | |||
| image = world.tiles.water | |||
| elseif tile == "air" then | |||
| image = nil | |||
| else | |||
| image = world.tiles.nothing | |||
| end | |||
| love.graphics.draw(image, loc.x * 16 + offset.x, loc.y * 16 + offset.y - z * 16) | |||
| if image ~= nil then | |||
| love.graphics.draw(image, loc.x * 16 + offset.x, loc.y * 16 + offset.y - z * 16) | |||
| end | |||
| end | |||
| end | |||
| end | |||
| if not world.hover == nil then | |||
| if world.hover ~= nil then | |||
| love.graphics.draw(world.select, world.hover.x, world.hover.y) | |||
| end | |||
| end | |||