Skip to content

Commit

Permalink
Restructuring the players (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
1Lucas1apk committed Feb 4, 2024
2 parents c905cd8 + 77b125c commit 647d8aa
Show file tree
Hide file tree
Showing 37 changed files with 1,229 additions and 1,405 deletions.
2 changes: 2 additions & 0 deletions dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export declare const version: string;
export * from "./src/@Managers/MoonlinkManager";
export * from "./src/@Managers/PlayerManager";
export * from "./src/@Managers/NodeManager";
export * from "./src/@Entities/MoonlinkNode";
export * from "./src/@Entities/MoonlinkPlayer";
export * from "./src/@Entities/MoonlinkQueue";
Expand Down
2 changes: 2 additions & 0 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.version = void 0;
exports.version = require("../package.json").version;
__exportStar(require("./src/@Managers/MoonlinkManager"), exports);
__exportStar(require("./src/@Managers/PlayerManager"), exports);
__exportStar(require("./src/@Managers/NodeManager"), exports);
__exportStar(require("./src/@Entities/MoonlinkNode"), exports);
__exportStar(require("./src/@Entities/MoonlinkPlayer"), exports);
__exportStar(require("./src/@Entities/MoonlinkQueue"), exports);
Expand Down
4 changes: 2 additions & 2 deletions dist/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ export const MoonlinkPlayer = mod.MoonlinkPlayer;
export const MoonlinkQueue = mod.MoonlinkQueue;
export const MoonlinkRestFul = mod.MoonlinkRestFul;
export const MoonlinkTrack = mod.MoonlinkTrack;
export const Nodes = mod.Nodes;
export const Players = mod.Players;
export const NodeManager = mod.NodeManager;
export const PlayerManager = mod.PlayerManager;
export const Plugin = mod.Plugin;
export const State = mod.State;
export const Structure = mod.Structure;
Expand Down
97 changes: 35 additions & 62 deletions dist/src/@Entities/MoonlinkNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,20 +126,16 @@ class MoonlinkNode {
const state = this.state;
this.state = index_1.State.MOVING;
try {
let obj = this._manager.players.map.get("players") || [];
let obj = this._manager.players.all || [];
const players = Object.keys(obj);
for (const player of players) {
if (obj[player].node == this.host ||
obj[player].node == this.identifier) {
if (obj[player].node == this) {
let nextNode = this._manager.nodes.sortByUsage("players")[0];
let playerClass = this._manager.players.get(obj[player].guildId);
this._manager.emit("debug", `@Moonlink(Node) - Moving player ${obj[player].guildId} to ${nextNode.identifier
? nextNode.identifier
: nextNode.host}`);
await playerClass.set("node", nextNode.identifier
? nextNode.identifier
: nextNode.host);
playerClass = this._manager.players.get(obj[player].guildId);
playerClass.node = nextNode;
await playerClass.restart();
}
}
Expand Down Expand Up @@ -177,15 +173,13 @@ class MoonlinkNode {
this._manager.emit("nodeClose", this, code, reason);
if (this.state !== index_1.State.DISCONNECTED ||
this.state !== index_1.State.RECONNECTING) {
let obj = this._manager.players.map.get("players") || [];
let obj = this._manager.players.all || [];
if (obj.length !== 0) {
const players = Object.keys(obj);
for (const player of players) {
if (obj[player].host == this.host ||
obj[player].host == this.identifier) {
this._manager.players
.get(obj[player].guildId)
.set("playing", false);
if (obj[player].node == this) {
this._manager.players.get(obj[player].guildId).playing =
false;
}
}
}
Expand Down Expand Up @@ -226,10 +220,10 @@ class MoonlinkNode {
}
if (this._manager.options.autoResume) {
this.state = index_1.State.AUTORESUMING;
let obj = this._manager.players.map.get("players") || [];
let obj = this._manager.players.all || [];
const players = Object.keys(obj);
for (const player of players) {
if (obj[player].node == this.host) {
if (obj[player].node == this) {
await this._manager.players.attemptConnection(obj[player].guildId);
this._manager.emit("playerResume", this._manager.players.get(obj[player].guildId));
this._manager.players
Expand All @@ -253,12 +247,10 @@ class MoonlinkNode {
setDeaf: true,
setMute: false
});
playerClass.set("playing", true);
playerClass.set("conneted", true);
playerClass.playing = true;
playerClass.connected = true;
let track = new (index_1.Structure.get("MoonlinkTrack"))(player.track);
let current = this._manager.players.map.get("current") || {};
current[player.guildId] = track;
this._manager.players.map.set("current", current);
playerClass.current = track;
}
}
this.state = index_1.State.READY;
Expand All @@ -268,19 +260,17 @@ class MoonlinkNode {
this.stats = { ...payload };
break;
case "playerUpdate":
let current = this._manager.players.map.get(`current`) || {};
let player = this._manager.players.get(payload.guildId);
player.set("ping", payload.state.ping);
if (current[payload.guildId] instanceof index_1.MoonlinkTrack) {
current[payload.guildId]
player.ping = payload.state.ping;
if (player.current instanceof index_1.MoonlinkTrack) {
player.current
.setPosition(payload.state.position)
.setTime(payload.state.time);
}
else if (current[payload.guildId]) {
current[payload.guildId].position = payload.state.position;
current[payload.guildId].time = payload.state.time;
else if (player.current) {
player.current.position = payload.state.position;
player.current.time = payload.state.time;
}
this._manager.players.map.set("current", current);
break;
case "event":
this.handleEvent(payload);
Expand All @@ -304,39 +294,27 @@ class MoonlinkNode {
if (!this._manager.players.has(payload.guildId))
return;
let player = this._manager.players.get(payload.guildId);
let players = this._manager.players.map.get("players") || {};
switch (payload.type) {
case "TrackStartEvent": {
let current = player.current;
if (!current)
return;
let currents = this._manager.players.map.get("current") || {};
players[payload.guildId] = {
...players[payload.guildId],
playing: true,
paused: false
};
this._manager.players.map.set("players", players);
player.playing = true;
player.paused = false;
this._manager.emit("trackStart", player, current);
break;
}
case "TrackEndEvent": {
let currents = this._manager.players.map.get("current") || {};
let previousData = this._manager.players.map.get("previous") || {};
let track = currents[payload.guildId] || null;
let queue = this.db.get(`queue.${payload.guildId}`);
players[payload.guildId] = {
...players[payload.guildId],
playing: false
};
previousData[payload.guildId] = {
track
};
this._manager.players.map.set("players", players);
this._manager.players.map.set("previous", previousData);
let track = player.current;
let queue = player.queue.all;
player.playing = false;
if (this._manager.options.previousTracksInArray)
player.previous.push(track);
else
player.previous = track;
if (["loadFailed", "cleanup"].includes(payload.reason)) {
if (!queue) {
this.db.delete(`queue.${payload.guildId}`);
player.queue.clear();
return this._manager.emit("queueEnd", player, track);
}
player.play();
Expand All @@ -355,7 +333,7 @@ class MoonlinkNode {
return;
}
if (player.loop == 2) {
player.queue.add(track);
player.queue.add(player.current);
if (!queue || queue.length === 0)
return this._manager.emit("trackEnd", player, track, payload);
player.current = queue.shift();
Expand All @@ -364,11 +342,11 @@ class MoonlinkNode {
}
else {
this._manager.emit("trackEnd", player, track);
this._manager.emit("debug", "[ @_manager/Nodes ]: invalid loop value will be ignored!");
this._manager.emit("debug", "@Manager(Nodes) - invalid loop value will be ignored!");
}
}
if (player.queue.size && player.data.shuffled) {
let currentQueue = this.db.get(`queue.${payload.guildId}`);
let currentQueue = player.queue.all;
const randomIndex = Math.floor(Math.random() * currentQueue.length);
const shuffledTrack = currentQueue.splice(randomIndex, 1)[0];
currentQueue.unshift(shuffledTrack);
Expand Down Expand Up @@ -403,24 +381,19 @@ class MoonlinkNode {
if (!player.queue.size) {
this._manager.emit("debug", "[ @Moonlink/Nodes ]: The queue is empty");
this._manager.emit("queueEnd", player);
currents[payload.guildId] = null;
this._manager.players.map.set("current", currents);
this.db.delete(`queue.${payload.guildId}`);
player.current = null;
player.queue.clear();
}
break;
}
case "TrackStuckEvent": {
let currents = this._manager.players.map.get("current") || {};
let track = currents[payload.guildId] || null;
this._manager.emit("trackStuck", player, player.current);
player.stop();
this._manager.emit("trackStuck", player, track);
break;
}
case "TrackExceptionEvent": {
let currents = this._manager.players.map.get("current") || {};
let track = currents[payload.guildId] || null;
this._manager.emit("trackError", player, player.current);
player.stop();
this._manager.emit("trackError", player, track);
break;
}
case "WebSocketClosedEvent": {
Expand Down
12 changes: 4 additions & 8 deletions dist/src/@Entities/MoonlinkPlayer.d.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { MoonlinkRestFul, MoonlinkManager, MoonlinkQueue, MoonlinkNode, MoonlinkTrack } from "../../index";
import { PlayerInfos, connectOptions } from "../@Typings";
import { MoonlinkManager, MoonlinkQueue, MoonlinkNode, MoonlinkTrack } from "../../index";
import { IPlayerData, connectOptions } from "../@Typings";
export declare class MoonlinkPlayer {
manager: MoonlinkManager;
private infos;
private map;
guildId: string;
textChannel: string;
voiceChannel: string;
Expand All @@ -19,12 +17,10 @@ export declare class MoonlinkPlayer {
ping: number;
queue: MoonlinkQueue;
current: Record<string, any>;
previous: Record<string, any>;
previous: MoonlinkTrack[] | MoonlinkTrack | Record<string, any>;
data: Record<string, any>;
node: MoonlinkNode | any;
rest: MoonlinkRestFul;
constructor(infos: PlayerInfos, manager: MoonlinkManager, map: Map<string, any>);
private updatePlayers;
constructor(data: IPlayerData);
set(key: string, value: unknown): void;
get<T>(key: string): T;
setTextChannel(channelId: string): boolean;
Expand Down

0 comments on commit 647d8aa

Please sign in to comment.