From 9be73c2d0f21a539bc46974139e8c36c12845ca0 Mon Sep 17 00:00:00 2001 From: Fbenas Date: Sun, 20 Sep 2020 22:08:03 +0100 Subject: Initial commit --- resources/js/scene.js | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 resources/js/scene.js (limited to 'resources/js/scene.js') diff --git a/resources/js/scene.js b/resources/js/scene.js new file mode 100644 index 0000000..194a77b --- /dev/null +++ b/resources/js/scene.js @@ -0,0 +1,70 @@ +class Scene { + + constructor(component_size, no_of_components) { + this.component_size = component_size; + this.no_of_components = no_of_components; + this.components = new Array; + this.gameArea = {}; + this.initGameArea(); + this.initComponents(); + this.started = false; + } + + initComponents() { + for (let i = 0; i < this.no_of_components; i++) { + let new_component = new Component( + this.component_size, + "black", + Math.random() * this.gameArea.canvas.width, + Math.random() * this.gameArea.canvas.height, + Math.random() * 360 + ); + this.components.push(new_component); + } + } + + initGameArea() { + this.gameArea = new GameArea(600, 600); + this.gameArea.init() + } + + start() { + if (this.started) { + return; + } + + // Kinda annoying, setInterval is a piece of shite and is always run from global scope + // Therefore "this.update" will be undefined unless we bind it + const updateMe = this.update.bind(this); + this.interval = setInterval(updateMe, 5); + this.started = true; + } + + update() { + this.gameArea.clear(); + for (let i = 0; i < this.no_of_components; i++) { + this.components[i].move(this.gameArea.context); + } + } + + stop() { + if (!this.started) { + return; + } + + clearInterval(this.interval); + this.interval = null; + this.started = false; + } + + reset() { + if (this.started) { + this.stop(); + } + this.components = new Array; + this.initComponents(); + this.gameArea.clear(); + this.started = false; + } + +} -- cgit v1.2.3