perf(kæde): priser slås kun op for kandidatmarker, fanen genbruger resultater under 30 s og kæden måles af profileren

This commit is contained in:
2026-09-30 14:27:08 +02:00
parent 9e34a16dfa
commit 83394aabfd
4 changed files with 41 additions and 18 deletions
+5 -12
View File
@@ -1,22 +1,15 @@
-- Smart Pickup — fanen Kæder
-- Produktionskæderne som træ: rod (produktion spilleren har tændt) -> varer -> råvarer, med kilde, behov pr.
-- måned og flowstatus; afgrødeforslag kan godkendes/afvises og en rod sættes på pause. Rækkerne bygges af
-- ADChainView (testet); her kun kloning, farve og klik. Evaluering højst hvert CHAIN_EVALUATE_MS (visning, handler ikke).
-- ADChainView (testet); her kun kloning, farve og klik. Et resultat yngre end CHAIN_MAX_AGE_MS (fra kædens eget
-- tick eller en tidligere visning) genbruges; ellers evalueres (visning, handler ikke). Klik evaluerer altid.
SmartPickupFrame.CHAIN_EVALUATE_MS = 5000
-- Spillets ur i ms; uden g_time evalueres ved hver opbygning (der kun sker hvert CHAIN_REBUILD_TICKS s).
local function nowMs()
return type(g_time) == "number" and g_time or nil
end
SmartPickupFrame.CHAIN_MAX_AGE_MS = 30000
function SmartPickupFrame:chainLast(adEnv, force)
local now = nowMs()
local due = force or ADChain.last == nil or now == nil or self.chainEvaluatedAt == nil
or now - self.chainEvaluatedAt >= SmartPickupFrame.CHAIN_EVALUATE_MS
if due then
local age = ADChain.lastAge ~= nil and ADChain.lastAge() or math.huge
if force or ADChain.last == nil or age >= SmartPickupFrame.CHAIN_MAX_AGE_MS then
ADChain.evaluate(adEnv)
self.chainEvaluatedAt = now
end
return ADChain.last
end