All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.lessvoid.nifty.sound.paulssoundsystem.PaulsSoundsystemSoundDevice Maven / Gradle / Ivy

There is a newer version: 1.4.3
Show newest version
package de.lessvoid.nifty.sound.paulssoundsystem;

import de.lessvoid.nifty.sound.SoundSystem;
import de.lessvoid.nifty.spi.sound.SoundDevice;
import de.lessvoid.nifty.spi.sound.SoundHandle;
import de.lessvoid.nifty.tools.resourceloader.NiftyResourceLoader;
import paulscode.sound.SoundSystemConfig;
import paulscode.sound.SoundSystemException;
import paulscode.sound.codecs.CodecJOrbis;
import paulscode.sound.codecs.CodecWav;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class PaulsSoundsystemSoundDevice implements SoundDevice {
  private paulscode.sound.SoundSystem soundSystem;
  private int counter = 0;

  public PaulsSoundsystemSoundDevice(
      final Class libraryClass,
      final SupportedCodec... additionalCodecs) throws SoundSystemException {
    SoundSystemConfig.setSoundFilesPackage("");
    SoundSystemConfig.addLibrary(libraryClass);

    // we decided that ogg and wav are build in
    SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
    SoundSystemConfig.setCodec("wav", CodecWav.class);

    addAdditionalCodecs(additionalCodecs);
    soundSystem = new paulscode.sound.SoundSystem();
  }

  @Override
  public void setResourceLoader(@Nonnull final NiftyResourceLoader resourceLoader) {
  }

  private void addAdditionalCodecs(@Nullable final SupportedCodec... codecs) throws SoundSystemException {
    if (codecs != null) {
      for (SupportedCodec codec : codecs) {
        SoundSystemConfig.setCodec(codec.getExtension(), codec.getCodecClass());
      }
    }
  }

  @Override
  public SoundHandle loadSound(@Nonnull final SoundSystem soundSystem, @Nonnull final String filename) {
    return new PaulsSoundHandle(this.soundSystem, filename);
  }

  @Override
  public SoundHandle loadMusic(@Nonnull final SoundSystem soundSystem, @Nonnull final String filename) {
    return new PaulsMusicHandle(this.soundSystem, generateId(), filename);
  }

  @Override
  public void update(final int delta) {
  }

  @Nonnull
  private String generateId() {
    return String.valueOf(counter++);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy