33 lines
1.6 KiB
Lua
33 lines
1.6 KiB
Lua
-- AD Manual Transport
|
|
-- Brede høstere (mejetærsker med skærebord) kan ikke køre på vejene: spilleren kører dem til marken, monterer
|
|
-- skærebordet og stiger ud; moden overtager derfra. Rene regler (testbare uden spillet); spil-delen ligger i
|
|
-- adFieldWork.
|
|
|
|
ADManualTransport = {}
|
|
|
|
ADManualTransport.REMIND_MS = 300000 -- påmindelse hvert 5. minut, mens moden venter på spilleren
|
|
|
|
-- Må høsteren vælges til marken? Manuel: ja — skærebordet monteres først på marken (tjekkes ved overtagelse).
|
|
-- Ellers skal det monterede skærebord kunne tage afgrøden.
|
|
function ADManualTransport.acceptsHarvester(candidate, fruit)
|
|
if fruit == nil then return false end
|
|
if candidate.manual then return true end
|
|
return candidate.fruits ~= nil and candidate.fruits[fruit] == true
|
|
end
|
|
|
|
-- Klar til overtagelse? s = {atField, fruits = {[fruit] = true}, fruit, controlled, forced}.
|
|
-- Returnerer true, eller false + grund: "notThere" | "noHeader" | "wrongHeader" | "playerInside".
|
|
-- forced ("Start nu"): sted og spiller springes over, skærebordet tjekkes stadig.
|
|
function ADManualTransport.readiness(s)
|
|
if not s.forced and not s.atField then return false, "notThere" end
|
|
local fruits = s.fruits or {}
|
|
if next(fruits) == nil then return false, "noHeader" end
|
|
if s.fruit == nil or not fruits[s.fruit] then return false, "wrongHeader" end
|
|
if not s.forced and s.controlled then return false, "playerInside" end
|
|
return true
|
|
end
|
|
|
|
function ADManualTransport.shouldRemind(lastAt, now)
|
|
return lastAt == nil or now - lastAt >= ADManualTransport.REMIND_MS
|
|
end
|