52 lines
947 B
JavaScript
52 lines
947 B
JavaScript
class Renderer {
|
|
constructor(spriteX, spriteY, canvasX, canvasY, rotation=0) {
|
|
this.spriteX = spriteX
|
|
this.spriteY = spriteY
|
|
this.canvasX = canvasX
|
|
this.canvasY = canvasY
|
|
this.rotation = rotation
|
|
|
|
if (this.rotation === 0) {
|
|
this.render()
|
|
} else {
|
|
this.rotateRender()
|
|
}
|
|
}
|
|
|
|
render() {
|
|
ctx.drawImage(
|
|
spriteMap,
|
|
spriteSize * this.spriteX,
|
|
spriteSize * this.spriteY,
|
|
spriteSize,
|
|
spriteSize,
|
|
spriteSize * this.canvasX,
|
|
spriteSize * this.canvasY,
|
|
spriteSize,
|
|
spriteSize
|
|
)
|
|
}
|
|
|
|
rotateRender() {
|
|
ctx.save()
|
|
|
|
ctx.translate(
|
|
spriteSize * this.canvasX + (spriteSize / 2),
|
|
spriteSize * this.canvasY + (spriteSize / 2)
|
|
)
|
|
ctx.rotate(this.rotation * TO_RADIANS)
|
|
|
|
ctx.drawImage(
|
|
spriteMap,
|
|
spriteSize * this.spriteX,
|
|
spriteSize * this.spriteY,
|
|
spriteSize,
|
|
spriteSize,
|
|
-(spriteSize/2),
|
|
-(spriteSize/2),
|
|
spriteSize,
|
|
spriteSize)
|
|
|
|
ctx.restore()
|
|
}
|
|
}
|