partey_workadventure/front/src/Phaser/Game/GameScene.ts

76 lines
2.2 KiB
TypeScript
Raw Normal View History

import {MapManagerInterface, MapManager} from "./MapManager";
import {GameManagerInterface, StatusGameManagerEnum} from "./GameManager";
import {MessageUserPositionInterface} from "../../Connexion";
2020-04-11 18:17:36 +02:00
export enum Textures {
Rock = 'rock',
2020-04-12 18:28:05 +02:00
Player = 'playerModel',
Map = 'map',
Tiles = 'tiles'
2020-04-11 18:17:36 +02:00
}
2020-04-07 20:41:35 +02:00
export interface GameSceneInterface extends Phaser.Scene {
RoomId : string;
createCurrentPlayer(UserId : string) : void;
shareUserPosition(UsersPosition : Array<MessageUserPositionInterface>): void;
2020-04-07 20:41:35 +02:00
}
export class GameScene extends Phaser.Scene implements GameSceneInterface{
private MapManager : MapManagerInterface;
GameManager : GameManagerInterface;
2020-04-07 20:41:35 +02:00
RoomId : string;
2020-04-07 20:41:35 +02:00
constructor(RoomId : string, GameManager : GameManagerInterface) {
super({
key: "GameScene"
});
2020-04-07 20:41:35 +02:00
this.RoomId = RoomId;
this.GameManager = GameManager;
}
//hook preload scene
preload(): void {
this.load.image(Textures.Tiles, 'maps/tiles.png');
this.load.tilemapTiledJSON(Textures.Map, 'maps/map2.json');
this.load.image(Textures.Rock, 'resources/objects/rockSprite.png');
this.load.spritesheet(Textures.Player,
'resources/characters/pipoya/Male 01-1.png',
{ frameWidth: 32, frameHeight: 32 }
);
}
//hook initialisation
2020-04-07 20:46:30 +02:00
init(){}
//hook create scene
create(): void {
//create map manager
this.MapManager = new MapManager(this);
//notify game manager can to create currentUser in map
this.GameManager.createCurrentPlayer();
}
/**
* Create current player
* @param UserId
*/
createCurrentPlayer(UserId : string): void {
this.MapManager.createCurrentPlayer(UserId)
}
//hook update
update(dt: number): void {
if(this.GameManager.status === StatusGameManagerEnum.IN_PROGRESS){
return;
}
this.MapManager.update();
}
2020-04-07 20:41:35 +02:00
/**
* Share position in scene
* @param UsersPosition
*/
shareUserPosition(UsersPosition : Array<MessageUserPositionInterface>): void {
this.MapManager.updateOrCreateMapPlayer(UsersPosition);
2020-04-07 20:41:35 +02:00
}
}