Entity = class("Entity") function Entity:initialize(t) self.x, self.y = t.x, t.y self.size = {x = t.sizeX, y = t.sizeY} self.color = Color:new(t.color) self.collision = t.collision --"none", "moveable", "unmoveable" self.sprite = t.sprite self.shaAmount = t.sha or 1 end function Entity:atGridPos(x, y) -- print(x, y, self.x, self.y, self.x + self.size.x, self.y + self.size.y) if x >= self.x and y >= self.y and x < self.x + self.size.y and y < self.y + self.size.y then return true end return false end function Entity:getGridPos() return {x = self.x, y = self.y} end function Entity:getDrawPos() local gridPos = self:getGridPos() return { x = (gridPos.x - 1) * width / gridWidth, y = (gridPos.y - 1) * height / gridHeight } end function Entity:tick() end function Entity:draw() love.graphics.setColor(self.color:set()) local p = self:getDrawPos() love.graphics.draw(self.sprite, p.x + self:sha(), p.y + self:sha(), 0, drawScale, drawScale) end function Entity:isAlignedWithPlayerMovement(axis, pos, direction) -- print(axis, pos[axis], self:getGridPos()[axis], self:getGridPos()[axis] + self.size[axis]) if self:getGridPos()[axis] <= pos[axis] and self:getGridPos()[axis] + self.size[axis] > pos[axis] then print("true!!") return true end return false end function Entity:canMove() if self.collision == "unmoveable" then return false end return true end function Entity:move(axis, direction) self[axis] = self[axis] + direction end function Entity:sha() return math.random(-self.shaAmount, self.shaAmount) * .5 end