50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.Targets = void 0;
|
||
|
class Targets {
|
||
|
constructor(bot) {
|
||
|
this.targets = [];
|
||
|
this.bot = bot;
|
||
|
}
|
||
|
appendTargets(targets) {
|
||
|
for (const target of targets) {
|
||
|
this.appendTarget(target);
|
||
|
}
|
||
|
}
|
||
|
appendTarget(target) {
|
||
|
if (this.targets.includes(target))
|
||
|
return;
|
||
|
this.targets.push(target);
|
||
|
}
|
||
|
/**
|
||
|
* Gets the closest target to the bot in this list.
|
||
|
*
|
||
|
* @returns The closest target, or null if there are no targets.
|
||
|
*/
|
||
|
getClosest() {
|
||
|
let closest = null;
|
||
|
let distance = 0;
|
||
|
for (const target of this.targets) {
|
||
|
const dist = target.position.distanceTo(this.bot.entity.position);
|
||
|
if (closest == null || dist < distance) {
|
||
|
closest = target;
|
||
|
distance = dist;
|
||
|
}
|
||
|
}
|
||
|
return closest;
|
||
|
}
|
||
|
get empty() {
|
||
|
return this.targets.length === 0;
|
||
|
}
|
||
|
clear() {
|
||
|
this.targets.length = 0;
|
||
|
}
|
||
|
removeTarget(target) {
|
||
|
const index = this.targets.indexOf(target);
|
||
|
if (index < 0)
|
||
|
return;
|
||
|
this.targets.splice(index, 1);
|
||
|
}
|
||
|
}
|
||
|
exports.Targets = Targets;
|