# Conflicts: # front/src/Phaser/Game/CameraManager.ts # front/src/Phaser/Game/GameScene.ts # front/src/Phaser/Game/MapManager.ts # front/src/Phaser/Player/Player.ts
40 lines
No EOL
1.4 KiB
TypeScript
40 lines
No EOL
1.4 KiB
TypeScript
import {PlayableCaracter} from "../Entity/PlayableCaracter";
|
|
import {Textures} from "../Game/GameScene";
|
|
import {UserInputEvent} from "../UserInput/UserInputManager";
|
|
import {Player} from "../Player/Player";
|
|
import {MessageUserPositionInterface} from "../../Connexion";
|
|
import {playAnimation} from "../Player/Animation";
|
|
|
|
export class NonPlayer extends PlayableCaracter {
|
|
|
|
isFleeing: boolean = false;
|
|
fleeingDirection:any = null //todo create a vector class
|
|
|
|
constructor(scene: Phaser.Scene, x: number, y: number) {
|
|
super(scene, x, y, Textures.Player, 1);
|
|
this.setSize(32, 32); //edit the hitbox to better match the caracter model
|
|
}
|
|
|
|
|
|
updatePosition(MessageUserPosition : MessageUserPositionInterface){
|
|
playAnimation(this, MessageUserPosition.position.direction);
|
|
this.setX(MessageUserPosition.position.x);
|
|
this.setY(MessageUserPosition.position.y);
|
|
}
|
|
|
|
fleeFrom(player:Player) {
|
|
if (this.isFleeing) return;
|
|
this.say("Don't touch me!");
|
|
this.isFleeing = true;
|
|
|
|
setTimeout(() => {
|
|
this.say("Feww, I escaped.");
|
|
this.isFleeing = false
|
|
this.fleeingDirection = null
|
|
}, 3000);
|
|
|
|
let vectorX = this.x - player.x;
|
|
let vectorY = this.y - player.y;
|
|
this.fleeingDirection = {x: vectorX, y: vectorY}
|
|
}
|
|
} |