Add loading spindorm
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,5 +1,6 @@
|
|||||||
.env
|
.env
|
||||||
kube
|
kube/
|
||||||
|
scripts/
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
logs
|
logs
|
||||||
|
|||||||
BIN
public/bludormspinbig.gif
Normal file
BIN
public/bludormspinbig.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 MiB |
@@ -3,6 +3,11 @@
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
.invalid {
|
.invalid {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: red;
|
color: red;
|
||||||
|
|||||||
@@ -33,33 +33,15 @@ export default defineComponent({
|
|||||||
document.title = `ALttPRandomizer: ${this.id}`;
|
document.title = `ALttPRandomizer: ${this.id}`;
|
||||||
const file = await localforage.getItem("baserom");
|
const file = await localforage.getItem("baserom");
|
||||||
if (file) {
|
if (file) {
|
||||||
const dataTransfer = new DataTransfer();
|
// const dataTransfer = new DataTransfer();
|
||||||
dataTransfer.items.add(file);
|
// dataTransfer.items.add(file);
|
||||||
document.getElementById("rom-input").files = dataTransfer.files;
|
// this.baserom_file = dataTransfer.files;
|
||||||
|
// document.getElementById("rom-input").files = dataTransfer.files;
|
||||||
this.uploadBaseRom(file);
|
this.uploadBaseRom(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await axios.get(`/seed/${this.id}`);
|
await this.fetchSeed();
|
||||||
|
|
||||||
if (response && response.data && response.data["patch.bps"]) {
|
|
||||||
const seedData = response.data;
|
|
||||||
const patchArray = Base64.toUint8Array(seedData["patch.bps"]);
|
|
||||||
try {
|
|
||||||
const { instructions, _ } = bps.parse(patchArray);
|
|
||||||
const sourceChecksum = instructions.sourceChecksum.toString(16).toUpperCase();
|
|
||||||
if (sourceChecksum == this.rom_checksum) {
|
|
||||||
this.patch = instructions;
|
|
||||||
this.settings = seedData.settings;
|
|
||||||
} else {
|
|
||||||
this.error = "Patch does not specify correct source checksum.";
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
this.error = "Error parsing patch.";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.error = "Error loading seed.";
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
permalink() {
|
permalink() {
|
||||||
@@ -67,6 +49,41 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
dataLoaded(patch, seedData) {
|
||||||
|
this.patch = patch;
|
||||||
|
this.settings = seedData.settings;
|
||||||
|
},
|
||||||
|
async fetchSeed() {
|
||||||
|
await axios.get(`/seed/${this.id}`)
|
||||||
|
.then(response => {
|
||||||
|
if (response && response.data && response.data.patch) {
|
||||||
|
const seedData = response.data;
|
||||||
|
const patchArray = Base64.toUint8Array(seedData.patch);
|
||||||
|
try {
|
||||||
|
const { instructions, _ } = bps.parse(patchArray);
|
||||||
|
const sourceChecksum = instructions.sourceChecksum.toString(16).toUpperCase();
|
||||||
|
if (sourceChecksum == this.rom_checksum) {
|
||||||
|
this.dataLoaded(instructions, seedData);
|
||||||
|
} else {
|
||||||
|
this.error = "Patch does not specify correct source checksum.";
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
this.error = "Error parsing patch.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.error = "Error loading seed.";
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
if (error.response.status == 409) {
|
||||||
|
// still generating, try again
|
||||||
|
setInterval(2000, this.fetchSeed.bind(this));
|
||||||
|
} else {
|
||||||
|
this.error = "Seed not found. :(";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
uploadBaseRom(file) {
|
uploadBaseRom(file) {
|
||||||
if (!file) {
|
if (!file) {
|
||||||
this.baserom_error = null;
|
this.baserom_error = null;
|
||||||
@@ -126,13 +143,10 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="card content-div mt-3 mb-3">
|
<div v-if="patch" class="card content-div m-3">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
Permalink: <a :href="permalink">{{ permalink }}</a>
|
Permalink: <a :href="permalink">{{ permalink }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="error" class="card-header">
|
|
||||||
{{ error }}
|
|
||||||
</div>
|
|
||||||
<ul class="list-group list-group-flush">
|
<ul class="list-group list-group-flush">
|
||||||
<li v-if="!baserom" class="list-group-item">
|
<li v-if="!baserom" class="list-group-item">
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
@@ -161,4 +175,19 @@ export default defineComponent({
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else-if="error" class="error-message">
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<img class="center" src="/bludormspinbig.gif" />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.error-message {
|
||||||
|
text-align: center;
|
||||||
|
font-size: xx-large;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -29,9 +29,13 @@ export default defineComponent({
|
|||||||
<div v-if="settings.goal">
|
<div v-if="settings.goal">
|
||||||
Goal: {{ settingsDisplay.goal[settings.goal] }}
|
Goal: {{ settingsDisplay.goal[settings.goal] }}
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="settings.crystals_gt">
|
||||||
|
Ganon's Tower Entry: {{ settingsDisplay.crystals_gt[settings.crystals_gt] }}
|
||||||
|
</div>
|
||||||
<div v-if="settings.weapons">
|
<div v-if="settings.weapons">
|
||||||
Weapons: {{ settingsDisplay.weapons[settings.weapons] }}
|
Weapons: {{ settingsDisplay.weapons[settings.weapons] }}
|
||||||
</div>
|
</div>
|
||||||
|
<hr />
|
||||||
<div v-if="settings.entrance_shuffle && settings.entrance_shuffle != 'vanilla'">
|
<div v-if="settings.entrance_shuffle && settings.entrance_shuffle != 'vanilla'">
|
||||||
{{ settingsDisplay.entrance_shuffle[settings.entrance_shuffle] }}
|
{{ settingsDisplay.entrance_shuffle[settings.entrance_shuffle] }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,6 +5,15 @@ goal:
|
|||||||
triforce_hunt: Triforce Hunt
|
triforce_hunt: Triforce Hunt
|
||||||
ganon_hunt: Ganon Hunt
|
ganon_hunt: Ganon Hunt
|
||||||
completionist: Completionist
|
completionist: Completionist
|
||||||
|
crystals_gt:
|
||||||
|
7: 7 Crystals
|
||||||
|
6: 6 Crystals
|
||||||
|
5: 5 Crystals
|
||||||
|
4: 4 Crystals
|
||||||
|
3: 3 Crystals
|
||||||
|
2: 2 Crystals
|
||||||
|
1: 1 Crystal
|
||||||
|
random: Random
|
||||||
weapons:
|
weapons:
|
||||||
random: Randomized Swords
|
random: Randomized Swords
|
||||||
assured: Assured Sword
|
assured: Assured Sword
|
||||||
|
|||||||
Reference in New Issue
Block a user