95 lines
2.7 KiB
Lua
95 lines
2.7 KiB
Lua
-- CameraLoader = require 'lib/camera'
|
|
|
|
local character = require "lib/character/character"
|
|
require "lib/tree"
|
|
|
|
|
|
|
|
function love.conf(t)
|
|
t.console = true
|
|
end
|
|
|
|
local width = 30
|
|
local height = 30
|
|
function love.load()
|
|
character.spawn("Hero", "warrior", Tree.assets.files.sprites.character)
|
|
|
|
Map = {}
|
|
TileMap2 = require("lib.tile").load(Tree.assets.files.tiles.grass)
|
|
for y = 0, height - 1 do
|
|
Map[y] = {}
|
|
for x = 0, width - 1 do
|
|
local type = TileMap2["flower_grass"]
|
|
Map[y][x] = type[math.random(1, #type)]
|
|
end
|
|
end
|
|
|
|
-- PlayerFaction.characters = { Hero1, Hero2 }
|
|
love.window.setMode(1080, 720, { resizable = true, msaa = 4, vsync = true })
|
|
end
|
|
|
|
local lt = "0"
|
|
function love.update(dt)
|
|
local t1 = love.timer.getTime()
|
|
Tree.controls:poll()
|
|
Tree.panning:update(dt)
|
|
Tree.level:update(dt)
|
|
Tree.controls:cache()
|
|
local t2 = love.timer.getTime()
|
|
lt = string.format("%.3f", (t2 - t1) * 1000)
|
|
end
|
|
|
|
local function coverTransform(img, containerW, containerH)
|
|
local iw, ih = img:getWidth(), img:getHeight()
|
|
local scale = math.max(containerW / iw, containerH / ih)
|
|
local sw, sh = iw * scale, ih * scale
|
|
local offsetX = (containerW - sw) * 0.5
|
|
local offsetY = (containerH - sh) * 0.5
|
|
return scale, offsetX, offsetY, sw, sh
|
|
end
|
|
|
|
local dt = "0"
|
|
function love.draw()
|
|
local t1 = love.timer.getTime()
|
|
local scale, ox, oy = coverTransform(Tree.assets.files.cats, love.graphics.getWidth(), love.graphics.getHeight())
|
|
|
|
love.graphics.push()
|
|
love.graphics.translate(ox, oy)
|
|
love.graphics.scale(scale, scale)
|
|
love.graphics.draw(Tree.assets.files.cats, 0, 0)
|
|
love.graphics.pop()
|
|
|
|
Tree.level.camera:attach()
|
|
for y = 0, height - 1 do
|
|
for x = 0, width - 1 do
|
|
love.graphics.draw(TileMap2.atlas, Map[x][y], x, y,
|
|
nil, 1 / 32, 1 / 32)
|
|
end
|
|
end
|
|
|
|
--- Это отрисовка пути персонажа к мышке
|
|
if Tree.level.selector.id then
|
|
local charPos = Tree.level.characters[Tree.level.selector.id].logic.mapLogic.position:floor()
|
|
--- @type Vec3
|
|
local mpos = Tree.level.camera:toWorldPosition(Vec3 { love.mouse.getX(), love.mouse.getY() }):floor()
|
|
local path = (require "lib.pathfinder")(charPos, mpos)
|
|
|
|
love.graphics.setColor(0.6, 0.75, 0.5)
|
|
for p in path:values() do
|
|
love.graphics.circle("fill", p.x + 0.45, p.y + 0.45, 0.1)
|
|
end
|
|
love.graphics.setColor(1, 1, 1)
|
|
end
|
|
|
|
|
|
|
|
Tree.level:draw()
|
|
Tree.level.camera:detach()
|
|
|
|
local stats = "fps: " .. love.timer.getFPS() .. " lt: " .. lt .. " dt: " .. dt
|
|
love.graphics.print(stats, 10, 10)
|
|
|
|
local t2 = love.timer.getTime()
|
|
dt = string.format("%.3f", (t2 - t1) * 1000)
|
|
end
|