Compare commits

...

2 Commits

Author SHA1 Message Date
7d4c856832 cache my beloved
Co-authored-by: Ivan Yuriev <ivanyr44@gmail.com>
2025-08-21 22:43:09 +03:00
e700045c47 pryamougolnique help
Co-authored-by: Ivan Yuriev <ivanyr44@gmail.com>
2025-08-21 22:42:53 +03:00
2 changed files with 21 additions and 6 deletions

View File

@ -10,6 +10,8 @@ local utils = require "lib.utils.utils"
local level = {}
level.__index = level
local path = nil
--- @param type "procedural"|"handmaded"
--- @param template Procedural|Handmaded
local function new(type, template)
@ -25,11 +27,25 @@ local function new(type, template)
}, level)
end
local mposCache = nil
function level:update(dt)
self.characterGrid:reset()
utils.each(self.characters, function(el)
el:update(dt)
end)
if self.characters[self.selector.id] then
local charPos = self.characters[self.selector.id].logic.mapLogic.position:floor()
--- @type Vec3
local mpos = self.camera:toWorldPosition(Vec3 { love.mouse.getX(), love.mouse.getY() }):floor()
-- ДУШИ здесь больше нет, приводите рыжих обратно
if not path or tostring(mpos) ~= mposCache then
path = require "lib.pathfinder" (charPos, mpos) -- ?????
end
mposCache = tostring(mpos)
-- path = (require "lib.pathfinder")(charPos, mpos)
end
self.camera:update(dt)
self.selector:update(dt)
end
@ -38,12 +54,7 @@ function level:draw()
self.map:draw()
--- Это отрисовка пути персонажа к мышке
if self.selector.id then
local charPos = self.characters[self.selector.id].logic.mapLogic.position:floor()
--- @type Vec3
local mpos = self.camera:toWorldPosition(Vec3 { love.mouse.getX(), love.mouse.getY() }):floor()
local path = (require "lib.pathfinder")(charPos, mpos)
if self.selector.id and path then
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)

View File

@ -1,5 +1,6 @@
local Vec3 = require "lib.utils.vec3"
local ui = require "lib.ui.core"
local controls = require "lib.controls"
--- @type Rectangle
local ReactiveRectangle = ui.Rectangle {
@ -14,6 +15,9 @@ function ReactiveRectangle:update(dt)
if mx > self.origin.x and mx < self.origin.x + self.size.x
and my > self.origin.y and my < self.origin.y + self.size.y
then
if controls:isJustPressed("select") then
controls:consume("select")
end
self.color = { 0, 1, 0 }
else
self.color = { 1, 0, 0 }