From c2d41a63a7f25d92215630204a87362193e1ad25 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Thu, 6 Feb 2025 21:00:32 +0100 Subject: [PATCH] Added playSound func, use this on attack --- package-lock.json | 6 +++--- public/assets/{music => sounds}/click-btn.mp3 | Bin public/assets/sounds/hit.wav | Bin 0 -> 44180 bytes src/App.vue | 2 +- src/components/game/character/Character.vue | 7 +++++-- .../partials/SelectedPlacedMapObject.vue | 4 ++-- .../gameMaster/mapEditor/partials/TileList.vue | 1 - .../controls/useGameControlsComposable.ts | 2 +- src/composables/useGameComposable.ts | 10 ++++++++++ 9 files changed, 22 insertions(+), 10 deletions(-) rename public/assets/{music => sounds}/click-btn.mp3 (100%) create mode 100644 public/assets/sounds/hit.wav create mode 100644 src/composables/useGameComposable.ts diff --git a/package-lock.json b/package-lock.json index 5f5ac55..0673cd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2535,9 +2535,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.93", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.93.tgz", - "integrity": "sha512-M+29jTcfNNoR9NV7la4SwUqzWAxEwnc7ThA5e1m6LRSotmpfpCpLcIfgtSCVL+MllNLgAyM/5ru86iMRemPzDQ==", + "version": "1.5.94", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.94.tgz", + "integrity": "sha512-v+oaMuy6AgwZ6Hi2u5UgcM3wxzeFscBTsZBQL2FoDTx/T6k1XEQKz++8fe1VlQ3zjXB6hcvy5JPb5ZSkmVtdIQ==", "dev": true, "license": "ISC" }, diff --git a/public/assets/music/click-btn.mp3 b/public/assets/sounds/click-btn.mp3 similarity index 100% rename from public/assets/music/click-btn.mp3 rename to public/assets/sounds/click-btn.mp3 diff --git a/public/assets/sounds/hit.wav b/public/assets/sounds/hit.wav new file mode 100644 index 0000000000000000000000000000000000000000..5c9e08943dafd9927040af6be091e212f8b6be50 GIT binary patch literal 44180 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 { if (!(event.target instanceof HTMLButtonElement)) { return } - const audio = new Audio('/assets/music/click-btn.mp3') + const audio = new Audio('/assets/sounds/click-btn.mp3') audio.play() }) diff --git a/src/components/game/character/Character.vue b/src/components/game/character/Character.vue index c38f109..e841e67 100644 --- a/src/components/game/character/Character.vue +++ b/src/components/game/character/Character.vue @@ -14,6 +14,7 @@ import CharacterHair from '@/components/game/character/partials/CharacterHair.vu import ChatBubble from '@/components/game/character/partials/ChatBubble.vue' import HealthBar from '@/components/game/character/partials/HealthBar.vue' import { useCharacterSpriteComposable } from '@/composables/useCharacterSpriteComposable' +import { useGameComposable } from '@/composables/useGameComposable' import { useGameStore } from '@/stores/gameStore' import { useMapStore } from '@/stores/mapStore' import { Container, Sprite, useScene } from 'phavuer' @@ -29,13 +30,13 @@ const mapStore = useMapStore() const scene = useScene() const { characterContainer, characterSprite, currentPositionX, currentPositionY, isometricDepth, isFlippedX, updatePosition, playAnimation, calcDirection, updateSprite, initializeSprite, cleanup } = useCharacterSpriteComposable(scene, props.tileMap, props.mapCharacter) +const { playSound } = useGameComposable() const handlePositionUpdate = (newValues: any, oldValues: any) => { if (!newValues) return if (!oldValues || newValues.positionX !== oldValues.positionX || newValues.positionY !== oldValues.positionY) { - const direction = !oldValues ? Direction.POSITIVE : calcDirection(oldValues.positionX, oldValues.positionY, newValues.positionX, newValues.positionY) - updatePosition(newValues.positionX, newValues.positionY, direction) + updatePosition(newValues.positionX, newValues.positionY) } if (newValues.isMoving !== oldValues?.isMoving || newValues.rotation !== oldValues?.rotation) { @@ -57,6 +58,8 @@ watch( if (props.mapCharacter.isAttacking) { // Play attack animation playAnimation('attack') + // Play hit sound + playSound('/assets/sounds/hit.wav') // Disable attack immediately after playing the animation mapStore.updateCharacterProperty(props.mapCharacter.character.id, 'isAttacking', false) } diff --git a/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue b/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue index 98963a7..a2365f5 100644 --- a/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue +++ b/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue @@ -26,11 +26,11 @@
- +
- +
diff --git a/src/components/gameMaster/mapEditor/partials/TileList.vue b/src/components/gameMaster/mapEditor/partials/TileList.vue index c1a9e6d..cf8b576 100644 --- a/src/components/gameMaster/mapEditor/partials/TileList.vue +++ b/src/components/gameMaster/mapEditor/partials/TileList.vue @@ -77,7 +77,6 @@ const tileCategories = ref>(new Map()) const selectedGroup = ref<{ parent: Tile; children: Tile[] } | null>(null) const tiles = ref([]) - function startDragging(event: MouseEvent) { isDragging.value = true const startX = event.clientX diff --git a/src/composables/controls/useGameControlsComposable.ts b/src/composables/controls/useGameControlsComposable.ts index cc12817..5377e80 100644 --- a/src/composables/controls/useGameControlsComposable.ts +++ b/src/composables/controls/useGameControlsComposable.ts @@ -41,7 +41,7 @@ export function useGameControlsComposable(scene: Phaser.Scene, layer: Phaser.Til // Start movement loop if not already running if (!moveInterval) { - moveInterval = window.setInterval(moveCharacter, 250) // Adjust timing as needed + moveInterval = window.setInterval(moveCharacter, 100) // Adjust timing as needed moveCharacter() // Move immediately on first press } } diff --git a/src/composables/useGameComposable.ts b/src/composables/useGameComposable.ts new file mode 100644 index 0000000..3d3aa66 --- /dev/null +++ b/src/composables/useGameComposable.ts @@ -0,0 +1,10 @@ +export function useGameComposable() { + const playSound = (sound: string) => { + const audio = new Audio(sound) + audio.play().catch(console.error) + } + + return { + playSound + } +}