place-sounds/control.lua

Wed, 27 Aug 2025 10:26:12 +0300

author
Teemu Piippo <teemu.s.piippo@gmail.com>
date
Wed, 27 Aug 2025 10:26:12 +0300
changeset 19
adbc5c74f279
parent 12
2e09a72b2dfa
permissions
-rw-r--r--

Lots of stuff

---@param entity LuaEntity
local function should_play_entity_sounds(entity)
	return not (entity.type == "electric-pole" or entity.type == "wall" or entity.name == "stone-furnace")
end

---@param entity LuaEntity
---@param sound_path SoundPath
local function try_play_sound(entity, sound_path, position)
	if helpers.is_valid_sound_path(sound_path)
	then
		entity.surface.play_sound{
			path=sound_path,
			position=entity.position,
		}
		return true
	else
		return false
	end
end

local function play_drop_sounds(entity, position)
	if not (should_play_entity_sounds(entity) and try_play_sound(entity, "entity-close/"..entity.name))
	then
		try_play_sound(entity, "item-drop/"..entity.name)
	end
end

local function play_mined_sounds(entity, position)
	if not (should_play_entity_sounds(entity) and try_play_sound(entity, "entity-open/"..entity.name, position))
	then
		try_play_sound(entity, "item-pick/"..entity.name, position)
	end
end

script.on_event(defines.events.on_built_entity, function(event)
	play_drop_sounds(event.entity, game.players[event.player_index].position)
end)

script.on_event(defines.events.on_robot_built_entity, function(event)
	play_drop_sounds(event.entity, event.entity.position)
end)

script.on_event(defines.events.on_space_platform_built_entity, function(event)
	play_drop_sounds(event.entity, event.entity.position)
end)

script.on_event(defines.events.on_player_mined_entity, function(event)
	play_mined_sounds(event.entity, game.players[event.player_index].position)
end)

script.on_event(defines.events.on_robot_mined_entity, function(event)
	play_mined_sounds(event.entity, event.entity.position)
end)

script.on_event(defines.events.on_space_platform_mined_entity, function(event)
	play_mined_sounds(event.entity, event.entity.position)
end)

mercurial