Adding support for default variables values

This commit is contained in:
David Négrier 2021-07-05 17:25:23 +02:00
parent abd53b6251
commit c30de8c6db
10 changed files with 92 additions and 44 deletions

View file

@ -88,13 +88,11 @@ export type IframeQueryMap = {
getState: {
query: undefined,
answer: GameStateEvent,
callback: () => GameStateEvent|PromiseLike<GameStateEvent>
},
getMapData: {
query: undefined,
answer: MapDataEvent,
callback: () => MapDataEvent|PromiseLike<GameStateEvent>
}
},
}
export interface IframeQuery<T extends keyof IframeQueryMap> {

View file

@ -1,18 +1,12 @@
import {Observable, Subject} from "rxjs";
import { isMapDataEvent } from "../Events/MapDataEvent";
import { EnterLeaveEvent, isEnterLeaveEvent } from "../Events/EnterLeaveEvent";
import { isGameStateEvent } from "../Events/GameStateEvent";
import {IframeApiContribution, queryWorkadventure, sendToWorkadventure} from "./IframeApiContribution";
import { apiCallback } from "./registeredCallbacks";
import type {LayerEvent} from "../Events/LayerEvent";
import type {SetPropertyEvent} from "../Events/setPropertyEvent";
import {isSetVariableEvent, SetVariableEvent} from "../Events/SetVariableEvent";
import type { ITiledMap } from "../../Phaser/Map/ITiledMap";
import type { MapDataEvent } from "../Events/MapDataEvent";
import type { GameStateEvent } from "../Events/GameStateEvent";
const enterStreams: Map<string, Subject<EnterLeaveEvent>> = new Map<string, Subject<EnterLeaveEvent>>();
const leaveStreams: Map<string, Subject<EnterLeaveEvent>> = new Map<string, Subject<EnterLeaveEvent>>();
@ -39,6 +33,16 @@ export const setMapURL = (url: string) => {
mapURL = url;
}
export const initVariables = (_variables: Map<string, unknown>): void => {
for (const [name, value] of _variables.entries()) {
// In case the user already decided to put values in the variables (before onInit), let's make sure onInit does not override this.
if (!variables.has(name)) {
variables.set(name, value);
}
}
}
setVariableResolvers.subscribe((event) => {
variables.set(event.key, event.value);
const subject = variableSubscribers.get(event.key);