Profectus/src/components/system/Options.vue

82 lines
2.3 KiB
Vue
Raw Normal View History

2021-05-22 15:29:06 -05:00
<template>
2022-01-13 22:25:47 -06:00
<Modal v-model="isOpen">
<template v-slot:header>
<div class="header">
<h2>Options</h2>
</div>
</template>
<template v-slot:body>
2022-01-13 22:25:47 -06:00
<Select title="Theme" :options="themes" v-model="theme" />
<Select title="Show Milestones" :options="msDisplayOptions" v-model="msDisplay" />
<Toggle title="Show TPS" v-model="showTPS" />
<Toggle title="Hide Maxed Challenges" v-model="hideChallenges" />
<Toggle title="Unthrottled" v-model="unthrottled" />
<Toggle
title="Offline Production<tooltip display='Save-specific'>*</tooltip>"
2022-01-13 22:25:47 -06:00
v-model="offlineProd"
/>
<Toggle
title="Autosave<tooltip display='Save-specific'>*</tooltip>"
2022-01-13 22:25:47 -06:00
v-model="autosave"
/>
<Toggle
title="Pause game<tooltip display='Save-specific'>*</tooltip>"
2022-01-13 22:25:47 -06:00
v-model="isPaused"
/>
</template>
</Modal>
2021-05-22 15:29:06 -05:00
</template>
2022-01-13 22:25:47 -06:00
<script setup lang="ts">
import Modal from "@/components/system/Modal.vue";
import rawThemes from "@/data/themes";
import { MilestoneDisplay } from "@/features/milestone";
import player from "@/game/player";
import settings from "@/game/settings";
2022-01-13 22:25:47 -06:00
import { camelToTitle } from "@/util/common";
import { computed, ref, toRefs } from "vue";
import Toggle from "../fields/Toggle.vue";
import Select from "../fields/Select.vue";
2021-05-22 15:29:06 -05:00
2022-01-13 22:25:47 -06:00
const isOpen = ref(false);
defineExpose({
open() {
isOpen.value = true;
}
});
const themes = Object.keys(rawThemes).map(theme => ({
label: camelToTitle(theme),
value: theme
}));
// TODO allow features to register options
const msDisplayOptions = Object.values(MilestoneDisplay).map(option => ({
label: camelToTitle(option),
value: option
}));
const { showTPS, hideChallenges, theme, msDisplay, unthrottled } = toRefs(settings);
const { autosave, offlineProd, devSpeed } = toRefs(player);
const isPaused = computed({
get() {
return devSpeed.value === 0;
},
2022-01-13 22:25:47 -06:00
set(value: boolean) {
devSpeed.value = value ? null : 0;
}
});
2021-05-22 15:29:06 -05:00
</script>
<style scoped>
2021-06-20 23:29:55 -05:00
.header {
margin-bottom: -10px;
2021-05-22 15:29:06 -05:00
}
2021-09-05 19:03:50 -05:00
*:deep() .tooltip-container {
display: inline;
margin-left: 5px;
}
2021-05-22 15:29:06 -05:00
</style>