const API_URL = process.env.API_URL || "http://api.workadventure.localhost";
const ROOM = [process.env.ROOM || "THECODINGMACHINE"];
const RESOLUTION = 2;
+const ZOOM_LEVEL = 3/4;
export {
DEBUG_MODE,
API_URL,
RESOLUTION,
+ ZOOM_LEVEL,
ROOM
}
\ No newline at end of file
+++ /dev/null
-import {RESOLUTION} from "../../Enum/EnvironmentVariable";
-import {Player} from "../Player/Player";
-import {GameSceneInterface} from "./GameScene";
-
-export interface CameraManagerInterface {
- moveCamera(CurrentPlayer : Player) : void;
-}
-
-export class CameraManager implements CameraManagerInterface{
- Scene : GameSceneInterface;
- Camera : Phaser.Cameras.Scene2D.Camera;
-
- constructor(
- Scene: GameSceneInterface,
- Camera : Phaser.Cameras.Scene2D.Camera,
- ) {
- this.Scene = Scene;
- this.Camera = Camera;
- }
-
- moveCamera(CurrentPlayer : Player): void {
- //center of camera
- let startX = ((window.innerWidth / 2) / RESOLUTION);
- let startY = ((window.innerHeight / 2) / RESOLUTION);
-
- let limit = {
- top: startY,
- left: startX,
- bottom : this.Scene.Map.heightInPixels - startY,
- right: this.Scene.Map.widthInPixels - startX,
- };
-
- if(CurrentPlayer.x < limit.left){
- this.Camera.scrollX = 0;
- }else if(CurrentPlayer.x > limit.right){
- this.Camera.scrollX = (limit.right - startX);
- }else {
- this.Camera.scrollX = (CurrentPlayer.x - startX);
- }
-
- if(CurrentPlayer.y < limit.top){
- this.Camera.scrollY = 0;
- }else if(CurrentPlayer.y > limit.bottom){
- this.Camera.scrollY = (limit.bottom - startY);
- }else {
- this.Camera.scrollY = (CurrentPlayer.y - startY);
- }
- }
-}
\ No newline at end of file
import {GameManagerInterface, StatusGameManagerEnum} from "./GameManager";
import {MessageUserPositionInterface} from "../../Connexion";
-import {CameraManager, CameraManagerInterface} from "./CameraManager";
import {CurrentGamerInterface, GamerInterface, Player} from "../Player/Player";
-import {DEBUG_MODE, RESOLUTION} from "../../Enum/EnvironmentVariable";
+import {DEBUG_MODE, RESOLUTION, ZOOM_LEVEL} from "../../Enum/EnvironmentVariable";
import Tile = Phaser.Tilemaps.Tile;
export enum Textures {
GameManager : GameManagerInterface;
RoomId : string;
Terrain : Phaser.Tilemaps.Tileset;
- Camera: CameraManagerInterface;
CurrentPlayer: CurrentGamerInterface;
MapPlayers : Phaser.Physics.Arcade.Group;
Map: Phaser.Tilemaps.Tilemap;
//init event click
this.EventToClickOnTile();
- //initialise camera
- this.Camera = new CameraManager(this, this.cameras.main);
-
//initialise list of other player
this.MapPlayers = this.physics.add.group({ immovable: true });
//notify game manager can to create currentUser in map
this.GameManager.createCurrentPlayer();
+
+
+ //initialise camera
+ this.initCamera();
+ }
+
+ //todo: in a dedicated class/function?
+ initCamera() {
+ this.cameras.main.setBounds(0,0, this.Map.widthInPixels, this.Map.heightInPixels);
+ this.cameras.main.startFollow(this.CurrentPlayer);
+ this.cameras.main.setZoom(ZOOM_LEVEL);
}
addLayer(Layer : Phaser.Tilemaps.StaticTilemapLayer){
this,
this.startX,
this.startY,
- this.Camera,
);
this.CurrentPlayer.initAnimation();
this,
MessageUserPosition.position.x,
MessageUserPosition.position.y,
- this.Camera,
);
player.initAnimation();
this.MapPlayers.add(player);
import {getPlayerAnimations, playAnimation, PlayerAnimationNames} from "./Animation";
import {GameSceneInterface, Textures} from "../Game/GameScene";
import {ConnexionInstance} from "../Game/GameManager";
-import {CameraManagerInterface} from "../Game/CameraManager";
import {MessageUserPositionInterface} from "../../Connexion";
import {ActiveEventList, UserInputEvent, UserInputManager} from "../UserInput/UserInputManager";
import {PlayableCaracter} from "../Entity/PlayableCaracter";
export interface CurrentGamerInterface extends PlayableCaracter{
userId : string;
PlayerValue : string;
- CameraManager: CameraManagerInterface;
initAnimation() : void;
moveUser() : void;
say(text : string) : void;
export interface GamerInterface extends PlayableCaracter{
userId : string;
PlayerValue : string;
- CameraManager: CameraManagerInterface;
initAnimation() : void;
updatePosition(MessageUserPosition : MessageUserPositionInterface) : void;
say(text : string) : void;
export class Player extends PlayableCaracter implements CurrentGamerInterface, GamerInterface {
userId: string;
PlayerValue: string;
- CameraManager: CameraManagerInterface;
userInputManager: UserInputManager;
constructor(
Scene: GameSceneInterface,
x: number,
y: number,
- CameraManager: CameraManagerInterface,
PlayerValue: string = Textures.Player
) {
super(Scene, x, y, PlayerValue, 1);
//set data
this.userId = userId;
this.PlayerValue = PlayerValue;
- this.CameraManager = CameraManager;
//the current player model should be push away by other players to prevent conflict
this.setImmovable(false);
this.stop();
}
this.sharePosition(direction);
- this.CameraManager.moveCamera(this);
}
private sharePosition(direction: string) {