first step to change tile

This commit is contained in:
GRL 2021-05-27 17:06:39 +02:00
parent 9cd3ff1d31
commit 6dcb0d3750
5 changed files with 334 additions and 21 deletions

View file

@ -1,12 +1,14 @@
import * as tg from "generic-type-guard";
export const isChangeTileEvent =
new tg.IsInterface().withProperties({
x: tg.isNumber,
y: tg.isNumber,
tile: tg.isUnion(tg.isNumber, tg.isString),
layer: tg.isUnion(tg.isNumber, tg.isString)
}).get();
tg.isArray(
new tg.IsInterface().withProperties({
x: tg.isNumber,
y: tg.isNumber,
tile: tg.isUnion(tg.isNumber, tg.isString),
layer: tg.isString
}).get()
);
/**
* A message sent from the game to the iFrame when a user enters or leaves a zone marked with the "zone" property.
*/

View file

@ -890,19 +890,12 @@ ${escapedMessage}
this.userInputManager.restoreControls();
}))
/* this.iframeSubscriptionList.push(iframeListener.loadPageStream.subscribe((url: string) => {
this.loadNextGame(url).then(() => {
this.events.once(EVENT_TYPE.POST_UPDATE, () => {
this.onMapExit(url);
})
})
}))*/
this.iframeSubscriptionList.push(iframeListener.updateTileEvent.subscribe(event => {
this.iframeSubscriptionList.push(iframeListener.changeTileStream.subscribe(event => {
for (const eventTile of event) {
const layer = this.gameMap.findPhaserLayer(eventTile.layer);
if (layer) {
const tile = layer.getTileAt(eventTile.x, eventTile.y)
console.log('layer : ', layer);
const tile = layer.getTileAt(eventTile.x, eventTile.y, true)
if (typeof eventTile.tile == "string") {
const tileIndex = this.getIndexForTileType(eventTile.tile);
if (tileIndex) {
@ -911,11 +904,11 @@ ${escapedMessage}
return
}
} else {
tile.index = eventTile.tile
tile.index = eventTile.tile //+ firsrtgid du layer
}
}
}
this.scene.scene.sys.game.events.emit("contextrestored")
//this.dirty = true;
}))
let scriptedBubbleSprite: Sprite;

View file

@ -44,9 +44,10 @@ interface WorkAdventureApi {
displayBubble(): void;
removeBubble(): void;
loadSound(url : string): Sound;
registerMenuCommand(commandDescriptor: string, callback: (commandDescriptor: string) => void): void
getCurrentUser(): Promise<User>
getCurrentRoom(): Promise<Room>
registerMenuCommand(commandDescriptor: string, callback: (commandDescriptor: string) => void): void;
getCurrentUser(): Promise<User>;
getCurrentRoom(): Promise<Room>;
changeTile(tiles: TileDescriptor[]): void;
//loadTileset(name: string, imgUrl : string, tilewidth : number, tileheight : number, margin : number, spacing : number): void;
onPlayerMove(callback: (playerMovedEvent: HasPlayerMovedEvent) => void): void
@ -65,6 +66,13 @@ interface Room {
startLayer: string | null
}
interface TileDescriptor {
x: number
y: number
tile: number | string
layer: string
}
declare global {
// eslint-disable-next-line no-var
var WA: WorkAdventureApi
@ -221,6 +229,13 @@ window.WA = {
})
},
changeTile(tiles: TileDescriptor[]) {
postToParent({
type: 'changeTile',
data: tiles
})
},
/**
* Send a message in the chat.
* Only the local user will receive this message.