/**
* @author Wolfgang Kowarschick <kowa@hs-augsburg.de>
* @copyright 2017 - 2018
* @license CC-BY-NC-SA-4.0
*/
/**
* @module model/update
*/
import {collisionCircleStage} from './collisionCircleStage';
import {collisionPaddleStage} from './collisionPaddleStage';
import {collisionPaddleCircle} from './collisionPaddleCircle';
/** @private */
let v_start_button, v_stage, v_ball, v_paddles;
/**
* @function initUpdater
* @static
*
* @param {Object} p_config
* @param {ModelCircle} p_config.startButton
* @param {ModelStage} p_config.stage
* @param {ModelCircle} p_config.ball
* @param {Array.<ModelPaddle>} p_config.paddles
*/
function initUpdater({startButton: p_start_button,
stage: p_stage, ball: p_ball, paddles: p_paddles
})
{ v_start_button = p_start_button;
v_stage = p_stage;
v_ball = p_ball;
v_paddles = p_paddles;
}
/**
* @function update
* @static
* @description
* Update function to be called at least 60 times per second.
* Typically used as a callback function.
*
* @param {number} p_delta_s - time in seconds since last call (max 1/60)
*/
function update(p_delta_s)
{ v_start_button.update(p_delta_s);
v_ball.update(p_delta_s);
collisionCircleStage(v_ball, v_stage);
for (let v_paddle of v_paddles)
{ v_paddle.update(p_delta_s);
collisionPaddleStage(v_paddle, v_stage);
collisionPaddleCircle(v_paddle, v_ball);
}
}
export {initUpdater, update};