Skip to content

Commit ac02e3d

Browse files
committed
Add Renderer#loop
1 parent 81efd39 commit ac02e3d

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

js/modules/Renderer.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,17 @@
88
import GameData from "./GameData.js";
99

1010
/*----- Classes --------------------------------------------------------------*/
11-
/** @module Renderer - Superclass for managing game view. */
11+
/** @module Renderer Superclass for managing game view. */
1212
export default class Renderer {
1313
/**
1414
* Initialize base rendering functions.
15-
* @arg {GameData} model - A game model instance.
15+
* @arg {GameData} model A game model instance.
1616
*/
1717
constructor(model) {
18-
/** @var {GameData} model - Reference to the game's model. */
18+
/** @var {GameData} model Reference to the game's model. */
1919
this.model = model;
20+
/** @var {boolean} running Should the renderer continue running? */
21+
this.running = true;
2022
}
2123

2224
/*---- Setters and getters -------------------------------------------------*/
@@ -29,12 +31,12 @@ export default class Renderer {
2931
/*----- Methods ------------------------------------------------------------*/
3032
/**
3133
* Sets the view container
32-
* @arg {HTMLElement} el - Element to set as view container.
34+
* @arg {HTMLElement} el Element to set as view container.
3335
*/
3436
setContainer(el) {
3537
el.id = `gravity-${this.model.id}`;
3638
el.classList.add("gravity");
37-
/** @var {HTMLElement} container - DOM Element holding all game views. */
39+
/** @var {HTMLElement} container DOM Element holding all game views. */
3840
this.container = el;
3941
}
4042
/**
@@ -44,4 +46,9 @@ export default class Renderer {
4446
render() {
4547
throw new Error("Renderer#render() must be implemented by subclass!");
4648
}
49+
/** Render on animationFrame */
50+
loop() {
51+
if (this.running) this.render();
52+
requestAnimationFrame(this.loop);
53+
}
4754
}

0 commit comments

Comments
 (0)