
local walk_speed = 2
local walk_distance = 10

minetest.register_entity("soundstuff:bigfoot", {
	initial_properties = {
		physical = false,
		collisionbox = {-1, -1, -1, 1, 1, 1},
		selectionbox = {-1, -1, -1, 1, 1, 1},
		visual = "upright_sprite",
		visual_size = {x = 2, y = 2, z = 2},
		textures = {"soundstuff_bigfoot.png", "soundstuff_bigfoot.png^[transformFX"},
		makes_footstep_sound = true,
		static_save = false,
	},

	on_activate = function(self, _staticdata, _dtime_s)
		self.min_x = self.object:get_pos().x - walk_distance * 0.5
		self.max_x = self.min_x + walk_distance
		self.vel = vector.new(walk_speed, 0, 0)
	end,

	on_step = function(self, _dtime, _moveresult)
		local pos = self.object:get_pos()
		if pos.x < self.min_x then
			self.vel = vector.new(walk_speed, 0, 0)
		elseif pos.x > self.max_x then
			self.vel = vector.new(-walk_speed, 0, 0)
		end
		self.object:set_velocity(self.vel)
	end,
})

minetest.register_chatcommand("spawn_bigfoot", {
	params = "",
	description = "Spawn a big foot object that makes footstep sounds",
	func = function(name, _param)
		local player = minetest.get_player_by_name(name)
		if not player then
			return false, "No player."
		end
		local pos = player:get_pos()
		pos.y = pos.y + player:get_properties().collisionbox[2]
		pos.y = pos.y - (-1) -- bigfoot collisionbox goes 1 down
		minetest.add_entity(pos, "soundstuff:bigfoot")
		return true
	end,
})
