From 8b0e7d90ff82220ab5ad01c53e77b74ac4380ce1 Mon Sep 17 00:00:00 2001 From: HxxxxxS <16c52527@opayq.com> Date: Thu, 31 Oct 2024 23:03:25 +0100 Subject: [PATCH] move to src/ structure --- index.html => src/index.html | 0 script.js => src/script.js | 7 +++++- styles.css => src/styles.css | 0 src/utils/EventEmitter.js | 42 ++++++++++++++++++++++++++++++++++++ src/utils/helpers.js | 0 5 files changed, 48 insertions(+), 1 deletion(-) rename index.html => src/index.html (100%) rename script.js => src/script.js (98%) rename styles.css => src/styles.css (100%) create mode 100644 src/utils/EventEmitter.js create mode 100644 src/utils/helpers.js diff --git a/index.html b/src/index.html similarity index 100% rename from index.html rename to src/index.html diff --git a/script.js b/src/script.js similarity index 98% rename from script.js rename to src/script.js index 0e263bf..2863dc4 100644 --- a/script.js +++ b/src/script.js @@ -9,7 +9,7 @@ const canvas = document.getElementById("videoCanvas") const ctx = canvas.getContext("2d") let videosToLoad = 2 -const maxVideosToLoad = 9 +const maxVideosToLoad = 4 const videos = [] let videosLoaded = 0 @@ -159,6 +159,11 @@ function drawVideos() { ctx.globalCompositeOperation = "source-over" }) + // Get pixel data + // let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + + // Todo calculate effects based on imageDate + // If showText is true, draw debug text if (showText) { drawDebugText() diff --git a/styles.css b/src/styles.css similarity index 100% rename from styles.css rename to src/styles.css diff --git a/src/utils/EventEmitter.js b/src/utils/EventEmitter.js new file mode 100644 index 0000000..1aa273c --- /dev/null +++ b/src/utils/EventEmitter.js @@ -0,0 +1,42 @@ +// EventEmitter.js +class EventEmitter { + constructor(debug = false) { + this.events = {}; + this.debug = debug; + } + + on(event, listener) { + if (!this.events[event]) this.events[event] = []; + this.events[event].push(listener); + } + + once(event, listener) { + const wrapper = (...args) => { + listener(...args); + this.off(event, wrapper); + }; + this.on(event, wrapper); + } + + off(event, listener) { + if (this.events[event]) { + this.events[event] = this.events[event].filter(l => l !== listener); + } + } + + emit(event, data) { + if (this.debug) console.log(`Event emitted: ${event}`, data); + (this.events[event] || []).forEach(listener => listener(data)); + (this.events['*'] || []).forEach(listener => listener(event, data)); + } + + listeners(event) { + return this.events[event] || []; + } + + clear() { + this.events = {}; + } +} + +export default EventEmitter; diff --git a/src/utils/helpers.js b/src/utils/helpers.js new file mode 100644 index 0000000..e69de29