merge setPosition and focusOn into setViewport
This commit is contained in:
parent
a1c96b0524
commit
d62b116e5d
9 changed files with 44 additions and 116 deletions
|
@ -1,15 +0,0 @@
|
|||
import * as tg from "generic-type-guard";
|
||||
|
||||
export const isCameraFocusOnEvent = new tg.IsInterface()
|
||||
.withProperties({
|
||||
x: tg.isNumber,
|
||||
y: tg.isNumber,
|
||||
width: tg.isNumber,
|
||||
height: tg.isNumber,
|
||||
smooth: tg.isBoolean,
|
||||
})
|
||||
.get();
|
||||
/**
|
||||
* A message sent from the iFrame to the game to set the camera focus on certain place.
|
||||
*/
|
||||
export type CameraFocusOnEvent = tg.GuardedType<typeof isCameraFocusOnEvent>;
|
|
@ -1,15 +1,16 @@
|
|||
import * as tg from "generic-type-guard";
|
||||
|
||||
export const isCameraSetPositionEvent = new tg.IsInterface()
|
||||
export const isCameraSetViewportEvent = new tg.IsInterface()
|
||||
.withProperties({
|
||||
x: tg.isNumber,
|
||||
y: tg.isNumber,
|
||||
width: tg.isNumber,
|
||||
height: tg.isNumber,
|
||||
lock: tg.isBoolean,
|
||||
smooth: tg.isBoolean,
|
||||
})
|
||||
.get();
|
||||
/**
|
||||
* A message sent from the iFrame to the game to change the camera position.
|
||||
*/
|
||||
export type CameraSetPositionEvent = tg.GuardedType<typeof isCameraSetPositionEvent>;
|
||||
export type CameraSetViewportEvent = tg.GuardedType<typeof isCameraSetViewportEvent>;
|
|
@ -31,8 +31,7 @@ import type { ChangeLayerEvent } from "./ChangeLayerEvent";
|
|||
import { isPlayerPosition } from "./PlayerPosition";
|
||||
import type { WasCameraUpdatedEvent } from "./WasCameraUpdatedEvent";
|
||||
import type { ChangeZoneEvent } from "./ChangeZoneEvent";
|
||||
import type { CameraSetPositionEvent } from "./CameraSetPositionEvent";
|
||||
import type { CameraFocusOnEvent } from "./CameraFocusOnEvent";
|
||||
import type { CameraSetViewportEvent } from "./CameraSetViewportEvent";
|
||||
import type { CameraFollowPlayerEvent } from "./CameraFollowPlayerEvent";
|
||||
import { isColorEvent } from "./ColorEvent";
|
||||
|
||||
|
@ -46,9 +45,8 @@ export interface TypedMessageEvent<T> extends MessageEvent {
|
|||
export type IframeEventMap = {
|
||||
loadPage: LoadPageEvent;
|
||||
chat: ChatEvent;
|
||||
cameraFocusOn: CameraFocusOnEvent;
|
||||
cameraFollowPlayer: CameraFollowPlayerEvent;
|
||||
cameraSetPosition: CameraSetPositionEvent;
|
||||
cameraSetViewport: CameraSetViewportEvent;
|
||||
openPopup: OpenPopupEvent;
|
||||
closePopup: ClosePopupEvent;
|
||||
openTab: OpenTabEvent;
|
||||
|
|
|
@ -33,8 +33,7 @@ import { handleMenuRegistrationEvent, handleMenuUnregisterEvent } from "../Store
|
|||
import type { ChangeLayerEvent } from "./Events/ChangeLayerEvent";
|
||||
import type { WasCameraUpdatedEvent } from "./Events/WasCameraUpdatedEvent";
|
||||
import type { ChangeZoneEvent } from "./Events/ChangeZoneEvent";
|
||||
import { CameraSetPositionEvent, isCameraSetPositionEvent } from "./Events/CameraSetPositionEvent";
|
||||
import { CameraFocusOnEvent, isCameraFocusOnEvent } from "./Events/CameraFocusOnEvent";
|
||||
import { CameraSetViewportEvent, isCameraSetViewportEvent } from "./Events/CameraSetViewportEvent";
|
||||
import { CameraFollowPlayerEvent, isCameraFollowPlayerEvent } from "./Events/CameraFollowPlayerEvent";
|
||||
|
||||
type AnswererCallback<T extends keyof IframeQueryMap> = (
|
||||
|
@ -59,11 +58,8 @@ class IframeListener {
|
|||
private readonly _disablePlayerControlStream: Subject<void> = new Subject();
|
||||
public readonly disablePlayerControlStream = this._disablePlayerControlStream.asObservable();
|
||||
|
||||
private readonly _cameraSetPositionStream: Subject<CameraSetPositionEvent> = new Subject();
|
||||
public readonly cameraSetPositionStream = this._cameraSetPositionStream.asObservable();
|
||||
|
||||
private readonly _cameraFocusOnStream: Subject<CameraFocusOnEvent> = new Subject();
|
||||
public readonly cameraFocusOnStream = this._cameraFocusOnStream.asObservable();
|
||||
private readonly _cameraSetViewportStream: Subject<CameraSetViewportEvent> = new Subject();
|
||||
public readonly cameraSetViewportStream = this._cameraSetViewportStream.asObservable();
|
||||
|
||||
private readonly _cameraFollowPlayerStream: Subject<CameraFollowPlayerEvent> = new Subject();
|
||||
public readonly cameraFollowPlayerStream = this._cameraFollowPlayerStream.asObservable();
|
||||
|
@ -214,10 +210,8 @@ class IframeListener {
|
|||
this._hideLayerStream.next(payload.data);
|
||||
} else if (payload.type === "setProperty" && isSetPropertyEvent(payload.data)) {
|
||||
this._setPropertyStream.next(payload.data);
|
||||
} else if (payload.type === "cameraSetPosition" && isCameraSetPositionEvent(payload.data)) {
|
||||
this._cameraSetPositionStream.next(payload.data);
|
||||
} else if (payload.type === "cameraFocusOn" && isCameraFocusOnEvent(payload.data)) {
|
||||
this._cameraFocusOnStream.next(payload.data);
|
||||
} else if (payload.type === "cameraSetViewport" && isCameraSetViewportEvent(payload.data)) {
|
||||
this._cameraSetViewportStream.next(payload.data);
|
||||
} else if (payload.type === "cameraFollowPlayer" && isCameraFollowPlayerEvent(payload.data)) {
|
||||
this._cameraFollowPlayerStream.next(payload.data);
|
||||
} else if (payload.type === "chat" && isChatEvent(payload.data)) {
|
||||
|
|
|
@ -17,17 +17,17 @@ export class WorkAdventureCameraCommands extends IframeApiContribution<WorkAdven
|
|||
}),
|
||||
];
|
||||
|
||||
public setPosition(x: number, y: number, width: number, height: number, smooth: boolean = false): void {
|
||||
public setViewport(
|
||||
x: number,
|
||||
y: number,
|
||||
width: number,
|
||||
height: number,
|
||||
lock: boolean = false,
|
||||
smooth: boolean = false
|
||||
): void {
|
||||
sendToWorkadventure({
|
||||
type: "cameraSetPosition",
|
||||
data: { x, y, width, height, smooth },
|
||||
});
|
||||
}
|
||||
|
||||
public focusOn(x: number, y: number, width: number, height: number, smooth: boolean = false): void {
|
||||
sendToWorkadventure({
|
||||
type: "cameraFocusOn",
|
||||
data: { x, y, width, height, smooth },
|
||||
type: "cameraSetViewport",
|
||||
data: { x, y, width, height, lock, smooth },
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue