diff --git a/resources/dialogue/cutscenes004.json b/resources/dialogue/cutscenes004.json new file mode 100644 index 0000000..d7a5c41 --- /dev/null +++ b/resources/dialogue/cutscenes004.json @@ -0,0 +1,722 @@ +{ + "cutscenes": [ + { + "id": "lection_cutscene001", + "skippable": true, + "durationMs": 37000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 2000, + "onFadeInCallback": "", + "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": "EaseOutCubic", + "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": "EaseOutCubic", + "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": "EaseOutCubic", + "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": 9000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_sleep_cutscene", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 9000, + "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/scr1.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 2510, + "fadeInMs": 500, + "fadeOutMs": 0, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1 + }, + "to": { + "centerX": 0.5, + "centerY": 0.5, + "scale": 1.1 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/scr2.png", + "width": 1280, + "height": 720, + "startMs": 956, + "endMs": 3522, + "fadeInMs": 1500, + "fadeOutMs": 500, + "easing": "Linear", + "from": { + "centerX": 0.5, + "centerY": 0.7, + "scale": 1.3 + }, + "to": { + "centerX": 0.5, + "centerY": 0.7, + "scale": 1.5 + } + }, + { + "path": "resources/w/cutscenes/cutscene2/scr4.png", + "width": 1280, + "height": 720, + "startMs": 4849, + "endMs": 6964, + "fadeInMs": 0, + "fadeOutMs": 500, + "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/scr3.png", + "width": 1280, + "height": 720, + "startMs": 3594, + "endMs": 6478, + "fadeInMs": 500, + "fadeOutMs": 1500, + "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": "darklands_exit001", + "skippable": true, + "durationMs": 12500, + "fadeOutMs": 0, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_darklands_over", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 12500, + "fadeInMs": 0, + "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": "" + }, + { + "speaker": "", + "text": "А еще мне сильно хотелось спать...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + }, + { + "id": "sleep_cutscene001", + "skippable": true, + "durationMs": 5000, + "fadeOutMs": 500, + "fadeInMs": 500, + "endFadeOutMs": 0, + "endFadeInMs": 500, + "onFadeInCallback": "on_sleep_cutscene", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 6500, + "fadeInMs": 0, + "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": "" + } + ] + }, + { + "id": "cutscene_final001", + "skippable": true, + "durationMs": 5000, + "fadeOutMs": 0, + "fadeInMs": 500, + "endFadeOutMs": 500, + "endFadeInMs": 500, + "onFadeInCallback": "", + "imageSegments": [ + { + "path": "resources/black.png", + "width": 1280, + "height": 720, + "startMs": 0, + "endMs": 12500, + "fadeInMs": 0, + "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": "" + }, + { + "speaker": "", + "text": "В тот момент я еще не знал, что мои приключения еще только начинаются...", + "durationMs": 3000, + "waitForConfirm": false, + "luaCallback": "" + } + ] + } + ] +} \ No newline at end of file diff --git a/resources/w/Cube_001.txt b/resources/w/Cube_001.txt new file mode 100644 index 0000000..5340039 --- /dev/null +++ b/resources/w/Cube_001.txt @@ -0,0 +1,29 @@ +===Vertices (Split by UV/Normal): 14 +V 0: Pos(-1.0, 1.0, 1.0) Norm(-0.577328, 0.577361, 0.577361) UV(0.875, 0.5) +V 1: Pos(1.0, -1.0, 1.0) Norm(0.577328, -0.577361, 0.577361) UV(0.625, 0.75) +V 2: Pos(1.0, 1.0, 1.0) Norm(0.577372, 0.577339, 0.577339) UV(0.625, 0.5) +V 3: Pos(-1.0, -1.0, -1.0) Norm(-0.577328, -0.577361, -0.577361) UV(0.375, 1.0) +V 4: Pos(1.0, -1.0, -1.0) Norm(0.577372, -0.577339, -0.577339) UV(0.375, 0.75) +V 5: Pos(-1.0, -1.0, 1.0) Norm(-0.577372, -0.577339, 0.577339) UV(0.625, 0.0) +V 6: Pos(-1.0, 1.0, -1.0) Norm(-0.577372, 0.577339, -0.577339) UV(0.375, 0.25) +V 7: Pos(-1.0, -1.0, -1.0) Norm(-0.577328, -0.577361, -0.577361) UV(0.375, 0.0) +V 8: Pos(1.0, 1.0, -1.0) Norm(0.577328, 0.577361, -0.577361) UV(0.375, 0.5) +V 9: Pos(-1.0, -1.0, -1.0) Norm(-0.577328, -0.577361, -0.577361) UV(0.125, 0.75) +V 10: Pos(-1.0, 1.0, -1.0) Norm(-0.577372, 0.577339, -0.577339) UV(0.125, 0.5) +V 11: Pos(-1.0, 1.0, 1.0) Norm(-0.577328, 0.577361, 0.577361) UV(0.625, 0.25) +V 12: Pos(-1.0, -1.0, 1.0) Norm(-0.577372, -0.577339, 0.577339) UV(0.875, 0.75) +V 13: Pos(-1.0, -1.0, 1.0) Norm(-0.577372, -0.577339, 0.577339) UV(0.625, 1.0) + +===Triangles (Indices): 12 +Tri: 0 1 2 +Tri: 1 3 4 +Tri: 5 6 7 +Tri: 8 9 10 +Tri: 2 4 8 +Tri: 11 8 6 +Tri: 0 12 1 +Tri: 1 13 3 +Tri: 5 11 6 +Tri: 8 4 9 +Tri: 2 1 4 +Tri: 11 2 8 diff --git a/src/Location.cpp b/src/Location.cpp index 0fdae97..757ace4 100644 --- a/src/Location.cpp +++ b/src/Location.cpp @@ -128,10 +128,9 @@ namespace ZL setupNavigation(params.navigationJsonPaths); - dialogueSystem.init(renderer, CONST_ZIP_FILE); dialogueSystem.loadDatabase(params.dialoguesJsonPath); - dialogueSystem.loadCutsceneDatabase("resources/dialogue/cutscenes003.json"); + dialogueSystem.loadCutsceneDatabase("resources/dialogue/cutscenes004.json"); dialogueSystem.setQuestJournal(journal); npcNameText = std::make_unique();