Reputation: 53
I have an error from ESlint, but I don´t understand why. I have read these:
and this:
I still don't understanding what am I doing wrong.
My class
/* eslint-disable no-plusplus */
/* eslint-disable no-undef */
class Player {
constructor(imagePlayer, name, score, positionY, positionX) {
this.imagePlayer = imagePlayer;
this.name = name;
this.score = score;
this.x = positionX;
this.y = positionY;
}
drawPlayer() {
app.map.mapGame[this.y][this.x] = this.imagePlayer;
}
obstacle(y, x) {
let colision = false;
if (app.map.mapGame[y][x] === 1) {
console.log("evaluación");
colision = true;
}
return colision;
}
lastPosition(oldPosition, direction) {
if (direction === left || direction === right) {
app.map.mapGame[this.y][this.x - oldPosition] = 0;
} else {
app.map.mapGame[this.y - oldPosition][this.x] = 0;
}
}
// movements players
movement(direction) {
switch (direction) {
case up:
if (this.y > 0) {
if (this.obstacle(this.y - 1, this.x) === false) {
this.y--;
this.lastPosition(-1, direction);
}
}
break;
case down:
if (this.y < 9) {
if (this.obstacle(this.y + 1, this.x) === false) {
this.y++;
this.lastPosition(+1, direction);
}
}
break;
case left:
if (this.x > 0) {
this.x--;
this.lastPosition(-1, direction);
}
break;
case right:
if (this.x < 14) {
this.x++;
this.lastPosition(+1, direction);
}
break;
default:
console.log("muro");
break;
}
} // movement
}
Error:
Expected 'this' to be used by class method 'obstacle
The obstacle method isn't settled on the full cases just on two of them.
Upvotes: 3
Views: 10629
Reputation: 664599
The linter is complaining that a method that doesn't use the instance it was called on (this
) shouldn't be an instance method in the first place. It's a bad practice.
You either
static
method, to be called as Player.obstacle(x, y)
(and probably be renamed to checkGlobalMapForObstacle
)Map
class where it belongs, as it is checking coordinates against the map contents (this.mapGame[x][y]
).Upvotes: 5