2021-05-09 21:30:29 +02:00
|
|
|
|
2021-05-18 15:18:35 +02:00
|
|
|
import type { GameStateEvent } from './GameStateEvent';
|
2021-05-12 09:13:25 +02:00
|
|
|
import type { ButtonClickedEvent } from './ButtonClickedEvent';
|
|
|
|
import type { ChatEvent } from './ChatEvent';
|
|
|
|
import type { ClosePopupEvent } from './ClosePopupEvent';
|
|
|
|
import type { EnterLeaveEvent } from './EnterLeaveEvent';
|
|
|
|
import type { GoToPageEvent } from './GoToPageEvent';
|
2021-05-18 10:16:44 +02:00
|
|
|
import type { MenuItemClickedEvent } from './MenuItemClickedEvent';
|
|
|
|
import type { MenuItemRegisterEvent } from './MenuItemRegisterEvent';
|
2021-05-18 15:18:35 +02:00
|
|
|
import type { HasPlayerMovedEvent } from './HasPlayerMovedEvent';
|
2021-05-12 09:13:25 +02:00
|
|
|
import type { OpenCoWebSiteEvent } from './OpenCoWebSiteEvent';
|
|
|
|
import type { OpenPopupEvent } from './OpenPopupEvent';
|
|
|
|
import type { OpenTabEvent } from './OpenTabEvent';
|
|
|
|
import type { UserInputChatEvent } from './UserInputChatEvent';
|
2021-05-18 15:41:16 +02:00
|
|
|
import type { DataLayerEvent } from "./DataLayerEvent";
|
2021-05-18 11:50:03 +02:00
|
|
|
import type { LayerEvent } from './LayerEvent';
|
|
|
|
import type { SetPropertyEvent } from "./setPropertyEvent";
|
2021-05-09 21:30:29 +02:00
|
|
|
|
2021-05-09 21:46:40 +02:00
|
|
|
export interface TypedMessageEvent<T> extends MessageEvent {
|
|
|
|
data: T
|
|
|
|
}
|
|
|
|
|
2021-05-09 21:30:29 +02:00
|
|
|
export type IframeEventMap = {
|
2021-05-10 10:01:53 +02:00
|
|
|
getState: GameStateEvent,
|
2021-05-09 21:30:29 +02:00
|
|
|
// updateTile: UpdateTileEvent
|
2021-05-10 09:54:39 +02:00
|
|
|
registerMenuCommand: MenuItemRegisterEvent
|
2021-05-09 21:30:29 +02:00
|
|
|
chat: ChatEvent,
|
|
|
|
openPopup: OpenPopupEvent
|
|
|
|
closePopup: ClosePopupEvent
|
|
|
|
openTab: OpenTabEvent
|
|
|
|
goToPage: GoToPageEvent
|
|
|
|
openCoWebSite: OpenCoWebSiteEvent
|
|
|
|
closeCoWebSite: null
|
2021-05-10 12:14:31 +02:00
|
|
|
disablePlayerControls: null
|
|
|
|
restorePlayerControls: null
|
2021-05-09 21:30:29 +02:00
|
|
|
displayBubble: null
|
|
|
|
removeBubble: null
|
2021-05-18 11:33:16 +02:00
|
|
|
onPlayerMove: undefined
|
|
|
|
onDataLayerChange: undefined
|
2021-05-10 11:46:16 +02:00
|
|
|
showLayer: LayerEvent
|
|
|
|
hideLayer: LayerEvent
|
2021-05-12 14:30:12 +02:00
|
|
|
setProperty: SetPropertyEvent
|
2021-05-18 15:41:16 +02:00
|
|
|
getDataLayer: undefined
|
2021-05-09 21:30:29 +02:00
|
|
|
}
|
|
|
|
export interface IframeEvent<T extends keyof IframeEventMap> {
|
|
|
|
type: T;
|
|
|
|
data: IframeEventMap[T];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
|
export const isIframeEventWrapper = (event: any): event is IframeEvent<keyof IframeEventMap> => typeof event.type === 'string';
|
|
|
|
|
|
|
|
export interface IframeResponseEventMap {
|
|
|
|
userInputChat: UserInputChatEvent
|
|
|
|
enterEvent: EnterLeaveEvent
|
|
|
|
leaveEvent: EnterLeaveEvent
|
|
|
|
buttonClickedEvent: ButtonClickedEvent
|
2021-05-10 10:01:53 +02:00
|
|
|
gameState: GameStateEvent
|
2021-05-18 11:33:16 +02:00
|
|
|
hasPlayerMoved: HasPlayerMovedEvent
|
2021-05-18 15:41:16 +02:00
|
|
|
dataLayer: DataLayerEvent
|
2021-05-10 09:54:39 +02:00
|
|
|
menuItemClicked: MenuItemClickedEvent
|
2021-05-09 21:30:29 +02:00
|
|
|
}
|
|
|
|
export interface IframeResponseEvent<T extends keyof IframeResponseEventMap> {
|
|
|
|
type: T;
|
|
|
|
data: IframeResponseEventMap[T];
|
2021-03-05 16:50:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
2021-05-10 12:14:31 +02:00
|
|
|
export const isIframeResponseEventWrapper = (event: { type?: string }): event is IframeResponseEvent<keyof IframeResponseEventMap> => typeof event.type === 'string';
|