unibutton/common/npc.js

42 lines
No EOL
972 B
JavaScript

import { distF, uuidv4 } from './util.js'
class NPC {
constructor(you) {
let pos = { x: Math.random() * 1000 - 50, y: Math.random() * 1000 - 50 };
let vel = { x: 0, y: 0 };
this.pos = pos;
this.vel = vel;
this.you = you || uuidv4();
this.type = 'NPC';
this.immortal = true;
this.serverProps = [
'type', 'pos','vel','you','immortal'
];
}
handleTick(game) {
let { entities } = game;
let rEntity, i = 0;
while ((!rEntity || rEntity.type != 'Player') && i < 100) {
rEntity = entities[Math.floor(Math.random() * entities.length)];
i++;
}
this.vel.x += (rEntity.pos.x - this.pos.x) * 0.0002;
this.vel.y += (rEntity.pos.y - this.pos.y) * 0.0002;
this.vel.x *= 0.995;
this.vel.y *= 0.995;
this.pos.x += this.vel.x;
this.pos.y += this.vel.y;
}
}
export default NPC;