Coalesce duplicate generation views

This commit is contained in:
2026-01-06 23:09:24 -06:00
parent fd7176d9c9
commit 8e7f4c063f
5 changed files with 29 additions and 74 deletions

View File

@@ -1,65 +0,0 @@
<script>
import { defineComponent } from "vue";
import axios from "axios";
import { Modal } from "bootstrap";
import SettingsPage from "@/components/SettingsPage.vue";
export default defineComponent({
components: {
SettingsPage,
},
data() {
return {
set: {},
};
},
mounted() {
document.title = "ALttPRandomizer"
},
methods: {
async generate(race) {
const settings = {
randomizer: "dungeon_map",
race: race ? "race" : "normal"
};
for (const setting of Object.keys(this.set)) {
settings[setting] = this.set[setting];
}
await axios.post("/generate", settings)
.then(response => {
const id = response.data;
this.$router.push(`/seed/${id}`);
})
.catch(error => {
console.log(error);
});
},
},
});
</script>
<template>
<div class="card content-div m-3">
<div class="card-header">
Generate Seed
</div>
<div id="settings" class="accordion accordion-flush">
<SettingsPage v-model="set" generator="dungeon_map" prefix="dungeon-maps-" />
</div>
<div class="card-footer">
<div class="nav nav-pills nav-fill" role="group">
<button type="button" class="m-1 nav-item btn btn-outline-danger"
@click="generate(true);">
Generate Race ROM
</button>
<button type="button" class="m-1 nav-item btn btn-outline-primary"
@click="generate(false);">
Generate ROM
</button>
</div>
</div>
</div>
</template>

View File

@@ -11,6 +11,10 @@ export default defineComponent({
components: {
SettingsPage,
},
props: {
prefix: null,
generator: null,
},
data() {
return {
worlds: [{}, {}],
@@ -23,12 +27,12 @@ export default defineComponent({
await new Promise(r => setTimeout(r, 100));
for (var i = 0; i < this.worldCount; i++) {
this.worlds[i].player_name = await localforage.getItem(`world_${i + 1}_setting_player_name`);
this.worlds[i].player_name = await localforage.getItem(`${this.prefix}world_${i + 1}_setting_player_name`);
}
},
methods: {
async addWorld() {
const newname = await localforage.getItem(`world_${this.worldCount + 1}_setting_player_name`);
const newname = await localforage.getItem(`${this.prefix}world_${this.worldCount + 1}_setting_player_name`);
this.worlds.push({player_name: newname});
this.worldCount++;
@@ -40,13 +44,13 @@ export default defineComponent({
this.worlds.pop();
},
async playerNameUpdated(num) {
await localforage.setItem(`world_${num + 1}_setting_player_name`, this.worlds[num].player_name);
await localforage.setItem(`${this.prefix}world_${num + 1}_setting_player_name`, this.worlds[num].player_name);
},
async generate(race) {
const settings = [];
for (var i = 0; i < this.worldCount; i++) {
const world = {
randomizer: "base",
randomizer: this.generator,
race: race ? "race" : "normal"
};
for (const setting of Object.keys(this.worlds[i])) {
@@ -109,7 +113,7 @@ export default defineComponent({
@change="playerNameUpdated(idx)" />
</div>
<div id="settings" class="accordion accordion-flush">
<SettingsPage v-model="worlds[idx]" :prefix="`world_${n}_`" />
<SettingsPage v-model="worlds[idx]" :prefix="`${prefix}world_${n}_`" :generator="generator" />
</div>
</div>
</template>

View File

@@ -10,6 +10,10 @@ export default defineComponent({
components: {
SettingsPage,
},
props: {
prefix: null,
generator: null,
},
data() {
return {
set: {},
@@ -21,7 +25,7 @@ export default defineComponent({
methods: {
async generate(race) {
const settings = {
randomizer: "base",
randomizer: this.generator,
race: race ? "race" : "normal"
};
for (const setting of Object.keys(this.set)) {
@@ -46,7 +50,7 @@ export default defineComponent({
Generate Seed
</div>
<div id="settings" class="accordion accordion-flush">
<SettingsPage v-model="set" generator="base" prefix="" />
<SettingsPage v-model="set" :generator="generator" :prefix="prefix" />
</div>
<div class="card-footer">
<div class="nav nav-pills nav-fill" role="group">