47 lines
761 B
JavaScript
47 lines
761 B
JavaScript
'use strict';
|
|
|
|
const Body = require('./body.js');
|
|
|
|
class Asteroid extends Body {
|
|
constructor(world, pos, size) {
|
|
super(world);
|
|
|
|
this.x = pos.x;
|
|
this.y = pos.y;
|
|
|
|
this.debug = 0;
|
|
|
|
this.size = size;
|
|
|
|
this.type = 'asteroid';
|
|
this.frame = this.randomFrame();
|
|
}
|
|
|
|
randomFrame() {
|
|
let s = this.size;
|
|
let l = (Math.random() * 4 + 4) | 0;
|
|
let build = Array(l).fill().map(_ => Math.random() * Math.PI * 2);
|
|
build = build.sort().map(a => [Math.cos(a) * s, Math.sin(a) * s]);
|
|
return [build];
|
|
}
|
|
|
|
tickType() {
|
|
if (this.debug > 0)
|
|
this.debug--;
|
|
}
|
|
|
|
packTypeDelta() {
|
|
return [this.debug];
|
|
}
|
|
|
|
packFull() {
|
|
return {
|
|
type: 'asteroid',
|
|
id: this.id,
|
|
frame: this.frame,
|
|
delta: this.packDelta()
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = Asteroid;
|