You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
59 lines
1.5 KiB
class Move {
|
|
constructor(toward, enemyBot = true) { //true = move toward / false = flee from
|
|
this.toward = toward;
|
|
this.enemyBot = enemyBot;
|
|
}
|
|
|
|
do(robot) {
|
|
if (this.enemyBot) {
|
|
if (robot.verifyTarget()) {
|
|
if (this.toward === true) {
|
|
return this.moveToward(robot);
|
|
} else {
|
|
return this.fleeFrom(robot);
|
|
}
|
|
}
|
|
} else {
|
|
let bonusTarget = chooseTarget(robot, listBonus);
|
|
if (bonusTarget !== undefined) {
|
|
let ret;
|
|
if (this.toward === true) {
|
|
ret = this.moveToward(robot, bonusTarget);
|
|
} else {
|
|
ret = this.fleeFrom(robot, bonusTarget);
|
|
}
|
|
if (!ret) {
|
|
bonusTarget.useOn(robot);
|
|
listBonus.splice(listBonus.indexOf(bonusTarget), 1);
|
|
robot.target = null;
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
moveToward(robot, target = robot.target) {
|
|
return robot.advanceTo(target);
|
|
|
|
}
|
|
|
|
fleeFrom(robot, target = robot.target) {
|
|
return robot.fleeFrom(target);
|
|
}
|
|
|
|
getFrame() {
|
|
let frame;
|
|
if (this.toward)
|
|
frame = 0;
|
|
else
|
|
frame = 2;
|
|
if (!this.enemyBot)
|
|
frame += 1;
|
|
return frame;
|
|
}
|
|
|
|
getOptionJson() {
|
|
return this.toward + ',' + this.enemyBot;
|
|
}
|
|
} |