main commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { OnPlayerJoined, OnPlayerQuit } from "@common/shared/modding/players";
|
||||
import { Modding, OnStart } from "@flamework/core";
|
||||
import { Players } from "@rbxts/services";
|
||||
|
||||
/**
|
||||
* This Service Manage some player event with modding.
|
||||
*/
|
||||
export class PlayerEventsService implements OnStart {
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
onStart() {
|
||||
const playerJoinListener = new Set<OnPlayerJoined>();
|
||||
const playerQuitListener = new Set<OnPlayerQuit>();
|
||||
|
||||
Modding.onListenerAdded<OnPlayerJoined>((object) => playerJoinListener.add(object));
|
||||
Modding.onListenerRemoved<OnPlayerJoined>((object) => playerJoinListener.delete(object));
|
||||
Modding.onListenerAdded<OnPlayerQuit>((object) => playerQuitListener.add(object));
|
||||
Modding.onListenerRemoved<OnPlayerQuit>((object) => playerQuitListener.delete(object));
|
||||
|
||||
Players.PlayerAdded.Connect((player) => {
|
||||
for (const listener of playerJoinListener) {
|
||||
task.spawn(() => listener.onPlayerJoined(player));
|
||||
}
|
||||
});
|
||||
|
||||
Players.PlayerRemoving.Connect((player) => {
|
||||
for (const listener of playerQuitListener) {
|
||||
task.spawn(() => listener.onPlayerQuit(player));
|
||||
}
|
||||
});
|
||||
|
||||
for (const player of Players.GetPlayers()) {
|
||||
for (const listener of playerJoinListener) {
|
||||
task.spawn(() => listener.onPlayerJoined(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user