local this = {}

local function score(r, res)
    assert(r)
    res = res or "peasant"
    local x, y, rn
    local peas = r:get_resource(res)
    for _, rn in pairs(r.adj) do
        if rn and not rn.units() then
            peas = peas + rn:get_resource(res)
        end
    end
    return peas
end

local function select(regions, peasants, trees)
    local sel = {}
    for r in regions do
        if not r.plane and r.terrain~="ocean" and not r.units() then
            if score(r, "peasant") >= peasants and score(r, "tree") >= trees then
                table.insert(sel, r)
            end
        end
    end
    return sel
end

return {
    score = score,
    select = select
}