2020-05-17 21:31:43 +00:00
|
|
|
const { SourceAPI, PublicAPI } = require("ruffle-selfhosted");
|
2019-09-05 02:11:01 +00:00
|
|
|
|
2020-05-12 22:24:41 +00:00
|
|
|
window.RufflePlayer = PublicAPI.negotiate(
|
|
|
|
window.RufflePlayer,
|
|
|
|
"local",
|
|
|
|
new SourceAPI("local")
|
|
|
|
);
|
2019-04-25 17:52:22 +00:00
|
|
|
|
2020-03-29 09:23:17 +00:00
|
|
|
let ruffle;
|
|
|
|
let player;
|
|
|
|
let jsonData;
|
2019-04-25 17:52:22 +00:00
|
|
|
|
2020-05-12 22:24:41 +00:00
|
|
|
let container = document.getElementById("main");
|
2020-03-29 09:23:17 +00:00
|
|
|
let author_container = document.getElementById("author-container");
|
|
|
|
let author = document.getElementById("author");
|
2020-04-30 00:33:10 +00:00
|
|
|
let sampleFileInputContainer = document.getElementById("sample-swfs-container");
|
2020-03-29 09:23:17 +00:00
|
|
|
let sampleFileInput = document.getElementById("sample-swfs");
|
2019-05-06 10:31:33 +00:00
|
|
|
let localFileInput = document.getElementById("local-file");
|
2020-05-23 07:26:55 +00:00
|
|
|
let animOptGroup = document.getElementById("anim-optgroup");
|
|
|
|
let gamesOptGroup = document.getElementById("games-optgroup");
|
2020-03-29 09:23:17 +00:00
|
|
|
|
2020-05-12 22:24:41 +00:00
|
|
|
window.addEventListener("DOMContentLoaded", () => {
|
|
|
|
ruffle = window.RufflePlayer.newest();
|
|
|
|
player = ruffle.create_player();
|
|
|
|
player.id = "player";
|
|
|
|
container.appendChild(player);
|
|
|
|
fetch("swfs.json").then((response) => {
|
2020-03-29 09:23:17 +00:00
|
|
|
if (response.ok) {
|
2020-05-12 22:24:41 +00:00
|
|
|
response.json().then((data) => {
|
2020-03-29 09:23:17 +00:00
|
|
|
jsonData = data;
|
2020-05-12 22:24:41 +00:00
|
|
|
jsonData.swfs.forEach((item) => {
|
2020-03-29 09:23:17 +00:00
|
|
|
let temp = document.createElement("option");
|
|
|
|
temp.innerHTML = item.title;
|
2020-05-12 22:24:41 +00:00
|
|
|
temp.setAttribute("value", item.location);
|
2020-06-05 21:47:05 +00:00
|
|
|
temp.swfData = item;
|
2020-05-23 07:26:55 +00:00
|
|
|
if (item.type == "Animation") {
|
|
|
|
animOptGroup.append(temp);
|
|
|
|
} else if (item.type == "Game") {
|
|
|
|
gamesOptGroup.appendChild(temp);
|
|
|
|
}
|
2020-03-29 09:23:17 +00:00
|
|
|
});
|
2020-05-23 07:26:55 +00:00
|
|
|
sampleFileInputContainer.style.display = "inline-block";
|
2020-06-05 21:47:05 +00:00
|
|
|
// Load a random file.
|
2020-05-12 22:24:41 +00:00
|
|
|
let rn = Math.floor(
|
2020-05-23 07:26:55 +00:00
|
|
|
Math.random() * Math.floor(jsonData.swfs.length)
|
2020-05-12 22:24:41 +00:00
|
|
|
);
|
2020-03-29 09:23:17 +00:00
|
|
|
sampleFileInput.selectedIndex = rn + 1;
|
2020-06-05 21:47:05 +00:00
|
|
|
sampleFileSelected();
|
2020-05-12 22:24:41 +00:00
|
|
|
});
|
|
|
|
} else {
|
|
|
|
sampleFileInputContainer.style.display = "none";
|
|
|
|
}
|
|
|
|
});
|
2020-03-29 09:23:17 +00:00
|
|
|
});
|
|
|
|
|
2020-05-12 22:24:41 +00:00
|
|
|
if (sampleFileInput) {
|
|
|
|
sampleFileInput.addEventListener("change", sampleFileSelected, false);
|
2020-03-29 09:23:17 +00:00
|
|
|
}
|
|
|
|
|
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-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 != "") {
|
2020-03-29 09:23:17 +00:00
|
|
|
console.info(url);
|
2019-05-07 23:07:23 +00:00
|
|
|
loadRemoteFile(url);
|
|
|
|
}
|
2019-05-07 17:03:45 +00:00
|
|
|
}
|
|
|
|
|
2020-03-29 09:23:17 +00:00
|
|
|
function sampleFileSelected() {
|
2020-06-05 21:47:05 +00:00
|
|
|
let swfData = sampleFileInput[sampleFileInput.selectedIndex].swfData;
|
|
|
|
if (swfData) {
|
2020-03-29 09:23:17 +00:00
|
|
|
author_container.style.display = "block";
|
2020-06-05 21:47:05 +00:00
|
|
|
author.innerHTML = swfData.author;
|
|
|
|
author.href = swfData.authorLink;
|
2020-03-29 09:23:17 +00:00
|
|
|
localFileInput.value = null;
|
2020-06-05 21:47:05 +00:00
|
|
|
loadRemoteFile(swfData.location);
|
2020-05-12 22:24:41 +00:00
|
|
|
} else {
|
|
|
|
replacePlayer();
|
2020-03-29 09:23:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
function localFileSelected() {
|
2020-03-29 09:23:17 +00:00
|
|
|
sampleFileInput.selectedIndex = 0;
|
|
|
|
author_container.style.display = "none";
|
|
|
|
author.innerHTML = "";
|
|
|
|
author.href = "";
|
2020-05-12 22:24:41 +00:00
|
|
|
|
2019-05-06 10:31:33 +00:00
|
|
|
let file = localFileInput.files[0];
|
2019-04-25 17:52:22 +00:00
|
|
|
if (file) {
|
|
|
|
let fileReader = new FileReader();
|
2020-05-12 21:36:18 +00:00
|
|
|
fileReader.onload = () => {
|
2020-03-29 09:23:17 +00:00
|
|
|
player.play_swf_data(fileReader.result);
|
2020-05-12 22:24:41 +00:00
|
|
|
};
|
2019-04-25 17:52:22 +00:00
|
|
|
fileReader.readAsArrayBuffer(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-07 17:03:45 +00:00
|
|
|
function loadRemoteFile(url) {
|
2020-05-12 22:24:41 +00:00
|
|
|
fetch(url).then((response) => {
|
|
|
|
response.arrayBuffer().then((data) => player.play_swf_data(data));
|
|
|
|
});
|
2019-05-07 17:03:45 +00:00
|
|
|
}
|
|
|
|
|
2020-03-29 09:23:17 +00:00
|
|
|
function replacePlayer() {
|
|
|
|
document.getElementById("main").children[0].remove();
|
|
|
|
player = ruffle.create_player();
|
|
|
|
player.id = "player";
|
|
|
|
container.appendChild(player);
|
|
|
|
author_container.style.display = "none";
|
|
|
|
author.innerHTML = "";
|
|
|
|
author.href = "";
|
2020-05-12 22:24:41 +00:00
|
|
|
}
|