import { Game } from "./Game.js"; import { Point } from "./Point.js"; import { renderCube } from "../../3D/cube.js" class Ball { /** * * @param {Game} game * @param {Number} position_x * @param {Number} position_y * @param {Number} velocity_x * @param {Number} velocity_y */ constructor(game, position_x, position_y, velocity_x, velocity_y) { /** * @type {Game} */ this.game = game; /** * @type {Number} */ this.position_x = position_x; /** * @type {Number} */ this.position_y = position_y; /** * @type {Number} */ this.velocity_x = velocity_x; /** * @type {Number} */ this.velocity_y = velocity_y; } /** * * @param {CanvasRenderingContext2D} ctx ou pas ptdr */ draw(ctx) { if(ctx instanceof CanvasRenderingContext2D) { ctx.rect(this.position_x, this.position_y, this.game.config.ball_size, this.game.config.ball_size); } else if(ctx instanceof WebGLRenderingContext) { renderCube(ctx, this.position_x, 0, this.position_y, 0, this.game.config.ball_size, this.game.config.ball_size, this.game.config.ball_size); } else { alert('Unknown rendering context type (wtf)'); } } render() { /** * @type {Number} */ let new_pos_x = this.position_x + this.velocity_x * this.game.time.deltaTime(); /** * @type {Number} */ let new_pos_y = position_y + this.velocity_y * this.game.time.deltaTime(); if (this._collision(this.position_x, this.position_y, new_pos_x, new_pos_y)) { this.velocity_x = -this.velocity_x; this.velocity_y = -this.velocity_y; new_pos_x = this.position_x + this.velocity_x * this.game.time.deltaTime(); new_pos_y = this.position_y + this.velocity_y * this.game.time.deltaTime(); } this.position_x = new_pos_x this.position_y = new_pos_y this.velocity_x = this.velocity_x + this.game.config.ball_speed_inc; this.velocity_y = this.velocity_y + this.game.config.ball_speed_inc; } update (position_x, position_y, velocity_x, velocity_y) { this.position_x = position_x; this.position_y = position_y; this.velocity_x = velocity_x; this.velocity_y = velocity_y; } } export { Ball }