diff --git a/README.md b/README.md index 1f57438..73fb210 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,13 @@ A mod menu made in Geode for Geometry Dash # TODOs (Based on whats next) - Allow for dragging the button - Create another UI (cocos2d) option for mobile users -- Allow for resizing the menu (With a minimum size and maximum size) -- Add light theme +- Add to Misc category everything related to changing "Stats", basically allows you to edit your stats like mana, diamonds, etc. NOT ADDING STARS, DEMONS, AND OTHER FOR REASONS. +- (Possibly?) Fix FPS Bypass, or add "Show FPS" for Android users. (The func exists, just not visible to the end user lol) +- Allow for resizing the menu with a minimum size and maximum size (Only imgui) - Add light theme - Add startpos switcher +- Add "uncomplete level" hack +- Add "Hitbox on Death" & "Hitbox Trail" - Add a "Replay Bot" - Support more languages diff --git a/about.md b/about.md index bce711b..69d2a26 100644 --- a/about.md +++ b/about.md @@ -12,7 +12,7 @@ This mod menu also provides unique features not present in most mod menus, here * Currently, there are 2 themes available: `Future Dark` and `Catppuccin`, but you can create your own theme and share it with others! ![Theme Example](firee.PrismMenu/Screenshot2.png) ## Multiple Language (Half way done) -* Prism Menu supports more languages than **English,** it supports **French** and **Portuguese** (Brazilian) as well! +* Prism Menu supports more languages than **English,** it supports **French**, **Portuguese** (Brazilian), **German**, **Russian**, and **Czech** as well! ## Cross Platform * Prism Menu is available on both `Windows` and `Android`! @@ -26,8 +26,11 @@ Press on the circle button located on the left corner, or press `Tab` to open th * [Firee](https://youtube.com/@gdfiree) - Developer * [Electrify](https://www.youtube.com/channel/UCxYliOd2aV6iZuc5wuG9QxA) - Translations for Spanish * [Jouca](https://twitter.com/JoucaJouca) - Translations for French -* [dankmeme01](https://github.com/dankmeme01) - Translations for Russian +* [dankmeme01](https://github.com/dankmeme01) - Proofreading for Russian +* МегаСвятой - Translations for Russian +* savvacorgi - Translations for Russian * [Gazonk](https://www.youtube.com/channel/UCgp5Tql2b6Y1Xcni82pPxmA) - Translations for Brazilian Portuguese * huhnmitferrari - Translations for German +* [Ignis](https://twitter.com/IgnisPeaks0) - Translations for Czech Send any suggestions or report any issues to the GitHub Repository. I hope you enjoy using the mod! diff --git a/changelog.md b/changelog.md index 6c3a107..266cab7 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +# v1.1.5 + - Added Russian Translations (Thank you МегаСвятой, savvacorgi, and dankmeme01!) + - Added Czech Translations (Thank you Ignis!) + - Removed Free Shop Items for now so I can work on making a stats editor (Basically will make that useless) # v1.1.41 - Fixed bug when you enter levels, it crashes. (On Android) # v1.1.4 diff --git a/mod.json b/mod.json index 981609d..49606a7 100644 --- a/mod.json +++ b/mod.json @@ -1,6 +1,6 @@ { "geode": "2.0.0", - "version": "v1.1.41", + "version": "v1.1.5", "gd": { "win": "2.204", "android": "2.205" @@ -15,6 +15,7 @@ "files": [ "resources/icon.png", "resources/Screenshot1.png", + "resources/gato.jpg", "resources/Screenshot2.png", "resources/PrismMenu.otf", "resources/Hack-Regular.ttf", @@ -30,7 +31,8 @@ "resources/langs/french.json", "resources/langs/portuguesebr.json", "resources/langs/german.json", - "resources/langs/russian.json" + "resources/langs/russian.json", + "resources/langs/czech.json" ] }, "settings": { diff --git a/resources/gato.jpg b/resources/gato.jpg new file mode 100644 index 0000000..d403338 Binary files /dev/null and b/resources/gato.jpg differ diff --git a/resources/hacks/bypass.json b/resources/hacks/bypass.json index 2195db7..66e45ff 100644 --- a/resources/hacks/bypass.json +++ b/resources/hacks/bypass.json @@ -79,7 +79,8 @@ {"addr": "0xF33BB", "on": "8B 93 10 01 00 00", "off": "8B 93 14 01 00 00"}, {"addr": "0x14B339", "on": "2B B3 10 01 00 00", "off": "2B B3 14 01 00 00"} ], - "type": "bool" + "type": "bool", + "winOnly": true }, { "name": "Backup Stars Limit", diff --git a/resources/hacks/settings.json b/resources/hacks/settings.json index 89b5e87..a15155e 100644 --- a/resources/hacks/settings.json +++ b/resources/hacks/settings.json @@ -30,7 +30,7 @@ "opcodes": [], "type": "dropdown", "default": 0, - "values": ["English [100%]", "Français [100%]", "Português (Brasil) [100%]", "Deutsch [100%]"], + "values": ["English [100%]", "Français [100%]", "Português (Brasil) [100%]", "Deutsch [100%]", "Русский [100%]", "Čeština [100%]"], "valuesold": ["English [100%]", "Español [0%]", "Français [100%]", "Русский [0%]"] }, { diff --git a/resources/langs/czech.json b/resources/langs/czech.json new file mode 100644 index 0000000..18873d8 --- /dev/null +++ b/resources/langs/czech.json @@ -0,0 +1,400 @@ +[ + { + "§ Global": { + "name": "§ Globální" + } + }, + { + "¬ Player": { + "name": "¬ Hráč" + } + }, + { + "ª Bypass": { + "name": "ª Bypass" + } + }, + { + "« Creator": { + "name": "« Tvůrce" + } + }, + { + "··· Misc": { + "name": "··· Ostatní" + } + }, + { + "¶ Settings": { + "name": "¶ Nastavení" + } + }, + { + "Prism Menu by Firee": { + "name": "Prism Menu od Firee" + } + }, + { + "Anticheat Bypass": { + "name": "Anticheat Bypass", + "desc": "Vypne všechen anticheat. [Levely, Editor, atd.]" + } + }, + { + "Practice Music": { + "name": "Practice Music", + "desc": "Zapne Practice Music, i když je uzamčenen." + } + }, + { + "Safe Mode": { + "name": "Safe Mode", + "desc": "Zastaví jakýkoliv progres na levelu." + } + }, + { + "Accurate Percentage": { + "name": "Přesná procenta", + "desc": "Umožní mít desetinná místa v procentech levelu. [Nad tisíciny]" + } + }, + { + "Layout Mode": { + "name": "Layout Mode", + "desc": "Odstraní všechny dekorace z levelu." + } + }, + { + "No Transition": { + "name": "Žádný Přechod", + "desc": "Zkrátí přechody mezi scénami na 0s." + } + }, + { + "Cheat Indicator": { + "name": "Cheat Indikátor", + "desc": "Ukáže ikonu k rozpoznání, zda používáš nějaké módy, které mohou být považovány za podvádění!" + } + }, + { + "Speedhack": { + "name": "Speedhack", + "desc": "Změní rychlost hry a zvuku." + } + }, + { + "FPS Bypass": { + "name": "FPS Bypass", + "desc": "Odemkne tvá FPS, aby byla vyšší než 60 či vyšší než obnovovací frekvence tvého monitoru." + } + }, + { + "Reset Speedhack": { + "name": "Resetovat Speedhack", + "desc": "Resetuje speedhack zpátky do normálu." + } + }, + { + "Noclip": { + "name": "Noclip", + "desc": "Udělá hráče nesmrtelného." + } + }, + { + "No Spikes": { + "name": "Žádné Ostny", + "desc": "Ignoruje ostnové objekty." + } + }, + { + "No Hitbox": { + "name": "Žádný Hitbox", + "desc": "Vypne hitboxy všech objektů. Speciální objekty jsou vypnuty." + } + }, + { + "No Solids": { + "name": "Žádné Solidní Objekty", + "desc": "Vypne většinu hitboxů solidních objektů. Speciální objekty stále fungují." + } + }, + { + "Everything Hurts": { + "name": "Všechno Bolí", + "desc": "Au." + } + }, + { + "No Mirror Transition": { + "name": "Žádné Zrcadlové Přechody", + "desc": "Zabrání otočení obrazovky při zrcadlovém portálu." + } + }, + { + "Instant Mirror Portal": { + "name": "Instantní Zrcadlový Portál", + "desc": "Zrcadlové portály teď ihned otáčí." + } + }, + { + "Freeze Player": { + "name": "Zmrazit Hráče", + "desc": "Zmrazí pohyb hráče." + } + }, + { + "Jump Hack": { + "name": "Jump Hack", + "desc": "Umožní skákat ve vzduchu." + } + }, + { + "Instant Complete": { + "name": "Instantní Dokončení", + "desc": "Instantně dokončí level. (Nezapínat v editoru)" + } + }, + { + "Force Platformer Mode": { + "name": "Vnucení Platformer Módu", + "desc": "Vnutí tě být v platformer módu při hraní jakéhokoliv levelu." + } + }, + { + "Change Gravity": { + "name": "Změnit Gravitaci", + "desc": "Umožní ti změnit gravitaci při skoku či pádu." + } + }, + { + "Gravity Value": { + "name": "Gravitační Síla", + "desc": "Jak silná bude gravitace." + } + }, + { + "Icon Bypass": { + "name": "Icon Bypass", + "desc": "Odemkne všechny ikony." + } + }, + { + "Text Length": { + "name": "Délka Textu", + "desc": "Umožní pro neomezenou délku textu při psaní jakéhokoliv textu." + } + }, + { + "Character Filter": { + "name": "Znakový Filtr", + "desc": "Umožní ti napsat jakýkoliv znak při psaní textu." + } + }, + { + "Slider Limit": { + "name": "Limit Posunů", + "desc": "Umožní posuny být přetáhnuty nad viditelný limit." + } + }, + { + "Main Levels": { + "name": "Hlavní Levely", + "desc": "Odemkne zamčené demon levely." + } + }, + { + "Guard Vault": { + "name": "Guard Vault", + "desc": "Odemkne guardův vault." + } + }, + { + "Keymaster Vault": { + "name": "Keymaster Vault", + "desc": "Odemkne keymasterův vault." + } + }, + { + "Treasure Room": { + "name": "Treasure Room", + "desc": "Odemkne treasure room." + } + }, + { + "Free Shop Items": { + "name": "Bezplatný Obchod", + "desc": "Umožní všechny věci v obchodech být koupeny za 0 mana orbů." + } + }, + { + "Gatekeeper Vault": { + "name": "Gatekeeper Vault", + "desc": "Odemkne Gatekeeperův vault." + } + }, + { + "Backup Stars Limit": { + "name": "Limit Uložení Hvězd", + "desc": "Umožní ti uložit data, i s méně než 10 hvězdy." + } + }, + { + "Level Edit": { + "name": "Level Edit", + "desc": "Umožní ti editovat jakýkoliv level, vstup do editoru přes menu pauzy. (NESTABILNÍ)" + } + }, + { + "Verify Hack": { + "name": "Verify Hack", + "desc": "Umožní ti nahrát neverifikováne levely. Automaticky nastaví levely, aby byly verifikovány." + } + }, + { + "Copy Hack": { + "name": "Copy Hack", + "desc": "Umožní ti zkopírovat jakýkoliv level, bez hesla." + } + }, + { + "No (C) Mark": { + "name": "Žádná (C) Značka", + "desc": "Odstraní (C) značku při nahrávání zkopírovaných levelů. Automaticky nastaví levely, aby byly originální." + } + }, + { + "Hide Testmode": { + "name": "Skrýt Testmode", + "desc": "Skryje \"Testmode\" text při hraní levelu se start pozicí." + } + }, + { + "Rotation Hack": { + "name": "Rotation Hack", + "desc": "Umožní ti otáčet jakýkoliv objekt. Funguje pouze lokálně." + } + }, + { + "Default Song Bypass": { + "name": "Default Song Bypass", + "desc": "Umožní ti používat skryté defaultní písně v editoru." + } + }, + { + "No Progress Bar": { + "name": "Žádný Progres Bar", + "desc": "Odstraní progres bar! Procenta budou stále ukázána." + } + }, + { + "Progress Bar Position": { + "name": "Pozice Progres Baru", + "desc": "Nastaví pozici progres baru." + } + }, + { + "Hide Attempts": { + "name": "Skrýt Pokusy", + "desc": "Skryje počet pokusů při hraní levelů." + } + }, + { + "Attempt Opacity": { + "name": "Průhlednost Pokusů", + "desc": "Určuje jak průhledný počet pokusů bude." + } + }, + { + "Enable Patching": { + "name": "Zapnout Patching", + "desc": "Mění z hooking na patching. Také umožňuje více hackům fungovat. Pouze zapni pokud je to potřeba. [Pouze na Windows]" + } + }, + { + "Menu Opacity": { + "name": "Průhlednost Menu", + "desc": "Určuje jak průhledné bude toto menu." + } + }, + { + "Theme": { + "name": "Téma", + "desc": "Vyber si UI téma pro Prism Menu!" + } + }, + { + "Import Theme": { + "name": "Importovat Téma", + "desc": "Importuje téma! [JSON soubor]" + } + }, + { + "Live Theme Editing": { + "name": "Živé Editování Témata", + "desc": "Umožní ti editovat svoje vlastní téma a při tom živě vidět změny na obrazovce! (Varování: Může způsobit únik paměti.)" + } + }, + { + "Show Tooltips": { + "name": "Ukázat Popisky", + "desc": "Ukáže popisky při najetí na módy." + } + }, + { + "Show Button": { + "name": "Ukázat Tlačítko", + "desc": "Ukáže tlačítko pro zobrazení mena. Je doporučeno zanechat toto zapnuto pokud jsi na Androidu." + } + }, + { + "Button Position X": { + "name": "X Pozice Tlačítka", + "desc": "X pozice pro tlačítko na zobrazení mena." + } + }, + { + "Button Position Y": { + "name": "Y Pozice Tlačítka", + "desc": "Y pozice pro tlačítko na zobrazení mena." + } + }, + { + "Language": { + "name": "Jazyk", + "desc": "Nastaví jazyk pro Prism Menu!" + } + }, + { + "Restore Defaults": { + "name": "Obnovit Default", + "desc": "Vypne všechny módy a resetuje vše na defaultní nastavení." + } + }, + { + "Credits": { + "name": "Titulky", + "desc": "Lidé, co pomohli s tímto módem!" + } + }, + { + "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!": { + "name": "Děkuji Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), a Ignis (CS) za překlady!" + } + }, + { + "And thank you for using the mod! I hope you enjoy using Prism Menu!": { + "name": "A děkuji tobě pro používání tohoto módu! Doufám, že si užiješ Prism Menu!" + } + }, + { + "Close Popup": { + "name": "Zavřít Vyskakovací Okno" + } + }, + { + "Menu Scale": { + "name": "Velikost Mena", + "desc": "Určuje jak velký bude text a tlačítka. (Bude potřeba restartovat hru)" + } + } +] diff --git a/resources/langs/french.json b/resources/langs/french.json index c168780..378859d 100644 --- a/resources/langs/french.json +++ b/resources/langs/french.json @@ -367,8 +367,8 @@ } }, { - "Thank you to Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), and huhnmitferrari (DE) for translations!": { - "name": "Merci à Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), et huhnmitferrari (DE) pour les traductions !" + "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!": { + "name": "Merci à Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), et Ignis (CS) pour les traductions !" } }, { diff --git a/resources/langs/german.json b/resources/langs/german.json index 59c7cc1..36894ae 100644 --- a/resources/langs/german.json +++ b/resources/langs/german.json @@ -385,8 +385,8 @@ } }, { - "Thank you to Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), and huhnmitferrari (DE) for translations!": { - "name": "Danke an Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), und huhnmitferrari (DE) für die Übersetzungen!" + "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!": { + "name": "Danke an Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), und Ignis (CS) für die Übersetzungen!" } }, { diff --git a/resources/langs/portuguesebr.json b/resources/langs/portuguesebr.json index a2d8f98..00a1a16 100644 --- a/resources/langs/portuguesebr.json +++ b/resources/langs/portuguesebr.json @@ -373,8 +373,8 @@ } }, { - "Thank you to Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), and huhnmitferrari (DE) for translations!": { - "name": "Obrigado a Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), e huhnmitferrari (DE) Por traduções!" + "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!": { + "name": "Obrigado a Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), e Ignis (CS) Por traduções!" } }, { diff --git a/resources/langs/russian.json b/resources/langs/russian.json index 1928d2d..89f9a3b 100644 --- a/resources/langs/russian.json +++ b/resources/langs/russian.json @@ -349,7 +349,7 @@ } }, { - "Show tooltips": { + "Show Tooltips": { "name": "Показывать подсказки", "desc": "Показывает подсказки при наведении на модификации." } @@ -391,8 +391,8 @@ } }, { - "Thank you to Electrify (ES), Jouca (FR), and dank_meme01 (RU) for translations!": { - "name": "Спасибо Electrify (ES), Jouca (FR), и dank_meme01 (RU) за переводы!" + "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!": { + "name": "Спасибо Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), и Ignis (CS) за переводы!" } }, { diff --git a/resources/langs/template.json b/resources/langs/template.json index 62ff37f..92bb832 100644 --- a/resources/langs/template.json +++ b/resources/langs/template.json @@ -387,8 +387,8 @@ } }, { - "Thank you to Electrify (ES), Jouca (FR), and dank_meme01 (RU), and Gazonk (BR) for translations!": { - "name": "Thank you to Electrify (ES), Jouca (FR), and dank_meme01 (RU), and Gazonk (BR) for translations!" + "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!": { + "name": "Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!" } }, { diff --git a/src/GatoSim.cpp b/src/GatoSim.cpp new file mode 100644 index 0000000..c44432d --- /dev/null +++ b/src/GatoSim.cpp @@ -0,0 +1,3 @@ +#include "GatoSim.hpp" +// name = Chippicao +// username8282_8 on Discord diff --git a/src/GatoSim.hpp b/src/GatoSim.hpp new file mode 100644 index 0000000..69fa8f3 --- /dev/null +++ b/src/GatoSim.hpp @@ -0,0 +1,21 @@ +#pragma once +// this is all a spoiler! +#include + +struct ShopItem { + std::string name; + std::string desc; + int price; +}; + +using namespace geode::prelude; +class GatoSim : public CCLayer { + // TODO: add some json file + private: + int fod = 0; + int drank = 0; + std::vector toi; + bool hasDoneDaily = false; + int bal = 250; + int satis = 0; +}; diff --git a/src/PrismUI.cpp b/src/PrismUI.cpp new file mode 100644 index 0000000..7240081 --- /dev/null +++ b/src/PrismUI.cpp @@ -0,0 +1,57 @@ +#include "PrismUI.hpp" + +bool PrismUI::init(float _w, float _h, const char* _spr) { + auto winSize = cocos2d::CCDirector::sharedDirector()->getWinSize(); + this->m_pLrSize = cocos2d::CCSize { _w, _h }; + + if (!this->initWithColor({ 0, 0, 0, 105 })) return false; + this->m_mainLayer = cocos2d::CCLayer::create(); + this->addChild(this->m_mainLayer); + + auto bg = cocos2d::extension::CCScale9Sprite::create(_spr, { 0.0f, 0.0f, 80.0f, 80.0f }); + bg->setContentSize(this->m_pLrSize); + bg->setPosition(winSize.width / 2, winSize.height / 2); + this->m_mainLayer->addChild(bg); + this->m_pBGSprite = bg; + + this->m_buttonMenu = cocos2d::CCMenu::create(); + this->m_mainLayer->addChild(this->m_buttonMenu); + + setup(); + this->registerWithTouchDispatcher(); + + auto closeSpr = cocos2d::CCSprite::createWithSpriteFrameName("GJ_closeBtn_001.png"); + closeSpr->setScale(1.0f); + + auto closeBtn = CCMenuItemSpriteExtra::create( + closeSpr, + this, + (cocos2d::SEL_MenuHandler)&PrismUI::onClose + ); + closeBtn->setUserData(reinterpret_cast(this)); + + this->m_buttonMenu->addChild(closeBtn); + + closeBtn->setPosition( - _w / 2, _h / 2 ); + + this->setKeypadEnabled(true); + this->setTouchEnabled(true); + + return true; +} + +void PrismUI::keyDown(cocos2d::enumKeyCodes key) { + if (key == cocos2d::enumKeyCodes::KEY_Escape) + return onClose(nullptr); + if (key == cocos2d::enumKeyCodes::KEY_Tab) + return onClose(nullptr); + if (key == cocos2d::enumKeyCodes::KEY_Space) + return; + + return FLAlertLayer::keyDown(key); +} + +void PrismUI::onClose(cocos2d::CCObject* pSender) { + this->setKeyboardEnabled(false); + this->removeFromParentAndCleanup(true); +}; diff --git a/src/PrismUI.hpp b/src/PrismUI.hpp new file mode 100644 index 0000000..1c953c6 --- /dev/null +++ b/src/PrismUI.hpp @@ -0,0 +1,21 @@ +#pragma once +#include + +// TODO: Use custom box texture with ->setColor + +using namespace geode::prelude; +class PrismUI : public FLAlertLayer { + protected: + // layer size is stored here + cocos2d::CCSize m_pLrSize; + cocos2d::extension::CCScale9Sprite* m_pBGSprite; + + virtual bool init( + float width, + float height, + const char* bg = "GJ_square01.png" + ); + virtual void setup() = 0; + virtual void keyDown(cocos2d::enumKeyCodes) override; + virtual void onClose(cocos2d::CCObject*); +}; diff --git a/src/languages.hpp b/src/languages.hpp index fdcacd4..fdd397f 100644 --- a/src/languages.hpp +++ b/src/languages.hpp @@ -25,6 +25,12 @@ class Lang { case 3: // German file = Hacks::readFile("german.json"); break; + case 4: // Russian + file = Hacks::readFile("russian.json"); + break; + case 5: // Czech + file = Hacks::readFile("czech.json"); + break; } lang->langFile = matjson::parse(file).as_array(); lang->langId = langId; diff --git a/src/main.cpp b/src/main.cpp index 77a643e..4b3b675 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -491,7 +491,7 @@ class $modify(MenuLayer) { case 5: // Settings jsonArray = matjson::parse(Hacks::getSettings()).as_array(); ImGui::Text("%s", currentLanguage->name("Prism Menu by Firee").c_str()); - const char* version = "V1.1.4 (Geode)"; + const char* version = "V1.1.5 (Geode)"; #ifdef GEODE_IS_WINDOWS ImGui::Text("%s - Windows", version); #else // why does android not like elif @@ -678,7 +678,9 @@ class $modify(MenuLayer) { } // Popups if (ImGui::BeginPopupModal("Credits", nullptr)) { - auto creditLine1 = currentLanguage->name(currentLanguage->name("Thank you to Electrify (ES), Jouca (FR), dank_meme01 (RU), Gazonk (BR), savvacorgi (RU), and huhnmitferrari (DE) for translations!")); + auto creditLine1 = currentLanguage->name(currentLanguage->name( +"Thank you to Electrify (ES), Jouca (FR), dank_meme01, savvacorgi, МегаСвятой (RU), Gazonk (BR), huhnmitferrari (DE), and Ignis (CS) for translations!" + )); auto creditLine2 = currentLanguage->name(currentLanguage->name("And thank you for using the mod! I hope you enjoy using Prism Menu!")); ImGui::Text("%s", creditLine1.c_str()); ImGui::Separator(); diff --git a/src/themes.hpp b/src/themes.hpp index 59a4bac..760672d 100644 --- a/src/themes.hpp +++ b/src/themes.hpp @@ -77,13 +77,23 @@ class Themes { // Future Dark style by rewrking from ImThemes ImGuiStyle& style = ImGui::GetStyle(); ImGuiIO& io = ImGui::GetIO(); - ImFontConfig config; - config.GlyphRanges = io.Fonts->GetGlyphRangesCyrillic(); + ImFontGlyphRangesBuilder builder; + + // probably a bad idea to loop 127 times every frame, but this will only happen if the user has like "Live Theme Editing" enabled + // Add Czech character ranges manually + for (int i = 0x0100; i <= 0x017F; ++i) { // Czech characters in Unicode range + builder.AddChar(i); + } + + builder.AddRanges(io.Fonts->GetGlyphRangesCyrillic()); // russian chars + + ImVector ranges; + builder.BuildRanges(&ranges); std::string fontName = (Mod::get()->getResourcesDir() / "PrismMenu.otf").string(); //std::string fontName = (Mod::get()->getResourcesDir() / "Hack-Regular.ttf").string(); float menuScale = Hacks::getHack("Menu Scale")->value.floatValue; - io.Fonts->AddFontFromFileTTF(fontName.c_str(), theme["FontSize"].as_int() * menuScale, &config); - io.Fonts->AddFontFromFileTTF(fontName.c_str(), theme["IconSize"].as_int() * menuScale, &config); + io.Fonts->AddFontFromFileTTF(fontName.c_str(), theme["FontSize"].as_int() * menuScale, NULL, ranges.Data); + io.Fonts->AddFontFromFileTTF(fontName.c_str(), theme["IconSize"].as_int() * menuScale, NULL, ranges.Data); style.Alpha = 1.0f; style.DisabledAlpha = 1.0f;