41 lines
1.4 KiB
TypeScript
41 lines
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, name: string) {
|
|
super(scene, x, y, Textures.Player, name, 1);
|
|
this.setSize(32, 32); //edit the hitbox to better match the character 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}
|
|
}
|
|
}
|