diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 83e205ec..ad4d5a2c 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -9,7 +9,11 @@ export enum StatusGameManagerEnum { CURRENT_USER_CREATED = 2 } -export let ConnexionInstance : ConnexionInterface; +export interface HasMovedEvent { + direction: string; + x: number; + y: number; +} export class GameManager { status: number; @@ -25,9 +29,8 @@ export class GameManager { connect(name:string) { this.playerName = name; this.ConnexionInstance = new Connexion(name, this); - ConnexionInstance = this.ConnexionInstance; return this.ConnexionInstance.createConnexion().then(() => { - this.SimplePeer = new SimplePeer(ConnexionInstance); + this.SimplePeer = new SimplePeer(this.ConnexionInstance); }); } @@ -63,6 +66,10 @@ export class GameManager { getPlayerName(): string { return this.playerName; } + + pushPlayerPosition(event: HasMovedEvent) { + this.ConnexionInstance.sharePosition(event.x, event.y, event.direction); + } } export const gameManager = new GameManager(); diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 47499da6..1fb37a01 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1,6 +1,6 @@ -import {GameManager, gameManager, StatusGameManagerEnum} from "./GameManager"; +import {GameManager, gameManager, HasMovedEvent, StatusGameManagerEnum} from "./GameManager"; import {MessageUserPositionInterface} from "../../Connexion"; -import {CurrentGamerInterface, GamerInterface, Player} from "../Player/Player"; +import {CurrentGamerInterface, GamerInterface, hasMovedEventName, Player} from "../Player/Player"; import {DEBUG_MODE, RESOLUTION, ROOM, ZOOM_LEVEL} from "../../Enum/EnvironmentVariable"; import Tile = Phaser.Tilemaps.Tile; import {ITiledMap, ITiledTileSet} from "../Map/ITiledMap"; @@ -172,6 +172,11 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface{ //create collision this.createCollisionWithPlayer(); this.createCollisionObject(); + this.CurrentPlayer.on(hasMovedEventName, this.pushPlayerPosition.bind(this)) + } + + pushPlayerPosition(event: HasMovedEvent) { + this.GameManager.pushPlayerPosition(event); } EventToClickOnTile(){ diff --git a/front/src/Phaser/Player/Player.ts b/front/src/Phaser/Player/Player.ts index 3c7c404f..9f188d6e 100644 --- a/front/src/Phaser/Player/Player.ts +++ b/front/src/Phaser/Player/Player.ts @@ -1,10 +1,11 @@ import {getPlayerAnimations, playAnimation, PlayerAnimationNames} from "./Animation"; import {GameSceneInterface, Textures} from "../Game/GameScene"; -import {ConnexionInstance} from "../Game/GameManager"; import {MessageUserPositionInterface} from "../../Connexion"; import {ActiveEventList, UserInputEvent, UserInputManager} from "../UserInput/UserInputManager"; import {PlayableCaracter} from "../Entity/PlayableCaracter"; + +export const hasMovedEventName = "hasMoved"; export interface CurrentGamerInterface extends PlayableCaracter{ userId : string; PlayerValue : string; @@ -89,15 +90,11 @@ export class Player extends PlayableCaracter implements CurrentGamerInterface, G direction = PlayerAnimationNames.None; this.stop(); } - this.sharePosition(direction); - } - - private sharePosition(direction: string) { - if (ConnexionInstance) { - ConnexionInstance.sharePosition(this.x, this.y, direction); - } + + this.emit(hasMovedEventName, {direction, x: this.x, y: this.y}); } + //todo: put this method into the NonPlayer class instead updatePosition(MessageUserPosition: MessageUserPositionInterface) { playAnimation(this, MessageUserPosition.position.direction); this.setX(MessageUserPosition.position.x);