mirror of
				https://git.kittycat.homes/zoe/pegchamp.git
				synced 2024-08-15 03:15:39 +00:00 
			
		
		
		
	added html
This commit is contained in:
		
							parent
							
								
									6539056cfb
								
							
						
					
					
						commit
						c8747328cf
					
				
					 9 changed files with 1205 additions and 3 deletions
				
			
		|  | @ -12,8 +12,6 @@ func save_game(): | ||||||
| 		"sfx_volume" : AudioServer.get_bus_volume_db(AudioServer.get_bus_index("SFX")) | 		"sfx_volume" : AudioServer.get_bus_volume_db(AudioServer.get_bus_index("SFX")) | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	print(data) |  | ||||||
| 	 |  | ||||||
| 	var file = File.new() | 	var file = File.new() | ||||||
| 	var err = file.open(save_path, File.WRITE) | 	var err = file.open(save_path, File.WRITE) | ||||||
| 	if err == OK: | 	if err == OK: | ||||||
|  |  | ||||||
|  | @ -105,7 +105,7 @@ custom_features="" | ||||||
| export_filter="all_resources" | export_filter="all_resources" | ||||||
| include_filter="" | include_filter="" | ||||||
| exclude_filter="" | exclude_filter="" | ||||||
| export_path="" | export_path="html/pegchamp.html" | ||||||
| script_export_mode=1 | script_export_mode=1 | ||||||
| script_encryption_key="" | script_encryption_key="" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								html/favicon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								html/favicon.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 229 B | 
							
								
								
									
										186
									
								
								html/pegchamp.audio.worklet.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								html/pegchamp.audio.worklet.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,186 @@ | ||||||
|  | /*************************************************************************/ | ||||||
|  | /*  audio.worklet.js                                                     */ | ||||||
|  | /*************************************************************************/ | ||||||
|  | /*                       This file is part of:                           */ | ||||||
|  | /*                           GODOT ENGINE                                */ | ||||||
|  | /*                      https://godotengine.org                          */ | ||||||
|  | /*************************************************************************/ | ||||||
|  | /* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */ | ||||||
|  | /* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */ | ||||||
|  | /*                                                                       */ | ||||||
|  | /* Permission is hereby granted, free of charge, to any person obtaining */ | ||||||
|  | /* a copy of this software and associated documentation files (the       */ | ||||||
|  | /* "Software"), to deal in the Software without restriction, including   */ | ||||||
|  | /* without limitation the rights to use, copy, modify, merge, publish,   */ | ||||||
|  | /* distribute, sublicense, and/or sell copies of the Software, and to    */ | ||||||
|  | /* permit persons to whom the Software is furnished to do so, subject to */ | ||||||
|  | /* the following conditions:                                             */ | ||||||
|  | /*                                                                       */ | ||||||
|  | /* The above copyright notice and this permission notice shall be        */ | ||||||
|  | /* included in all copies or substantial portions of the Software.       */ | ||||||
|  | /*                                                                       */ | ||||||
|  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ | ||||||
|  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ | ||||||
|  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ | ||||||
|  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ | ||||||
|  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ | ||||||
|  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ | ||||||
|  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ | ||||||
|  | /*************************************************************************/ | ||||||
|  | 
 | ||||||
