Omnibus's picture
Upload 27 files
c679a93
raw
history blame
1.61 kB
export class Player extends Phaser.Physics.Arcade.Sprite {
constructor(scene, playerId, x = 200, y = 200, dummy = false) {
super(scene, x, y, '')
scene.add.existing(this)
scene.physics.add.existing(this)
this.scene = scene
this.prevX = -1
this.prevY = -1
this.dead = false
this.prevDead = false
this.playerId = playerId
this.move = {}
this.setDummy(dummy)
this.body.setSize(32, 48)
this.prevNoMovement = true
this.setCollideWorldBounds(true)
scene.events.on('update', this.update, this)
}
setDummy(dummy) {
if (dummy) {
this.body.setBounce(1)
this.scene.time.addEvent({
delay: Phaser.Math.RND.integerInRange(45, 90) * 1000,
callback: () => this.kill()
})
} else {
this.body.setBounce(0)
}
}
kill() {
this.dead = true
this.setActive(false)
}
revive(playerId, dummy) {
this.playerId = playerId
this.dead = false
this.setActive(true)
this.setDummy(dummy)
this.setVelocity(0)
}
setMove(data) {
let int = parseInt(data, 36)
let move = {
left: int === 1 || int === 5,
right: int === 2 || int === 6,
up: int === 4 || int === 6 || int === 5,
none: int === 8
}
this.move = move
}
update() {
if (this.move.left) this.setVelocityX(-160)
else if (this.move.right) this.setVelocityX(160)
else this.setVelocityX(0)
if (this.move.up && this.body.onFloor()) this.setVelocityY(-550)
}
postUpdate() {
this.prevX = this.x
this.prevY = this.y
this.prevDead = this.dead
}
}