-- sapling growth
-- these tables only affect hand-placed saplings
-- mapgen-placed always use their biome def settings, which are much more
-- limited, in the interest of speed.

local dirt_surfaces = {
	set = true,
	[xcompat.materials.dirt] = true,
	[xcompat.materials.dirt_with_grass] = true,
	["default:dirt_with_dry_grass"] = true,
	["default:dirt_with_coniferous_litter"] = true,
	["default:dirt_with_rainforest_litter"] = true,
	["woodsoils:dirt_with_leaves_1"] = true,
	["woodsoils:dirt_with_leaves_2"] = true,
	["woodsoils:grass_with_leaves_1"] = true,
	["woodsoils:grass_with_leaves_2"] = true
}

local conifer_surfaces =  {
	set = true,
	[xcompat.materials.dirt] = true,
	[xcompat.materials.dirt_with_grass] = true,
	["default:dirt_with_dry_grass"] = true,
	["default:dirt_with_coniferous_litter"] = true,
	["default:dirt_with_rainforest_litter"] = true,
	["woodsoils:dirt_with_leaves_1"] = true,
	["woodsoils:dirt_with_leaves_2"] = true,
	["woodsoils:grass_with_leaves_1"] = true,
	["woodsoils:grass_with_leaves_2"] = true,
	["default:dirt_with_snow"] = true
}

local sand_surfaces = {
	set = true,
	[xcompat.materials.sand] = true,
	[xcompat.materials.desert_sand] = true,
	["cottages:loam"] = true,
	-- note, no silver sand here.
	-- too cold for a palm, too... well... sandy for anything else.
}

function moretrees.can_grow(pos, treename)
	local surfaces

	if treename == "spruce"
	  or treename == "fir"
	  or treename == "cedar"
	  or treename == "pine" then
		surfaces = conifer_surfaces
	elseif string.find(treename, "palm") then
		surfaces = sand_surfaces
	else
		surfaces = dirt_surfaces
	end

	if surfaces[minetest.get_node(vector.new(pos.x, pos.y-1, pos.z)).name] then
		return true
	else
		return false
	end
end

--[[ for i in ipairs(moretrees.treelist) do
	local treename = moretrees.treelist[i][1]
	local tree_model = treename.."_model"
	local tree_biome = treename.."_biome"
	local surfaces
	local grow_function = moretrees[tree_model]

	if treename == "spruce"
	  or treename == "fir"
	  or treename == "cedar"
	  or treename == "pine" then
		surfaces = conifer_surfaces
	elseif string.find(treename, "palm") then
		surfaces = sand_surfaces
	else
		surfaces = dirt_surfaces
	end

	if treename == "spruce"
	  or treename == "fir"
	  or treename == "birch"
	  or treename == "jungletree" then
		grow_function = "moretrees.grow_"..treename
	end

	biome_lib.dbg(dump(moretrees[tree_biome].surface), 4)

	biome_lib:grow_plants({
		grow_delay = moretrees.sapling_interval,
		grow_chance = moretrees.sapling_chance,
		grow_plant = "moretrees:"..treename.."_sapling",
		grow_nodes = surfaces,
		grow_function = grow_function,
	})

	biome_lib:grow_plants({
		grow_delay = 2,
		grow_chance = 1,
		grow_plant = "moretrees:"..treename.."_sapling_ongen",
		grow_nodes = surfaces,
		grow_function = grow_function,
	})
end ]]
