diff --git a/front/src/Connexion/Room.ts b/front/src/Connexion/Room.ts index 744be2f8..51ccb858 100644 --- a/front/src/Connexion/Room.ts +++ b/front/src/Connexion/Room.ts @@ -5,9 +5,8 @@ export class Room { public readonly id: string; public readonly isPublic: boolean; private mapUrl: string|undefined; - //public url: string - constructor(id: string/*, url: string*/) { + constructor(id: string) { if (id.startsWith('/')) { id = id.substr(1); } diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 25721a96..7cc5c0c4 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -17,8 +17,7 @@ export class GameManager { public async init(scenePlugin: Phaser.Scenes.ScenePlugin) { this.startRoom = await connectionManager.initGameConnexion(); - const url = await this.startRoom.getMapUrl(); - this.loadMap(url, this.startRoom.id, scenePlugin); + await this.loadMap(this.startRoom, scenePlugin); } public setPlayerName(name: string): void { @@ -42,8 +41,11 @@ export class GameManager { } - public loadMap(mapUrl: string, roomID: string, scenePlugin: Phaser.Scenes.ScenePlugin): void { + public async loadMap(room: Room, scenePlugin: Phaser.Scenes.ScenePlugin): Promise { + const roomID = room.id; + const mapUrl = await room.getMapUrl(); console.log('Loading map '+roomID+' at url '+mapUrl); + const gameIndex = scenePlugin.getIndex(mapUrl); if(gameIndex === -1){ const game : Phaser.Scene = GameScene.createFromUrl(mapUrl, roomID); diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index a22d973a..8e8cb8d0 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -46,6 +46,7 @@ import {RoomConnection} from "../../Connexion/RoomConnection"; import {GlobalMessageManager} from "../../Administration/GlobalMessageManager"; import {ConsoleGlobalMessageManager} from "../../Administration/ConsoleGlobalMessageManager"; import {ResizableScene} from "../Login/ResizableScene"; +import {Room} from "../../Connexion/Room"; export enum Textures { @@ -690,8 +691,13 @@ export class GameScene extends ResizableScene implements CenterListener { } // TODO: eventually compute a relative URL + + // TODO: handle /@/ URL CASES! + const absoluteExitSceneUrl = new URL(exitSceneUrl, this.MapUrlFile).href; - gameManager.loadMap(absoluteExitSceneUrl, instance, this.scene); + const absoluteExitSceneUrlWithoutProtocol = absoluteExitSceneUrl.toString().substr(absoluteExitSceneUrl.toString().indexOf('://')+3); + const roomId = '_/'+instance+'/'+absoluteExitSceneUrlWithoutProtocol; + gameManager.loadMap(new Room(roomId), this.scene); const exitSceneKey = instance; const tiles : number[] = layer.data as number[];