Skip to content

Commit d0bf90a

Browse files
committed
Add Renderer#render (check Celestials have Element)
1 parent ccffba8 commit d0bf90a

File tree

4 files changed

+45
-10
lines changed

4 files changed

+45
-10
lines changed

js/main.js

+20
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import Game from "./modules/Game.js";
99
import DOMRenderer from "./modules/DOMRenderer.js";
1010
import Physics from "./modules/Physics.js";
1111
import GameData from "./modules/GameData.js";
12+
import Celestial from "./modules/Celestial.js";
13+
import { Point, Vector } from "./modules/Utils.js";
1214

1315
/*----- Initialize -----------------------------------------------------------*/
1416
const model = new GameData(),
@@ -21,3 +23,21 @@ document.body.append(view.container);
2123
document.addEventListener("mousedown", game.handleMouseDown.bind(game));
2224
document.addEventListener("mouseup", game.handleMouseUp.bind(game));
2325
document.addEventListener("mousemove", game.handleMouseMove.bind(game));
26+
27+
/*---- Temporary Level -------------------------------------------------------*/
28+
let saturn = new Celestial({
29+
name: "Saturn",
30+
mass: 5.683e26,
31+
size: 102, // not to scale
32+
}),
33+
titan = new Celestial({
34+
name: "Titan",
35+
mass: 1.35e23,
36+
position: new Point(0, -389), // not to scale
37+
velocity: new Vector(15.26e3, 0),
38+
size: 18, // not to scale
39+
});
40+
model.scene.push(saturn);
41+
model.scene.push(titan);
42+
view.render();
43+
console.log(model);

js/modules/DOMRenderer.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @file Manages the game view (DOM).
33
* @author Una Ada <una@anarchy.website>
4-
* @version 2021.06.01
4+
* @version 2021.06.03
55
*/
66

77
/*----- Imports --------------------------------------------------------------*/
@@ -10,7 +10,7 @@ import Renderer from "./Renderer.js";
1010

1111
/*----- Classes --------------------------------------------------------------*/
1212
/** @module DOMRenderer - Manages the game view (DOM). */
13-
export default class extends Renderer {
13+
export default class DOMRenderer extends Renderer {
1414
/**
1515
* Initialize a DOM-based renderer.
1616
* @arg {GameData} model - A game model instance.
@@ -19,4 +19,13 @@ export default class extends Renderer {
1919
super(model);
2020
this.setContainer(document.createElement("div"));
2121
}
22+
23+
/*---- Methods -------------------------------------------------------------*/
24+
/** Render the game scene. */
25+
render() {
26+
const scene = this.model.scene;
27+
scene.forEach(
28+
(obj) => obj.element || (obj.element = document.createElement("div"))
29+
);
30+
}
2231
}

js/modules/Renderer.js

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
/**
22
* @file Superclass for managing game view.
33
* @author Una Ada <una@anarchy.website>
4-
* @version 2021.06.01
4+
* @version 2021.06.03
55
*/
66

77
/*----- Imports --------------------------------------------------------------*/
88
import GameData from "./GameData.js";
99

1010
/*----- Classes --------------------------------------------------------------*/
1111
/** @module Renderer - Superclass for managing game view. */
12-
export default class {
12+
export default class Renderer {
1313
/**
1414
* Initialize base rendering functions.
1515
* @arg {GameData} model - A game model instance.
@@ -18,6 +18,15 @@ export default class {
1818
/** @var {GameData} model - Reference to the game's model. */
1919
this.model = model;
2020
}
21+
22+
/*---- Setters and getters -------------------------------------------------*/
23+
/** @type {number[]} */
24+
get bounds() {
25+
const { top, left, height, width } = this.container.getBoundingClientRect();
26+
return { top, left, height, width };
27+
}
28+
29+
/*----- Methods ------------------------------------------------------------*/
2130
/**
2231
* Sets the view container
2332
* @arg {HTMLElement} el - Element to set as view container.
@@ -28,9 +37,8 @@ export default class {
2837
/** @var {HTMLElement} container - DOM Element holding all game views. */
2938
this.container = el;
3039
}
31-
/** @type {number[]} */
32-
get bounds() {
33-
const { top, left, height, width } = this.container.getBoundingClientRect();
34-
return { top, left, height, width };
40+
/** Render the game scene. */
41+
render() {
42+
console.error("Renderer#render() has not been overwritten by subclass!");
3543
}
3644
}

js/modules/Utils.js

-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ export class Point {
1919
this.y = y;
2020
}
2121

22-
23-
2422
/*----- Methods ------------------------------------------------------------*/
2523
/**
2624
* Create a point of the point.

0 commit comments

Comments
 (0)