package org.terasology.componentSystem.action; import org.terasology.audio.Sound; import org.terasology.components.actions.PlaySoundActionComponent; import org.terasology.entitySystem.EntityRef; import org.terasology.entitySystem.EventHandlerSystem; import org.terasology.entitySystem.ReceiveEvent; import org.terasology.entitySystem.RegisterComponentSystem; import org.terasology.events.ActivateEvent; import org.terasology.logic.manager.AudioManager; import org.terasology.logic.manager.SoundManager; import org.terasology.utilities.FastRandom; import javax.vecmath.Vector3f; /** * @author Immortius <immortius@gmail.com> */ @RegisterComponentSystem public class PlaySoundAction implements EventHandlerSystem { private FastRandom random = new FastRandom(); public void initialise() { } @Override public void shutdown() { } @ReceiveEvent(components = {PlaySoundActionComponent.class}) public void onActivate(ActivateEvent event, EntityRef entity) { PlaySoundActionComponent playSound = entity.getComponent(PlaySoundActionComponent.class); if (playSound.sounds.size() > 0) { Sound sound = playSound.sounds.get(random.randomIntAbs(playSound.sounds.size())); Vector3f pos = null; switch (playSound.relativeTo) { case Instigator: pos = event.getInstigatorLocation(); break; case Target: pos = event.getTargetLocation(); break; } if (pos == null) { pos = event.getOrigin(); } AudioManager.play(sound, pos, playSound.volume, SoundManager.PRIORITY_NORMAL); } } }