From 5516d02e2cfbd5aeadaebb6c9817b68057401ce0 Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Sat, 27 Jun 2026 22:05:19 +0300 Subject: [PATCH] Fixing ui bugs, added cutscenes --- resources/dialogue/cutscenes007.json | 929 ++++++++++++++++++ resources/dialogue/cutscenes008.json | 929 ++++++++++++++++++ resources/w/cutscenes/cutscene3/img.png | 3 + .../cutscene_exit_darklands/img2.png | 3 + resources/w/ui/hud_uni_ext.json | 50 +- resources/w/ui/hud_uni_ext_dark.json | 32 +- resources/w/ui/hud_uni_int_dark_full.json | 32 +- resources/w/ui/hud_uni_int_full.json | 32 +- resources/w/ui/hud_uni_int_step10.json | 32 +- resources/w/ui/hud_uni_int_step11.json | 32 +- resources/w/ui/hud_uni_int_step12.json | 32 +- resources/w/ui/hud_uni_int_step13.json | 32 +- .../w/ui/portrait_screen_inventory_item.json | 2 +- .../w/ui/portrait_screen_journal_item.json | 128 ++- src/Location.cpp | 3 +- src/MenuManager.cpp | 17 +- src/cutscene/CutsceneOverlay.cpp | 24 +- src/dialogue/DialogueOverlay.cpp | 10 +- 18 files changed, 2100 insertions(+), 222 deletions(-) create mode 100644 resources/dialogue/cutscenes007.json create mode 100644 resources/dialogue/cutscenes008.json create mode 100644 resources/w/cutscenes/cutscene3/img.png create mode 100644 resources/w/cutscenes/cutscene_exit_darklands/img2.png diff --git a/resources/dialogue/cutscenes007.json b/resources/dialogue/cutscenes007.json new file mode 100644 index 0000000..5599bb6 --- /dev/null +++ b/resources/dialogue/cutscenes007.json @@ -0,0 +1,929 @@ +{ + "cutscenes": [ + { + "id": "lection_cutscene001", + "skippable": true, + "durationMs": 37000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 2000, + "onFadeInCallback": "on_lection_cutscene_fadein_callback", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 37052, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6133, + "fadeInMs": 0, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.51, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.58, + "centerY": 0.5, + "scale": 1.15 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida1_x.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6150, + "fadeInMs": 0, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.52, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.575, + "centerY": 0.5, + "scale": 1.15 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6167, + "fadeInMs": 0, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.56, + "centerY": 0.36, + "scale": 1.3 + }, + "to": { + "centerX": 0.5, + "centerY": 0.37, + "scale": 1.4 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 6000, + "endMs": 15100, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.56, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida3_x.png", + "width": 1280, + "height": 720, + "startMs": 6050, + "endMs": 15166, + "fadeInMs": 1100, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.52, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 6066, + "endMs": 15083, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.3, + "scale": 1.3 + }, + "to": { + "centerX": 0.58, + "centerY": 0.3, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 14436, + "endMs": 21470, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.59, + "centerY": 0.5, + "scale": 1.3 + }, + "to": { + "centerX": 0.49, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida2_x.png", + "width": 1280, + "height": 720, + "startMs": 15348, + "endMs": 21481, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.53, + "centerY": 0.5, + "scale": 1.3 + }, + "to": { + "centerX": 0.49, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 15388, + "endMs": 21587, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.45, + "centerY": 0.2, + "scale": 1.3 + }, + "to": { + "centerX": 0.6, + "centerY": 0.2, + "scale": 1.26 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 26588, + "endMs": 32621, + "fadeInMs": 500, + "fadeOutMs": 500, + "easing": "Linear", + "from": { + "centerX": 0.64, + "centerY": 0.7, + "scale": 2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.7, + "scale": 2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida3_x.png", + "width": 1280, + "height": 720, + "startMs": 26637, + "endMs": 32621, + "fadeInMs": 500, + "fadeOutMs": 500, + "easing": "Linear", + "from": { + "centerX": 0.63, + "centerY": 0.7, + "scale": 2 + }, + "to": { + "centerX": 0.51, + "centerY": 0.7, + "scale": 2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 20744, + "endMs": 26861, + "fadeInMs": 1000, + "fadeOutMs": 700, + "easing": "EaseOutSine", + "from": { + "centerX": 0.25, + "centerY": 0.8, + "scale": 2.3 + }, + "to": { + "centerX": 0.3, + "centerY": 0.8, + "scale": 2.3 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 32546, + "endMs": 36229, + "fadeInMs": 500, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.45, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida2_x.png", + "width": 1280, + "height": 720, + "startMs": 32542, + "endMs": 35675, + "fadeInMs": 500, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.43, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 32497, + "endMs": 35580, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.35, + "scale": 1.2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.4, + "scale": 1.2 + } + } + ], + "lines": [ + { + "speaker": "Аида Дженибековна", + "text": "Опаздывающие, заходите скорее и занимайте свои места! Лекция начинается!", + "durationMs": 4000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "В эпизоде \"Семетей\" трилогии \"Манас\", изменники Канчоро и Кыяз захватывают власть над кыргызами.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Чтобы спасти раненого богатыря Семетея, фея Кёкмончок с помощью заклинания уводит его в иной мир.", + "durationMs": 3201, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Этот мир описан в эпосе Манас как Кайып или Аль-Гайб, но некоторые ученые называют его миром теней.", + "durationMs": 3202, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "В этом мире обитают феи, духи и джинны. Простым смертным в этот мир дорога закрыта.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Время там течет по другому - за один день в теневом мире могут пройти годы жизни обычного мира.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Обычно, мир теней никак не пересекается с нашим миром живых людей.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Но в критические моменты для народа, обитатели теневого мира могут приходить в наш мир.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Совсем недавно закончилась пандемия, а сегодня мир захлестнули кровавые войны.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "В такие кризисные моменты истории, грань между мирами становится особенно тонкой.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "На сегодня лекция завершена. Все свободны! Задания на этот модуль вы получите индивидуально!", + "durationMs": 4000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "computer_cutscene001", + "skippable": true, + "durationMs": 12000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_sleep_cutscene", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 13000, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_background.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 11984, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_books.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 11550, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.46, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.58, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_chair.png", + "width": 1280, + "height": 720, + "startMs": 17, + "endMs": 10767, + "fadeInMs": 0, + "fadeOutMs": 300, + "easing": "Linear", + "from": { + "centerX": 0.47, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.57, + "centerY": 0.5, + "scale": 1.3 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg001.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 3083, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.47, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.15 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg002.png", + "width": 1280, + "height": 720, + "startMs": 1850, + "endMs": 4883, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.15 + }, + "to": { + "centerX": 0.53, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg003.png", + "width": 1280, + "height": 720, + "startMs": 3950, + "endMs": 7083, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.49, + "centerY": 0.5, + "scale": 1.05 + }, + "to": { + "centerX": 0.55, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg004.png", + "width": 1280, + "height": 720, + "startMs": 6050, + "endMs": 10100, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.47, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.53, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_foreground.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 10100, + "fadeInMs": 0, + "fadeOutMs": 3000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Я сел за компьютер и начал писать эссе по книге", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Книга была очень скучной. Как будто кто-то наложил на книгу чары сна.", + "durationMs": 4000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Неудивительно что я стал понемногу засыпать...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "darklands_exit001", + "skippable": true, + "durationMs": 12500, + "fadeOutMs": 0, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_darklands_over", + "imageSegments": [ + { + "path": "resources/w/cutscenes/cutscene_exit_darklands/img.png", + "width": 1280, + "height": 720, + "startMs": 999, + "endMs": 10115, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "EaseInOutQuad", + "from": { + "centerX": 0.85, + "centerY": 0.35, + "scale": 3 + }, + "to": { + "centerX": 0.6, + "centerY": 0.5, + "scale": 1.3 + } + }, + { + "path": "resources/w/cutscenes/cutscene_exit_darklands/img2.png", + "width": 1280, + "height": 720, + "startMs": 3000, + "endMs": 10567, + "fadeInMs": 2000, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.85, + "centerY": 0.44, + "scale": 2.4 + }, + "to": { + "centerX": 0.68, + "centerY": 0.53, + "scale": 1.5 + } + }, + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 9400, + "endMs": 12500, + "fadeInMs": 1000, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/white.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 2033, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Мгновенно как я упал без сил, что-то сверкнуло.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Я очнулся и понял, что я по-прежнему в универе.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Все тело болело, как будто я всю ночь таскал мешки с цементом.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "А еще мне сильно хотелось спать...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "sleep_cutscene001", + "skippable": true, + "durationMs": 9000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_sleep_cutscene", + "imageSegments": [ + { + "path": "resources/w/cutscenes/cutscene_sleep/img.png", + "width": 1280, + "height": 720, + "startMs": 933, + "endMs": 8033, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.55, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.75, + "centerY": 0.5, + "scale": 3 + } + }, + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 2117, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 4967, + "endMs": 9000, + "fadeInMs": 1000, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Я лег спать и уснул.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Долгожданный сон полностью восстановил мои силы.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Я проснулся на следующий день уже после обеда.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "game_complete_cutscene001", + "skippable": true, + "durationMs": 12000, + "fadeOutMs": 0, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 0, + "onFadeInCallback": "", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 13500, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene3/img.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 11117, + "fadeInMs": 2000, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.53, + "scale": 2.3 + }, + "to": { + "centerX": 0.5, + "centerY": 0.65, + "scale": 1.3 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Все призраки исчезли, вокруг стало тихо.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Кажется, у меня получилось изгнать призрака.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Теперь надо добавить этот пункт к себе в резюме.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "В тот момент я еще не знал, что мои приключения еще только начинаются...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/resources/dialogue/cutscenes008.json b/resources/dialogue/cutscenes008.json new file mode 100644 index 0000000..9017929 --- /dev/null +++ b/resources/dialogue/cutscenes008.json @@ -0,0 +1,929 @@ +{ + "cutscenes": [ + { + "id": "lection_cutscene001", + "skippable": true, + "durationMs": 37000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 2000, + "onFadeInCallback": "on_lection_cutscene_fadein_callback", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 37052, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6133, + "fadeInMs": 0, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.51, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.58, + "centerY": 0.5, + "scale": 1.15 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida1_x.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6150, + "fadeInMs": 0, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.52, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.575, + "centerY": 0.5, + "scale": 1.15 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6167, + "fadeInMs": 0, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.56, + "centerY": 0.36, + "scale": 1.3 + }, + "to": { + "centerX": 0.5, + "centerY": 0.37, + "scale": 1.4 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 6000, + "endMs": 15100, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.56, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida3_x.png", + "width": 1280, + "height": 720, + "startMs": 6050, + "endMs": 15166, + "fadeInMs": 1100, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.52, + "centerY": 0.5, + "scale": 1.2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 6066, + "endMs": 15083, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.3, + "scale": 1.3 + }, + "to": { + "centerX": 0.58, + "centerY": 0.3, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 14436, + "endMs": 21470, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.59, + "centerY": 0.5, + "scale": 1.3 + }, + "to": { + "centerX": 0.49, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida2_x.png", + "width": 1280, + "height": 720, + "startMs": 15348, + "endMs": 21481, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.53, + "centerY": 0.5, + "scale": 1.3 + }, + "to": { + "centerX": 0.49, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 15388, + "endMs": 21587, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.45, + "centerY": 0.2, + "scale": 1.3 + }, + "to": { + "centerX": 0.6, + "centerY": 0.2, + "scale": 1.26 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 26588, + "endMs": 32621, + "fadeInMs": 500, + "fadeOutMs": 500, + "easing": "Linear", + "from": { + "centerX": 0.64, + "centerY": 0.7, + "scale": 2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.7, + "scale": 2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida3_x.png", + "width": 1280, + "height": 720, + "startMs": 26637, + "endMs": 32621, + "fadeInMs": 500, + "fadeOutMs": 500, + "easing": "Linear", + "from": { + "centerX": 0.63, + "centerY": 0.7, + "scale": 2 + }, + "to": { + "centerX": 0.51, + "centerY": 0.7, + "scale": 2 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 20744, + "endMs": 26861, + "fadeInMs": 1000, + "fadeOutMs": 700, + "easing": "EaseOutSine", + "from": { + "centerX": 0.25, + "centerY": 0.8, + "scale": 2.3 + }, + "to": { + "centerX": 0.3, + "centerY": 0.8, + "scale": 2.3 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_wall_x.png", + "width": 1280, + "height": 720, + "startMs": 32546, + "endMs": 36229, + "fadeInMs": 500, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.45, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_aida2_x.png", + "width": 1280, + "height": 720, + "startMs": 32542, + "endMs": 35675, + "fadeInMs": 500, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.43, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene1/cutscene1_heads_x.png", + "width": 1280, + "height": 720, + "startMs": 32497, + "endMs": 35580, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.35, + "scale": 1.2 + }, + "to": { + "centerX": 0.5, + "centerY": 0.4, + "scale": 1.2 + } + } + ], + "lines": [ + { + "speaker": "Аида Дженибековна", + "text": "Опаздывающие, заходите скорее и занимайте свои места! Лекция начинается!", + "durationMs": 4000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "В эпизоде \"Семетей\" трилогии \"Манас\", изменники Канчоро и Кыяз захватывают власть над кыргызами.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Чтобы спасти раненого богатыря Семетея, фея Кёкмончок с помощью заклинания уводит его в иной мир.", + "durationMs": 3201, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Этот мир описан в эпосе Манас как Кайып или Аль-Гайб, но некоторые ученые называют его миром теней.", + "durationMs": 3202, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "В этом мире обитают феи, духи и джинны. Простым смертным в этот мир дорога закрыта.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Время там течет по другому - за один день в теневом мире могут пройти годы жизни обычного мира.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Обычно, мир теней никак не пересекается с нашим миром живых людей.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Но в критические моменты для народа, обитатели теневого мира могут приходить в наш мир.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "Совсем недавно закончилась пандемия, а сегодня мир захлестнули кровавые войны.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "В такие кризисные моменты истории, грань между мирами становится особенно тонкой.", + "durationMs": 3200, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "Аида Дженибековна", + "text": "На сегодня лекция завершена. Все свободны! Задания на этот модуль вы получите индивидуально!", + "durationMs": 4000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "computer_cutscene001", + "skippable": true, + "durationMs": 12000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_sleep_cutscene", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 13000, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_background.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 11984, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_books.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 11550, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.46, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.58, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_chair.png", + "width": 1280, + "height": 720, + "startMs": 17, + "endMs": 10767, + "fadeInMs": 0, + "fadeOutMs": 300, + "easing": "Linear", + "from": { + "centerX": 0.47, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.57, + "centerY": 0.5, + "scale": 1.3 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg001.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 3083, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.47, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.15 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg002.png", + "width": 1280, + "height": 720, + "startMs": 1850, + "endMs": 4883, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.15 + }, + "to": { + "centerX": 0.53, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg003.png", + "width": 1280, + "height": 720, + "startMs": 3950, + "endMs": 7083, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.49, + "centerY": 0.5, + "scale": 1.05 + }, + "to": { + "centerX": 0.55, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_gg004.png", + "width": 1280, + "height": 720, + "startMs": 6050, + "endMs": 10100, + "fadeInMs": 1000, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.47, + "centerY": 0.5, + "scale": 1.1 + }, + "to": { + "centerX": 0.53, + "centerY": 0.5, + "scale": 1.2 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/cs2_foreground.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 10100, + "fadeInMs": 0, + "fadeOutMs": 3000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Я сел за компьютер и начал писать эссе по книге", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Книга была очень скучной. Как будто кто-то наложил на книгу чары сна.", + "durationMs": 4000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Неудивительно что я стал понемногу засыпать...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "darklands_exit001", + "skippable": true, + "durationMs": 12500, + "fadeOutMs": 0, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_darklands_over", + "imageSegments": [ + { + "path": "resources/w/cutscenes/cutscene_exit_darklands/img.png", + "width": 1280, + "height": 720, + "startMs": 999, + "endMs": 10115, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "EaseInOutQuad", + "from": { + "centerX": 0.87, + "centerY": 0.35, + "scale": 3.35 + }, + "to": { + "centerX": 0.7, + "centerY": 0.5, + "scale": 1.8 + } + }, + { + "path": "resources/w/cutscenes/cutscene_exit_darklands/img2.png", + "width": 1280, + "height": 720, + "startMs": 3000, + "endMs": 10567, + "fadeInMs": 2000, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.9, + "centerY": 0.49, + "scale": 3.75 + }, + "to": { + "centerX": 0.85, + "centerY": 0.53, + "scale": 2.95 + } + }, + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 9400, + "endMs": 12500, + "fadeInMs": 1000, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/white.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 2033, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Мгновенно как я упал без сил, что-то сверкнуло.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Я очнулся и понял, что я по-прежнему в универе.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Все тело болело, как будто я всю ночь таскал мешки с цементом.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "А еще мне сильно хотелось спать...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "sleep_cutscene001", + "skippable": true, + "durationMs": 9000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_sleep_cutscene", + "imageSegments": [ + { + "path": "resources/w/cutscenes/cutscene_sleep/img.png", + "width": 1280, + "height": 720, + "startMs": 933, + "endMs": 8033, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.55, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.75, + "centerY": 0.5, + "scale": 3 + } + }, + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 2117, + "fadeInMs": 0, + "fadeOutMs": 1000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 4967, + "endMs": 9000, + "fadeInMs": 1000, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Я лег спать и уснул.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Долгожданный сон полностью восстановил мои силы.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Я проснулся на следующий день уже после обеда.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "game_complete_cutscene001", + "skippable": true, + "durationMs": 12000, + "fadeOutMs": 0, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 0, + "onFadeInCallback": "", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 13500, + "fadeInMs": 0, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + } + }, + { + "path": "resources/w/cutscenes/cutscene3/img.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 11117, + "fadeInMs": 2000, + "fadeOutMs": 2000, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.53, + "scale": 2.3 + }, + "to": { + "centerX": 0.5, + "centerY": 0.65, + "scale": 1.3 + } + } + ], + "lines": [ + { + "speaker": "", + "text": "Все призраки исчезли, вокруг стало тихо.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Кажется, у меня получилось изгнать призрака.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "Теперь надо добавить этот пункт к себе в резюме.", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + }, + { + "speaker": "", + "text": "В тот момент я еще не знал, что мои приключения еще только начинаются...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/resources/w/cutscenes/cutscene3/img.png b/resources/w/cutscenes/cutscene3/img.png new file mode 100644 index 0000000..99db5a5 --- /dev/null +++ b/resources/w/cutscenes/cutscene3/img.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57ca1f62f9c9e26781bc248497a60cea0c2159f23235c4cd26fcc94cf309f485 +size 1109693 diff --git a/resources/w/cutscenes/cutscene_exit_darklands/img2.png b/resources/w/cutscenes/cutscene_exit_darklands/img2.png new file mode 100644 index 0000000..2f6d8e7 --- /dev/null +++ b/resources/w/cutscenes/cutscene_exit_darklands/img2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:674ba222f7b326e54c5bfe7b286733572d1ce4256e3e2f671e5046c4ee55f3ee +size 4804863 diff --git a/resources/w/ui/hud_uni_ext.json b/resources/w/ui/hud_uni_ext.json index ca8ce33..92404ad 100644 --- a/resources/w/ui/hud_uni_ext.json +++ b/resources/w/ui/hud_uni_ext.json @@ -95,9 +95,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -105,9 +105,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -115,19 +115,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, - { + { "type": "TextView", "name": "toast001text", - "horizontal_gravity": "center", - "vertical_gravity": "top", - "y": 170, - "x": 8, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -144,13 +144,13 @@ 1.0 ] }, - { + { "type": "TextView", "name": "toast002text", - "horizontal_gravity": "center", - "vertical_gravity": "top", - "y": 290, - "x": 8, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -167,13 +167,13 @@ 1.0 ] }, - { + { "type": "TextView", "name": "toast003text", - "horizontal_gravity": "center", - "vertical_gravity": "top", - "y": 410, - "x": 8, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_ext_dark.json b/resources/w/ui/hud_uni_ext_dark.json index 1347faa..0f4ea92 100644 --- a/resources/w/ui/hud_uni_ext_dark.json +++ b/resources/w/ui/hud_uni_ext_dark.json @@ -139,9 +139,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -149,9 +149,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -159,19 +159,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -193,8 +193,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -216,8 +216,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_int_dark_full.json b/resources/w/ui/hud_uni_int_dark_full.json index 6d91b29..021ccca 100644 --- a/resources/w/ui/hud_uni_int_dark_full.json +++ b/resources/w/ui/hud_uni_int_dark_full.json @@ -139,9 +139,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -149,9 +149,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -159,19 +159,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -193,8 +193,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -216,8 +216,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_int_full.json b/resources/w/ui/hud_uni_int_full.json index d8c7b81..4490f35 100644 --- a/resources/w/ui/hud_uni_int_full.json +++ b/resources/w/ui/hud_uni_int_full.json @@ -112,9 +112,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -122,9 +122,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -132,19 +132,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -166,8 +166,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -189,8 +189,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_int_step10.json b/resources/w/ui/hud_uni_int_step10.json index 9faf48c..16a5b1f 100644 --- a/resources/w/ui/hud_uni_int_step10.json +++ b/resources/w/ui/hud_uni_int_step10.json @@ -95,9 +95,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -105,9 +105,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -115,19 +115,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -149,8 +149,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -172,8 +172,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_int_step11.json b/resources/w/ui/hud_uni_int_step11.json index 6e01a02..c632fbe 100644 --- a/resources/w/ui/hud_uni_int_step11.json +++ b/resources/w/ui/hud_uni_int_step11.json @@ -142,9 +142,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -152,9 +152,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -162,19 +162,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -196,8 +196,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -219,8 +219,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_int_step12.json b/resources/w/ui/hud_uni_int_step12.json index c45a8df..ca488d9 100644 --- a/resources/w/ui/hud_uni_int_step12.json +++ b/resources/w/ui/hud_uni_int_step12.json @@ -165,9 +165,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -175,9 +175,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -185,19 +185,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -219,8 +219,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -242,8 +242,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/hud_uni_int_step13.json b/resources/w/ui/hud_uni_int_step13.json index cccc2ba..86f5db1 100644 --- a/resources/w/ui/hud_uni_int_step13.json +++ b/resources/w/ui/hud_uni_int_step13.json @@ -158,9 +158,9 @@ "type": "StaticImage", "name": "toast001", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 80, + "width": 504, + "height": 132, + "y": 0, "visible" : false, "texture": "resources/w/ui/img/toast/item_received001.png" }, @@ -168,9 +168,9 @@ "type": "StaticImage", "name": "toast002", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 200, + "width": 504, + "height": 132, + "y": 104, "visible" : false, "texture": "resources/w/ui/img/toast/item_removed001.png" }, @@ -178,19 +178,19 @@ "type": "StaticImage", "name": "toast003", "horizontal_gravity": "center", - "width": 672, - "height": 176, - "y": 320, + "width": 504, + "height": 132, + "y": 208, "visible" : false, - "texture": "resources/w/ui/img/toast/objective_completed001.png" + "texture": "resources/w/ui/img/toast/quest_completed001.png" }, { "type": "TextView", "name": "toast001text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 170, - "x": 8, + "y": 62, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -212,8 +212,8 @@ "name": "toast002text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 290, - "x": 8, + "y": 166, + "x": 54, "width": 400, "height": 100, "visible" : false, @@ -235,8 +235,8 @@ "name": "toast003text", "horizontal_gravity": "center", "vertical_gravity": "top", - "y": 410, - "x": 8, + "y": 270, + "x": 54, "width": 400, "height": 100, "visible" : false, diff --git a/resources/w/ui/portrait_screen_inventory_item.json b/resources/w/ui/portrait_screen_inventory_item.json index 0919917..ce5e3ab 100644 --- a/resources/w/ui/portrait_screen_inventory_item.json +++ b/resources/w/ui/portrait_screen_inventory_item.json @@ -53,7 +53,7 @@ "width": 600, "height": 137, "text": "Серебряный нож.", - "fontSize": 60, + "fontSize": 48, "fontPath": "resources/fonts/DroidSans.ttf", "textCentered": false, "topAligned": true, diff --git a/resources/w/ui/portrait_screen_journal_item.json b/resources/w/ui/portrait_screen_journal_item.json index c76d925..eb8edfd 100644 --- a/resources/w/ui/portrait_screen_journal_item.json +++ b/resources/w/ui/portrait_screen_journal_item.json @@ -12,7 +12,7 @@ "name": "background", "width": 640, "height": 1200, - "y": 68, + "y": 68, "horizontal_gravity": "center", "vertical_gravity": "top", "texture": "resources/w/ui/img/journal/PortraitQuestJournalItemBkg001.png" @@ -55,30 +55,38 @@ ] }, { - "type": "LinearLayout", - "orientation": "horizontal", - "spacing": 10, + "type": "StaticImage", + "name": "objective1checkbox", "horizontal_gravity": "center", "vertical_gravity": "top", - "x": 36, + "width": 60, + "height": 60, + "x": -255, + "y": 380, + "texture": "resources/w/ui/img/journal/quest_objective_completed.png" + }, + { + "type": "LinearLayout", + "orientation": "horizontal", + "spacing": 0, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "vertical_align": "bottom", + "name": "objective1nameLayout", + "paddingY": 0, + "width": 540.0, + "height": 60.0, + "x": 56, "y": 370, - "width": 640, - "height": 80, "children": [ - { - "type": "StaticImage", - "name": "objective1checkbox", - "width": 60, - "height": 60, - "texture": "resources/w/ui/img/journal/quest_objective_completed.png" - }, { "type": "TextView", "name": "objective1name", - "paddingY": 20, - "width": 740.0, - "height": 80.0, - "textPaddingY": 20.0, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "paddingY": -20, + "width": 540.0, + "height": 60.0, "text": "Цель 1 Цель 1 Цель 1 Цель 1", "fontSize": 32, "fontPath": "resources/fonts/DroidSans.ttf", @@ -95,31 +103,38 @@ ] }, { - "type": "LinearLayout", - "orientation": "horizontal", - "spacing": 10, + "type": "StaticImage", + "name": "objective2checkbox", "horizontal_gravity": "center", "vertical_gravity": "top", - "x": 36, + "width": 60, + "height": 60, + "x": -255, + "y": 460, + "texture": "resources/w/ui/img/journal/quest_objective_blank.png" + }, + { + "type": "LinearLayout", + "orientation": "horizontal", + "name": "objective2nameLayout", + "spacing": 0, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "vertical_align": "bottom", + "width": 540.0, + "height": 80.0, + "x": 56, "y": 450, - "width": 640, - "height": 80, "children": [ - { - "type": "StaticImage", - "name": "objective2checkbox", - "width": 60, - "height": 60, - "texture": "resources/w/ui/img/journal/quest_objective_blank.png" - }, { "type": "TextView", "name": "objective2name", - "paddingY": 20, - "width": 740.0, - "height": 80.0, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "paddingY": 0, + "width": 540.0, + "height": 60.0, "text": "Цель 2", - "textPaddingY": 20.0, "fontSize": 32, "fontPath": "resources/fonts/DroidSans.ttf", "textCentered": false, @@ -135,31 +150,38 @@ ] }, { - "type": "LinearLayout", - "orientation": "horizontal", - "spacing": 10, + "type": "StaticImage", + "name": "objective3checkbox", "horizontal_gravity": "center", "vertical_gravity": "top", - "x": 36, + "width": 60, + "height": 60, + "x": -255, + "y": 540, + "texture": "resources/w/ui/img/journal/quest_objective_blank.png" + }, + { + "type": "LinearLayout", + "orientation": "horizontal", + "spacing": 0, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "vertical_align": "bottom", + "name": "objective3nameLayout", + "paddingY": 0, + "width": 540.0, + "height": 60.0, + "x": 56, "y": 530, - "width": 640, - "height": 80, "children": [ - { - "type": "StaticImage", - "name": "objective3checkbox", - "width": 60, - "height": 60, - "texture": "resources/w/ui/img/journal/quest_objective_blank.png" - }, { "type": "TextView", "name": "objective3name", - "paddingY": 20, - "width": 740.0, - "height": 80.0, + "horizontal_gravity": "center", + "vertical_gravity": "top", + "width": 540.0, + "height": 60.0, "text": "Цель 3", - "textPaddingY": 20.0, "fontSize": 32, "fontPath": "resources/fonts/DroidSans.ttf", "textCentered": false, @@ -184,7 +206,7 @@ "horizontal_gravity": "center", "vertical_gravity": "top", "text": "А все бегут бегут бегут бегут бегут бегут бегут бегут бегут бегут бегут а мы идем.", - "fontSize": 32, + "fontSize": 24, "fontPath": "resources/fonts/DroidSans.ttf", "textCentered": false, "topAligned": false, diff --git a/src/Location.cpp b/src/Location.cpp index e018c3a..b05957b 100644 --- a/src/Location.cpp +++ b/src/Location.cpp @@ -168,10 +168,9 @@ namespace ZL dialogueSystem.init(renderer, CONST_ZIP_FILE); dialogueSystem.loadDatabase(params.dialoguesJsonPath); - dialogueSystem.loadCutsceneDatabase("resources/dialogue/cutscenes006.json"); + dialogueSystem.loadCutsceneDatabase("resources/dialogue/cutscenes008.json"); dialogueSystem.setQuestJournal(journal); - npcNameText = std::make_unique(); if (!npcNameText->init(renderer, "resources/fonts/DroidSans.ttf", 24, CONST_ZIP_FILE)) { std::cerr << "Failed to init NPC name TextRenderer" << std::endl; diff --git a/src/MenuManager.cpp b/src/MenuManager.cpp index a41b82e..7a118d4 100644 --- a/src/MenuManager.cpp +++ b/src/MenuManager.cpp @@ -480,6 +480,7 @@ namespace ZL { } void MenuManager::selectInventoryItem(int index) { + std::cout << "MenuManager::selectInventoryItem: " << index << std::endl; const auto& items = inventory->getItems(); if (index < 0 || index >= static_cast(items.size())) return; @@ -1336,7 +1337,8 @@ namespace ZL { uiManager.setText("quest_title", def.title); static const char* kCheckboxes[3] = { "objective1checkbox", "objective2checkbox", "objective3checkbox" }; - static const char* kObjNames[3] = { "objective1name", "objective2name", "objective3name" }; + static const char* kObjNames[3] = { "objective1name", "objective2name", "objective3name" }; + static const char* kObjNameLayouts[3] = { "objective1nameLayout", "objective2nameLayout", "objective3nameLayout" }; std::vector visibleObjs; for (const auto& obj : def.objectives) @@ -1347,6 +1349,7 @@ namespace ZL { const auto& obj = *visibleObjs[i]; const bool isActive = (&obj - def.objectives.data() == quest->activeObjectiveIndex); auto img = uiManager.findStaticImage(kCheckboxes[i]); + auto textView = uiManager.findTextView(kObjNames[i]); if (img) img->texture = obj.completed ? texObjectiveCompleted_ : texObjectiveBlank_; std::array color; if (obj.completed) { @@ -1356,6 +1359,18 @@ namespace ZL { } else { color = { 0.996f, 0.977f, 0.761f, 0.9f }; } + + const int numLines = countWrappedLines(obj.text, *textView->textRenderer, 540); + + if (numLines == 1) + { + uiManager.findNode(kObjNameLayouts[i])->height = 80.0f; + } + else + { + uiManager.findNode(kObjNameLayouts[i])->height = 60.0f; + } + uiManager.setText(kObjNames[i], obj.text); uiManager.setTextColor(kObjNames[i], color); uiManager.setNodeVisible(kCheckboxes[i], true); diff --git a/src/cutscene/CutsceneOverlay.cpp b/src/cutscene/CutsceneOverlay.cpp index 6f69ae9..1b7ef5b 100644 --- a/src/cutscene/CutsceneOverlay.cpp +++ b/src/cutscene/CutsceneOverlay.cpp @@ -111,7 +111,7 @@ void CutsceneOverlay::draw(Renderer& renderer, const ZL::Dialogue::PresentationM const float W = Environment::projectionWidth; const float H = Environment::projectionHeight; - const UiRect subtitleRect{ W * 0.12f, 22.0f, W * 0.76f, 110.0f }; + const UiRect subtitleRect{ W * 0.12f, 22.0f, W * 0.76f, 142.0f }; lastCutsceneAdvanceRect = subtitleRect; @@ -175,28 +175,6 @@ void CutsceneOverlay::draw(Renderer& renderer, const ZL::Dialogue::PresentationM renderer.DrawVertexRenderStruct(subtitleQuad.mesh); } - if (model.cutsceneSkippable && cutsceneSkipHintVisible) { - /*const UiRect hintBg{W - 250.0f, H - 62.0f, 226.0f, 42.0f}; - skipHintBgQuad.rebuild(hintBg); - glBindTexture(GL_TEXTURE_2D, choiceOptionalTexture->getTexID()); - renderer.DrawVertexRenderStruct(skipHintBgQuad.mesh); - - const UiRect progressBg{ W - 232.0f, H - 34.0f, 190.0f, 7.0f }; - skipProgressBgQuad.rebuild(progressBg); - renderer.DrawVertexRenderStruct(skipProgressBgQuad.mesh); - - if (cutsceneSkipHolding) { - const float progress = std::clamp( - static_cast(cutsceneSkipHoldElapsedMs) / static_cast(CutsceneSkipHoldDurationMs), - 0.0f, 1.0f - ); - const UiRect progressFill{ progressBg.x, progressBg.y, progressBg.w * progress, progressBg.h }; - skipProgressFillQuad.rebuild(progressFill); - glBindTexture(GL_TEXTURE_2D, choiceMainTexture->getTexID()); - renderer.DrawVertexRenderStruct(skipProgressFillQuad.mesh); - }*/ - } - renderer.PopMatrix(); renderer.PopProjectionMatrix(); renderer.shaderManager.PopShader(); diff --git a/src/dialogue/DialogueOverlay.cpp b/src/dialogue/DialogueOverlay.cpp index ac239e4..647bde5 100644 --- a/src/dialogue/DialogueOverlay.cpp +++ b/src/dialogue/DialogueOverlay.cpp @@ -293,12 +293,12 @@ void DialogueOverlay::drawPortrait(Renderer& renderer, const PresentationModel& if (model.mode == PresentationMode::Choice) { const float choiceTexAspect = static_cast(choiceMainTexture->getWidth()) / static_cast(choiceMainTexture->getHeight()); - const float choiceW = W - leftPad - rightPad; + const float choiceW = W - leftPad - rightPad + 32; const float choiceH = choiceW / choiceTexAspect; - const float choiceSpacing = 8.f; + const float choiceSpacing = -18.f; const float totalChoicesH = (choiceH + choiceSpacing) * static_cast(model.choices.size()) - choiceSpacing; - const float choiceStartY = panelTopY - 34.f - totalChoicesH; // below name row + const float choiceStartY = panelTopY - 80.f - totalChoicesH; // below name row if (choiceQuads.size() < model.choices.size()) { choiceQuads.resize(model.choices.size()); @@ -313,7 +313,7 @@ void DialogueOverlay::drawPortrait(Renderer& renderer, const PresentationModel& for (size_t i = 0; i < model.choices.size(); ++i) { const float cy = choiceStartY + (choiceH + choiceSpacing) * static_cast(model.choices.size() - 1 - i); - UiRect rect{ leftPad, cy, choiceW, choiceH }; + UiRect rect{ leftPad-16.f, cy, choiceW, choiceH }; lastChoiceRects.push_back(rect); choiceQuads[i].rebuild(rect); @@ -338,7 +338,7 @@ void DialogueOverlay::drawPortrait(Renderer& renderer, const PresentationModel& const std::string wrappedChoice = wrapTextToWidth(model.choices[i].text, *choiceRenderer, rect.w - 20.0f, 1.0f); choiceRenderer->drawText( - wrappedChoice, rect.x + 20.f, rect.y + choiceH * 0.35f, 1.5f, false, + wrappedChoice, rect.x + 20.f, rect.y + choiceH * 0.35f+5.f, 1.4f, false, isHighlighted ? std::array{1.0f, 1.0f, 1.0f, 1.0f} : color ); }