2021-06-30 10:15:55 +02:00
|
|
|
import { IframeApiContribution, sendToWorkadventure } from "./IframeApiContribution";
|
|
|
|
import type { HasPlayerMovedEvent, HasPlayerMovedEventCallback } from "../Events/HasPlayerMovedEvent";
|
|
|
|
import { Subject } from "rxjs";
|
|
|
|
import { apiCallback } from "./registeredCallbacks";
|
|
|
|
import { isHasPlayerMovedEvent } from "../Events/HasPlayerMovedEvent";
|
2021-06-23 11:32:11 +02:00
|
|
|
|
|
|
|
const moveStream = new Subject<HasPlayerMovedEvent>();
|
|
|
|
|
2021-06-30 10:15:55 +02:00
|
|
|
export class WorkadventurePlayerCommands extends IframeApiContribution<WorkadventurePlayerCommands> {
|
2021-06-23 11:32:11 +02:00
|
|
|
callbacks = [
|
|
|
|
apiCallback({
|
2021-06-30 10:15:55 +02:00
|
|
|
type: "hasPlayerMoved",
|
2021-06-23 11:32:11 +02:00
|
|
|
typeChecker: isHasPlayerMovedEvent,
|
|
|
|
callback: (payloadData) => {
|
|
|
|
moveStream.next(payloadData);
|
2021-06-30 10:15:55 +02:00
|
|
|
},
|
2021-06-23 11:32:11 +02:00
|
|
|
}),
|
2021-06-30 10:15:55 +02:00
|
|
|
];
|
2021-06-23 11:32:11 +02:00
|
|
|
|
|
|
|
onPlayerMove(callback: HasPlayerMovedEventCallback): void {
|
|
|
|
moveStream.subscribe(callback);
|
|
|
|
sendToWorkadventure({
|
2021-06-30 10:15:55 +02:00
|
|
|
type: "onPlayerMove",
|
|
|
|
data: null,
|
|
|
|
});
|
2021-06-23 11:32:11 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-30 10:15:55 +02:00
|
|
|
export default new WorkadventurePlayerCommands();
|