Player return a the same position when after editing his profile
This commit is contained in:
parent
5fa8c1de9a
commit
0c796dff90
@ -17,6 +17,7 @@ export class GameManager {
|
|||||||
private playerName: string | null;
|
private playerName: string | null;
|
||||||
private characterLayers: string[] | null;
|
private characterLayers: string[] | null;
|
||||||
private companion: string | null;
|
private companion: string | null;
|
||||||
|
private positionBeforeSleep: { scene: string; x: number; y: number } | undefined;
|
||||||
private startRoom!: Room;
|
private startRoom!: Room;
|
||||||
private scenePlugin!: Phaser.Scenes.ScenePlugin;
|
private scenePlugin!: Phaser.Scenes.ScenePlugin;
|
||||||
currentGameSceneName: string | null = null;
|
currentGameSceneName: string | null = null;
|
||||||
@ -70,6 +71,10 @@ export class GameManager {
|
|||||||
return this.companion;
|
return this.companion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPositionBeforeSleep(): { scene: string; x: number; y: number } | undefined {
|
||||||
|
return this.positionBeforeSleep;
|
||||||
|
}
|
||||||
|
|
||||||
public loadMap(room: Room) {
|
public loadMap(room: Room) {
|
||||||
const roomID = room.key;
|
const roomID = room.key;
|
||||||
|
|
||||||
@ -108,6 +113,11 @@ export class GameManager {
|
|||||||
if (this.currentGameSceneName === null) throw "No current scene id set!";
|
if (this.currentGameSceneName === null) throw "No current scene id set!";
|
||||||
const gameScene: GameScene = this.scenePlugin.get(this.currentGameSceneName) as GameScene;
|
const gameScene: GameScene = this.scenePlugin.get(this.currentGameSceneName) as GameScene;
|
||||||
gameScene.cleanupClosingScene();
|
gameScene.cleanupClosingScene();
|
||||||
|
this.positionBeforeSleep = {
|
||||||
|
scene: gameScene.roomUrl,
|
||||||
|
x: gameScene.CurrentPlayer.x,
|
||||||
|
y: gameScene.CurrentPlayer.y,
|
||||||
|
};
|
||||||
this.scenePlugin.stop(this.currentGameSceneName);
|
this.scenePlugin.stop(this.currentGameSceneName);
|
||||||
this.scenePlugin.sleep(MenuSceneName);
|
this.scenePlugin.sleep(MenuSceneName);
|
||||||
if (!this.scenePlugin.get(targetSceneName)) {
|
if (!this.scenePlugin.get(targetSceneName)) {
|
||||||
|
@ -92,9 +92,7 @@ import { PropertyUtils } from "../Map/PropertyUtils";
|
|||||||
import Tileset = Phaser.Tilemaps.Tileset;
|
import Tileset = Phaser.Tilemaps.Tileset;
|
||||||
import { userIsAdminStore } from "../../Stores/GameStore";
|
import { userIsAdminStore } from "../../Stores/GameStore";
|
||||||
import { layoutManagerActionStore } from "../../Stores/LayoutManagerStore";
|
import { layoutManagerActionStore } from "../../Stores/LayoutManagerStore";
|
||||||
import { get } from "svelte/store";
|
|
||||||
import { EmbeddedWebsiteManager } from "./EmbeddedWebsiteManager";
|
import { EmbeddedWebsiteManager } from "./EmbeddedWebsiteManager";
|
||||||
import { helpCameraSettingsVisibleStore } from "../../Stores/HelpCameraSettingsStore";
|
|
||||||
|
|
||||||
export interface GameSceneInitInterface {
|
export interface GameSceneInitInterface {
|
||||||
initPosition: PointInterface | null;
|
initPosition: PointInterface | null;
|
||||||
@ -540,7 +538,15 @@ export class GameScene extends DirtyScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//notify game manager can to create currentUser in map
|
//notify game manager can to create currentUser in map
|
||||||
this.createCurrentPlayer();
|
const positionBeforeSleep = gameManager.getPositionBeforeSleep();
|
||||||
|
if (positionBeforeSleep && positionBeforeSleep.scene === this.room.key) {
|
||||||
|
this.createCurrentPlayer(positionBeforeSleep.x, positionBeforeSleep.y);
|
||||||
|
} else {
|
||||||
|
this.createCurrentPlayer(
|
||||||
|
this.startPositionCalculator.startPosition.x,
|
||||||
|
this.startPositionCalculator.startPosition.y
|
||||||
|
);
|
||||||
|
}
|
||||||
this.removeAllRemotePlayers(); //cleanup the list of remote players in case the scene was rebooted
|
this.removeAllRemotePlayers(); //cleanup the list of remote players in case the scene was rebooted
|
||||||
|
|
||||||
this.initCamera();
|
this.initCamera();
|
||||||
@ -760,8 +766,10 @@ export class GameScene extends DirtyScene {
|
|||||||
this.connectionAnswerPromiseResolve(onConnect.room);
|
this.connectionAnswerPromiseResolve(onConnect.room);
|
||||||
// Analyze tags to find if we are admin. If yes, show console.
|
// Analyze tags to find if we are admin. If yes, show console.
|
||||||
|
|
||||||
this.scene.wake();
|
if (this.scene.isSleeping()) {
|
||||||
this.scene.stop(ReconnectingSceneName);
|
this.scene.wake();
|
||||||
|
this.scene.stop(ReconnectingSceneName);
|
||||||
|
}
|
||||||
|
|
||||||
//init user position and play trigger to check layers properties
|
//init user position and play trigger to check layers properties
|
||||||
this.gameMap.setPosition(this.CurrentPlayer.x, this.CurrentPlayer.y);
|
this.gameMap.setPosition(this.CurrentPlayer.x, this.CurrentPlayer.y);
|
||||||
@ -1483,14 +1491,14 @@ ${escapedMessage}
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createCurrentPlayer() {
|
createCurrentPlayer(x: number, y: number) {
|
||||||
//TODO create animation moving between exit and start
|
//TODO create animation moving between exit and start
|
||||||
const texturesPromise = lazyLoadPlayerCharacterTextures(this.load, this.characterLayers);
|
const texturesPromise = lazyLoadPlayerCharacterTextures(this.load, this.characterLayers);
|
||||||
try {
|
try {
|
||||||
this.CurrentPlayer = new Player(
|
this.CurrentPlayer = new Player(
|
||||||
this,
|
this,
|
||||||
this.startPositionCalculator.startPosition.x,
|
x,
|
||||||
this.startPositionCalculator.startPosition.y,
|
y,
|
||||||
this.playerName,
|
this.playerName,
|
||||||
texturesPromise,
|
texturesPromise,
|
||||||
PlayerAnimationDirections.Down,
|
PlayerAnimationDirections.Down,
|
||||||
|
Loading…
Reference in New Issue
Block a user