diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 1877b29a..2dd9fdf1 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; @@ -23,9 +27,8 @@ export class GameManager { connect(email:string) { this.ConnexionInstance = new Connexion(email, this); - ConnexionInstance = this.ConnexionInstance; return this.ConnexionInstance.createConnexion().then(() => { - this.SimplePeer = new SimplePeer(ConnexionInstance); + this.SimplePeer = new SimplePeer(this.ConnexionInstance); }); } @@ -57,6 +60,10 @@ export class GameManager { console.error(e); } } + + pushPlayerPosition(event: HasMovedEvent) { + this.ConnexionInstance.sharePosition(event.x, event.y, event.direction); + } } export const gameManager = new GameManager(); \ No newline at end of file diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index f7fbd7c3..8764e959 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"; @@ -168,6 +168,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 59c1f96e..8c4688b8 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,18 +90,11 @@ export class Player extends PlayableCaracter implements CurrentGamerInterface, G direction = PlayerAnimationNames.None; this.stop(); } - if(this.previousMove !== PlayerAnimationNames.None || direction !== PlayerAnimationNames.None){ - this.sharePosition(direction); - } - this.previousMove = 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);