workadventure/front/src/Api/iframe/player.ts

30 lines
1,013 B
TypeScript
Raw Normal View History

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>();
export class WorkadventurePlayerCommands extends IframeApiContribution<WorkadventurePlayerCommands> {
2021-06-23 11:32:11 +02:00
callbacks = [
apiCallback({
type: "hasPlayerMoved",
2021-06-23 11:32:11 +02:00
typeChecker: isHasPlayerMovedEvent,
callback: (payloadData) => {
moveStream.next(payloadData);
},
2021-06-23 11:32:11 +02:00
}),
];
2021-06-23 11:32:11 +02:00
onPlayerMove(callback: HasPlayerMovedEventCallback): void {
moveStream.subscribe(callback);
sendToWorkadventure({
type: "onPlayerMove",
data: null,
});
2021-06-23 11:32:11 +02:00
}
}
export default new WorkadventurePlayerCommands();