Merge branch 'menu-command-api' of github.com:jonnytest1/workadventure into metadataScriptingApi
This commit is contained in:
commit
ce0a72c6ce
9 changed files with 119 additions and 26 deletions
|
@ -14,7 +14,9 @@ import type { SetPropertyEvent } from "./Api/Events/setPropertyEvent";
|
|||
import { GameStateEvent, isGameStateEvent } from './Api/Events/GameStateEvent';
|
||||
import { HasPlayerMovedEvent, HasPlayerMovedEventCallback, isHasPlayerMovedEvent } from './Api/Events/HasPlayerMovedEvent';
|
||||
import { DataLayerEvent, isDataLayerEvent } from "./Api/Events/DataLayerEvent";
|
||||
import type {ITiledMap} from "./Phaser/Map/ITiledMap";
|
||||
import type { ITiledMap } from "./Phaser/Map/ITiledMap";
|
||||
import type { MenuItemRegisterEvent } from "./Api/Events/MenuItemRegisterEvent";
|
||||
import { isMenuItemClickedEvent } from "./Api/Events/MenuItemClickedEvent";
|
||||
|
||||
interface WorkAdventureApi {
|
||||
sendChatMessage(message: string, author: string): void;
|
||||
|
@ -37,6 +39,7 @@ interface WorkAdventureApi {
|
|||
restorePlayerControls(): void;
|
||||
displayBubble(): void;
|
||||
removeBubble(): void;
|
||||
registerMenuCommand(commandDescriptor: string, callback: (commandDescriptor: string) => void): void
|
||||
getMapUrl(): Promise<string>;
|
||||
getUuid(): Promise<string | undefined>;
|
||||
getRoomId(): Promise<string>;
|
||||
|
@ -62,7 +65,7 @@ const enterStreams: Map<string, Subject<EnterLeaveEvent>> = new Map<string, Subj
|
|||
const leaveStreams: Map<string, Subject<EnterLeaveEvent>> = new Map<string, Subject<EnterLeaveEvent>>();
|
||||
const popups: Map<number, Popup> = new Map<number, Popup>();
|
||||
const popupCallbacks: Map<number, Map<number, ButtonClickedCallback>> = new Map<number, Map<number, ButtonClickedCallback>>();
|
||||
|
||||
const menuCallbacks: Map<string, (command: string) => void> = new Map()
|
||||
let popupId = 0;
|
||||
interface ButtonDescriptor {
|
||||
/**
|
||||
|
@ -308,6 +311,16 @@ window.WA = {
|
|||
popups.set(popupId, popup)
|
||||
return popup;
|
||||
},
|
||||
|
||||
registerMenuCommand(commandDescriptor: string, callback: (commandDescriptor: string) => void) {
|
||||
menuCallbacks.set(commandDescriptor, callback);
|
||||
window.parent.postMessage({
|
||||
'type': 'registerMenuCommand',
|
||||
'data': {
|
||||
menutItem: commandDescriptor
|
||||
} as MenuItemRegisterEvent
|
||||
}, '*');
|
||||
},
|
||||
/**
|
||||
* Listen to messages sent by the local user, in the chat.
|
||||
*/
|
||||
|
@ -371,8 +384,12 @@ window.addEventListener('message', message => {
|
|||
dataLayerResolver.forEach(resolver => {
|
||||
resolver(payloadData);
|
||||
})
|
||||
} else if (payload.type == "menuItemClicked" && isMenuItemClickedEvent(payload.data)) {
|
||||
const callback = menuCallbacks.get(payload.data.menuItem);
|
||||
if (callback) {
|
||||
callback(payload.data.menuItem)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ...
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue