From d9a01f4be26ec5bddd93447f6f7ca14af764a942 Mon Sep 17 00:00:00 2001 From: Mikhail Kumachev Date: Sat, 11 May 2024 22:12:56 +0200 Subject: [PATCH 1/2] Add sound while typing --- .../webapp-next/assets/sounds/correct.wav | Bin 0 -> 43560 bytes packages/webapp-next/assets/sounds/error.wav | Bin 0 -> 52448 bytes .../components/overlays/SettingsOverlay.tsx | 8 +++ .../play2/components/HiddenCodeInput.tsx | 24 ++++++- .../modules/play2/state/settings-store.ts | 12 ++++ packages/webapp-next/next.config.js | 16 +++++ packages/webapp-next/package.json | 2 + packages/webapp-next/types/assets.d.ts | 4 ++ packages/webapp-next/yarn.lock | 65 +++++++++++++++++- 9 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 packages/webapp-next/assets/sounds/correct.wav create mode 100644 packages/webapp-next/assets/sounds/error.wav create mode 100644 packages/webapp-next/types/assets.d.ts diff --git a/packages/webapp-next/assets/sounds/correct.wav b/packages/webapp-next/assets/sounds/correct.wav new file mode 100644 index 0000000000000000000000000000000000000000..ff43ffc5c5d3c7dcdc2b1b38f70a3084ce1febb7 GIT binary patch literal 43560 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�pWo!){ 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 O@q5?sXmmo+;gCK%5QfJSs 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 z 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 AAU3Nn%ZdAih`GB29JpfCi;^z#jnY5=MWgv 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 ygMT@Vy3zSl*OAdw@3`?C_ccvufo;w>@ = ({ (s) => s.syntaxHighlighting ); const isPublicRaceByDefault = useSettingsStore((s) => s.defaultIsPublic); + const isSoundEnabled = useSettingsStore((s) => s.sound); return ( <> @@ -50,6 +52,12 @@ export const SettingsOverlay: React.FC = ({ checked={isPublicRaceByDefault} toggleEnabled={toggleDefaultRaceIsPublic} /> + diff --git a/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx b/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx index 928f3151..c58d179a 100644 --- a/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx +++ b/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx @@ -7,9 +7,17 @@ import { useState, } from "react"; -import { isSkippable, useCodeStore } from "../state/code-store"; +import { isSkippable, useCodeStore, KeyStroke } from "../state/code-store"; import { useCanType, useGameStore } from "../state/game-store"; +import { useSettingsStore } from "../state/settings-store"; +import { useSound } from "use-sound"; + +// Source: "type writing" by Pixabay - https://pixabay.com/sound-effects/search/typewriter/ +import correctSfx from "../../../assets/sounds/correct.wav"; +// Source: "Dramatic Guitar" by UNIVERSFIELD - https://pixabay.com/sound-effects/search/miss/ +import errorSfx from "../../../assets/sounds/error.wav"; + interface HiddenCodeInputProps { hide: boolean; // Used for debugging the input disabled: boolean; @@ -57,6 +65,17 @@ export const HiddenCodeInput = ({ // which gets code.substr(0, correctIndex) const [input, setInput] = useState(""); + const withSound = useSettingsStore((state) => state.sound); + const [playCorrectSfx] = useSound(correctSfx); + const [playErrorSfx] = useSound(errorSfx); + const playSound = (keyStroke: KeyStroke) => { + if (keyStroke.correct) { + playCorrectSfx(); + } else { + playErrorSfx(); + } + }; + function handleOnChange(e: ChangeEvent) { // TODO: use e.isTrusted if (!canType) return; @@ -74,6 +93,9 @@ export const HiddenCodeInput = ({ if (isSkippable(char)) continue; const keyPress = keyPressFactory(char); handleKeyPress(keyPress); + if (withSound) { + playSound(keyPress); + } game.sendKeyStroke(keyPress); } } diff --git a/packages/webapp-next/modules/play2/state/settings-store.ts b/packages/webapp-next/modules/play2/state/settings-store.ts index cfabb0c9..e5f17d35 100644 --- a/packages/webapp-next/modules/play2/state/settings-store.ts +++ b/packages/webapp-next/modules/play2/state/settings-store.ts @@ -18,6 +18,7 @@ export interface SettingsState { syntaxHighlighting: boolean; raceIsPublic: boolean; defaultIsPublic: boolean; + sound: boolean; } const SYNTAX_HIGHLIGHTING_KEY = "syntaxHighlighting"; @@ -28,6 +29,8 @@ const DEFAULT_RACE_IS_PUBLIC_KEY = "defaultRaceIsPublic2"; const LANGUAGE_KEY = "language"; +const SOUND_KEY = "sound"; + function getInitialToggleStateFromLocalStorage( key: string, defaultToggleValue: boolean @@ -76,6 +79,7 @@ export const useSettingsStore = create((_set, _get) => ({ false ), languageSelected: getInitialLanguageFromLocalStorage(LANGUAGE_KEY), + sound: getInitialToggleStateFromLocalStorage(SOUND_KEY, false), })); export const setCaretType = (caretType: "smooth" | "block") => { @@ -112,6 +116,14 @@ export const toggleSyntaxHighlightning = () => { useSettingsStore.setState((state) => ({ ...state, syntaxHighlighting })); }; +export const toggleSound = () => { + const soundStr = localStorage.getItem(SOUND_KEY); + let sound = soundStr === "true"; + sound = !sound; + localStorage.setItem(SOUND_KEY, sound.toString()); + useSettingsStore.setState((state) => ({ ...state, sound })); +}; + export const openSettingsModal = () => { if (useSettingsStore.getState().profileModalIsOpen) return; if (useSettingsStore.getState().leaderboardModalIsOpen) return; diff --git a/packages/webapp-next/next.config.js b/packages/webapp-next/next.config.js index 7cfa2048..78f8b0e2 100644 --- a/packages/webapp-next/next.config.js +++ b/packages/webapp-next/next.config.js @@ -24,6 +24,22 @@ const nextConfig = { ? "https://v3.speedtyper.dev" : "http://localhost:1337", }, + webpack: (config, options) => { + // WAV file + config.module.rules.push({ + test: /\.(wav)$/, + use: { + loader: "file-loader", + options: { + name: "[name].[ext]", + publicPath: "/_next/static/sounds/", + outputPath: `${options.isServer ? "../" : ""}static/sounds/`, + }, + }, + }); + + return config; + } }; module.exports = nextConfig; diff --git a/packages/webapp-next/package.json b/packages/webapp-next/package.json index 4ae9a8a6..e2a77b87 100644 --- a/packages/webapp-next/package.json +++ b/packages/webapp-next/package.json @@ -36,6 +36,7 @@ "socket.io-client": "^2", "socketio-latest": "npm:socket.io-client", "swr": "^2.0.3", + "use-sound": "^4.0.1", "zustand": "^4.1.1" }, "devDependencies": { @@ -48,6 +49,7 @@ "eslint-config-next": "12.2.5", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", + "file-loader": "^6.2.0", "postcss": "^8.4.16", "postcss-cli": "^10.0.0", "prettier": "2.7.1", diff --git a/packages/webapp-next/types/assets.d.ts b/packages/webapp-next/types/assets.d.ts new file mode 100644 index 00000000..9e7051ba --- /dev/null +++ b/packages/webapp-next/types/assets.d.ts @@ -0,0 +1,4 @@ +declare module "*.wav" { + const src: string; + export default src; +} diff --git a/packages/webapp-next/yarn.lock b/packages/webapp-next/yarn.lock index df96b847..20cc2e2b 100644 --- a/packages/webapp-next/yarn.lock +++ b/packages/webapp-next/yarn.lock @@ -281,6 +281,11 @@ dependencies: tslib "^2.4.0" +"@types/json-schema@^7.0.8": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" @@ -412,7 +417,12 @@ after@0.8.2: resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz" integrity sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA== -ajv@^6.10.0, ajv@^6.12.4: +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -548,6 +558,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" @@ -890,6 +905,11 @@ emoji-regex@^9.2.2: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -1278,6 +1298,14 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -1556,6 +1584,11 @@ highlight.js@^11.6.0: resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz" integrity sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw== +howler@^2.1.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/howler/-/howler-2.2.4.tgz#bd3df4a4f68a0118a51e4bd84a2bfc2e93e6e5a1" + integrity sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w== + ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -1766,6 +1799,11 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -1821,6 +1859,15 @@ lilconfig@^2.0.5, lilconfig@^2.0.6: resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -2471,6 +2518,15 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" @@ -2859,6 +2915,13 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-sound@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/use-sound/-/use-sound-4.0.1.tgz#8c8de4badd16902db7762fd9418a4283b9bf7b3e" + integrity sha512-hykJ86kNcu6y/FzlSHcQxhjSGMslZx2WlfLpZNoPbvueakv4OF3xPxEtGV2YmculrIaH0tPp9LtG4jgy17xMWg== + dependencies: + howler "^2.1.3" + use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" From 7fc59cf400a5b1b5cbddb155ea22b87857227c24 Mon Sep 17 00:00:00 2001 From: Mikhail Kumachev Date: Sat, 11 May 2024 23:51:26 +0200 Subject: [PATCH 2/2] Update sound source links. --- .../webapp-next/modules/play2/components/HiddenCodeInput.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx b/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx index c58d179a..857316b6 100644 --- a/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx +++ b/packages/webapp-next/modules/play2/components/HiddenCodeInput.tsx @@ -13,9 +13,9 @@ import { useCanType, useGameStore } from "../state/game-store"; import { useSettingsStore } from "../state/settings-store"; import { useSound } from "use-sound"; -// Source: "type writing" by Pixabay - https://pixabay.com/sound-effects/search/typewriter/ +// Source: "type writing" by Pixabay - https://pixabay.com/sound-effects/type-writing-6834/ import correctSfx from "../../../assets/sounds/correct.wav"; -// Source: "Dramatic Guitar" by UNIVERSFIELD - https://pixabay.com/sound-effects/search/miss/ +// Source: "Dramatic Guitar" by UNIVERSFIELD - https://pixabay.com/sound-effects/dramatic-guitar-140614/ import errorSfx from "../../../assets/sounds/error.wav"; interface HiddenCodeInputProps {