Split card design into front+back, add sound effects & background music

Card design:
- Separate cardFront + cardBack (each own/equip independently)
- Fronts: classic (free), ivory/rosegold (buy), parchment/mint (earned)
- Backs: classic (free), sapphire/emerald (buy), ruby/royal (earned)
- PlayingCard `front` prop; table applies front to all faces, back to opponents
- Profile has front + back pickers; shop has both sections

Audio:
- Web Audio synth engine (no asset files): SFX for card/deal/trump/trick,
  win/lose, message, notify, award, levelup, purchase, kot + ambient music
- Toggles in profile (Audio) + mute button in game HUD; prefs persisted
- Wired across game-store, rewards, daily, shop, chat

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-04 11:49:19 +03:30
parent db4eade619
commit ae239f4c51
18 changed files with 579 additions and 72 deletions
+18
View File
@@ -224,6 +224,15 @@ const fa: Dict = {
"reactions.title": "شکلک",
"stickers.title": "استیکر",
"settings.audio": "تنظیمات صدا",
"settings.sound": "افکت صدا",
"settings.music": "موسیقی پس‌زمینه",
"profile.cardFront": "روی کارت",
"profile.cardBack": "پشت کارت",
"shop.cardfronts": "روی کارت‌ها",
"shop.cardbacks": "پشت کارت‌ها",
};
const en: Dict = {
@@ -437,6 +446,15 @@ const en: Dict = {
"reactions.title": "Emoji",
"stickers.title": "Stickers",
"settings.audio": "Audio",
"settings.sound": "Sound effects",
"settings.music": "Background music",
"profile.cardFront": "Card front",
"profile.cardBack": "Card back",
"shop.cardfronts": "Card fronts",
"shop.cardbacks": "Card backs",
};
const DICTS: Record<Locale, Dict> = { fa, en };