diff --git a/README.md b/README.md index dc86802..200195c 100644 --- a/README.md +++ b/README.md @@ -205,12 +205,15 @@ node scripts/fetch-imagery.mjs ## ساختار +- `src/config/company.js`: همهٔ اطلاعات شرکت در یک جا: نام، شعار، رنگهای برند (رنگ اصلی `#00a693` و طیف آن)، آدرس، تلفن، ایمیل، شبکههای اجتماعی، دربارهما و فهرست محصولات. مقدارهای `TODO(company)` جایگزینشدنیاند. +- `src/config/assets.js`: مسیر همهٔ فایلها (لوگو، تصویر محصولات، چهرههای روبات، مدلهای سهبعدی و دادهٔ نقشه) با قالب و اندازهٔ مورد انتظار هر کدام. موارد `TODO(asset)` جای فایل واقعیاند. +- `src/i18n/fa.js`: همهٔ متنهای فارسی رابط کاربری، گفتوگوها، مأموریتها و نوشتههای روی صحنه. تست `tests/content.test.js` جلوی متن فارسی مستقیم در کد را میگیرد. - `src/game/createGame.js و src/game/runtime/`: صحنه، دوربین سومشخص، کنترلها، رابط کاربری (HUD)، نقشه، خرید و حلقهٔ بازی - `src/game/world/city.js`: ساخت شهر سهبعدی از دادهها (خیابان، پیادهرو، ساختمان، پارک، درخت، ورودی مترو، کوهها) در تکههای ۲ کیلومتری که دورها پنهان میشوند - `src/game/world/mapRender.js`: نقشهٔ گوشه، نقشهٔ کامل شهر (کاشیهای کششده و نمای کلی) و نقشهٔ ایران - `src/game/world/routing.js`: گراف خیابانها، مسیریابی A* و پیدا کردن نام خیابان - `src/game/world/collision.js`: برخورد با ساختمانها برای شخصیتها، ماشین و دوربین -- `src/constants/locations.js`: دستگاهها، آدرسها، ساعت کاری و محصولات +- `src/constants/locations.js`: دستگاههای نصبشده در شهر، آدرسها، ساعت کاری و محصولات - `src/game/economy/gameState.js`، `src/game/economy/payment.js`، `src/game/economy/scoring.js`: پول، خرید، پرداخت، امتیاز، درجه و مأموریتها - `src/game/models/characters.js`: پدر و فرزند، و روبات راهنما که از دستگاهها بیرون میآید - `src/game/models/factory.js`: محوطهٔ کارخانه، شامل سالن تولید، خط مونتاژ، دفتر، حیاط و تابلوها، بههمراه دفترها، کامیون و ورود مدیر diff --git a/index.html b/index.html index 8ce6716..9bbd831 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@
- +
- {'عملیات ۰۱ · خراسان رضوی'}
- {'روبات مارکت · شکار دستگاههای وندینگ'}
+ {strings.briefing.tag} +{strings.briefing.subtitle}
- { - 'حرکت: W A S D · دویدن: Shift · دوربین: ماوس · سوار و پیاده شدن: F · خرید: E · نقشه: M' - } -
+{strings.briefing.keys}
بازی اجرا نشد: {error}
+{strings.app.failed(error)}
)} diff --git a/src/pages/game/GameSurfaces.jsx b/src/pages/game/GameSurfaces.jsx index 590c988..036dac6 100644 --- a/src/pages/game/GameSurfaces.jsx +++ b/src/pages/game/GameSurfaces.jsx @@ -1,4 +1,5 @@ import { GameNode } from '@/components/shared/GameNode.jsx'; +import { strings } from '@/i18n/fa.js'; /** @typedef {{nodes:object,actions:object}} GameSurfacesProps */ /** Presents the GameSurfaces view using plain models and semantic native elements. * @param {GameSurfacesProps} props - Interface snapshots and callbacks. @@ -18,7 +19,7 @@ export function GameSurfaces({ nodes }) { >- {'کشیدن: جابهجایی · دو انگشت یا چرخ ماوس: زوم · لمس یا کلیک روی دستگاه: انتخاب'} -
+{strings.map.help}
- - { - 'با روشن کردن این حالت، موقعیت گوشی شما (GPS) روی نقشهٔ بازی نمایش داده میشود. وقتی واقعاً به محل یک دستگاه روبات مارکت برسید، میتوانید خرید کنید و ۲۰۰ امتیاز اضافه بگیرید.' - } -
+{strings.realIntro.body}
- {'۱۰ هتومان = ۱۰۰٬۰۰۰ ریال · مبالغ نمایشیاند و پرداخت واقعی انجام نمیشود.'} -
+{strings.shop.note}
> ); diff --git a/src/pages/game/ShowroomDialog.jsx b/src/pages/game/ShowroomDialog.jsx index 665bcbe..862cbc6 100644 --- a/src/pages/game/ShowroomDialog.jsx +++ b/src/pages/game/ShowroomDialog.jsx @@ -1,7 +1,9 @@ import { GameNode } from '@/components/shared/GameNode.jsx'; import { SHOWROOM_CATALOG } from '@/constants/showroomCatalog.js'; +import { robotFace } from '@/config/assets.js'; import { showroomModelById, formatRial } from '@/utils/showroomAnswers.js'; import { ShowroomImage } from './ShowroomImage.jsx'; +import { strings } from '@/i18n/fa.js'; /** @typedef {{nodes:object,actions:object}} ShowroomDialogProps */ /** Presents the factory sample catalog and questions answered by the robot host. @@ -22,17 +24,17 @@ export function ShowroomDialog({ nodes, actions }) { >
- - {nodes['showroom-response']?.text ?? - 'روبات: سلام! دربارهٔ قیمت و امکانات این مدل از من بپرس.'} -
+{nodes['showroom-response']?.text ?? strings.showroom.greeting}