Spaces:
Runtime error
Runtime error
| const BlockType = require('../../extension-support/block-type'); | |
| const ArgumentType = require('../../extension-support/argument-type'); | |
| /** | |
| * Class for blocks | |
| * @constructor | |
| */ | |
| class JgBestExtensionBlocks { | |
| constructor(runtime) { | |
| /** | |
| * The runtime instantiating this block package. | |
| * @type {Runtime} | |
| */ | |
| this.runtime = runtime; | |
| /** | |
| * @type {HTMLVideoElement} | |
| */ | |
| this.videoElement = null; | |
| this.runtime.on('PROJECT_STOP_ALL', () => { | |
| if (!this.videoElement) return; | |
| this.videoElement.remove(); | |
| this.videoElement = null; | |
| }); | |
| this.runtime.on('RUNTIME_PAUSED', () => { | |
| if (!this.videoElement) return; | |
| this.videoElement.pause(); | |
| }); | |
| this.runtime.on('RUNTIME_UNPAUSED', () => { | |
| if (!this.videoElement) return; | |
| this.videoElement.play(); | |
| }); | |
| this.runtime.on('BEFORE_EXECUTE', () => { | |
| this.setVolumeProperly(); | |
| }); | |
| } | |
| setVolumeProperly() { | |
| if (!this.videoElement) return; | |
| try { | |
| this.videoElement.volume = this.runtime.audioEngine.inputNode.gain.value * 0.5; | |
| } catch { | |
| // well that sucks | |
| } | |
| } | |
| /** | |
| * @returns {object} metadata for this extension and its blocks. | |
| */ | |
| getInfo() { | |
| return { | |
| id: 'jgBestExtension', | |
| name: 'the great', | |
| color1: '#ff0000', | |
| color2: '#00ff00', | |
| color3: '#0000ff', | |
| blocks: [ | |
| { | |
| opcode: 'ohioBlock', | |
| text: 'absolutely delectable!', | |
| blockType: BlockType.COMMAND, | |
| disableMonitor: false | |
| } | |
| ] | |
| }; | |
| } | |
| ohioBlock() { | |
| if (this.videoElement) return; | |
| const canvas = this.runtime.renderer.canvas; | |
| if (!canvas) return; | |
| if (!canvas.parentElement) return; | |
| const video = document.createElement("video"); | |
| video.style = 'width: 100%; height: 100%; z-index: 10000; position: absolute; left: 0; top: 0;'; | |
| video.innerHTML = '<source src="https://penguinmod.com/bx-tv1.mp4" type="video/mp4">' | |
| + '<source src="https://penguinmod.com/vr/themes/selection.mp3" type="audio/mpeg">'; | |
| this.videoElement = video; | |
| canvas.parentElement.appendChild(video); | |
| this.setVolumeProperly(); | |
| video.play(); | |
| video.onended = () => { | |
| video.remove(); | |
| this.videoElement = null; | |
| }; | |
| } | |
| } | |
| module.exports = JgBestExtensionBlocks; | |