diff --git a/Content/Animations/UI/font_small.png b/Content/Animations/UI/font_small.png index 0574e0f3..184aa829 100644 Binary files a/Content/Animations/UI/font_small.png and b/Content/Animations/UI/font_small.png differ diff --git a/Content/Animations/UI/font_small.png.font b/Content/Animations/UI/font_small.png.font index 5dcd83e1..5c71fcc6 100644 Binary files a/Content/Animations/UI/font_small.png.font and b/Content/Animations/UI/font_small.png.font differ diff --git a/Content/Translations/cs.mo b/Content/Translations/cs.mo index 27465187..5897ab0a 100644 Binary files a/Content/Translations/cs.mo and b/Content/Translations/cs.mo differ diff --git a/Content/Translations/cs.po b/Content/Translations/cs.po index 79b0c017..c9866391 100644 --- a/Content/Translations/cs.po +++ b/Content/Translations/cs.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:36+0100\n" -"PO-Revision-Date: 2024-01-13 16:37+0100\n" +"POT-Creation-Date: 2024-01-14 14:14+0100\n" +"PO-Revision-Date: 2024-01-14 14:23+0100\n" "Last-Translator: \n" "Language-Team: Překlad do češtiny: Dan R. (https://deat.tk/jazz2/)\n" "Language: cs\n" @@ -1441,8 +1441,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Hrát vlastní úrovně" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1583,6 +1586,57 @@ msgstr "Nejprve musíte dokončit \"%s\"!" msgid "Episode is locked!" msgstr "Epizoda je zamčena!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "Původní" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "Chci hrát hru takovou, jaká byla." + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "Chci hrát hru s něčím novým." + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "Vítejte v reimplementaci hry \f[c:0x9e7056]Jazz Jackrabbit 2\f[c]!" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "Hra" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Vylepšení" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" +"Můžete si zvolit preferovaný styl hraní.\n" +"Tuto možnost můžete kdykoliv změnit v \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"Pro více informací můžete navštívit %s and  Discord!" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1608,12 +1662,6 @@ msgstr "Povolit šplhání" msgid "Weapon Wheel" msgstr "Kolečko zbraní" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Vylepšení" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1656,12 +1704,6 @@ msgstr "Otevřít složku \"Source\"" msgid "Refresh Cache" msgstr "Obnovit cache" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "Hra" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/it.po b/Content/Translations/it.po index c3e07272..72092648 100644 --- a/Content/Translations/it.po +++ b/Content/Translations/it.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:37+0100\n" +"POT-Creation-Date: 2024-01-14 14:35+0100\n" "PO-Revision-Date: \n" "Last-Translator: Hexaae \n" "Language-Team: Traduzione Italiana: Hexaae\n" @@ -1446,8 +1446,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Gioco Personalizzato" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1589,6 +1592,53 @@ msgstr "Devi prima completare \"%s\"!" msgid "Episode is locked!" msgstr "Episodio bloccato!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "Giocabilità" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Miglioramenti" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1614,12 +1664,6 @@ msgstr "Arrampicati sulle sporgenze" msgid "Weapon Wheel" msgstr "Ruota delle Armi" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Miglioramenti" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1662,12 +1706,6 @@ msgstr "Sfoglia cartella \"Source\"" msgid "Refresh Cache" msgstr "Rigenera la Cache" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "Giocabilità" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/pl.po b/Content/Translations/pl.po index 7edea772..20b4c1e9 100644 --- a/Content/Translations/pl.po +++ b/Content/Translations/pl.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:37+0100\n" +"POT-Creation-Date: 2024-01-14 14:35+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Przetłumaczone na język polski: Patrxgt\n" @@ -1453,8 +1453,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Poziomy społeczności" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1594,6 +1597,53 @@ msgstr "Najpierw musisz ukończyć \"%s\"!" msgid "Episode is locked!" msgstr "Ten epizod jest zablokowany!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "Rozgrywka" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Ulepszenia" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1619,12 +1669,6 @@ msgstr "Wspinanie na krawędzie" msgid "Weapon Wheel" msgstr "Koło broni" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Ulepszenia" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1667,12 +1711,6 @@ msgstr "Przeglądaj katalog z danymi gry" msgid "Refresh Cache" msgstr "Odśwież pamięć podręczną" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "Rozgrywka" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/pt.po b/Content/Translations/pt.po index b3bf7e78..4eeee7c5 100644 --- a/Content/Translations/pt.po +++ b/Content/Translations/pt.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:37+0100\n" +"POT-Creation-Date: 2024-01-14 14:35+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -1078,8 +1078,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Jogo Personalizado" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1215,6 +1218,53 @@ msgstr "Deve completar \"%s\" primeiro!" msgid "Episode is locked!" msgstr "Episódio bloqueado!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Melhorias" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1240,12 +1290,6 @@ msgstr "Escalar Plataformas" msgid "Weapon Wheel" msgstr "" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Melhorias" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1288,12 +1332,6 @@ msgstr "" msgid "Refresh Cache" msgstr "" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/pt_BR.po b/Content/Translations/pt_BR.po index c9c29bf4..dcb77d42 100644 --- a/Content/Translations/pt_BR.po +++ b/Content/Translations/pt_BR.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:38+0100\n" +"POT-Creation-Date: 2024-01-14 14:35+0100\n" "PO-Revision-Date: \n" "Last-Translator: Eduardo Karasinski \n" "Language-Team: Traduzido para Português Brasileiro por: edukara\n" @@ -1445,8 +1445,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Jogar Fases Personalizadas" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1588,6 +1591,53 @@ msgstr "Primeiro você precisa completar \"%s\"!" msgid "Episode is locked!" msgstr "Episódio bloqueado!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "Gameplay" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Melhorias" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1613,12 +1663,6 @@ msgstr "Escalada na Beirada" msgid "Weapon Wheel" msgstr "Roda de Armas" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Melhorias" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1661,12 +1705,6 @@ msgstr "Explorar Diretório \"Source\"" msgid "Refresh Cache" msgstr "Atualizar Cache" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "Gameplay" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/ro.po b/Content/Translations/ro.po index 3c33d37d..d0198ce5 100644 --- a/Content/Translations/ro.po +++ b/Content/Translations/ro.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:38+0100\n" +"POT-Creation-Date: 2024-01-14 14:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Traducere în limba română: 1NSH4N3 & Akfiz\n" @@ -1448,8 +1448,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Joacă Niveluri Customizate" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1590,6 +1593,53 @@ msgstr "Trebuie să finalizezi mai întâi \"%s\"!" msgid "Episode is locked!" msgstr "Episodul este blocat!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "Gameplay" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Îmbunătățiri" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1615,12 +1665,6 @@ msgstr "Cățărare pe Margini" msgid "Weapon Wheel" msgstr "Roata Pentru Arme" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Îmbunătățiri" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1663,12 +1707,6 @@ msgstr "Răsfoiți directorul sursa \"Source\"" msgid "Refresh Cache" msgstr "Reîncarcă Memoria Cache" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "Gameplay" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/ru.po b/Content/Translations/ru.po index c0d58193..e7a5a576 100644 --- a/Content/Translations/ru.po +++ b/Content/Translations/ru.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:38+0100\n" +"POT-Creation-Date: 2024-01-14 14:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: ПЕРЕВОД НА РУССКИЙ ЯЗЫК: MAN-biker (manbiker@mail.ru) " @@ -1445,8 +1445,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "ИГРАТЬ [ДОП. УРОВНИ]" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1588,6 +1591,53 @@ msgstr "СНАЧАЛА ПРОЙДИТЕ \"%s\"!" msgid "Episode is locked!" msgstr "ЭПИЗОД ЗАБЛОКИРОВАН!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "ОСНОВНЫЕ" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "УЛУЧШЕНИЯ" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1613,12 +1663,6 @@ msgstr "ХВАТАНИЕ ЗА УСТУПЫ" msgid "Weapon Wheel" msgstr "КОЛЕСО ВЫБОРА ОРУЖИЯ" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "УЛУЧШЕНИЯ" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1661,12 +1705,6 @@ msgstr "" msgid "Refresh Cache" msgstr "ОБНОВИТЬ КЕШ" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "ОСНОВНЫЕ" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Content/Translations/tr.po b/Content/Translations/tr.po index a4e09ed0..ba5664cf 100644 --- a/Content/Translations/tr.po +++ b/Content/Translations/tr.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: jazz2-resurrection\n" -"POT-Creation-Date: 2024-01-13 16:38+0100\n" +"POT-Creation-Date: 2024-01-14 14:36+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Türkçe çeviri: Consul\n" @@ -1440,8 +1440,11 @@ msgstr "" msgid "Play Custom Levels" msgstr "Özel Bölüm Seç" +#. TRANSLATORS: Menu item in main menu +#. TRANSLATORS: Subheader in First Run section #. TRANSLATORS: Menu item in main menu #: Sources/Jazz2/UI/Menu/BeginSection.cpp:85 +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 #: Sources/Jazz2/UI/Menu/OptionsSection.cpp:37 #: Sources/Jazz2/UI/Menu/PauseSection.cpp:15 msgid "Options" @@ -1581,6 +1584,53 @@ msgstr "Önce \"%s\" bölümünü bitirmelisin!" msgid "Episode is locked!" msgstr "Bu bölüm kilitli!" +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "Legacy" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:16 +msgid "I want to play the game the way it used to be." +msgstr "" + +#. TRANSLATORS: Menu item in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "Reforged" +msgstr "" + +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:18 +msgid "I want to play the game with something new." +msgstr "" + +#. TRANSLATORS: Header in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:72 +msgid "Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!" +msgstr "" + +#. TRANSLATORS: Menu item in Options section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 +#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 +msgid "Gameplay" +msgstr "Oyun Ayarları" + +#. TRANSLATORS: Menu item in Options > Gameplay section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 +#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 +msgid "Enhancements" +msgstr "Geliştirmeler" + +#. TRANSLATORS: Subheader in First Run section +#: Sources/Jazz2/UI/Menu/FirstRunSection.cpp:76 +#, c-format +msgid "" +"You can choose your preferred play style.\n" +"This option can be changed at any time in \f[c:0x707070]%s\f[c] > " +"\f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\n" +"For more information, visit %s and  Discord!" +msgstr "" + #. TRANSLATORS: Menu item in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:16 msgid "Reforged Gameplay" @@ -1606,12 +1656,6 @@ msgstr "Çıkıntılara Tırmanma" msgid "Weapon Wheel" msgstr "Silah Tekerleği" -#. TRANSLATORS: Menu item in Options > Gameplay section -#: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:69 -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:23 -msgid "Enhancements" -msgstr "Geliştirmeler" - #. TRANSLATORS: Header in Options > Gameplay > Enhancements section #: Sources/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp:73 msgid "You can enable enhancements that were added to this remake." @@ -1654,12 +1698,6 @@ msgstr "\"Source\" Dizinine Gözat" msgid "Refresh Cache" msgstr "Önbelleği Yenile" -#. TRANSLATORS: Menu item in Options section -#: Sources/Jazz2/UI/Menu/GameplayOptionsSection.cpp:76 -#: Sources/Jazz2/UI/Menu/OptionsSection.cpp:17 -msgid "Gameplay" -msgstr "Oyun Ayarları" - #. TRANSLATORS: Menu item in Options > Graphics section #: Sources/Jazz2/UI/Menu/GraphicsOptionsSection.cpp:19 msgid "Rescale Mode" diff --git a/Sources/Jazz2.vcxproj b/Sources/Jazz2.vcxproj index 7581bfa0..0e6c2481 100644 --- a/Sources/Jazz2.vcxproj +++ b/Sources/Jazz2.vcxproj @@ -395,6 +395,7 @@ + @@ -767,6 +768,7 @@ + diff --git a/Sources/Jazz2.vcxproj.filters b/Sources/Jazz2.vcxproj.filters index 5ed4ac42..0836cff7 100644 --- a/Sources/Jazz2.vcxproj.filters +++ b/Sources/Jazz2.vcxproj.filters @@ -1461,6 +1461,9 @@ Header Files\Jazz2\Multiplayer + + Header Files\Jazz2\UI\Menu + @@ -2426,6 +2429,9 @@ Source Files\Jazz2\UI\Menu + + Source Files\Jazz2\UI\Menu + diff --git a/Sources/Jazz2/Actors/Enemies/EnemyBase.cpp b/Sources/Jazz2/Actors/Enemies/EnemyBase.cpp index 3bf7dc17..d2f7930c 100644 --- a/Sources/Jazz2/Actors/Enemies/EnemyBase.cpp +++ b/Sources/Jazz2/Actors/Enemies/EnemyBase.cpp @@ -175,19 +175,21 @@ namespace Jazz2::Actors::Enemies DecreaseHealth(5, tnt); return true; } else if (auto* pole = runtime_cast(other)) { - bool hit; - switch (pole->GetFallDirection()) { - case Solid::Pole::FallDirection::Left: hit = (_pos.X < pole->GetPos().X); break; - case Solid::Pole::FallDirection::Right: hit = (_pos.X > pole->GetPos().X); break; - default: hit = false; break; - } - if (hit) { - _lastHitDir = LastHitDirection::Up; - DecreaseHealth(10, pole); - return true; + if (_levelHandler->IsReforged()) { + bool hit; + switch (pole->GetFallDirection()) { + case Solid::Pole::FallDirection::Left: hit = (_pos.X < pole->GetPos().X); break; + case Solid::Pole::FallDirection::Right: hit = (_pos.X > pole->GetPos().X); break; + default: hit = false; break; + } + if (hit) { + _lastHitDir = LastHitDirection::Up; + DecreaseHealth(10, pole); + return true; + } } } else if (auto* pushableBox = runtime_cast(other)) { - if (pushableBox->GetSpeed().Y > 0.0f && pushableBox->AABBInner.B < _pos.Y) { + if (_levelHandler->IsReforged() && pushableBox->GetSpeed().Y > 0.0f && pushableBox->AABBInner.B < _pos.Y) { _lastHitDir = LastHitDirection::Up; DecreaseHealth(10, pushableBox); return true; diff --git a/Sources/Jazz2/Compatibility/JJ2Anims.h b/Sources/Jazz2/Compatibility/JJ2Anims.h index cc08bf4e..9235c1f4 100644 --- a/Sources/Jazz2/Compatibility/JJ2Anims.h +++ b/Sources/Jazz2/Compatibility/JJ2Anims.h @@ -19,14 +19,14 @@ namespace Jazz2::Compatibility class JJ2Anims // .j2a { public: - static constexpr uint16_t CacheVersion = 16; + static constexpr uint16_t CacheVersion = 17; static JJ2Version Convert(const StringView path, const StringView targetPath, bool isPlus = false); static void WriteImageToFileInternal(std::unique_ptr& so, const uint8_t* data, int32_t width, int32_t height, int32_t channelCount); private: - static constexpr int32_t AddBorder = 1; + static constexpr int32_t AddBorder = 2; struct AnimFrameSection { int16_t SizeX, SizeY; diff --git a/Sources/Jazz2/ContentResolver.Shaders.h b/Sources/Jazz2/ContentResolver.Shaders.h index 8ecdad69..a3bbc95d 100644 --- a/Sources/Jazz2/ContentResolver.Shaders.h +++ b/Sources/Jazz2/ContentResolver.Shaders.h @@ -2,7 +2,7 @@ namespace Jazz2::Shaders { - constexpr uint64_t Version = 3; + constexpr uint64_t Version = 4; constexpr char LightingVs[] = "#line " DEATH_LINE_STRING "\n" R"( uniform mat4 uProjectionMatrix; @@ -689,6 +689,8 @@ void main() { } )"; + // Subtle shadow has been added in v2.5.0, previous implementation was: + // fragColor = mix(color, vec4(vColor.z, vColor.z, vColor.z, vColor.w), outline - color.a); constexpr char OutlineFs[] = "#line " DEATH_LINE_STRING "\n" R"( #ifdef GL_ES precision mediump float; @@ -718,8 +720,20 @@ void main() { outline += texture(uTexture, vTexCoords + vec2(size.x, -size.y)).a; outline = aastep(1.0, outline); + float outline2 = texture(uTexture, vTexCoords + vec2(-2.0 * size.x, 0)).a; + outline2 += texture(uTexture, vTexCoords + vec2(0, 2.0 * size.y)).a; + outline2 += texture(uTexture, vTexCoords + vec2(2.0 * size.x, 0)).a; + outline2 += texture(uTexture, vTexCoords + vec2(0, -2.0 * size.y)).a; + outline2 += texture(uTexture, vTexCoords + vec2(-2.0 * size.x, 2.0 * size.y)).a; + outline2 += texture(uTexture, vTexCoords + vec2(2.0 * size.x, 2.0 * size.y)).a; + outline2 += texture(uTexture, vTexCoords + vec2(-2.0 * size.x, -2.0 * size.y)).a; + outline2 += texture(uTexture, vTexCoords + vec2(2.0 * size.x, -2.0 * size.y)).a; + outline2 = aastep(1.0, outline2); + vec4 color = texture(uTexture, vTexCoords); - fragColor = mix(color, vec4(vColor.z, vColor.z, vColor.z, vColor.w), outline - color.a); + fragColor = mix(color, + mix(vec4(0.0, 0.0, 0.0, vColor.w * 0.5), vec4(vColor.z, vColor.z, vColor.z, vColor.w), outline), + max(outline, outline2) - color.a); } )"; diff --git a/Sources/Jazz2/PreferencesCache.cpp b/Sources/Jazz2/PreferencesCache.cpp index 59897119..3c0a6cd3 100644 --- a/Sources/Jazz2/PreferencesCache.cpp +++ b/Sources/Jazz2/PreferencesCache.cpp @@ -13,6 +13,7 @@ using namespace Death::IO; namespace Jazz2 { + bool PreferencesCache::FirstRun = false; #if defined(WITH_MULTIPLAYER) String PreferencesCache::InitialState; #endif @@ -262,6 +263,7 @@ namespace Jazz2 } } } else { + FirstRun = true; TryLoadPreferredLanguage(); auto configDir = fs::GetDirectoryName(_configPath); diff --git a/Sources/Jazz2/PreferencesCache.h b/Sources/Jazz2/PreferencesCache.h index e82c2aff..33e9967e 100644 --- a/Sources/Jazz2/PreferencesCache.h +++ b/Sources/Jazz2/PreferencesCache.h @@ -79,6 +79,7 @@ namespace Jazz2 static constexpr std::int32_t UnlimitedFps = 0; static constexpr std::int32_t UseVsync = -1; + static bool FirstRun; #if defined(WITH_MULTIPLAYER) static String InitialState; #endif diff --git a/Sources/Jazz2/UI/Canvas.cpp b/Sources/Jazz2/UI/Canvas.cpp index 7908477e..45a8ee52 100644 --- a/Sources/Jazz2/UI/Canvas.cpp +++ b/Sources/Jazz2/UI/Canvas.cpp @@ -59,7 +59,13 @@ namespace Jazz2::UI instanceBlock->uniform(Material::SpriteSizeUniformName)->setFloatVector(size.Data()); instanceBlock->uniform(Material::ColorUniformName)->setFloatVector(color.Data()); - command->setTransformation(Matrix4x4f::Translation(pos.X, pos.Y, 0.0f).RotateZ(angle)); + Matrix4x4f worldMatrix = Matrix4x4f::Translation(pos.X, pos.Y, 0.0f); + if (std::abs(angle) > 0.01f) { + worldMatrix.Translate(size.X * 0.5f, size.Y * 0.5f, 0.0f); + worldMatrix.RotateZ(angle); + worldMatrix.Translate(size.X * -0.5f, size.Y * -0.5f, 0.0f); + } + command->setTransformation(worldMatrix); command->setLayer(z); command->material().setTexture(texture); diff --git a/Sources/Jazz2/UI/HUD.cpp b/Sources/Jazz2/UI/HUD.cpp index f8511b75..e58de801 100644 --- a/Sources/Jazz2/UI/HUD.cpp +++ b/Sources/Jazz2/UI/HUD.cpp @@ -947,7 +947,7 @@ namespace Jazz2::UI float alphaInner = std::min(Vector2f(h, v).Length() * easing * 1.5f - 0.6f, 1.0f); if (alphaInner > 0.0f) { - DrawElement(WeaponWheelInner, -1, center.X, center.Y, MainLayer + 5, Alignment::Center, Colorf(1.0f, 1.0f, 1.0f, alphaInner), easing, easing, true, -requestedAngle); + DrawElement(WeaponWheelInner, -1, center.X, center.Y, MainLayer + 5, Alignment::Center, Colorf(1.0f, 1.0f, 1.0f, alphaInner), easing, easing, true, requestedAngle); } float angle = -fPiOver2; @@ -989,9 +989,8 @@ namespace Jazz2::UI Alignment::Center, isSelected ? Colorf(0.62f, 0.44f, 0.34f, 0.5f * alpha) : Colorf(0.45f, 0.45f, 0.45f, 0.48f * alpha), 0.9f, 0.0f, 0.0f, 0.0f, 0.0f, 0.9f); } - float angle2 = fTwoPi - angle; - float angleFrom = angle2 - angleStep * 0.4f; - float angleTo = angle2 + angleStep * 0.4f; + float angleFrom = angle - angleStep * 0.4f; + float angleTo = angle + angleStep * 0.4f; Colorf color1 = Colorf(0.0f, 0.0f, 0.0f, alpha * 0.3f); DrawWeaponWheelSegment(center.X - distance2 - 1, center.Y - distance2 - 1, distance3, distance3, ShadowLayer, angleFrom, angleTo, lineTexture, color1); @@ -1068,10 +1067,6 @@ namespace Jazz2::UI width *= 0.5f; x += width; height *= 0.5f; y += height; - x -= ViewSize.X * 0.5f; - y -= ViewSize.Y * 0.5f; - y = -y; - float angleRange = std::min(maxAngle - minAngle, fRadAngle360); int32_t segmentNum = std::clamp((int32_t)std::round(powf(std::max(width, height), 0.65f) * 3.5f * angleRange / fRadAngle360), 4, 128); float angleStep = angleRange / (segmentNum - 1); diff --git a/Sources/Jazz2/UI/Menu/AboutSection.cpp b/Sources/Jazz2/UI/Menu/AboutSection.cpp index 599342a7..15647e67 100644 --- a/Sources/Jazz2/UI/Menu/AboutSection.cpp +++ b/Sources/Jazz2/UI/Menu/AboutSection.cpp @@ -140,7 +140,7 @@ namespace Jazz2::UI::Menu // TRANSLATORS: Main information in About section _root->DrawStringShadow(_f("Reimplementation of the game \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] released in 1998. Supports various\nversions of the game (Shareware Demo, Holiday Hare '98, The Secret Files and\nChristmas Chronicles). Also, it partially supports some features of JJ2+ extension.\nFor more information, visit the official website: %s", "\f[c:0x707070]https://deat.tk/jazz2/\f[c]"), charOffset, viewSize.X * 0.5f, pos.Y - 22.0f, IMenuContainer::FontLayer, - Alignment::Center, Font::DefaultColor, 0.7f, 0.4f, 0.6f, 0.6f, 0.6f, 0.9f, 1.2f); + Alignment::Center, Font::DefaultColor, 0.7f, 0.4f, 0.0f, 0.0f, 0.0f, 0.9f, 1.2f); // TRANSLATORS: Header in About section _root->DrawStringShadow(_("Created By"), charOffset, pos.X, pos.Y + 42.0f, IMenuContainer::FontLayer, diff --git a/Sources/Jazz2/UI/Menu/FirstRunSection.cpp b/Sources/Jazz2/UI/Menu/FirstRunSection.cpp new file mode 100644 index 00000000..9978e764 --- /dev/null +++ b/Sources/Jazz2/UI/Menu/FirstRunSection.cpp @@ -0,0 +1,133 @@ +#include "FirstRunSection.h" +#include "InGameMenu.h" +#include "MenuResources.h" +#include "../../PreferencesCache.h" + +#include + +using namespace Jazz2::UI::Menu::Resources; + +namespace Jazz2::UI::Menu +{ + FirstRunSection::FirstRunSection() + : _committed(false) + { + // TRANSLATORS: Menu item in First Run section + _items.emplace_back(FirstRunItem { FirstRunItemType::LegacyPreset, _("Legacy"), _("I want to play the game the way it used to be.") }); + // TRANSLATORS: Menu item in First Run section + _items.emplace_back(FirstRunItem { FirstRunItemType::ReforgedPreset, _("Reforged"), _("I want to play the game with something new.") }); + } + + FirstRunSection::~FirstRunSection() + { + if (!_committed) { + // If no option has been selected, set everything to default + PreferencesCache::EnableReforgedGameplay = true; + PreferencesCache::EnableReforgedHUD = true; + PreferencesCache::EnableReforgedMainMenu = true; + PreferencesCache::EnableLedgeClimb = true; + + bool isReforged = (_items[_selectedIndex].Item.Type == FirstRunItemType::ReforgedPreset); + if (!isReforged) { + // Reload default main menu music if needed + _root->ApplyPreferencesChanges(ChangedPreferencesType::MainMenu); + } + } + + PreferencesCache::Save(); + } + + Recti FirstRunSection::GetClipRectangle(const Vector2i& viewSize) + { + float topLine = TopLine + 66.0f; + return Recti(0, topLine - 1, viewSize.X, viewSize.Y - topLine - BottomLine + 2); + } + + void FirstRunSection::OnShow(IMenuContainer* root) + { + _selectedIndex = (PreferencesCache::EnableReforgedGameplay ? 1 : 0); + EnsureVisibleSelected(); + + MenuSection::OnShow(root); + } + + void FirstRunSection::OnUpdate(float timeMult) + { + ScrollableMenuSection::OnUpdate(timeMult); + } + + void FirstRunSection::OnDraw(Canvas* canvas) + { + Vector2i viewSize = canvas->ViewSize; + float centerX = viewSize.X * 0.5f; + float topLine = TopLine + 66.0f; + float bottomLine = viewSize.Y - BottomLine; + _root->DrawElement(MenuDim, centerX, (topLine + bottomLine) * 0.5f, IMenuContainer::BackgroundLayer, + Alignment::Center, Colorf::Black, Vector2f(680.0f, bottomLine - topLine + 2.0f), Vector4f(1.0f, 0.0f, 0.4f, 0.3f)); + _root->DrawElement(MenuLine, 0, centerX, topLine, IMenuContainer::MainLayer, Alignment::Center, Colorf::White, 1.6f); + _root->DrawElement(MenuLine, 1, centerX, bottomLine, IMenuContainer::MainLayer, Alignment::Center, Colorf::White, 1.6f); + + int32_t charOffset = 0; + // TRANSLATORS: Header in First Run section + _root->DrawStringShadow(_("Welcome to \f[c:0x9e7056]Jazz Jackrabbit 2\f[c] reimplementation!"), charOffset, centerX, TopLine - 21.0f, IMenuContainer::FontLayer, + Alignment::Center, Font::DefaultColor, 0.9f, 0.7f, 1.1f, 1.1f, 0.4f, 0.9f); + + // TRANSLATORS: Subheader in First Run section + _root->DrawStringShadow(_f("You can choose your preferred play style.\nThis option can be changed at any time in \f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c] > \f[c:0x707070]%s\f[c].\nFor more information, visit %s and \uE000 Discord!", _("Options").data(), _("Gameplay").data(), _("Enhancements").data(), "\f[c:0x707070]https://deat.tk/jazz2/\f[c]"), + charOffset, centerX, topLine - 40.0f, IMenuContainer::FontLayer - 2, Alignment::Center, Font::DefaultColor, + 0.86f, 0.7f, 0.0f, 0.0f, 0.4f, 0.9f); + } + + void FirstRunSection::OnLayoutItem(Canvas* canvas, ListViewItem& item) + { + item.Height = 68; + } + + void FirstRunSection::OnDrawItem(Canvas* canvas, ListViewItem& item, int32_t& charOffset, bool isSelected) + { + float centerX = canvas->ViewSize.X * 0.5f; + + if (isSelected) { + float size = 0.8f + IMenuContainer::EaseOutElastic(_animation) * 0.6f; + + _root->DrawElement(MenuGlow, 0, centerX, item.Y + 10.0f, IMenuContainer::MainLayer, Alignment::Center, Colorf(1.0f, 1.0f, 1.0f, 0.2f), 22.0f, 12.0f, true); + + _root->DrawStringShadow(item.Item.DisplayName, charOffset, centerX, item.Y, IMenuContainer::FontLayer + 10, + Alignment::Center, Font::RandomColor, size, 0.7f, 1.1f, 1.1f, 0.4f, 0.9f); + } else { + _root->DrawStringShadow(item.Item.DisplayName, charOffset, centerX, item.Y, IMenuContainer::FontLayer, + Alignment::Center, item.Item.Type == FirstRunItemType::ReforgedPreset ? Colorf(0.62f, 0.44f, 0.34f, 0.5f) : Font::DefaultColor, 1.0f); + } + + _root->DrawStringShadow(item.Item.Description, charOffset, centerX, item.Y + 22.0f, IMenuContainer::FontLayer, + Alignment::Center, Font::DefaultColor, 0.8f, 0.0f, 0.0f, 0.0f, 0.0f, 0.94f); + } + + void FirstRunSection::OnBackPressed() + { + // Can't go back from here + } + + void FirstRunSection::OnSelectionChanged(ListViewItem& item) + { + bool wasReforged = PreferencesCache::EnableReforgedMainMenu; + bool isReforged = (_items[_selectedIndex].Item.Type == FirstRunItemType::ReforgedPreset); + PreferencesCache::EnableReforgedMainMenu = isReforged; + if (isReforged != wasReforged) { + _root->ApplyPreferencesChanges(ChangedPreferencesType::MainMenu); + } + } + + void FirstRunSection::OnExecuteSelected() + { + bool isReforged = (_items[_selectedIndex].Item.Type == FirstRunItemType::ReforgedPreset); + PreferencesCache::EnableReforgedGameplay = isReforged; + PreferencesCache::EnableReforgedHUD = isReforged; + PreferencesCache::EnableLedgeClimb = isReforged; + + _committed = true; + _animation = 0.0f; + _root->PlaySfx("MenuSelect"_s, 0.6f); + _root->LeaveSection(); + } +} \ No newline at end of file diff --git a/Sources/Jazz2/UI/Menu/FirstRunSection.h b/Sources/Jazz2/UI/Menu/FirstRunSection.h new file mode 100644 index 00000000..b7638277 --- /dev/null +++ b/Sources/Jazz2/UI/Menu/FirstRunSection.h @@ -0,0 +1,39 @@ +#pragma once + +#include "ScrollableMenuSection.h" + +namespace Jazz2::UI::Menu +{ + enum class FirstRunItemType { + LegacyPreset, + ReforgedPreset + }; + + struct FirstRunItem { + FirstRunItemType Type; + String DisplayName; + String Description; + }; + + class FirstRunSection : public ScrollableMenuSection + { + public: + FirstRunSection(); + ~FirstRunSection(); + + Recti GetClipRectangle(const Vector2i& viewSize) override; + + void OnShow(IMenuContainer* root) override; + void OnUpdate(float timeMult) override; + void OnDraw(Canvas* canvas) override; + + private: + bool _committed; + + void OnLayoutItem(Canvas* canvas, ListViewItem& item) override; + void OnDrawItem(Canvas* canvas, ListViewItem& item, int32_t& charOffset, bool isSelected) override; + void OnBackPressed() override; + void OnSelectionChanged(ListViewItem& item) override; + void OnExecuteSelected() override; + }; +} \ No newline at end of file diff --git a/Sources/Jazz2/UI/Menu/MainMenu.cpp b/Sources/Jazz2/UI/Menu/MainMenu.cpp index f7834eb0..a9d7ab27 100644 --- a/Sources/Jazz2/UI/Menu/MainMenu.cpp +++ b/Sources/Jazz2/UI/Menu/MainMenu.cpp @@ -3,6 +3,7 @@ #include "../../PreferencesCache.h" #include "../ControlScheme.h" #include "BeginSection.h" +#include "FirstRunSection.h" #if (defined(DEATH_TARGET_WINDOWS) && !defined(DEATH_TARGET_WINDOWS_RT)) || defined(DEATH_TARGET_UNIX) # include "../DiscordRpcClient.h" @@ -51,6 +52,10 @@ namespace Jazz2::UI::Menu SwitchToSection(); + if (PreferencesCache::FirstRun) { + SwitchToSection(); + } + UpdateRichPresence(); } @@ -897,6 +902,8 @@ namespace Jazz2::UI::Menu // 16 { GenericGraphicResource* base = res16->Base; + base->TextureDiffuse->setMinFiltering(SamplerFilter::Nearest); + base->TextureDiffuse->setMagFiltering(SamplerFilter::Nearest); base->TextureDiffuse->setWrap(SamplerWrapping::Repeat); constexpr float repeats = 96.0f; @@ -936,6 +943,8 @@ namespace Jazz2::UI::Menu // 32 { GenericGraphicResource* base = res32->Base; + base->TextureDiffuse->setMinFiltering(SamplerFilter::Nearest); + base->TextureDiffuse->setMagFiltering(SamplerFilter::Nearest); base->TextureDiffuse->setWrap(SamplerWrapping::Repeat); constexpr float repeats = 56.0f; @@ -979,6 +988,8 @@ namespace Jazz2::UI::Menu // 128 { GenericGraphicResource* base = res128->Base; + base->TextureDiffuse->setMinFiltering(SamplerFilter::Nearest); + base->TextureDiffuse->setMagFiltering(SamplerFilter::Nearest); base->TextureDiffuse->setWrap(SamplerWrapping::Repeat); constexpr float repeats = 20.0f; diff --git a/Sources/Jazz2/UI/Menu/ScrollableMenuSection.h b/Sources/Jazz2/UI/Menu/ScrollableMenuSection.h index 0c13a4bb..f812f179 100644 --- a/Sources/Jazz2/UI/Menu/ScrollableMenuSection.h +++ b/Sources/Jazz2/UI/Menu/ScrollableMenuSection.h @@ -25,23 +25,23 @@ namespace Jazz2::UI::Menu protected: struct ListViewItem { TItem Item; - int Y; - int Height; + std::int32_t Y; + std::int32_t Height; ListViewItem() { } ListViewItem(TItem item) : Item(item) { } }; - static constexpr int ItemHeight = 40; - static constexpr int TopLine = 131; - static constexpr int BottomLine = 42; + static constexpr std::int32_t ItemHeight = 40; + static constexpr std::int32_t TopLine = 131; + static constexpr std::int32_t BottomLine = 42; SmallVector _items; - int _selectedIndex; + std::int32_t _selectedIndex; float _animation; float _transitionTime; - int _y; - int _height; + std::int32_t _y; + std::int32_t _height; Vector2i _touchStart; Vector2i _touchLast; float _touchTime; @@ -50,10 +50,12 @@ namespace Jazz2::UI::Menu void EnsureVisibleSelected(); virtual void OnExecuteSelected() = 0; virtual void OnLayoutItem(Canvas* canvas, ListViewItem& item); - virtual void OnDrawEmptyText(Canvas* canvas, int& charOffset) { } - virtual void OnDrawItem(Canvas* canvas, ListViewItem& item, int& charOffset, bool isSelected) = 0; + virtual void OnDrawEmptyText(Canvas* canvas, std::int32_t& charOffset) { } + virtual void OnDrawItem(Canvas* canvas, ListViewItem& item, std::int32_t& charOffset, bool isSelected) = 0; virtual void OnHandleInput(); - virtual void OnTouchUp(int newIndex, const Vector2i& viewSize, const Vector2i& touchPos); + virtual void OnBackPressed(); + virtual void OnSelectionChanged(ListViewItem& item) { } + virtual void OnTouchUp(std::int32_t newIndex, const Vector2i& viewSize, const Vector2i& touchPos); }; template @@ -98,9 +100,7 @@ namespace Jazz2::UI::Menu void ScrollableMenuSection::OnHandleInput() { if (_root->ActionHit(PlayerActions::Menu)) { - _root->PlaySfx("MenuSelect"_s, 0.5f); - _root->LeaveSection(); - return; + OnBackPressed(); } else if (!_items.empty()) { if (_root->ActionHit(PlayerActions::Fire)) { OnExecuteSelected(); @@ -112,9 +112,10 @@ namespace Jazz2::UI::Menu if (_selectedIndex > 0) { _selectedIndex--; } else { - _selectedIndex = (int)(_items.size() - 1); + _selectedIndex = (std::int32_t)(_items.size() - 1); } EnsureVisibleSelected(); + OnSelectionChanged(_items[_selectedIndex]); } else if (_root->ActionHit(PlayerActions::Down)) { _root->PlaySfx("MenuSelect"_s, 0.5f); _animation = 0.0f; @@ -125,16 +126,24 @@ namespace Jazz2::UI::Menu _selectedIndex = 0; } EnsureVisibleSelected(); + OnSelectionChanged(_items[_selectedIndex]); } } } } + template + void ScrollableMenuSection::OnBackPressed() + { + _root->PlaySfx("MenuSelect"_s, 0.5f); + _root->LeaveSection(); + } + template void ScrollableMenuSection::OnDrawClipped(Canvas* canvas) { Vector2i viewSize = canvas->ViewSize; - int charOffset = 0; + std::int32_t charOffset = 0; if (_items.empty()) { _scrollable = false; @@ -143,14 +152,14 @@ namespace Jazz2::UI::Menu } Recti clipRect = GetClipRectangle(viewSize); - int topLine = clipRect.Y + 1; - int bottomLine = clipRect.Y + clipRect.H - 1; - int availableHeight = (bottomLine - topLine); + std::int32_t topLine = clipRect.Y + 1; + std::int32_t bottomLine = clipRect.Y + clipRect.H - 1; + std::int32_t availableHeight = (bottomLine - topLine); if (_height == 0) { _height = ItemHeight * 2 / 3; - for (int i = 0; i < _items.size(); i++) { + for (std::int32_t i = 0; i < _items.size(); i++) { auto& item = _items[i]; item.Y = _height + topLine + _y; OnLayoutItem(canvas, item); @@ -175,7 +184,7 @@ namespace Jazz2::UI::Menu Vector2i center = Vector2i(viewSize.X / 2, topLine + ItemHeight / 2 + _y); - for (int i = 0; i < _items.size(); i++) { + for (std::int32_t i = 0; i < _items.size(); i++) { auto& item = _items[i]; item.Y = center.Y; @@ -189,7 +198,7 @@ namespace Jazz2::UI::Menu if (_items[0].Y < topLine + ItemHeight / 2) { _root->DrawElement(MenuGlow, 0, center.X, topLine, 900, Alignment::Center, Colorf(0.0f, 0.0f, 0.0f, 0.3f), 30.0f, 5.0f); } - int itemHeight = _items[_items.size() - 1].Height - ItemHeight * 4 / 5 + ItemHeight / 2; + std::int32_t itemHeight = _items[_items.size() - 1].Height - ItemHeight * 4 / 5 + ItemHeight / 2; if (_items[_items.size() - 1].Y > bottomLine - itemHeight / 2) { _root->DrawElement(MenuGlow, 0, center.X, bottomLine, 900, Alignment::Center, Colorf(0.0f, 0.0f, 0.0f, 0.3f), 30.0f, 5.0f); } @@ -200,16 +209,15 @@ namespace Jazz2::UI::Menu { switch (event.type) { case TouchEventType::Down: { - int pointerIndex = event.findPointerIndex(event.actionIndex); + std::int32_t pointerIndex = event.findPointerIndex(event.actionIndex); if (pointerIndex != -1) { - int y = (int)(event.pointers[pointerIndex].y * viewSize.Y); + std::int32_t y = (std::int32_t)(event.pointers[pointerIndex].y * viewSize.Y); if (y < 80) { - _root->PlaySfx("MenuSelect"_s, 0.5f); - _root->LeaveSection(); + OnBackPressed(); return; } - _touchStart = Vector2i((int)(event.pointers[pointerIndex].x * viewSize.X), y); + _touchStart = Vector2i((std::int32_t)(event.pointers[pointerIndex].x * viewSize.X), y); _touchLast = _touchStart; _touchTime = 0.0f; } @@ -217,9 +225,9 @@ namespace Jazz2::UI::Menu } case TouchEventType::Move: { if (_touchStart != Vector2i::Zero) { - int pointerIndex = event.findPointerIndex(event.actionIndex); + std::int32_t pointerIndex = event.findPointerIndex(event.actionIndex); if (pointerIndex != -1) { - Vector2i touchMove = Vector2i((int)(event.pointers[pointerIndex].x * viewSize.X), (int)(event.pointers[pointerIndex].y * viewSize.Y)); + Vector2i touchMove = Vector2i((std::int32_t)(event.pointers[pointerIndex].x * viewSize.X), (std::int32_t)(event.pointers[pointerIndex].y * viewSize.Y)); if (_scrollable) { _y += touchMove.Y - _touchLast.Y; } @@ -235,7 +243,7 @@ namespace Jazz2::UI::Menu return; } - for (int i = 0; i < _items.size(); i++) { + for (std::int32_t i = 0; i < _items.size(); i++) { if (std::abs(_touchLast.Y - _items[i].Y) < 22) { OnTouchUp(i, viewSize, _touchLast); break; @@ -247,9 +255,9 @@ namespace Jazz2::UI::Menu } template - void ScrollableMenuSection::OnTouchUp(int newIndex, const Vector2i& viewSize, const Vector2i& touchPos) + void ScrollableMenuSection::OnTouchUp(std::int32_t newIndex, const Vector2i& viewSize, const Vector2i& touchPos) { - int halfW = viewSize.X / 2; + std::int32_t halfW = viewSize.X / 2; if (std::abs(touchPos.X - halfW) < 150) { if (_selectedIndex == newIndex) { OnExecuteSelected(); @@ -258,6 +266,7 @@ namespace Jazz2::UI::Menu _animation = 0.0f; _selectedIndex = newIndex; EnsureVisibleSelected(); + OnSelectionChanged(_items[_selectedIndex]); } } } @@ -271,8 +280,8 @@ namespace Jazz2::UI::Menu Vector2i viewSize = _root->GetViewSize(); Recti clipRect = GetClipRectangle(viewSize); - int topLine = clipRect.Y + 1; - int bottomLine = clipRect.Y + clipRect.H - 1; + std::int32_t topLine = clipRect.Y + 1; + std::int32_t bottomLine = clipRect.Y + clipRect.H - 1; auto& item = _items[_selectedIndex]; if (item.Y < topLine + ItemHeight / 2) { @@ -281,7 +290,7 @@ namespace Jazz2::UI::Menu return; } - int itemHeight = item.Height - ItemHeight * 4 / 5 + ItemHeight / 2; + std::int32_t itemHeight = item.Height - ItemHeight * 4 / 5 + ItemHeight / 2; if (item.Y > bottomLine - itemHeight) { // Scroll down _y += (bottomLine - itemHeight - item.Y); diff --git a/Sources/nCine/Graphics/Texture.cpp b/Sources/nCine/Graphics/Texture.cpp index 7d8b5d15..ce828fe6 100644 --- a/Sources/nCine/Graphics/Texture.cpp +++ b/Sources/nCine/Graphics/Texture.cpp @@ -286,6 +286,10 @@ namespace nCine void Texture::setMinFiltering(SamplerFilter filter) { + if (minFiltering_ == filter) { + return; + } + GLenum glFilter = GL_NEAREST; // clang-format off switch (filter) { @@ -306,6 +310,10 @@ namespace nCine void Texture::setMagFiltering(SamplerFilter filter) { + if (magFiltering_ == filter) { + return; + } + GLenum glFilter = GL_NEAREST; // clang-format off switch (filter) { @@ -322,6 +330,10 @@ namespace nCine void Texture::setWrap(SamplerWrapping wrapMode) { + if (wrapMode_ == wrapMode) { + return; + } + GLenum glWrap; // clang-format off switch (wrapMode) { diff --git a/cmake/ncine_headers.cmake b/cmake/ncine_headers.cmake index 36359e0f..4183e462 100644 --- a/cmake/ncine_headers.cmake +++ b/cmake/ncine_headers.cmake @@ -339,6 +339,7 @@ list(APPEND HEADERS ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/ControlsOptionsSection.h ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/CustomLevelSelectSection.h ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/EpisodeSelectSection.h + ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/FirstRunSection.h ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/GameplayEnhancementsSection.h ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/GameplayOptionsSection.h ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/GraphicsOptionsSection.h diff --git a/cmake/ncine_sources.cmake b/cmake/ncine_sources.cmake index 602da096..17a97265 100644 --- a/cmake/ncine_sources.cmake +++ b/cmake/ncine_sources.cmake @@ -256,6 +256,7 @@ list(APPEND SOURCES ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/ControlsOptionsSection.cpp ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/CustomLevelSelectSection.cpp ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/EpisodeSelectSection.cpp + ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/FirstRunSection.cpp ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/GameplayEnhancementsSection.cpp ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/GameplayOptionsSection.cpp ${NCINE_SOURCE_DIR}/Jazz2/UI/Menu/GraphicsOptionsSection.cpp