완성(준)

This commit is contained in:
2025-02-01 23:50:49 +09:00
parent 7e43900f22
commit 0cb7ea8225
20 changed files with 432 additions and 128 deletions

View File

@@ -8,13 +8,19 @@
namespace bumbleBee {
class MusicPlayManager {
public:
MusicPlayManager(std::shared_ptr<dpp::cluster> cluster) {
this->cluster = cluster;
this->queue = std::make_unique<MusicQueue>();
MusicPlayManager(std::shared_ptr<dpp::cluster> cluster, std::vector<dpp::snowflake> GIDs) :
cluster(cluster), GIDs(GIDs) {
queueMap = std::unordered_map<dpp::snowflake, std::shared_ptr<MusicQueue>>();
queueEmptyMutex = std::unordered_map<dpp::snowflake, std::shared_ptr<std::mutex>>();
cluster->on_voice_ready([this](const dpp::voice_ready_t &event){on_voice_ready(event);});
cluster->on_voice_track_marker([this](const dpp::voice_track_marker_t &event){on_voice_track_marker(event);});
cluster->on_voice_client_disconnect([this](const dpp::voice_client_disconnect_t& event){on_voice_client_disconnect(event);});
for (auto GID : GIDs) {
queueMap[GID] = std::make_shared<MusicQueue>();
queueEmptyMutex[GID] = std::make_shared<std::mutex>();
}
}
/**
@@ -33,18 +39,31 @@ public:
**/
void on_voice_client_disconnect(const dpp::voice_client_disconnect_t& event);
void queue_music(const std::shared_ptr<MusicQueueElement> music);
void play(dpp::discord_voice_client* client);
void queue_music(const dpp::snowflake guildId, const std::shared_ptr<MusicQueueElement> music);
void clear(const dpp::snowflake guildId);
std::shared_ptr<MusicQueueElement> remove(const dpp::snowflake guildId, dpp::discord_voice_client* client, int index);
int size(const dpp::snowflake guildId);
void setRepeat(const dpp::snowflake guildId, const bool value);
bool getRepeat(const dpp::snowflake guildId);
std::list<MusicQueueElement> getQueue(const dpp::snowflake guildId);
MusicQueueElement getNowPlaying(const dpp::snowflake guildId);
std::condition_variable queuedCondition;
private:
std::shared_ptr<dpp::cluster> cluster;
std::vector<dpp::snowflake> GIDs;
/// @brief 음악 큐
std::unique_ptr<MusicQueue> queue;
std::unordered_map<dpp::snowflake, std::shared_ptr<MusicQueue>> queueMap;
std::mutex queueEmptyMutex;
std::unordered_map<dpp::snowflake, std::shared_ptr<std::mutex>> queueEmptyMutex;
void send_audio_to_voice(const MusicQueueElement& music, const dpp::voice_ready_t &event);
void send_audio_to_voice(const MusicQueueElement& music, const dpp::voice_track_marker_t& event);
void send_audio_to_voice(const MusicQueueElement& music, dpp::discord_voice_client* client);
};
}
#endif