feat: step-based missions around park machines with 3D objective arrow

Phase 5 of turning the game into the company landing page.

- Replace purchase-only missions with a data-driven list of short step
  chains (goto, locate on map, inspect, order, buy, buy at N places)
  in src/game/missions, with pure progress logic on the game state.
- Six missions, most about machines installed in Park Mellat; add two
  sites there (lake and sports fields) and record the product model
  installed at every site.
- Inspecting a machine opens a machine card with the installed model,
  specs, price, an order request and sales contact.
- The objective chip shows the current step; the missions sheet lists
  missions with the current one's steps ticked; a brand-coloured arrow
  hovers over the target machine.
- Rewards and banners per finished mission, the next step is spoken.
- Tests for mission data, step logic, text and the machine card.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 09:19:25 +03:00
co-authored by Claude Opus 5.5
parent 5a4dffc9a3
commit bced4dc6f6
23 changed files with 745 additions and 176 deletions
+18 -1
View File
@@ -87,7 +87,24 @@ npm run format:check
| خرید از هر پنج نوع مکان شهری | ۵۰۰ |
| خرید در حالت دنیای واقعی | ۲۰۰ |
هفت مأموریت امتیاز و پاداش نقدی (هتومان) دارند. درجه‌ها از «تازه‌وارد» تا «افسانهٔ مشهد» بالا می‌روند. بودجهٔ اولیه ۵۰۰ هتومان است (۱۰ هتومان = ۱۰۰٬۰۰۰ ریال). وقتی پول کافی برای هیچ خریدی نماند، یا همهٔ مأموریت‌ها انجام شود، عملیات تمام می‌شود. هر ثانیهٔ واقعی ده ثانیه از ساعت بازی است.
مأموریت‌ها امتیاز و پاداش نقدی (هتومان) دارند. درجه‌ها از «تازه‌وارد» تا «افسانهٔ مشهد» بالا می‌روند. بودجهٔ اولیه ۵۰۰ هتومان است (۱۰ هتومان = ۱۰۰٬۰۰۰ ریال). وقتی پول کافی برای هیچ خریدی نماند، یا همهٔ مأموریت‌ها انجام شود، عملیات تمام می‌شود. هر ثانیهٔ واقعی ده ثانیه از ساعت بازی است.
## مأموریت‌ها
هر مأموریت چند گام کوتاه دارد و نشانگر هدف بالای صفحه همیشه گام فعلی را نشان می‌دهد. یک فلش سه‌بعدی به رنگ برند هم بالای دستگاهِ هدف شناور است و مسیر طلایی تا آن کشیده می‌شود. بیشتر مأموریت‌ها دربارهٔ دستگاه‌های نصب‌شده در بوستان ملت‌اند (ورودی جنوبی، کنار دریاچه و زمین‌های ورزشی):
| مأموریت | گام‌ها |
|---|---|
| اولین خرید در کارخانه | رفتن به دستگاه دفتر فنی ← خرید |
| دستگاه ورودی بوستان ملت | پیدا کردن روی نقشه ← رفتن ← خرید |
| بازدید از دستگاه کنار دریاچه | رفتن ← ایستادن کنار دستگاه (کارت مشخصات باز می‌شود) |
| سفارش دستگاه برای زمین ورزشی | رفتن ← ایستادن کنار دستگاه ← «ثبت درخواست سفارش» در کارت |
| گشت دستگاه‌های بوستان | خرید از دستگاه دریاچه ← خرید از دستگاه زمین ورزشی |
| کاشف شهر | خرید از پنج دستگاه مختلف شهر |
کارت دستگاه مدل نصب‌شده در آن محل (از فهرست محصولات `src/config/company.js`)، مشخصات و قیمتش، دکمهٔ سفارش و تماس با فروش را نشان می‌دهد.
برای تغییر مأموریت‌ها، فهرست `src/game/missions/missions.js` را ویرایش کنید (نوع گام‌ها: `goto`، `locate`، `inspect`، `order`، `buy`، `places`) و عنوانش را در `missions` و متن گام‌ها را در `steps` فایل `src/i18n/fa.js` بنویسید. دستگاه‌ها و مدل نصب‌شده در هر محل در `src/constants/locations.js` هستند.
## نصب روی گوشی (PWA)