Fix and refactor with comments of @moumoug
authorgparant <g.parant@thecodingmachine.com>
Tue, 7 Apr 2020 20:38:53 +0000 (22:38 +0200)
committergparant <g.parant@thecodingmachine.com>
Tue, 7 Apr 2020 20:38:53 +0000 (22:38 +0200)
front/src/Phaser/Game/CameraManager.ts
front/src/Phaser/Game/MapManager.ts
front/src/Phaser/Player/Player.ts

index 829bedf48a990017846a65068b85524820977c58..b158554275048db7eef3bf821b921b5fe666c1a0 100644 (file)
@@ -1,95 +1,54 @@
 import {RESOLUTION} from "../../Enum/EnvironmentVariable";
 import {Player} from "../Player/Player";
 import {MapManagerInterface} from "./MapManager";
+import {PlayerAnimationNames} from "../Player/Animation";
 
 export interface CameraManagerInterface {
-    CurrentPlayer : Player;
     MapManager : MapManagerInterface;
-    moveCamera() : void;
+    moveCamera(CurrentPlayer : Player) : void;
 }
 
 export class CameraManager implements CameraManagerInterface{
     Scene : Phaser.Scene;
     Camera : Phaser.Cameras.Scene2D.Camera;
-    CurrentPlayer : Player;
     MapManager : MapManagerInterface;
 
     constructor(
         Scene: Phaser.Scene,
         Camera : Phaser.Cameras.Scene2D.Camera,
         MapManager: MapManagerInterface,
-        CurrentPlayer: Player
     ) {
         this.Scene = Scene;
         this.MapManager = MapManager;
         this.Camera = Camera;
-        this.CurrentPlayer = CurrentPlayer;
-    }
-    /**
-     *
-     * @param x
-     * @param y
-     * @param speedMultiplier
-     */
-    private moveCameraPosition(x:number, y:number, speedMultiplier: number): void {
-        this.Camera.scrollX += speedMultiplier * 2 * x;
-        this.Camera.scrollY += speedMultiplier * 2 * y;
     }
 
-    /**
-     *
-     */
-    moveCamera(): void {
+    moveCamera(CurrentPlayer : Player): void {
         //center of camera
         let startX = ((window.innerWidth / 2) / RESOLUTION);
         let startY = ((window.innerHeight / 2) / RESOLUTION);
 
-        //if user client on shift, camera and player speed
-        let speedMultiplier = this.MapManager.keyShift.isDown ? 5 : 1;
-
-        if (this.MapManager.keyZ.isDown || this.MapManager.keyUp.isDown) {
-            if (!this.CanToMoveUp()) {
-                this.Camera.scrollY = 0;
-            }else if (this.CurrentPlayer.y < (this.MapManager.Map.widthInPixels - startY)) {
-                this.moveCameraPosition(0, -1, speedMultiplier);
-            }
-        }
-        if (this.MapManager.keyQ.isDown || this.MapManager.keyLeft.isDown) {
-            if (!this.CanToMoveLeft()) {
-                this.Camera.scrollX = 0;
-            }else if (this.CurrentPlayer.x < (this.MapManager.Map.heightInPixels - startX)) {
-                this.moveCameraPosition(-1, 0, speedMultiplier);
-            }
-        }
-        if (this.MapManager.keyS.isDown || this.MapManager.keyDown.isDown) {
-            if (!this.CanToMoveDown()) {
-                this.Camera.scrollY = (this.MapManager.Map.heightInPixels - (window.innerHeight / RESOLUTION));
-            } else if (this.CurrentPlayer.y > startY) {
-                this.moveCameraPosition(0, 1, speedMultiplier);
-            }
+        let limit = {
+            top: startY,
+            left: startX,
+            bottom : this.MapManager.Map.heightInPixels - startY,
+            right: this.MapManager.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 (this.MapManager.keyD.isDown || this.MapManager.keyRight.isDown) {
-            if (!this.CanToMoveRight()) {
-                this.Camera.scrollX = (this.MapManager.Map.widthInPixels - (window.innerWidth / RESOLUTION));
-            } else if (this.CurrentPlayer.x > startX) {
-                this.moveCameraPosition(1, 0, speedMultiplier);
-            }
-        }
-    }
 
-    private CanToMoveUp(){
-        return this.Camera.scrollY > 0;
-    }
-
-    private CanToMoveLeft(){
-        return this.Camera.scrollX > 0;
-    }
-
-    private CanToMoveDown(){
-        return this.MapManager.Map.heightInPixels > (this.Camera.scrollY + (window.innerHeight / RESOLUTION))
-    }
-
-    private CanToMoveRight(){
-        return this.MapManager.Map.widthInPixels > (this.Camera.scrollX + (window.innerWidth / RESOLUTION))
+        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
index f12a32d1e12d9f3bd5459e0ff231b4dc5db457b0..8b3d9231e3bdad3c6e9271e404c534d369948208 100644 (file)
@@ -52,17 +52,17 @@ export class MapManager implements MapManagerInterface{
         //initialise keyboard
         this.initKeyBoard();
 
+        //initialise camera
+        this.Camera = new CameraManager(this.Scene, this.Scene.cameras.main, this);
         //initialise player
         this.CurrentPlayer = new Player(
             this.Scene,
             this.startX,
             this.startY,
+            this.Camera,
             this
         );
         this.CurrentPlayer.initAnimation();
-
-        //initialise camera
-        this.Camera = new CameraManager(this.Scene, this.Scene.cameras.main, this, this.CurrentPlayer);
     }
 
 
@@ -82,6 +82,5 @@ export class MapManager implements MapManagerInterface{
 
     update() : void {
         this.CurrentPlayer.move();
-        this.Camera.moveCamera()
     }
 }
\ No newline at end of file
index f3911041e4569b1b1036b55ce26cd6910c8ce157..563843fd346ddd2fda886f95657977d1e303c9be 100644 (file)
@@ -1,18 +1,19 @@
 import {MapManagerInterface} from "../Game/MapManager";
 import {getPlayerAnimations, playAnimation, PlayerAnimationNames} from "./Animation";
-import {Connexion} from "../../Connexion";
 import {GameSceneInterface} from "../Game/GameScene";
 import {ConnexionInstance} from "../Game/GameManager";
+import {CameraManagerInterface} from "../Game/CameraManager";
 
 export class Player extends Phaser.GameObjects.Sprite{
     MapManager : MapManagerInterface;
     PlayerValue : string;
-    Connexion: Connexion;
+    CameraManager: CameraManagerInterface;
 
     constructor(
         Scene : GameSceneInterface,
         x : number,
         y : number,
+        CameraManager: CameraManagerInterface,
         MapManager: MapManagerInterface,
         PlayerValue : string = "player"
     ) {
@@ -20,6 +21,7 @@ export class Player extends Phaser.GameObjects.Sprite{
         this.PlayerValue = PlayerValue;
         Scene.add.existing(this);
         this.MapManager = MapManager;
+        this.CameraManager = CameraManager;
     }
 
 
@@ -41,7 +43,7 @@ export class Player extends Phaser.GameObjects.Sprite{
         let direction = null;
 
         if((this.MapManager.keyZ.isDown || this.MapManager.keyUp.isDown)){
-            if(!this.CanToMoveUp()){
+            if(!this.CanMoveUp()){
                 return;
             }
             playAnimation(this, PlayerAnimationNames.WalkUp);
@@ -50,7 +52,7 @@ export class Player extends Phaser.GameObjects.Sprite{
             direction = PlayerAnimationNames.WalkUp;
         }
         if((this.MapManager.keyQ.isDown || this.MapManager.keyLeft.isDown)){
-            if(!this.CanToMoveLeft()){
+            if(!this.CanMoveLeft()){
                 return;
             }
             playAnimation(this, PlayerAnimationNames.WalkLeft);
@@ -59,7 +61,7 @@ export class Player extends Phaser.GameObjects.Sprite{
             direction = PlayerAnimationNames.WalkLeft;
         }
         if((this.MapManager.keyS.isDown || this.MapManager.keyDown.isDown)){
-            if(!this.CanToMoveDown()){
+            if(!this.CanMoveDown()){
                 return;
             }
             playAnimation(this, PlayerAnimationNames.WalkDown);
@@ -68,7 +70,7 @@ export class Player extends Phaser.GameObjects.Sprite{
             direction = PlayerAnimationNames.WalkDown;
         }
         if((this.MapManager.keyD.isDown || this.MapManager.keyRight.isDown)){
-            if(!this.CanToMoveRight()){
+            if(!this.CanMoveRight()){
                 return;
             }
             playAnimation(this, PlayerAnimationNames.WalkRight);
@@ -81,6 +83,8 @@ export class Player extends Phaser.GameObjects.Sprite{
         }else{
             this.sharePosition(direction);
         }
+
+        this.CameraManager.moveCamera(this);
     }
 
     private sharePosition(direction : string){
@@ -89,19 +93,19 @@ export class Player extends Phaser.GameObjects.Sprite{
         }
     }
 
-    private CanToMoveUp(){
+    private CanMoveUp(){
         return this.y > 0;
     }
 
-    private CanToMoveLeft(){
+    private CanMoveLeft(){
         return this.x > 0;
     }
 
-    private CanToMoveDown(){
+    private CanMoveDown(){
         return this.MapManager.Map.heightInPixels > this.y;
     }
 
-    private CanToMoveRight(){
+    private CanMoveRight(){
         return this.MapManager.Map.widthInPixels > this.x;
     }
 }
\ No newline at end of file