import * as constants from '/static/games/stallman-shooter/constants.js'; export class Player { constructor() { this.x = 400; this.y = 500; this.x_d = 0; this.y_d = 0; this.down_p = false; this.left_p = false; this.right_p = false; this.up_p = false; this.fire_rate = 15; this.shift_p = false; } act(events) { for (const event of events) { const [kind, key] = event; if (kind === 'keydown' && key === 'ArrowDown') { this.down_p = true; this.y_d = -1; } else if (kind === 'keyup' && key === 'ArrowDown') { this.down_p = false; } else if (kind === 'keydown' && key === 'ArrowUp') { this.up_p = true; this.y_d = 1; } else if (kind === 'keyup' && key === 'ArrowUp') { this.up_p = false; } else if (kind === 'keydown' && key === 'ArrowLeft') { this.left_p = true; this.x_d = -1; } else if (kind === 'keyup' && key === 'ArrowLeft') { this.left_p = false; } else if (kind === 'keydown' && key === 'ArrowRight') { this.right_p = true; this.x_d = 1; } else if (kind === 'keyup' && key === 'ArrowRight') { this.right_p = false; } else if (kind === 'keydown' && key === 'Shift') { this.shift_p = true; } else if (kind === 'keyup' && key === 'Shift') { this.shift_p = false; } } if (this.left_p) { if (!this.right_p) { this.x_d = -1; } } else if (this.right_p) { this.x_d = 1; } else { this.x_d = 0; } if (this.up_p) { if (!this.down_p) { this.y_d = -1; } } else if (this.down_p) { this.y_d = 1; } else { this.y_d = 0; } /* Don't go off the side */ if (this.x_d < 0 && this.x <= 0 || this.x >= constants.x_dim && this.x_d > 0) { this.x_d = 0; } if (this.y <= 0 && this.y_d < 0 || this.y >= constants.y_dim && this.y_d > 0) { this.y_d = 0; } if (this.shift_p) { this.x += this.x_d; this.y += this.y_d; } else { this.x += this.x_d * 3; this.y += this.y_d * 3; } } radius() { return 3; } center() { return [33, 21]; } }