2019-05-24 17:25:03 +00:00
|
|
|
import { Ruffle } from "../../pkg/ruffle";
|
2019-04-25 17:52:22 +00:00
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
let sampleFileInput = document.getElementById("sample-file");
|
2019-06-25 23:30:35 +00:00
|
|
|
if (sampleFileInput) {
|
|
|
|
sampleFileInput.addEventListener("change", sampleFileSelected, false);
|
|
|
|
}
|
2019-04-25 17:52:22 +00:00
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
let localFileInput = document.getElementById("local-file");
|
2019-06-25 23:30:35 +00:00
|
|
|
if (localFileInput) {
|
|
|
|
localFileInput.addEventListener("change", localFileSelected, false);
|
|
|
|
}
|
2019-04-29 20:24:29 +00:00
|
|
|
|
2019-05-24 17:25:03 +00:00
|
|
|
let ruffle;
|
2019-04-25 17:52:22 +00:00
|
|
|
|
2019-05-07 17:03:45 +00:00
|
|
|
if (window.location.search && window.location.search != "") {
|
2019-05-07 23:07:23 +00:00
|
|
|
let urlParams = new URLSearchParams(window.location.search);
|
|
|
|
let url = urlParams.get("file");
|
|
|
|
if (url && url != "") {
|
|
|
|
loadRemoteFile(url);
|
|
|
|
}
|
2019-05-07 17:03:45 +00:00
|
|
|
}
|
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
function localFileSelected() {
|
|
|
|
let file = localFileInput.files[0];
|
2019-04-25 17:52:22 +00:00
|
|
|
if (file) {
|
|
|
|
let fileReader = new FileReader();
|
|
|
|
fileReader.onload = e => {
|
|
|
|
playSwf(fileReader.result);
|
|
|
|
}
|
|
|
|
fileReader.readAsArrayBuffer(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
function sampleFileSelected() {
|
|
|
|
if (sampleFileInput.selectedIndex <= 0) {
|
|
|
|
// No SWF selected.
|
|
|
|
return;
|
|
|
|
}
|
2019-05-07 17:03:45 +00:00
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
let file = sampleFileInput.selectedOptions[0].innerText;
|
|
|
|
if (file) {
|
2019-05-07 17:03:45 +00:00
|
|
|
loadRemoteFile(file);
|
2019-05-06 10:31:33 +00:00
|
|
|
}
|
2019-04-29 20:24:29 +00:00
|
|
|
}
|
|
|
|
|
2019-05-07 17:03:45 +00:00
|
|
|
function loadRemoteFile(url) {
|
|
|
|
fetch(url)
|
|
|
|
.then(response => {
|
|
|
|
response.arrayBuffer().then(data => playSwf(data))
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
let timestamp = 0;
|
2019-05-06 10:51:09 +00:00
|
|
|
let animationHandler;
|
2019-05-06 10:31:33 +00:00
|
|
|
|
2019-04-25 17:52:22 +00:00
|
|
|
function playSwf(swfData) {
|
2019-05-24 17:25:03 +00:00
|
|
|
if (ruffle) {
|
|
|
|
ruffle.destroy();
|
|
|
|
ruffle = null;
|
2019-05-06 10:51:09 +00:00
|
|
|
}
|
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
let canvas = document.getElementById("player");
|
2019-04-25 17:52:22 +00:00
|
|
|
if (swfData && canvas) {
|
2019-05-24 17:25:03 +00:00
|
|
|
ruffle = Ruffle.new(canvas, new Uint8Array(swfData));
|
2019-04-25 17:52:22 +00:00
|
|
|
}
|
|
|
|
}
|