diff --git a/.gitignore b/.gitignore index bc9bb3f..8583355 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .env -kube +kube/ +scripts/ # Logs logs diff --git a/public/bludormspinbig.gif b/public/bludormspinbig.gif new file mode 100644 index 0000000..3b4c5b4 Binary files /dev/null and b/public/bludormspinbig.gif differ diff --git a/src/assets/main.css b/src/assets/main.css index 528fec9..2998a67 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -3,6 +3,11 @@ margin: 0 auto; } +.center { + display: block; + margin: 0 auto; +} + .invalid { text-align: center; color: red; diff --git a/src/components/Seed.vue b/src/components/Seed.vue index dc809c0..4b26a45 100644 --- a/src/components/Seed.vue +++ b/src/components/Seed.vue @@ -33,33 +33,15 @@ export default defineComponent({ document.title = `ALttPRandomizer: ${this.id}`; const file = await localforage.getItem("baserom"); if (file) { - const dataTransfer = new DataTransfer(); - dataTransfer.items.add(file); - document.getElementById("rom-input").files = dataTransfer.files; + // const dataTransfer = new DataTransfer(); + // dataTransfer.items.add(file); + // this.baserom_file = dataTransfer.files; + // document.getElementById("rom-input").files = dataTransfer.files; 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: { permalink() { @@ -67,6 +49,41 @@ export default defineComponent({ }, }, 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) { if (!file) { this.baserom_error = null; @@ -126,13 +143,10 @@ export default defineComponent({ + + diff --git a/src/components/SeedSettings.vue b/src/components/SeedSettings.vue index 90147b1..b9c9d76 100644 --- a/src/components/SeedSettings.vue +++ b/src/components/SeedSettings.vue @@ -29,9 +29,13 @@ export default defineComponent({
Goal: {{ settingsDisplay.goal[settings.goal] }}
+
+ Ganon's Tower Entry: {{ settingsDisplay.crystals_gt[settings.crystals_gt] }} +
Weapons: {{ settingsDisplay.weapons[settings.weapons] }}
+
{{ settingsDisplay.entrance_shuffle[settings.entrance_shuffle] }}
diff --git a/src/data/settings-display.yaml b/src/data/settings-display.yaml index de5cc78..23bab6c 100644 --- a/src/data/settings-display.yaml +++ b/src/data/settings-display.yaml @@ -5,6 +5,15 @@ goal: triforce_hunt: Triforce Hunt ganon_hunt: Ganon Hunt 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: random: Randomized Swords assured: Assured Sword