= Condensed managers and handler

This commit is contained in:
Matthew Cech
2019-10-17 23:33:14 -07:00
parent 248814b9e3
commit 4d36bb0cb9
3 changed files with 19 additions and 76 deletions
+19 -1
View File
@@ -41,7 +41,7 @@ import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import net.dv8tion.jda.core.managers.AudioManager;
import offline.Ref;
import trash.GuildMusicManager;
import trash.TrackScheduler;
import utils.GlobalLog;
// http://www.slf4j.org/ - this JDA logging tool has been disabled by specifying NOP implementation.
@@ -50,6 +50,24 @@ import utils.GlobalLog;
@SuppressWarnings("unused")
public class Main extends ListenerAdapter
{
public class GuildMusicManager
{
public final AudioPlayer player;
public final TrackScheduler scheduler;
public GuildMusicManager(AudioPlayerManager manager)
{
player = manager.createPlayer();
scheduler = new TrackScheduler(player);
player.addListener(scheduler);
}
public AudioPlayerSendHandler getSendHandler()
{
return new AudioPlayerSendHandler(player);
}
}
public class AudioPlayerSendHandler implements AudioSendHandler
{
private final AudioPlayer audioPlayer;
-41
View File
@@ -1,41 +0,0 @@
package trash;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame;
import net.dv8tion.jda.core.audio.AudioSendHandler;
/**
* This is a wrapper around AudioPlayer which makes it behave as an AudioSendHandler for JDA. As JDA calls canProvide
* before every call to provide20MsAudio(), we pull the frame in canProvide() and use the frame we already pulled in
* provide20MsAudio().
*/
public class AudioPlayerSendHandler implements AudioSendHandler
{
private final AudioPlayer audioPlayer;
private AudioFrame lastFrame;
public AudioPlayerSendHandler(AudioPlayer audioPlayer)
{
this.audioPlayer = audioPlayer;
}
@Override
public boolean canProvide()
{
lastFrame = audioPlayer.provide();
return lastFrame != null;
}
@Override
public byte[] provide20MsAudio()
{
return lastFrame.getData();
}
@Override
public boolean isOpus()
{
return true;
}
}
-34
View File
@@ -1,34 +0,0 @@
package trash;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
/**
* Holder for both the player and a track scheduler for one guild.
*/
public class GuildMusicManager {
/**
* Audio player for the guild.
*/
public final AudioPlayer player;
/**
* Track scheduler for the player.
*/
public final TrackScheduler scheduler;
/**
* Creates a player and a track scheduler.
* @param manager Audio player manager to use for creating the player.
*/
public GuildMusicManager(AudioPlayerManager manager) {
player = manager.createPlayer();
scheduler = new TrackScheduler(player);
player.addListener(scheduler);
}
/**
* @return Wrapper around AudioPlayer to use it as an AudioSendHandler.
*/
public AudioPlayerSendHandler getSendHandler() {
return new AudioPlayerSendHandler(player);
}
}