Skip to content

Commit 0011b63

Browse files
committed
feat: reset settings
1 parent e07d24a commit 0011b63

File tree

6 files changed

+62
-30
lines changed

6 files changed

+62
-30
lines changed

apps/frontend/scripts/parse-sprites.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const sprites = await fs.readdir(path.resolve(assetsFolder, 'sprites'), {
1717
const code = [
1818
...sprites.map((sprite) => `import ${sprite.replace('.webp', '')} from './sprites/${sprite}'`),
1919
`\nexport const sprites: Record<string, string> = {
20-
${sprites.map((asset) => asset.replace('.webp', '')).join(',\n ')}
20+
${sprites.map((asset) => asset.replace('.webp', '')).join(',\n ')},
2121
}\n`,
2222
].join('\n')
2323

apps/frontend/src/assets/sprites.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1075,5 +1075,5 @@ export const sprites: Record<string, string> = {
10751075
worm,
10761076
xray,
10771077
yarn,
1078-
zombie
1078+
zombie,
10791079
}

apps/frontend/src/components/alchemy-guide.vue

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ import DrawerBody from '@/ui/drawer/drawer-body.vue'
77
import DrawerHeader from '@/ui/drawer/drawer-header.vue'
88
import { storeToRefs } from 'pinia'
99
10-
const { isOpen } = storeToRefs(useGuide())
11-
const { settings } = storeToRefs(useSettings())
12-
const { $reset: resetGame } = useGame()
10+
const guideStore = useGuide()
11+
const gameStore = useGame()
12+
const settingsStore = useSettings()
13+
const { settings } = storeToRefs(settingsStore)
1314
</script>
1415

1516
<template>
1617
<Drawer
17-
v-model="isOpen"
18+
v-model="guideStore.isOpen"
1819
min-width="65%"
1920
:ignore-element="['#toggle-guide']"
2021
>
@@ -53,8 +54,11 @@ const { $reset: resetGame } = useGame()
5354
</label>
5455
</h3>
5556

56-
<div>
57-
<button class="new-game" @click="resetGame">
57+
<div class="button-group">
58+
<button class="button-group__item settings" @click="settingsStore.$reset">
59+
Сбросить настройки
60+
</button>
61+
<button class="button-group__item game" @click="gameStore.$reset">
5862
Начать новую игру
5963
</button>
6064
</div>
@@ -67,13 +71,13 @@ const { $reset: resetGame } = useGame()
6771
Создание элементов
6872
</h2>
6973
<p class="description">
70-
Создавайте новые элементы, комбинируя существующие друг с другом. У одного элемента может быть несколько рецептов. Один элемент может использоваться в создании нескольких элементов.
74+
Создавайте новые элементы, <b class="marker">комбинируя элементы друг с другом.</b> У одного элемента может быть <b class="marker">несколько рецептов.</b> Один элемент может использоваться в создании нескольких элементов.
7175
</p>
7276
<p class="description">
73-
Чтобы добавить уже созданный элемент на поле, найдите его в каталоге и нажмите по нему правой кнопкой мыши.
77+
Чтобы добавить уже созданный элемент на поле, <b class="marker">нажмите на него правой кнопкой мыши или зажмите правую кнопку мыши и перетащите его на поле.</b>
7478
</p>
7579
<p class="description">
76-
Кликните два раза по пустой области чтобы создать четыре базовых элемента.
80+
<b class="marker">Двойное нажатие по пустой области на поле</b> создаст четыре базовых элемента.
7781
</p>
7882
</div>
7983

@@ -82,10 +86,10 @@ const { $reset: resetGame } = useGame()
8286
Просмотр информации об элементе
8387
</h2>
8488
<p class="description">
85-
Не забывайте читать описания элементов. В них может содержаться подсказка для создания другого элемента. Для этого найдите элемент в каталоге и нажмите по нему левой кнопкой мыши.
89+
Не забывайте читать описания элементов. В них может содержаться подсказка для создания другого элемента. Для отрытия справки, <b class="marker">нажмите левой кнопкой мыши по элементу в каталоге.</b>
8690
</p>
8791
<p class="description">
88-
Символ <b style="color: tomato;">*</b> около элемента означает, что данный элемент конечный и не может быть использован для создания другого элемента.
92+
Символ <b class="marker" style="color: tomato;">*</b> около элемента означает, что <b class="marker">данный элемент конечный и не участвует в создании других элементов.</b>
8993
</p>
9094
</div>
9195

@@ -103,7 +107,7 @@ const { $reset: resetGame } = useGame()
103107
Удаление элементов
104108
</h2>
105109
<p class="description">
106-
Чтобы удалить элемент, кликните по нему правой кнопкой мыши или воспользуйтесь опцией "Очистить поле".
110+
Чтобы удалить элемент, <b class="marker">кликните по нему правой кнопкой мыши или воспользуйтесь опцией "Очистить поле".</b>
107111
</p>
108112
</div>
109113
</div>
@@ -127,14 +131,31 @@ const { $reset: resetGame } = useGame()
127131
margin-top: 12px;
128132
}
129133
130-
.new-game {
131-
cursor: pointer;
132-
border: none;
133-
background-color: var(--vt-c-danger);
134-
color: var(--vt-c-text-dark-1);
135-
padding: 12px;
136-
border-radius: 12px;
137-
margin-top: 1rem;
138-
font-size: medium;
134+
.marker {
135+
font-weight: bold;
136+
}
137+
138+
.button-group {
139+
display: flex;
140+
gap: 8px;
141+
142+
&__item {
143+
color: var(--vt-c-white);
144+
cursor: pointer;
145+
border: none;
146+
padding: 12px;
147+
border-radius: 12px;
148+
margin-top: 1rem;
149+
font-size: medium;
150+
transition: background-color 0.2s ease-in-out;
151+
152+
&.settings {
153+
background-color: var(--vt-c-success);
154+
}
155+
156+
&.game {
157+
background-color: var(--vt-c-danger);
158+
}
159+
}
139160
}
140161
</style>

apps/frontend/src/stores/use-settings.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
import { useLocalStorage } from '@vueuse/core'
22
import { acceptHMRUpdate, defineStore } from 'pinia'
33

4+
const DEFAULT_SETTINGS = {
5+
volume: 20,
6+
elementSize: 50,
7+
hideEndedElements: false,
8+
}
9+
410
export const useSettings = defineStore('settings', () => {
5-
const settings = useLocalStorage('alchemy-settings', {
6-
volume: 30,
7-
elementSize: 50,
8-
hideEndedElements: false,
9-
})
11+
const settings = useLocalStorage('alchemy-settings', { ...DEFAULT_SETTINGS })
12+
13+
function $reset() {
14+
const isConfirm = confirm('Вы точно хотите сбросить настройки?')
15+
if (!isConfirm) return
16+
settings.value = { ...DEFAULT_SETTINGS }
17+
}
1018

1119
return {
1220
settings,
21+
$reset,
1322
}
1423
})
1524

apps/frontend/src/styles/main.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
--vt-c-indigo: #2c3e50;
1212
--vt-c-danger: #b00020;
13+
--vt-c-success: #4caf50;
1314

1415
--vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
1516
--vt-c-divider-light-2: rgba(60, 60, 60, 0.12);

apps/frontend/src/ui/drawer/drawer.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@
1414
</template>
1515

1616
<script setup lang="ts">
17-
import { onClickOutside } from '@vueuse/core'
17+
import { onClickOutside, onKeyStroke } from '@vueuse/core'
1818
import { computed, provide, ref, shallowRef, watch } from 'vue'
19-
2019
import { drawerInjectionKey } from './drawer-injection-key'
2120
2221
export type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom'
@@ -43,6 +42,8 @@ const drawerStyles = computed(() => {
4342
const isOpen = ref(false)
4443
const openModel = defineModel<boolean>({ default: false })
4544
45+
onKeyStroke('Escape', () => (openModel.value = false))
46+
4647
watch(openModel, (value) => {
4748
isOpen.value = value
4849
})

0 commit comments

Comments
 (0)