64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
export const BarcoTipo = Object.freeze({
|
|
FRAGATA: 1,
|
|
DESTRUCTOR: 2,
|
|
ACORAZADO: 3,
|
|
PORTAAVIONES: 4,
|
|
});
|
|
|
|
class Barco {
|
|
constructor(x, y, longitud, orientacion, barcoImg) {
|
|
this.barcoImg = barcoImg;
|
|
this.xIni = this.x = x;
|
|
this.yIni = this.y = y;
|
|
this.longitud = longitud;
|
|
this.orientacionIni = this.orientacion = orientacion;
|
|
this.seleccionado = false;
|
|
this.posIncorrecta = true;
|
|
}
|
|
clickado(clickX, clickY) {
|
|
if (this.orientacion === "VERTICAL") {
|
|
return (
|
|
clickX === this.x && clickY >= this.y && clickY < this.y + this.longitud
|
|
);
|
|
} else {
|
|
return (
|
|
clickY === this.y && clickX >= this.x && clickX < this.x + this.longitud
|
|
);
|
|
}
|
|
}
|
|
saveIniPos() {
|
|
this.orientacionIni=this.orientacion;
|
|
this.xIni = this.x;
|
|
this.yIni = this.y;
|
|
}
|
|
restoreIniPos() {
|
|
this.orientacion=this.orientacionIni;
|
|
this.x = this.xIni;
|
|
this.y = this.yIni;
|
|
}
|
|
setXY(x, y) {
|
|
this.x = x;
|
|
this.y = y;
|
|
}
|
|
giraBarco() {
|
|
this.orientacion === "VERTICAL"
|
|
? (this.orientacion = "HORIZONTAL")
|
|
: (this.orientacion = "VERTICAL");
|
|
}
|
|
draw(ctx) {
|
|
this.orientacion === "VERTICAL"
|
|
? ctx.drawImage(this.barcoImg[0], this.x * 64, this.y * 64)
|
|
: ctx.drawImage(this.barcoImg[1], this.x * 64, this.y * 64);
|
|
if (this.seleccionado) {
|
|
ctx.fillStyle = this.posIncorrecta
|
|
? "rgba(255, 0, 0, 0.2)"
|
|
: "rgba(187, 187, 0, 0.2)";
|
|
this.orientacion === "VERTICAL"
|
|
? ctx.fillRect(this.x * 64, this.y * 64, 64, 64 * this.longitud)
|
|
: ctx.fillRect(this.x * 64, this.y * 64, 64 * this.longitud, 64);
|
|
}
|
|
}
|
|
}
|
|
|
|
export default Barco;
|