|  | class RingBuffer { | ||||||
|  | 	constructor(p_buffer, p_state) { | ||||||
|  | 		this.buffer = p_buffer; | ||||||
|  | 		this.avail = p_state; | ||||||
|  | 		this.rpos = 0; | ||||||
|  | 		this.wpos = 0; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	data_left() { | ||||||
|  | 		return Atomics.load(this.avail, 0); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	space_left() { | ||||||
|  | 		return this.buffer.length - this.data_left(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	read(output) { | ||||||
|  | 		const size = this.buffer.length; | ||||||
|  | 		let from = 0; | ||||||
|  | 		let to_write = output.length; | ||||||
|  | 		if (this.rpos + to_write > size) { | ||||||
|  | 			const high = size - this.rpos; | ||||||
|  | 			output.set(this.buffer.subarray(this.rpos, size)); | ||||||
|  | 			from = high; | ||||||
|  | 			to_write -= high; | ||||||
|  | 			this.rpos = 0; | ||||||
|  | 		} | ||||||
|  | 		output.set(this.buffer.subarray(this.rpos, this.rpos + to_write), from); | ||||||
|  | 		this.rpos += to_write; | ||||||
|  | 		Atomics.add(this.avail, 0, -output.length); | ||||||
|  | 		Atomics.notify(this.avail, 0); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	write(p_buffer) { | ||||||
|  | 		const to_write = p_buffer.length; | ||||||
|  | 		const mw = this.buffer.length - this.wpos; | ||||||
|  | 		if (mw >= to_write) { | ||||||
|  | 			this.buffer.set(p_buffer, this.wpos); | ||||||
|  | 		} else { | ||||||
|  | 			const high = p_buffer.subarray(0, to_write - mw); | ||||||
|  | 			const low = p_buffer.subarray(to_write - mw); | ||||||
|  | 			this.buffer.set(high, this.wpos); | ||||||
|  | 			this.buffer.set(low); | ||||||
|  | 		} | ||||||
|  | 		let diff = to_write; | ||||||
|  | 		if (this.wpos + diff >= this.buffer.length) { | ||||||
|  | 			diff -= this.buffer.length; | ||||||
|  | 		} | ||||||
|  | 		this.wpos += diff; | ||||||
|  | 		Atomics.add(this.avail, 0, to_write); | ||||||
|  | 		Atomics.notify(this.avail, 0); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class GodotProcessor extends AudioWorkletProcessor { | ||||||
|  | 	constructor() { | ||||||
|  | 		super(); | ||||||
|  | 		this.running = true; | ||||||
|  | 		this.lock = null; | ||||||
|  | 		this.notifier = null; | ||||||
|  | 		this.output = null; | ||||||
|  | 		this.output_buffer = new Float32Array(); | ||||||
|  | 		this.input = null; | ||||||
|  | 		this.input_buffer = new Float32Array(); | ||||||
|  | 		this.port.onmessage = (event) => { | ||||||
|  | 			const cmd = event.data['cmd']; | ||||||
|  | 			const data = event.data['data']; | ||||||
|  | 			this.parse_message(cmd, data); | ||||||
|  | 		}; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	process_notify() { | ||||||
|  | 		Atomics.add(this.notifier, 0, 1); | ||||||
|  | 		Atomics.notify(this.notifier, 0); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	parse_message(p_cmd, p_data) { | ||||||
|  | 		if (p_cmd === 'start' && p_data) { | ||||||
|  | 			const state = p_data[0]; | ||||||
|  | 			let idx = 0; | ||||||
|  | 			this.lock = state.subarray(idx, ++idx); | ||||||
|  | 			this.notifier = state.subarray(idx, ++idx); | ||||||
|  | 			const avail_in = state.subarray(idx, ++idx); | ||||||
|  | 			const avail_out = state.subarray(idx, ++idx); | ||||||
|  | 			this.input = new RingBuffer(p_data[1], avail_in); | ||||||
|  | 			this.output = new RingBuffer(p_data[2], avail_out); | ||||||
|  | 		} else if (p_cmd === 'stop') { | ||||||
|  | 			this.runing = false; | ||||||
|  | 			this.output = null; | ||||||
|  | 			this.input = null; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	static array_has_data(arr) { | ||||||
|  | 		return arr.length && arr[0].length && arr[0][0].length; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	process(inputs, outputs, parameters) { | ||||||
|  | 		if (!this.running) { | ||||||
|  | 			return false; // Stop processing.
 | ||||||
|  | 		} | ||||||
|  | 		if (this.output === null) { | ||||||
|  | 			return true; // Not ready yet, keep processing.
 | ||||||
|  | 		} | ||||||
|  | 		const process_input = GodotProcessor.array_has_data(inputs); | ||||||
|  | 		if (process_input) { | ||||||
|  | 			const input = inputs[0]; | ||||||
|  | 			const chunk = input[0].length * input.length; | ||||||
|  | 			if (this.input_buffer.length !== chunk) { | ||||||
|  | 				this.input_buffer = new Float32Array(chunk); | ||||||
|  | 			} | ||||||
|  | 			if (this.input.space_left() >= chunk) { | ||||||
|  | 				GodotProcessor.write_input(this.input_buffer, input); | ||||||
|  | 				this.input.write(this.input_buffer); | ||||||
|  | 			} else { | ||||||
|  | 				this.port.postMessage('Input buffer is full! Skipping input frame.'); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		const process_output = GodotProcessor.array_has_data(outputs); | ||||||
|  | 		if (process_output) { | ||||||
|  | 			const output = outputs[0]; | ||||||
|  | 			const chunk = output[0].length * output.length; | ||||||
|  | 			if (this.output_buffer.length !== chunk) { | ||||||
|  | 				this.output_buffer = new Float32Array(chunk); | ||||||
|  | 			} | ||||||
|  | 			if (this.output.data_left() >= chunk) { | ||||||
|  | 				this.output.read(this.output_buffer); | ||||||
|  | 				GodotProcessor.write_output(output, this.output_buffer); | ||||||
|  | 			} else { | ||||||
|  | 				this.port.postMessage('Output buffer has not enough frames! Skipping output frame.'); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		this.process_notify(); | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	static write_output(dest, source) { | ||||||
|  | 		const channels = dest.length; | ||||||
|  | 		for (let ch = 0; ch < channels; ch++) { | ||||||
|  | 			for (let sample = 0; sample < dest[ch].length; sample++) { | ||||||
|  | 				dest[ch][sample] = source[sample * channels + ch]; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	static write_input(dest, source) { | ||||||
|  | 		const channels = source.length; | ||||||
|  | 		for (let ch = 0; ch < channels; ch++) { | ||||||
|  | 			for (let sample = 0; sample < source[ch].length; sample++) { | ||||||
|  | 				dest[sample * channels + ch] = source[ch][sample]; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | registerProcessor('godot-processor', GodotProcessor); | ||||||
							
								
								
									
										246
									
								
								html/pegchamp.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								html/pegchamp.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,246 @@ | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html xmlns='http://www.w3.org/1999/xhtml' lang='' xml:lang=''> | ||||||
|  | <head> | ||||||
|  | 	<meta charset='utf-8' /> | ||||||
|  | 	<meta name='viewport' content='width=device-width, user-scalable=no' /> | ||||||
|  | 	<link id='-gd-engine-icon' rel='icon' type='image/png' href='favicon.png' /> | ||||||
|  | 	<title>pegchamp</title> | ||||||
|  | 	<style type='text/css'> | ||||||
|  | 
 | ||||||
|  | 		body { | ||||||
|  | 			touch-action: none; | ||||||
|  | 			margin: 0; | ||||||
|  | 			border: 0 none; | ||||||
|  | 			padding: 0; | ||||||
|  | 			text-align: center; | ||||||
|  | 			background-color: black; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#canvas { | ||||||
|  | 			display: block; | ||||||
|  | 			margin: 0; | ||||||
|  | 			color: white; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#canvas:focus { | ||||||
|  | 			outline: none; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		.godot { | ||||||
|  | 			font-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif; | ||||||
|  | 			color: #e0e0e0; | ||||||
|  | 			background-color: #3b3943; | ||||||
|  | 			background-image: linear-gradient(to bottom, #403e48, #35333c); | ||||||
|  | 			border: 1px solid #45434e; | ||||||
|  | 			box-shadow: 0 0 1px 1px #2f2d35; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		/* Status display | ||||||
|  | 		 * ============== */ | ||||||
|  | 
 | ||||||
|  | 		#status { | ||||||
|  | 			position: absolute; | ||||||
|  | 			left: 0; | ||||||
|  | 			top: 0; | ||||||
|  | 			right: 0; | ||||||
|  | 			bottom: 0; | ||||||
|  | 			display: flex; | ||||||
|  | 			justify-content: center; | ||||||
|  | 			align-items: center; | ||||||
|  | 			/* don't consume click events - make children visible explicitly */ | ||||||
|  | 			visibility: hidden; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#status-progress { | ||||||
|  | 			width: 366px; | ||||||
|  | 			height: 7px; | ||||||
|  | 			background-color: #38363A; | ||||||
|  | 			border: 1px solid #444246; | ||||||
|  | 			padding: 1px; | ||||||
|  | 			box-shadow: 0 0 2px 1px #1B1C22; | ||||||
|  | 			border-radius: 2px; | ||||||
|  | 			visibility: visible; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		@media only screen and (orientation:portrait) { | ||||||
|  | 			#status-progress { | ||||||
|  | 				width: 61.8%; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#status-progress-inner { | ||||||
|  | 			height: 100%; | ||||||
|  | 			width: 0; | ||||||
|  | 			box-sizing: border-box; | ||||||
|  | 			transition: width 0.5s linear; | ||||||
|  | 			background-color: #202020; | ||||||
|  | 			border: 1px solid #222223; | ||||||
|  | 			box-shadow: 0 0 1px 1px #27282E; | ||||||
|  | 			border-radius: 3px; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#status-indeterminate { | ||||||
|  | 			visibility: visible; | ||||||
|  | 			position: relative; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#status-indeterminate > div { | ||||||
|  | 			width: 4.5px; | ||||||
|  | 			height: 0; | ||||||
|  | 			border-style: solid; | ||||||
|  | 			border-width: 9px 3px 0 3px; | ||||||
|  | 			border-color: #2b2b2b transparent transparent transparent; | ||||||
|  | 			transform-origin: center 21px; | ||||||
|  | 			position: absolute; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		#status-indeterminate > div:nth-child(1) { transform: rotate( 22.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(2) { transform: rotate( 67.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(3) { transform: rotate(112.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(4) { transform: rotate(157.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(5) { transform: rotate(202.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(6) { transform: rotate(247.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(7) { transform: rotate(292.5deg); } | ||||||
|  | 		#status-indeterminate > div:nth-child(8) { transform: rotate(337.5deg); } | ||||||
|  | 
 | ||||||
|  | 		#status-notice { | ||||||
|  | 			margin: 0 100px; | ||||||
|  | 			line-height: 1.3; | ||||||
|  | 			visibility: visible; | ||||||
|  | 			padding: 4px 6px; | ||||||
|  | 			visibility: visible; | ||||||
|  | 		} | ||||||
|  | 	</style> | ||||||
|  | 
 | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  | 	<canvas id='canvas'> | ||||||
|  | 		HTML5 canvas appears to be unsupported in the current browser.<br /> | ||||||
|  | 		Please try updating or use a different browser. | ||||||
|  | 	</canvas> | ||||||
|  | 	<div id='status'> | ||||||
|  | 		<div id='status-progress' style='display: none;' oncontextmenu='event.preventDefault();'><div id ='status-progress-inner'></div></div> | ||||||
|  | 		<div id='status-indeterminate' style='display: none;' oncontextmenu='event.preventDefault();'> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 			<div></div> | ||||||
|  | 		</div> | ||||||
|  | 		<div id='status-notice' class='godot' style='display: none;'></div> | ||||||
|  | 	</div> | ||||||
|  | 
 | ||||||
|  | 	<script type='text/javascript' src='pegchamp.js'></script> | ||||||
|  | 	<script type='text/javascript'>//<![CDATA[ | ||||||
|  | 
 | ||||||
|  | 		const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"executable":"pegchamp","experimentalVK":false,"fileSizes":{"pegchamp.pck":6374176,"pegchamp.wasm":18140456},"gdnativeLibs":[]}; | ||||||
|  | 		var engine = new Engine(GODOT_CONFIG); | ||||||
|  | 
 | ||||||
|  | 		(function() { | ||||||
|  | 			const INDETERMINATE_STATUS_STEP_MS = 100; | ||||||
|  | 			var statusProgress = document.getElementById('status-progress'); | ||||||
|  | 			var statusProgressInner = document.getElementById('status-progress-inner'); | ||||||
|  | 			var statusIndeterminate = document.getElementById('status-indeterminate'); | ||||||
|  | 			var statusNotice = document.getElementById('status-notice'); | ||||||
|  | 
 | ||||||
|  | 			var initializing = true; | ||||||
|  | 			var statusMode = 'hidden'; | ||||||
|  | 
 | ||||||
|  | 			var animationCallbacks = []; | ||||||
|  | 			function animate(time) { | ||||||
|  | 				animationCallbacks.forEach(callback => callback(time)); | ||||||
|  | 				requestAnimationFrame(animate); | ||||||
|  | 			} | ||||||
|  | 			requestAnimationFrame(animate); | ||||||
|  | 
 | ||||||
|  | 			function setStatusMode(mode) { | ||||||
|  | 
 | ||||||
|  | 				if (statusMode === mode || !initializing) | ||||||
|  | 					return; | ||||||
|  | 				[statusProgress, statusIndeterminate, statusNotice].forEach(elem => { | ||||||
|  | 					elem.style.display = 'none'; | ||||||
|  | 				}); | ||||||
|  | 				animationCallbacks = animationCallbacks.filter(function(value) { | ||||||
|  | 					return (value != animateStatusIndeterminate); | ||||||
|  | 				}); | ||||||
|  | 				switch (mode) { | ||||||
|  | 					case 'progress': | ||||||
|  | 						statusProgress.style.display = 'block'; | ||||||
|  | 						break; | ||||||
|  | 					case 'indeterminate': | ||||||
|  | 						statusIndeterminate.style.display = 'block'; | ||||||
|  | 						animationCallbacks.push(animateStatusIndeterminate); | ||||||
|  | 						break; | ||||||
|  | 					case 'notice': | ||||||
|  | 						statusNotice.style.display = 'block'; | ||||||
|  | 						break; | ||||||
|  | 					case 'hidden': | ||||||
|  | 						break; | ||||||
|  | 					default: | ||||||
|  | 						throw new Error('Invalid status mode'); | ||||||
|  | 				} | ||||||
|  | 				statusMode = mode; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			function animateStatusIndeterminate(ms) { | ||||||
|  | 				var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8); | ||||||
|  | 				if (statusIndeterminate.children[i].style.borderTopColor == '') { | ||||||
|  | 					Array.prototype.slice.call(statusIndeterminate.children).forEach(child => { | ||||||
|  | 						child.style.borderTopColor = ''; | ||||||
|  | 					}); | ||||||
|  | 					statusIndeterminate.children[i].style.borderTopColor = '#dfdfdf'; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			function setStatusNotice(text) { | ||||||
|  | 				while (statusNotice.lastChild) { | ||||||
|  | 					statusNotice.removeChild(statusNotice.lastChild); | ||||||
|  | 				} | ||||||
|  | 				var lines = text.split('\n'); | ||||||
|  | 				lines.forEach((line) => { | ||||||
|  | 					statusNotice.appendChild(document.createTextNode(line)); | ||||||
|  | 					statusNotice.appendChild(document.createElement('br')); | ||||||
|  | 				}); | ||||||
|  | 			}; | ||||||
|  | 
 | ||||||
|  | 			function displayFailureNotice(err) { | ||||||
|  | 				var msg = err.message || err; | ||||||
|  | 				console.error(msg); | ||||||
|  | 				setStatusNotice(msg); | ||||||
|  | 				setStatusMode('notice'); | ||||||
|  | 				initializing = false; | ||||||
|  | 			}; | ||||||
|  | 
 | ||||||
|  | 			if (!Engine.isWebGLAvailable()) { | ||||||
|  | 				displayFailureNotice('WebGL not available'); | ||||||
|  | 			} else { | ||||||
|  | 				setStatusMode('indeterminate'); | ||||||
|  | 				engine.startGame({ | ||||||
|  | 					'onProgress': function (current, total) { | ||||||
|  | 						if (total > 0) { | ||||||
|  | 							statusProgressInner.style.width = current/total * 100 + '%'; | ||||||
|  | 							setStatusMode('progress'); | ||||||
|  | 							if (current === total) { | ||||||
|  | 								// wait for progress bar animation | ||||||
|  | 								setTimeout(() => { | ||||||
|  | 									setStatusMode('indeterminate'); | ||||||
|  | 								}, 500); | ||||||
|  | 							} | ||||||
|  | 						} else { | ||||||
|  | 							setStatusMode('indeterminate'); | ||||||
|  | 						} | ||||||
|  | 					}, | ||||||
|  | 				}).then(() => { | ||||||
|  | 					setStatusMode('hidden'); | ||||||
|  | 					initializing = false; | ||||||
|  | 				}, displayFailureNotice); | ||||||
|  | 			} | ||||||
|  | 		})(); | ||||||
|  | 	//]]></script> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
|  | 
 | ||||||
							
								
								
									
										772
									
								
								html/pegchamp.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										772
									
								
								html/pegchamp.js
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								html/pegchamp.pck
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								html/pegchamp.pck
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								html/pegchamp.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								html/pegchamp.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 229 B | 
							
								
								
									
										
											BIN
										
									
								
								html/pegchamp.wasm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								html/pegchamp.wasm
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue