diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp index 82f9920..3c704e2 100644 --- a/config/ConfigFormUnit.cpp +++ b/config/ConfigFormUnit.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include "ConfigFormUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) @@ -18,7 +20,7 @@ bool IsEnglish; /* Save previous settings so we don't override custom settings */ int Maxfps; int Savesettings; -int Hook; +int Resolutions; int Minfps; //--------------------------------------------------------------------------- @@ -27,9 +29,18 @@ __fastcall TConfigForm::TConfigForm(TComponent* Owner) { } +void __fastcall TConfigForm::CreateParams(TCreateParams & Params) +{ + TForm::CreateParams(Params); + + StrCopy( + Params.WinClassName, + THashSHA1::GetHashString(Application->ExeName).w_str()); +} + void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) { - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(".\\dd-hd.ini"); ini->WriteString("ddraw", "configlang", IsEnglish ? "auto" : "english"); delete ini; @@ -37,7 +48,51 @@ void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) NULL, L"open", Application->ExeName.w_str(), + L"-restart", NULL, + SW_SHOWNORMAL); + + Application->Terminate(); +} + +void __fastcall TConfigForm::ThemePnlClick(TObject *Sender) +{ + auto *ini = new TIniFile(".\\dd-hd.ini"); + auto theme = + ThemePnl->Color == (TColor)RGB(31, 31, 31) ? "Cobalt XEMedia" : "Windows10"; + + ini->WriteString("ddraw", "configtheme", theme); + + delete ini; + + ShellExecute( + NULL, + L"open", + Application->ExeName.w_str(), + L"-restart", + NULL, + SW_SHOWNORMAL); + + Application->Terminate(); +} + +void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender) +{ + if (Application->MessageBox( + (RestoreDefaultsBtn->Caption + "?").w_str(), + L"cnc-ddraw", + MB_YESNO) == IDNO) { + + return; + } + + DeleteFile(".\\dd-hd.ini"); + + ShellExecute( + NULL, + L"open", + Application->ExeName.w_str(), + L"-restart", NULL, SW_SHOWNORMAL); @@ -57,7 +112,9 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ConfigForm->Caption = L"cnc-ddraw 配置"; DisplayBtn->Caption = L"显示设置"; AdvancedBtn->Caption = L"高级设置"; + HotkeyBtn->Caption = L"热键设置"; CompatibilityBtn->Caption = L"兼容性设置"; + RestoreDefaultsBtn->Caption = L"恢复默认设置"; PresentationLbl->Caption = L"显示方式"; MaintasLbl->Caption = L"保持纵横比"; VsyncLbl->Caption = L"打开垂直同步"; @@ -69,11 +126,16 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ShaderLbl->Caption = L"OpenGL着色器"; MaxfpsLbl->Caption = L"限制帧率"; BoxingLbl->Caption = L"打开窗盒显示/整数缩放"; + ToggleWindowedLbl->Caption = L"切换窗口模式"; + MaximizeWindowLbl->Caption = L"最大化窗口"; + UnlockCursor1Lbl->Caption = L"解锁光标 1"; + UnlockCursor2Lbl->Caption = L"解锁光标 2"; + ScreenshotLbl->Caption = L"截屏"; MaxgameticksLbl->Caption = L"限制游戏速率"; NoactivateappLbl->Caption = L"修复损坏的Alt+Tab功能"; - HookLbl->Caption = L"修复损坏的窗口模式或拉伸"; + ResolutionsLbl->Caption = L"解锁其他屏幕分辨率"; MinfpsLbl->Caption = L"强制高FPS / 修复使用Freesync/G-Sync的卡顿问题"; - FixpitchLbl->Caption = L"修复倾斜撕裂显示的问题"; + SinglecpuLbl->Caption = L"修复性能不佳和声音问题"; NonexclusiveLbl->Caption = L"修复不显示的视频/UI元素"; RendererCbx->Items->Clear(); @@ -94,6 +156,8 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"模拟60hz刷新率显示器", NULL); MaxgameticksCbx->AddItem(L"1000tick每秒", NULL); MaxgameticksCbx->AddItem(L"500tick每秒", NULL); + MaxgameticksCbx->AddItem(L"250tick每秒", NULL); + MaxgameticksCbx->AddItem(L"125tick每秒", NULL); MaxgameticksCbx->AddItem(L"60tick每秒", NULL); MaxgameticksCbx->AddItem(L"30tick每秒", NULL); MaxgameticksCbx->AddItem(L"25tick每秒", NULL); @@ -107,7 +171,9 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ConfigForm->Caption = L"Ajustes de cnc-ddraw"; DisplayBtn->Caption = L"Ajustes de pantalla"; AdvancedBtn->Caption = L"Ajustes avanzados"; + HotkeyBtn->Caption = L"Teclas de acceso rápido"; CompatibilityBtn->Caption = L"Ajustes de compatibilidad"; + RestoreDefaultsBtn->Caption = L"Restaurar la configuración predeterminada"; PresentationLbl->Caption = L"Presentación"; MaintasLbl->Caption = L"Mantener la relación de aspecto"; VsyncLbl->Caption = L"Activar VSync"; @@ -119,11 +185,16 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ShaderLbl->Caption = L"Sombreador OpenGL"; MaxfpsLbl->Caption = L"Limitar velocidad de fotogramas"; BoxingLbl->Caption = L"Activar encajado de ventanas / escalado de enteros"; + ToggleWindowedLbl->Caption = L"Alternar modo de ventana"; + MaximizeWindowLbl->Caption = L"Maximizar ventana"; + UnlockCursor1Lbl->Caption = L"Desbloquear cursor 1"; + UnlockCursor2Lbl->Caption = L"Desbloquear cursor 2"; + ScreenshotLbl->Caption = L"Captura de pantalla"; MaxgameticksLbl->Caption = L"Limitar velocidad de juego"; NoactivateappLbl->Caption = L"Corregir Alt+Tab roto"; - HookLbl->Caption = L"Corregir modo ventana o ampliación de escala"; + ResolutionsLbl->Caption = L"Desbloquear resoluciones de pantalla adicionales"; MinfpsLbl->Caption = L"Forzar un alto FPS / Corregir retrasos en Freesync/G-Sync"; - FixpitchLbl->Caption = L"Corregir problemas de visualización de dibujos en diagonal"; + SinglecpuLbl->Caption = L"Solucione el mal rendimiento y los problemas de sonido"; NonexclusiveLbl->Caption = L"Corregir vídeos / elementos de interfaz invisibles"; RendererCbx->Items->Clear(); @@ -144,6 +215,8 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"Emular monitor con tasa de refresco de 60hz", NULL); MaxgameticksCbx->AddItem(L"1000 tics por segundo", NULL); MaxgameticksCbx->AddItem(L"500 tics por segundo", NULL); + MaxgameticksCbx->AddItem(L"250 tics por segundo", NULL); + MaxgameticksCbx->AddItem(L"125 tics por segundo", NULL); MaxgameticksCbx->AddItem(L"60 tics por segundo", NULL); MaxgameticksCbx->AddItem(L"30 tics por segundo", NULL); MaxgameticksCbx->AddItem(L"25 tics por segundo", NULL); @@ -157,23 +230,30 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ConfigForm->Caption = L"cnc-ddraw Konfiguration"; DisplayBtn->Caption = L"Anzeigeeinstellungen"; AdvancedBtn->Caption = L"Erweiterte Einstellungen"; + HotkeyBtn->Caption = L"Tastenkürzel-Einstellungen"; CompatibilityBtn->Caption = L"Kompatibilitätseinstellungen"; - PresentationLbl->Caption = L"Presentation"; - MaintasLbl->Caption = L"Erhalte Seitenverhältnis"; + RestoreDefaultsBtn->Caption = L"Standardeinstellungen wiederherstellen"; + PresentationLbl->Caption = L"Darstellung"; + MaintasLbl->Caption = L"Seitenverhältnis beibehalten"; VsyncLbl->Caption = L"VSync aktiveren"; AdjmouseLbl->Caption = L"Mausempfindlichkeit anpassen"; DevmodeLbl->Caption = L"Sperre Cursor zu Fenster / Bildschirm"; //Not 100% sure, if not a better translation exists RendererLbl->Caption = L"Renderer"; BorderLbl->Caption = L"Zeige Fensterränder in Fenstermodus"; SavesettingsLbl->Caption = L"Fensterposition und Größe merken"; - ShaderLbl->Caption = L"OpenGL shader"; + ShaderLbl->Caption = L"OpenGL Shader"; MaxfpsLbl->Caption = L"Limitiere Aktualisierungsrate"; BoxingLbl->Caption = L"Fensterboxing / Integer Skalierung aktivieren"; //Not 100% sure if "windowboxing" can be translated better. + ToggleWindowedLbl->Caption = L"Fenstermodus umschalten"; + MaximizeWindowLbl->Caption = L"Fenster maximieren"; + UnlockCursor1Lbl->Caption = L"Cursor entsperren 1"; + UnlockCursor2Lbl->Caption = L"Cursor entsperren 2"; + ScreenshotLbl->Caption = L"Bildschirmfoto"; MaxgameticksLbl->Caption = L"Spielgeschwindigkeit limitieren"; NoactivateappLbl->Caption = L"Fehlerhaftes Alt+Tab reparieren"; //The first word can be ignored if its to long (eng word "Fix" - HookLbl->Caption = L"Fehlerhafter Fenstermodus oder Hochskalierung reparieren"; //The first word can be ignored if its to long (eng word "Fix") + ResolutionsLbl->Caption = L"Zusätzliche Bildschirmauflösungen freischalten"; MinfpsLbl->Caption = L"Erzwinge Hohe FPS / Repariere Stottern bei Freesync/G-Sync"; - FixpitchLbl->Caption = L"Diagonal dargestellte Zeichnungsfehler reparieren"; + SinglecpuLbl->Caption = L"Schlechte Leistung und Soundprobleme reparieren"; NonexclusiveLbl->Caption = L"Unsichtbare Videos / UI Elemente reparieren"; RendererCbx->Items->Clear(); @@ -186,7 +266,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) PresentationCbx->AddItem(L"Vollbild", NULL); PresentationCbx->AddItem(L"Hochskaliertes Vollbild", NULL); PresentationCbx->AddItem(L"Ränderfreies Fenster", NULL); - PresentationCbx->AddItem(L"Fenster", NULL); + PresentationCbx->AddItem(L"Fenstermodus", NULL); MaxgameticksCbx->Items->Clear(); MaxgameticksCbx->AddItem(L"Unlimitiert", NULL); @@ -194,6 +274,8 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"Emuliere 60hz Bildschirmaktualisierungsrate", NULL); MaxgameticksCbx->AddItem(L"1000 Ticks pro Sekunde", NULL); MaxgameticksCbx->AddItem(L"500 Ticks pro Sekunde", NULL); + MaxgameticksCbx->AddItem(L"250 Ticks pro Sekunde", NULL); + MaxgameticksCbx->AddItem(L"125 Ticks pro Sekunde", NULL); MaxgameticksCbx->AddItem(L"60 Ticks pro Sekunde", NULL); MaxgameticksCbx->AddItem(L"30 Ticks pro Sekunde", NULL); MaxgameticksCbx->AddItem(L"25 Ticks pro Sekunde", NULL); @@ -202,16 +284,15 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) else if (lang == "russian" || (lang == "auto" && priID == LANG_RUSSIAN)) { LanguageImg->Visible = true; ClientWidth *= 1.13; - DisplayPnl->Width *= 1.184; - AdvancedPnl->Width *= 1.184; - CompatibilityPnl->Width *= 1.184; /* -Russian- made by shikulja @ github */ ConfigForm->Caption = L"Настройки cnc-ddraw"; DisplayBtn->Caption = L"Настройки отображения"; AdvancedBtn->Caption = L"Расширенные настройки"; + HotkeyBtn->Caption = L"Настройки горячих клавиш"; CompatibilityBtn->Caption = L"Настройки совместимости"; + RestoreDefaultsBtn->Caption = L"Восстановить настройки по умолчанию"; PresentationLbl->Caption = L"Отображение"; MaintasLbl->Caption = L"Сохранять соотношение сторон"; VsyncLbl->Caption = L"Включить VSync"; @@ -223,11 +304,16 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ShaderLbl->Caption = L"Шейдер OpenGL"; MaxfpsLbl->Caption = L"Ограничить частоту кадров"; BoxingLbl->Caption = L"Включить windowboxing / целочисленное масштабирование"; + ToggleWindowedLbl->Caption = L"Переключить оконный режим"; + MaximizeWindowLbl->Caption = L"Развернуть окно"; + UnlockCursor1Lbl->Caption = L"Разблокировать курсор 1"; + UnlockCursor2Lbl->Caption = L"Разблокировать курсор 2"; + ScreenshotLbl->Caption = L"Скриншот"; MaxgameticksLbl->Caption = L"Ограничить скорость игры"; NoactivateappLbl->Caption = L"Исправить сломанный Alt+Tab"; - HookLbl->Caption = L"Исправить сломанный оконный режим или масштабированние"; + ResolutionsLbl->Caption = L"Разблокировать дополнительные разрешения экрана"; MinfpsLbl->Caption = L"Принудительно высокий FPS / Исправить заикание при Freesync/G-Sync"; - FixpitchLbl->Caption = L"Исправить проблемы с отображением отрисовки по диагонали"; + SinglecpuLbl->Caption = L"Исправление проблем с производительностью и звуком"; NonexclusiveLbl->Caption = L"Исправить невидимые видео / элементы пользовательского интерфейса"; RendererCbx->Items->Clear(); @@ -248,6 +334,8 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"Эмуляция частоты обновления монитора 60 Гц", NULL); MaxgameticksCbx->AddItem(L"1000 тиков в секунду", NULL); MaxgameticksCbx->AddItem(L"500 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"250 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"125 тиков в секунду", NULL); MaxgameticksCbx->AddItem(L"60 тиков в секунду", NULL); MaxgameticksCbx->AddItem(L"30 тиков в секунду", NULL); MaxgameticksCbx->AddItem(L"25 тиков в секунду", NULL); @@ -261,7 +349,9 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ConfigForm->Caption = L"cnc-ddraw Beállító"; DisplayBtn->Caption = L"Képbeállítások"; AdvancedBtn->Caption = L"Haladó Beállítások"; + HotkeyBtn->Caption = L"Gyorsbillentyűk beállításai"; CompatibilityBtn->Caption = L"Kompatibilitás Beállítások"; + RestoreDefaultsBtn->Caption = L"Visszaállítja az alapértelmezett beállításokat"; PresentationLbl->Caption = L"Bemutató"; MaintasLbl->Caption = L"Képarány megtartása"; VsyncLbl->Caption = L"VSync bekapcsolása"; @@ -273,11 +363,16 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ShaderLbl->Caption = L"OpenGL árnyaló"; MaxfpsLbl->Caption = L"Képkockaszám korlátozás"; BoxingLbl->Caption = L"Ablakos mód / felskálázás bekapcsolása"; + ToggleWindowedLbl->Caption = L"Az ablakos mód váltása"; + MaximizeWindowLbl->Caption = L"Az ablak maximalizálása"; + UnlockCursor1Lbl->Caption = L"A kurzor feloldása 1"; + UnlockCursor2Lbl->Caption = L"A kurzor feloldása 2"; + ScreenshotLbl->Caption = L"Képernyőkép"; MaxgameticksLbl->Caption = L"Játéksebesség korlátozás"; NoactivateappLbl->Caption = L"Alt+Tab hiba kiküszöbölése"; - HookLbl->Caption = L"Hibás ablakos mód, vagy felskálázás javítása"; + ResolutionsLbl->Caption = L"További képernyőfelbontások feloldása"; MinfpsLbl->Caption = L"Magas FPS kényszerítés / Akadozásjavítás Freesync/G-Sync esetén"; - FixpitchLbl->Caption = L"Átlós rajzolási gondok kiküszöbölése"; + SinglecpuLbl->Caption = L"Javítsa ki a rossz teljesítmény- és hangproblémákat"; NonexclusiveLbl->Caption = L"Láthatatlan videók / kezelőfelületi elemek javítása"; RendererCbx->Items->Clear(); @@ -298,6 +393,8 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"60hz képfrissítésű kijelző emulálása", NULL); MaxgameticksCbx->AddItem(L"1000 tick másodpercenként", NULL); MaxgameticksCbx->AddItem(L"500 tick másodpercenként", NULL); + MaxgameticksCbx->AddItem(L"250 tick másodpercenként", NULL); + MaxgameticksCbx->AddItem(L"125 tick másodpercenként", NULL); MaxgameticksCbx->AddItem(L"60 tick másodpercenként", NULL); MaxgameticksCbx->AddItem(L"30 tick másodpercenként", NULL); MaxgameticksCbx->AddItem(L"25 tick másodpercenként", NULL); @@ -311,7 +408,9 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ConfigForm->Caption = L"Configuration cnc-ddraw"; DisplayBtn->Caption = L"Paramètres d'Affichage"; AdvancedBtn->Caption = L"Paramètres Avancés"; + HotkeyBtn->Caption = L"Paramètres de raccourci"; CompatibilityBtn->Caption = L"Paramètres de Compatibilité"; + RestoreDefaultsBtn->Caption = L"Restaurer les paramètres par défaut"; PresentationLbl->Caption = L"Présentation"; MaintasLbl->Caption = L"Conserver les proportions de l'image"; VsyncLbl->Caption = L"Activer la synchro verticale (VSync)"; @@ -323,11 +422,16 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ShaderLbl->Caption = L"Shader OpenGL"; MaxfpsLbl->Caption = L"Limiter les images par seconde (FPS)"; BoxingLbl->Caption = L"Activer windowboxing / mise à l'échelle par nombres entiers"; + ToggleWindowedLbl->Caption = L"Basculer en mode fenêtré"; + MaximizeWindowLbl->Caption = L"Agrandir la fenêtre"; + UnlockCursor1Lbl->Caption = L"Déverrouiller le curseur 1"; + UnlockCursor2Lbl->Caption = L"Déverrouiller le curseur 2"; + ScreenshotLbl->Caption = L"Capture d'écran"; MaxgameticksLbl->Caption = L"Limiter la vitesse du jeu"; NoactivateappLbl->Caption = L"Corriger Alt+Tab défaillant"; - HookLbl->Caption = L"Corriger mode fenêtré ou mise à l'échelle défaillant"; + ResolutionsLbl->Caption = L"Déverrouiller des résolutions d'écran supplémentaires"; MinfpsLbl->Caption = L"Forcer FPS élevé / Corriger saccades en Freesync/G-Sync"; - FixpitchLbl->Caption = L"Corriger défauts d'affichage diagonaux"; + SinglecpuLbl->Caption = L"Résoudre les problèmes de mauvaise performance et de son"; NonexclusiveLbl->Caption = L"Corriger vidéos et éléments d'interface invisibles"; RendererCbx->Items->Clear(); @@ -348,11 +452,72 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"Émuler un écran à 60Hz", NULL); MaxgameticksCbx->AddItem(L"1000 tics par seconde", NULL); MaxgameticksCbx->AddItem(L"500 tics par seconde", NULL); + MaxgameticksCbx->AddItem(L"250 tics par seconde", NULL); + MaxgameticksCbx->AddItem(L"125 tics par seconde", NULL); MaxgameticksCbx->AddItem(L"60 tics par seconde", NULL); MaxgameticksCbx->AddItem(L"30 tics par seconde", NULL); MaxgameticksCbx->AddItem(L"25 tics par seconde", NULL); MaxgameticksCbx->AddItem(L"15 tics par seconde", NULL); } + else if (lang == "italian" || (lang == "auto" && priID == LANG_ITALIAN)) { + LanguageImg->Visible = true; + + /* -Italian - made by Kappa971 @ github */ + + ConfigForm->Caption = L"Configurazione di cnc-ddraw"; + DisplayBtn->Caption = L"Impostazioni dello schermo"; + AdvancedBtn->Caption = L"Impostazioni avanzate"; + HotkeyBtn->Caption = L"Tasti di scelta rapida"; + CompatibilityBtn->Caption = L"Impostazioni di compatibilità"; + RestoreDefaultsBtn->Caption = L"Ripristina le impostazioni predefinite"; + PresentationLbl->Caption = L"Presentazione"; + MaintasLbl->Caption = L"Mantieni il rapporto d'aspetto"; + VsyncLbl->Caption = L"Abilita la sincronizzazione verticale (VSync)"; + AdjmouseLbl->Caption = L"Regola la sensibilità del mouse"; + DevmodeLbl->Caption = L"Cattura il cursore nella finestra / schermo"; + RendererLbl->Caption = L"Renderer"; + BorderLbl->Caption = L"Mostra i bordi della finestra in modalità finestra"; + SavesettingsLbl->Caption = L"Ricorda la posizione e le dimensioni della finestra"; + ShaderLbl->Caption = L"Shader OpenGL"; + MaxfpsLbl->Caption = L"Limita la frequenza dei fotogrammi (FPS)"; + BoxingLbl->Caption = L"Abilita il ridimensionamento dei numeri interi"; + ToggleWindowedLbl->Caption = L"Attiva/disattiva la modalità finestra"; + MaximizeWindowLbl->Caption = L"Ingrandisci finestra"; + UnlockCursor1Lbl->Caption = L"Sblocca cursore 1"; + UnlockCursor2Lbl->Caption = L"Sblocca cursore 2"; + ScreenshotLbl->Caption = L"Istantanea dello schermo"; + MaxgameticksLbl->Caption = L"Limita la velocità di gioco"; + NoactivateappLbl->Caption = L"Correggi il funzionamento di Alt+Tab"; + ResolutionsLbl->Caption = L"Sblocca ulteriori risoluzioni dello schermo"; + MinfpsLbl->Caption = L"Forza FPS elevati / Correggi balbuzie su Freesync/G-Sync"; + SinglecpuLbl->Caption = L"Risolvi problemi di prestazioni e audio scadenti"; + NonexclusiveLbl->Caption = L"Correggi video / elementi dell'interfaccia utente invisibili"; + + RendererCbx->Items->Clear(); + RendererCbx->AddItem(L"Automatico", NULL); + RendererCbx->AddItem(L"Direct3D 9", NULL); + RendererCbx->AddItem(L"OpenGL", NULL); + RendererCbx->AddItem(L"GDI", NULL); + + PresentationCbx->Items->Clear(); + PresentationCbx->AddItem(L"Schermo Intero", NULL); + PresentationCbx->AddItem(L"Schermo Intero Ridimensionato", NULL); + PresentationCbx->AddItem(L"Senza Bordi", NULL); + PresentationCbx->AddItem(L"In Finestra", NULL); + + MaxgameticksCbx->Items->Clear(); + MaxgameticksCbx->AddItem(L"Senza Limiti", NULL); + MaxgameticksCbx->AddItem(L"Sincronizza con la frequenza dello schermo", NULL); + MaxgameticksCbx->AddItem(L"Emula uno schermo a 60Hz", NULL); + MaxgameticksCbx->AddItem(L"1000 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"500 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"250 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"125 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"60 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"30 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"25 tick al secondo", NULL); + MaxgameticksCbx->AddItem(L"15 tick al secondo", NULL); + } else { IsEnglish = true; @@ -393,6 +558,12 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) LanguageImg->Picture->Graphic = png; LanguageImg->Visible = true; } + else if (priID == LANG_ITALIAN) { + TPngImage *png = new TPngImage(); + png->LoadFromResourceName((int)HInstance, "PngImage_IT"); + LanguageImg->Picture->Graphic = png; + LanguageImg->Visible = true; + } } catch (...) { } @@ -400,7 +571,9 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ConfigForm->Caption = L"cnc-ddraw config"; DisplayBtn->Caption = L"Display Settings"; AdvancedBtn->Caption = L"Advanced Settings"; + HotkeyBtn->Caption = L"Hotkey Settings"; CompatibilityBtn->Caption = L"Compatibility Settings"; + RestoreDefaultsBtn->Caption = L"Restore default settings"; PresentationLbl->Caption = L"Presentation"; MaintasLbl->Caption = L"Maintain aspect ratio"; VsyncLbl->Caption = L"Enable VSync"; @@ -412,11 +585,16 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) ShaderLbl->Caption = L"OpenGL shader"; MaxfpsLbl->Caption = L"Limit frame rate"; BoxingLbl->Caption = L"Enable windowboxing / integer scaling"; + ToggleWindowedLbl->Caption = L"Toggle windowed mode"; + MaximizeWindowLbl->Caption = L"Maximize window"; + UnlockCursor1Lbl->Caption = L"Unlock cursor 1"; + UnlockCursor2Lbl->Caption = L"Unlock cursor 2"; + ScreenshotLbl->Caption = L"Screenshot"; MaxgameticksLbl->Caption = L"Limit game speed"; NoactivateappLbl->Caption = L"Fix broken Alt+Tab"; - HookLbl->Caption = L"Fix broken windowed mode or upscaling"; + ResolutionsLbl->Caption = L"Unlock additional screen resolutions"; MinfpsLbl->Caption = L"Force high FPS / Fix stuttering on Freesync/G-Sync"; - FixpitchLbl->Caption = L"Fix diagonally displayed drawing issues"; + SinglecpuLbl->Caption = L"Fix bad performance and sound issues"; NonexclusiveLbl->Caption = L"Fix invisible videos / UI elements"; RendererCbx->Items->Clear(); @@ -437,18 +615,30 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"Emulate 60hz refresh rate monitor", NULL); MaxgameticksCbx->AddItem(L"1000 ticks per second", NULL); MaxgameticksCbx->AddItem(L"500 ticks per second", NULL); + MaxgameticksCbx->AddItem(L"250 ticks per second", NULL); + MaxgameticksCbx->AddItem(L"125 ticks per second", NULL); MaxgameticksCbx->AddItem(L"60 ticks per second", NULL); MaxgameticksCbx->AddItem(L"30 ticks per second", NULL); MaxgameticksCbx->AddItem(L"25 ticks per second", NULL); MaxgameticksCbx->AddItem(L"15 ticks per second", NULL); */ } + + ToggleWindowedKeyLbl->Caption = GetKeyText(VK_MENU) + L" +"; + MaximizeWindowKeyLbl->Caption = GetKeyText(VK_MENU) + L" +"; + UnlockCursor1KeyLbl->Caption = GetKeyText(VK_CONTROL) + L" +"; + UnlockCursor2KeyLbl->Caption = "R " + GetKeyText(VK_MENU) + L" +"; + + ConfigForm->Caption += + " (" + TPath::GetFileName( + TPath::GetDirectoryName(Application->ExeName)) + ")"; } void __fastcall TConfigForm::DisplayBtnClick(TObject *Sender) { DisplayPnl->Visible = true; AdvancedPnl->Visible = false; + HotkeyPnl->Visible = false; CompatibilityPnl->Visible = false; } @@ -456,6 +646,15 @@ void __fastcall TConfigForm::AdvancedBtnClick(TObject *Sender) { AdvancedPnl->Visible = true; DisplayPnl->Visible = false; + HotkeyPnl->Visible = false; + CompatibilityPnl->Visible = false; +} + +void __fastcall TConfigForm::HotkeyBtnClick(TObject *Sender) +{ + HotkeyPnl->Visible = true; + AdvancedPnl->Visible = false; + DisplayPnl->Visible = false; CompatibilityPnl->Visible = false; } @@ -464,11 +663,49 @@ void __fastcall TConfigForm::CompatibilityBtnClick(TObject *Sender) CompatibilityPnl->Visible = true; AdvancedPnl->Visible = false; DisplayPnl->Visible = false; + HotkeyPnl->Visible = false; } void __fastcall TConfigForm::FormCreate(TObject *Sender) { - auto *ini = new TIniFile(".\\ddraw.ini"); + /* Let cnc-ddraw create a new dd-hd.ini if it doesn't exist */ + if (FileExists(".\\ddraw.dll") && !FileExists(".\\dd-hd.ini")) { + + SetEnvironmentVariableW(L"cnc_ddraw_config_init", L"1"); + + HMODULE ddraw = LoadLibraryW(L".\\ddraw.dll"); + + if (ddraw) { + + void (WINAPI* dd_create)(void*, void**, void*); + + dd_create = + (void (WINAPI*)(void*, void**, void*)) + GetProcAddress(ddraw, "DirectDrawCreate"); + + if (dd_create && GetProcAddress(ddraw, "GameHandlesClose")) { + + void *buf; + dd_create(NULL, &buf, NULL); + } + + FreeLibrary(ddraw); + } + } + + auto *ini = new TIniFile(".\\dd-hd.ini"); + + if (ini->ReadString("ddraw", "configtheme", "Windows10") == "Cobalt XEMedia") { + + ThemePnl->Color = (TColor)RGB(243, 243, 243); + DisplayPnl->StyleElements = TStyleElements(seFont + seClient + seBorder); + AdvancedPnl->StyleElements = TStyleElements(seFont + seClient + seBorder); + HotkeyPnl->StyleElements = TStyleElements(seFont + seClient + seBorder); + CompatibilityPnl->StyleElements = TStyleElements(seFont + seClient + seBorder); + + MenuPnl->StyleElements = TStyleElements(seFont); + MenuPnl->Color = (TColor)RGB(31, 31, 31); + } ApplyTranslation(ini); @@ -499,8 +736,28 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) auto renderer = LowerCase(ini->ReadString("ddraw", "renderer", "auto")); - if (StartsStr("d", renderer)) { + if (renderer == "direct3d9on12") { + RendererCbx->AddItem(L"Direct3D 12 (9On12)", NULL); + RendererCbx->ItemIndex = 4; + + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "OpenGL", "Direct3D"); + + ShaderD3DCbx->Visible = true; + ShaderCbx->Visible = false; + } + else if (renderer == "openglcore") { + RendererCbx->AddItem(L"OpenGL Core", NULL); + RendererCbx->ItemIndex = 4; + } + else if (StartsStr("d", renderer)) { RendererCbx->ItemIndex = 1; + + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "OpenGL", "Direct3D"); + + ShaderD3DCbx->Visible = true; + ShaderCbx->Visible = false; } else if (StartsStr("o", renderer)) { RendererCbx->ItemIndex = 2; @@ -521,14 +778,45 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) for (int i = 0; i < list.Length; i++) ShaderCbx->AddItem(list[i], NULL); - - auto shader = ini->ReadString("ddraw", "shader", ""); - ShaderCbx->ItemIndex = ShaderCbx->Items->IndexOf(shader); } catch (...) { } + if (ShaderCbx->Items->Count == 0) { + ShaderCbx->AddItem("Nearest neighbor", NULL); + ShaderCbx->AddItem("Bilinear", NULL); + ShaderCbx->AddItem("Bicubic", NULL); + ShaderCbx->AddItem("Lanczos", NULL); + ShaderCbx->AddItem("xBR-lv2", NULL); + } + + auto shader = ini->ReadString("ddraw", "shader", "Bicubic"); + ShaderCbx->ItemIndex = ShaderCbx->Items->IndexOf(shader); + + if (ShaderCbx->ItemIndex == -1) { + ShaderCbx->AddItem(shader, NULL); + ShaderCbx->ItemIndex = ShaderCbx->Items->Count - 1; + } + + int d3d9_filter = ini->ReadInteger("ddraw", "d3d9_filter", 2); + + switch (d3d9_filter) { + case 0: + ShaderD3DCbx->ItemIndex = 0; + break; + case 1: + ShaderD3DCbx->ItemIndex = 1; + break; + case 2: + default: + ShaderD3DCbx->ItemIndex = 2; + break; + case 3: + ShaderD3DCbx->ItemIndex = 3; + break; + } + Maxfps = ini->ReadInteger("ddraw", "maxfps", -1); MaxfpsChk->State = Maxfps != 0 ? tssOn : tssOff; @@ -538,6 +826,23 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) Savesettings = ini->ReadInteger("ddraw", "savesettings", 1); SavesettingsChk->State = Savesettings != 0 ? tssOn : tssOff; + /* Hotkey Settings */ + + ToggleWindowedEdt->Text = + GetKeyText(Byte(ini->ReadInteger("ddraw", "keytogglefullscreen", 0x0D))); + + MaximizeWindowEdt->Text = + GetKeyText(Byte(ini->ReadInteger("ddraw", "keytogglemaximize", 0x22))); + + UnlockCursor1Edt->Text = + GetKeyText(Byte(ini->ReadInteger("ddraw", "keyunlockcursor1", 0x09))); + + UnlockCursor2Edt->Text = + GetKeyText(Byte(ini->ReadInteger("ddraw", "keyunlockcursor2", 0xA3))); + + ScreenshotEdt->Text = + GetKeyText(Byte(ini->ReadInteger("ddraw", "keyscreenshot", 0x2C))); + /* Compatibility Settings */ int maxgameticks = ini->ReadInteger("ddraw", "maxgameticks", 0); @@ -558,35 +863,48 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) case 500: MaxgameticksCbx->ItemIndex = 4; break; - case 60: + case 250: MaxgameticksCbx->ItemIndex = 5; break; - case 30: + case 125: MaxgameticksCbx->ItemIndex = 6; break; - case 25: + case 60: MaxgameticksCbx->ItemIndex = 7; break; - case 15: + case 30: MaxgameticksCbx->ItemIndex = 8; break; + case 25: + MaxgameticksCbx->ItemIndex = 9; + break; + case 15: + MaxgameticksCbx->ItemIndex = 10; + break; default: MaxgameticksCbx->AddItem(IntToStr(maxgameticks), NULL); - MaxgameticksCbx->ItemIndex = 9; + MaxgameticksCbx->ItemIndex = 11; break; } NoactivateappChk->State = GetBool(ini, "noactivateapp", false) ? tssOn : tssOff; - Hook = ini->ReadInteger("ddraw", "hook", 4); - HookChk->State = Hook == 2 ? tssOn : tssOff; + Resolutions = ini->ReadInteger("ddraw", "resolutions", 0); + ResolutionsChk->State = Resolutions == 2 ? tssOn : tssOff; Minfps = ini->ReadInteger("ddraw", "minfps", 0); MinfpsChk->State = Minfps != 0 ? tssOn : tssOff; - FixpitchChk->State = GetBool(ini, "fixpitch", false) ? tssOn : tssOff; + SinglecpuChk->State = GetBool(ini, "singlecpu", true) ? tssOff : tssOn; NonexclusiveChk->State = GetBool(ini, "nonexclusive", false) ? tssOn : tssOff; + CompatibilityBtn->Visible = !GetBool(ini, "hide_compat_tab", false); + + RestoreDefaultsBtn->Visible = + FileExists(".\\ddraw.dll") && + FileExists(".\\dd-hd.ini") && + GetBool(ini, "allow_reset", true); + delete ini; Initialized = true; @@ -597,7 +915,7 @@ void TConfigForm::SaveSettings() if (!Initialized) return; - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(".\\dd-hd.ini"); /* Display Settings */ @@ -605,6 +923,7 @@ void TConfigForm::SaveSettings() case 0: ini->WriteString("ddraw", "windowed", "false"); ini->WriteString("ddraw", "fullscreen", "false"); + ini->WriteString("ddraw", "toggle_borderless", "false"); break; case 1: ini->WriteString("ddraw", "windowed", "false"); @@ -613,6 +932,7 @@ void TConfigForm::SaveSettings() case 2: ini->WriteString("ddraw", "windowed", "true"); ini->WriteString("ddraw", "fullscreen", "true"); + ini->WriteString("ddraw", "toggle_borderless", "true"); break; case 3: ini->WriteString("ddraw", "windowed", "true"); @@ -657,12 +977,22 @@ void TConfigForm::SaveSettings() case 3: ini->WriteString("ddraw", "renderer", "gdi"); break; + case 4: + if (RendererCbx->Text == "OpenGL Core") { + ini->WriteString("ddraw", "renderer", "openglcore"); + } + else { + ini->WriteString("ddraw", "renderer", "direct3d9on12"); + } + break; default: break; } ini->WriteString("ddraw", "shader", ShaderCbx->Text); + ini->WriteInteger("ddraw", "d3d9_filter", ShaderD3DCbx->ItemIndex); + int maxfps = Maxfps == 0 ? -1 : Maxfps; ini->WriteInteger( @@ -694,6 +1024,33 @@ void TConfigForm::SaveSettings() ini->WriteInteger("ddraw", "posY", -32000); } + /* Hotkey Settings */ + + ini->WriteString( + "ddraw", + "keytogglefullscreen", + "0x" + IntToHex(Byte(GetKeyCode(ToggleWindowedEdt->Text)))); + + ini->WriteString( + "ddraw", + "keytogglemaximize", + "0x" + IntToHex(Byte(GetKeyCode(MaximizeWindowEdt->Text)))); + + ini->WriteString( + "ddraw", + "keyunlockcursor1", + "0x" + IntToHex(Byte(GetKeyCode(UnlockCursor1Edt->Text)))); + + ini->WriteString( + "ddraw", + "keyunlockcursor2", + "0x" + IntToHex(Byte(GetKeyCode(UnlockCursor2Edt->Text)))); + + ini->WriteString( + "ddraw", + "keyscreenshot", + "0x" + IntToHex(Byte(GetKeyCode(ScreenshotEdt->Text)))); + /* Compatibility Settings */ switch(MaxgameticksCbx->ItemIndex) { @@ -713,18 +1070,24 @@ void TConfigForm::SaveSettings() ini->WriteInteger("ddraw", "maxgameticks", 500); break; case 5: - ini->WriteInteger("ddraw", "maxgameticks", 60); + ini->WriteInteger("ddraw", "maxgameticks", 250); break; case 6: - ini->WriteInteger("ddraw", "maxgameticks", 30); + ini->WriteInteger("ddraw", "maxgameticks", 125); break; case 7: - ini->WriteInteger("ddraw", "maxgameticks", 25); + ini->WriteInteger("ddraw", "maxgameticks", 60); break; case 8: - ini->WriteInteger("ddraw", "maxgameticks", 15); + ini->WriteInteger("ddraw", "maxgameticks", 30); break; case 9: + ini->WriteInteger("ddraw", "maxgameticks", 25); + break; + case 10: + ini->WriteInteger("ddraw", "maxgameticks", 15); + break; + case 11: ini->WriteString("ddraw", "maxgameticks", MaxgameticksCbx->Text); break; default: @@ -736,15 +1099,12 @@ void TConfigForm::SaveSettings() "noactivateapp", NoactivateappChk->State == tssOn ? "true" : "false"); - int hook = Hook != 2 ? Hook : 4; + int resolutions = Resolutions != 2 ? Resolutions : 0; ini->WriteInteger( "ddraw", - "hook", - HookChk->State == tssOn ? 2 : hook); - - if (HookChk->State == tssOn && Hook != 2) - ini->WriteString("ddraw", "renderer", "gdi"); + "resolutions", + ResolutionsChk->State == tssOn ? 2 : resolutions); int minfps = Minfps == 0 ? -1 : Minfps; @@ -755,8 +1115,8 @@ void TConfigForm::SaveSettings() ini->WriteString( "ddraw", - "fixpitch", - FixpitchChk->State == tssOn ? "true" : "false"); + "singlecpu", + SinglecpuChk->State == tssOn ? "false" : "true"); ini->WriteString( "ddraw", @@ -766,6 +1126,110 @@ void TConfigForm::SaveSettings() delete ini; } +void __fastcall TConfigForm::FormActivate(TObject *Sender) +{ + /* Detect wine (Linux/macOS) and create the needed dll override */ + if (!GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "wine_get_version")) + return; + + TRegistry* reg = new TRegistry(KEY_READ); + reg->RootKey = HKEY_CURRENT_USER; + + if (reg->OpenKey("Software\\Wine\\DllOverrides\\", true)) { + + if (!reg->ValueExists("ddraw")) { + + reg->CloseKey(); + + if (Application->MessageBox( + L"cnc-ddraw requires a dll override in winecfg, " + "would you like to add it now?", + L"cnc-ddraw", + MB_YESNO) == IDNO) { + + reg->Free(); + return; + } + + reg->Access = KEY_WRITE; + + if (reg->OpenKey("Software\\Wine\\DllOverrides\\", true)) { + + reg->WriteString("ddraw", "native,builtin"); + reg->CloseKey(); + } + } + else + reg->CloseKey(); + } + + reg->Free(); +} + +void __fastcall TConfigForm::HotkeyEdtKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) +{ + TEdit *edit = static_cast(Sender); + + if (Key == VK_DELETE || Key == VK_BACK) { + edit->Text = L""; + } + else if (GetAsyncKeyState(VK_RCONTROL) & 0x8000) { + edit->Text = GetKeyText(VK_RCONTROL); + } + else { + edit->Text = GetKeyText(Key); + } +} + +void __fastcall TConfigForm::HotkeyEdtKeyUp(TObject *Sender, WORD &Key, TShiftState Shift) +{ + TEdit *edit = static_cast(Sender); + + if (Key == VK_SNAPSHOT || Key == VK_TAB) { + edit->Text = GetKeyText(Key); + } + + SaveSettings(); +} + +WORD TConfigForm::GetKeyCode(System::UnicodeString key) +{ + if (key == L"PrtScn") { + return VK_SNAPSHOT; + } + + if (key == L"Pause_") { + return VK_PAUSE; + } + + if (key == L"R " + ShortCutToText(VK_CONTROL)) { + return VK_RCONTROL; + } + + return TextToShortCut(key); +} + +System::UnicodeString TConfigForm::GetKeyText(WORD key) +{ + if (key == VK_SNAPSHOT) { + return L"PrtScn"; + } + + if (key == VK_PAUSE) { + return L"Pause_"; + } + + if (key == VK_RCONTROL) { + return L"R " + ShortCutToText(VK_CONTROL); + } + + if (key == VK_RSHIFT) { + return ShortCutToText(VK_SHIFT); + } + + return ShortCutToText(key); +} + bool TConfigForm::GetBool(TIniFile *ini, System::UnicodeString key, bool defValue) { auto s = LowerCase(ini->ReadString("ddraw", key, defValue ? "true" : "false")); @@ -799,12 +1263,36 @@ void __fastcall TConfigForm::DevmodeChkClick(TObject *Sender) void __fastcall TConfigForm::RendererCbxChange(TObject *Sender) { + if (ContainsStr(RendererCbx->Text, "Direct3D")) { + + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "OpenGL", "Direct3D"); + + ShaderD3DCbx->Visible = true; + ShaderCbx->Visible = false; + } + else { + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "Direct3D", "OpenGL"); + + ShaderCbx->Visible = true; + ShaderD3DCbx->Visible = false; + } + SaveSettings(); } void __fastcall TConfigForm::ShaderCbxChange(TObject *Sender) { - RendererCbx->ItemIndex = 2; + if (RendererCbx->Text != "OpenGL Core") { + RendererCbx->ItemIndex = 2; + } + + SaveSettings(); +} + +void __fastcall TConfigForm::ShaderD3DCbxChange(TObject *Sender) +{ SaveSettings(); } @@ -838,7 +1326,7 @@ void __fastcall TConfigForm::NoactivateappChkClick(TObject *Sender) SaveSettings(); } -void __fastcall TConfigForm::HookChkClick(TObject *Sender) +void __fastcall TConfigForm::ResolutionsChkClick(TObject *Sender) { SaveSettings(); } @@ -848,7 +1336,7 @@ void __fastcall TConfigForm::MinfpsChkClick(TObject *Sender) SaveSettings(); } -void __fastcall TConfigForm::FixpitchChkClick(TObject *Sender) +void __fastcall TConfigForm::SinglecpuChkClick(TObject *Sender) { SaveSettings(); } @@ -861,6 +1349,6 @@ void __fastcall TConfigForm::NonexclusiveChkClick(TObject *Sender) void __fastcall TConfigForm::PboxPaint(TObject *Sender) { TPaintBox *pbox = static_cast(Sender); - pbox->Canvas->Rectangle(pbox->ClientRect); + //pbox->Canvas->Rectangle(pbox->ClientRect); } diff --git a/config/ConfigFormUnit.dfm b/config/ConfigFormUnit.dfm index 0e04389..a69b94f 100644 --- a/config/ConfigFormUnit.dfm +++ b/config/ConfigFormUnit.dfm @@ -4,9 +4,9 @@ object ConfigForm: TConfigForm BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = 'cnc-ddraw config' - ClientHeight = 475 - ClientWidth = 708 - Color = clBlack + ClientHeight = 476 + ClientWidth = 741 + Color = clMenu Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -2677,16 +2677,397 @@ object ConfigForm: TConfigForm 61C0650530766087F0B9DE67A1EF3B173173597F3B695CC608E0B202F8FC22D7 BBBF4CD8CBB88CCBB88CCBB88CCBB88CCBB88CCBB88CCBB88CCBB88CCBB88CCB B88CB18EFF1FA2974C1C31AF16A40000000049454E44AE426082} - OldCreateOrder = False Position = poDesktopCenter + OnActivate = FormActivate OnCreate = FormCreate - PixelsPerInch = 96 + DesignSize = ( + 741 + 476) TextHeight = 13 - object AdvancedPnl: TPanel - Left = 201 + object DisplayPnl: TPanel + Left = 233 Top = 8 Width = 499 Height = 465 + Anchors = [akLeft, akTop, akRight, akBottom] + BevelOuter = bvNone + Color = clWhite + ParentBackground = False + ShowCaption = False + TabOrder = 1 + StyleElements = [seFont, seBorder] + ExplicitWidth = 495 + ExplicitHeight = 464 + DesignSize = ( + 499 + 465) + object PresentationLbl: TLabel + Left = 40 + Top = 28 + Width = 87 + Height = 21 + Caption = 'Presentation' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object MaintasLbl: TLabel + Left = 40 + Top = 105 + Width = 145 + Height = 21 + Margins.Top = 18 + Caption = 'Maintain aspect ratio' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object VsyncLbl: TLabel + Left = 40 + Top = 173 + Width = 93 + Height = 21 + Margins.Top = 18 + Caption = 'Enable VSync' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object AdjmouseLbl: TLabel + Left = 40 + Top = 241 + Width = 168 + Height = 21 + Margins.Top = 18 + Caption = 'Adjust mouse sensitivity' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object DevmodeLbl: TLabel + Left = 40 + Top = 309 + Width = 216 + Height = 21 + Margins.Top = 18 + Caption = 'Lock cursor to window / screen' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object PresentationPbox: TPaintBox + Left = 40 + Top = 54 + Width = 282 + Height = 31 + OnPaint = PboxPaint + end + object LanguageImg: TImage + Left = 453 + Top = 8 + Width = 16 + Height = 11 + Anchors = [akTop, akRight] + Picture.Data = { + 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000100000 + 000B0802000000F9809A6E0000000467414D410000AFC837058AE90000001974 + 455874536F6674776172650041646F626520496D616765526561647971C9653C + 000001B34944415478DA4D51DF4B5451109EB3B95010813E583ED8D28B7F8356 + 6A1A2BD5530F81AE108837E9414390681F841235FF00115C0A5A82AD1E7C1172 + B7A050597C102C05E5C2222CE5A2D8522CABBBDD7BEEF935CE5DF1E2F031F30D + C37C67660EB39EAE4160C68051000200C9BF897C47E7FFBFBF7F283735508D51 + C3DBF9B65416639DE6E34AA8BF1DDF67D9E3DB2AB95A37D8A51101D12005F049 + 26B3E03774C65A3F658D3640100A35FA842BFC09E3502AC3F111542BE038ACFF + 7EEEC71A35AC74F4B6F7DDD23DAF59262EA3D375E917CE9DE94B3683D24B61CE + ACBE7ED475E76D7B8B5943D98ED8CDE432BDE06B2B091EA20D9E7236D4E11C09 + 43B58A9C8310A1C187EBF626B3ACAF89C4DDEE576629CEA35317D3F1E36B33E2 + F798691ED92E25DB4EE56907F2E5AB8D797F07EB4B6B5FF4DD374DC246C20E16 + B597833D0D05ADAECCF8DA9E4720121AEEFD9CCFB14221DFD4745D4A19289D27 + 01775DF74618E616534C4F3E63F71E617A198B45289769621F9C234D2F040644 + CA0BCF073EECFF62BBBB3B91484B251CBE2C7870F5F3A694E4BC01605F6BD330 + 3BC10E9E3CA0E3041F0967840354009C1A642D3DAD9E00C53A4C480864283400 + 00000049454E44AE426082} + Stretch = True + Visible = False + OnClick = LanguageImgClick + end + object PresentationCbx: TComboBox + Left = 41 + Top = 55 + Width = 280 + Height = 29 + BevelEdges = [] + BevelInner = bvNone + BevelOuter = bvSpace + Style = csDropDownList + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + TabOrder = 1 + OnChange = PresentationCbxChange + Items.Strings = ( + 'Fullscreen' + 'Fullscreen Upscaled' + 'Borderless' + 'Windowed') + end + object MaintasChk: TToggleSwitch + Left = 40 + Top = 132 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 0 + OnClick = MaintasChkClick + end + object VsyncChk: TToggleSwitch + Left = 40 + Top = 200 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 2 + OnClick = VsyncChkClick + end + object AdjmouseChk: TToggleSwitch + Left = 40 + Top = 268 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 3 + OnClick = AdjmouseChkClick + end + object DevmodeChk: TToggleSwitch + Left = 40 + Top = 336 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 4 + OnClick = DevmodeChkClick + end + object ThemePnl: TPanel + Left = 475 + Top = 8 + Width = 16 + Height = 11 + Anchors = [akTop, akRight] + BevelOuter = bvNone + Color = 2039583 + ParentBackground = False + TabOrder = 5 + StyleElements = [seFont, seBorder] + OnClick = ThemePnlClick + ExplicitLeft = 471 + end + end + object CompatibilityPnl: TPanel + Left = 233 + Top = 8 + Width = 499 + Height = 465 + Anchors = [akLeft, akTop, akRight, akBottom] + BevelOuter = bvNone + Color = clWhite + ParentBackground = False + ShowCaption = False + TabOrder = 3 + Visible = False + StyleElements = [seFont, seBorder] + ExplicitWidth = 495 + ExplicitHeight = 464 + object MaxgameticksLbl: TLabel + Left = 40 + Top = 28 + Width = 123 + Height = 21 + Caption = 'Limit game speed' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object NoactivateappLbl: TLabel + Left = 40 + Top = 105 + Width = 129 + Height = 21 + Margins.Top = 18 + Caption = 'Fix broken Alt+Tab' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object ResolutionsLbl: TLabel + Left = 40 + Top = 173 + Width = 251 + Height = 21 + Margins.Top = 18 + Caption = 'Unlock additional screen resolutions' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object MinfpsLbl: TLabel + Left = 40 + Top = 241 + Width = 350 + Height = 21 + Margins.Top = 18 + Caption = 'Force high FPS / Fix stuttering on Freesync/G-Sync' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object SinglecpuLbl: TLabel + Left = 40 + Top = 309 + Width = 265 + Height = 21 + Margins.Top = 18 + Caption = 'Fix bad performance and sound issues' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object NonexclusiveLbl: TLabel + Left = 40 + Top = 377 + Width = 225 + Height = 21 + Margins.Top = 18 + Caption = 'Fix invisible videos / UI elements' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object MaxgameticksPbox: TPaintBox + Left = 40 + Top = 54 + Width = 394 + Height = 31 + OnPaint = PboxPaint + end + object MaxgameticksCbx: TComboBox + Left = 41 + Top = 55 + Width = 392 + Height = 29 + BevelEdges = [] + BevelInner = bvNone + BevelOuter = bvSpace + Style = csDropDownList + DropDownCount = 12 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + TabOrder = 0 + OnChange = MaxgameticksCbxChange + Items.Strings = ( + 'No limit' + 'Sync with monitor refresh rate' + 'Emulate 60hz refresh rate monitor' + '1000 ticks per second' + '500 ticks per second' + '250 ticks per second' + '125 ticks per second' + '60 ticks per second' + '30 ticks per second' + '25 ticks per second' + '15 ticks per second') + end + object NoactivateappChk: TToggleSwitch + Left = 40 + Top = 132 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 1 + OnClick = NoactivateappChkClick + end + object ResolutionsChk: TToggleSwitch + Left = 40 + Top = 200 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 2 + OnClick = ResolutionsChkClick + end + object MinfpsChk: TToggleSwitch + Left = 40 + Top = 268 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 3 + OnClick = MinfpsChkClick + end + object SinglecpuChk: TToggleSwitch + Left = 40 + Top = 336 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 4 + OnClick = SinglecpuChkClick + end + object NonexclusiveChk: TToggleSwitch + Left = 40 + Top = 404 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 5 + OnClick = NonexclusiveChkClick + end + end + object AdvancedPnl: TPanel + Left = 233 + Top = 8 + Width = 499 + Height = 465 + Anchors = [akLeft, akTop, akRight, akBottom] BevelOuter = bvNone Color = clWhite ParentBackground = False @@ -2694,6 +3075,8 @@ object ConfigForm: TConfigForm TabOrder = 2 Visible = False StyleElements = [seFont, seBorder] + ExplicitWidth = 495 + ExplicitHeight = 464 object RendererLbl: TLabel Left = 40 Top = 28 @@ -2706,7 +3089,6 @@ object ConfigForm: TConfigForm Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end object SavesettingsLbl: TLabel Left = 40 @@ -2721,7 +3103,6 @@ object ConfigForm: TConfigForm Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end object ShaderLbl: TLabel Left = 40 @@ -2736,7 +3117,6 @@ object ConfigForm: TConfigForm Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end object MaxfpsLbl: TLabel Left = 40 @@ -2751,7 +3131,6 @@ object ConfigForm: TConfigForm Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end object BorderLbl: TLabel Left = 40 @@ -2766,7 +3145,6 @@ object ConfigForm: TConfigForm Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end object BoxingLbl: TLabel Left = 40 @@ -2781,7 +3159,6 @@ object ConfigForm: TConfigForm Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end object RendererPbox: TPaintBox Left = 40 @@ -2797,6 +3174,31 @@ object ConfigForm: TConfigForm Height = 31 OnPaint = PboxPaint end + object ShaderD3DCbx: TComboBox + Left = 41 + Top = 132 + Width = 425 + Height = 29 + BevelEdges = [] + BevelInner = bvNone + BevelOuter = bvSpace + Style = csDropDownList + DropDownCount = 10 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + TabOrder = 6 + Visible = False + OnChange = ShaderD3DCbxChange + Items.Strings = ( + 'Nearest neighbor' + 'Bilinear' + 'Bicubic (Catmull-Rom)' + 'Lanczos') + end object RendererCbx: TComboBox Left = 41 Top = 55 @@ -2876,434 +3278,331 @@ object ConfigForm: TConfigForm OnClick = BoxingChkClick end end - object DisplayPnl: TPanel - Left = 201 + object HotkeyPnl: TPanel + Left = 233 Top = 8 Width = 499 Height = 465 + Anchors = [akLeft, akTop, akRight, akBottom] BevelOuter = bvNone Color = clWhite ParentBackground = False ShowCaption = False - TabOrder = 1 - StyleElements = [seFont, seBorder] - DesignSize = ( - 499 - 465) - object PresentationLbl: TLabel - Left = 40 - Top = 28 - Width = 87 - Height = 21 - Caption = 'Presentation' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object MaintasLbl: TLabel - Left = 40 - Top = 105 - Width = 145 - Height = 21 - Margins.Top = 18 - Caption = 'Maintain aspect ratio' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object VsyncLbl: TLabel - Left = 40 - Top = 173 - Width = 93 - Height = 21 - Margins.Top = 18 - Caption = 'Enable VSync' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object AdjmouseLbl: TLabel - Left = 40 - Top = 241 - Width = 168 - Height = 21 - Margins.Top = 18 - Caption = 'Adjust mouse sensitivity' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object DevmodeLbl: TLabel - Left = 40 - Top = 309 - Width = 216 - Height = 21 - Margins.Top = 18 - Caption = 'Lock cursor to window / screen' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object PresentationPbox: TPaintBox - Left = 40 - Top = 54 - Width = 282 - Height = 31 - OnPaint = PboxPaint - end - object LanguageImg: TImage - Left = 477 - Top = 8 - Width = 16 - Height = 11 - Anchors = [akTop, akRight] - Picture.Data = { - 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000100000 - 000B0802000000F9809A6E0000000467414D410000AFC837058AE90000001974 - 455874536F6674776172650041646F626520496D616765526561647971C9653C - 000001B34944415478DA4D51DF4B5451109EB3B95010813E583ED8D28B7F8356 - 6A1A2BD5530F81AE108837E9414390681F841235FF00115C0A5A82AD1E7C1172 - B7A050597C102C05E5C2222CE5A2D8522CABBBDD7BEEF935CE5DF1E2F031F30D - C37C67660EB39EAE4160C68051000200C9BF897C47E7FFBFBF7F283735508D51 - C3DBF9B65416639DE6E34AA8BF1DDF67D9E3DB2AB95A37D8A51101D12005F049 - 26B3E03774C65A3F658D3640100A35FA842BFC09E3502AC3F111542BE038ACFF - 7EEEC71A35AC74F4B6F7DDD23DAF59262EA3D375E917CE9DE94B3683D24B61CE - ACBE7ED475E76D7B8B5943D98ED8CDE432BDE06B2B091EA20D9E7236D4E11C09 - 43B58A9C8310A1C187EBF626B3ACAF89C4DDEE576629CEA35317D3F1E36B33E2 - F798691ED92E25DB4EE56907F2E5AB8D797F07EB4B6B5FF4DD374DC246C20E16 - B597833D0D05ADAECCF8DA9E4720121AEEFD9CCFB14221DFD4745D4A19289D27 - 01775DF74618E616534C4F3E63F71E617A198B45289769621F9C234D2F040644 - CA0BCF073EECFF62BBBB3B91484B251CBE2C7870F5F3A694E4BC01605F6BD330 - 3BC10E9E3CA0E3041F0967840354009C1A642D3DAD9E00C53A4C480864283400 - 00000049454E44AE426082} - Stretch = True - Visible = False - OnClick = LanguageImgClick - ExplicitLeft = 569 - end - object PresentationCbx: TComboBox - Left = 41 - Top = 55 - Width = 280 - Height = 29 - BevelEdges = [] - BevelInner = bvNone - BevelOuter = bvSpace - Style = csDropDownList - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - TabOrder = 1 - OnChange = PresentationCbxChange - Items.Strings = ( - 'Fullscreen' - 'Fullscreen Upscaled' - 'Borderless' - 'Windowed') - end - object MaintasChk: TToggleSwitch - Left = 40 - Top = 132 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 0 - OnClick = MaintasChkClick - end - object VsyncChk: TToggleSwitch - Left = 40 - Top = 200 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 2 - OnClick = VsyncChkClick - end - object AdjmouseChk: TToggleSwitch - Left = 40 - Top = 268 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 3 - OnClick = AdjmouseChkClick - end - object DevmodeChk: TToggleSwitch - Left = 40 - Top = 336 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 4 - OnClick = DevmodeChkClick - end - end - object CompatibilityPnl: TPanel - Left = 201 - Top = 8 - Width = 499 - Height = 465 - BevelOuter = bvNone - Color = clWhite - ParentBackground = False - ShowCaption = False - TabOrder = 3 + TabOrder = 4 Visible = False StyleElements = [seFont, seBorder] - object MaxgameticksLbl: TLabel + ExplicitWidth = 495 + ExplicitHeight = 464 + object ToggleWindowedLbl: TLabel Left = 40 - Top = 28 - Width = 123 - Height = 21 - Caption = 'Limit game speed' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object NoactivateappLbl: TLabel - Left = 40 - Top = 105 - Width = 129 + Top = 27 + Width = 165 Height = 21 Margins.Top = 18 - Caption = 'Fix broken Alt+Tab' + Caption = 'Toggle windowed mode' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end - object HookLbl: TLabel + object ToggleWindowedKeyLbl: TLabel + Left = 50 + Top = 60 + Width = 34 + Height = 21 + Margins.Top = 8 + Caption = 'Alt +' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object MaximizeWindowLbl: TLabel Left = 40 - Top = 173 - Width = 281 + Top = 107 + Width = 125 Height = 21 Margins.Top = 18 - Caption = 'Fix broken windowed mode or upscaling' + Caption = 'Maximize window' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end - object MinfpsLbl: TLabel + object MaximizeWindowKeyLbl: TLabel + Left = 50 + Top = 139 + Width = 34 + Height = 21 + Margins.Top = 8 + Caption = 'Alt +' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object UnlockCursor1Lbl: TLabel Left = 40 - Top = 241 - Width = 350 + Top = 186 + Width = 109 Height = 21 Margins.Top = 18 - Caption = 'Force high FPS / Fix stuttering on Freesync/G-Sync' + Caption = 'Unlock cursor 1' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end - object FixpitchLbl: TLabel + object UnlockCursor1KeyLbl: TLabel + Left = 50 + Top = 218 + Width = 40 + Height = 21 + Margins.Top = 8 + Caption = 'Ctrl +' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + end + object UnlockCursor2Lbl: TLabel Left = 40 - Top = 309 - Width = 272 + Top = 265 + Width = 109 Height = 21 Margins.Top = 18 - Caption = 'Fix diagonally displayed drawing issues' + Caption = 'Unlock cursor 2' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end - object NonexclusiveLbl: TLabel - Left = 40 - Top = 377 - Width = 225 + object UnlockCursor2KeyLbl: TLabel + Left = 50 + Top = 297 + Width = 48 Height = 21 - Margins.Top = 18 - Caption = 'Fix invisible videos / UI elements' + Margins.Top = 8 + Caption = 'R Alt +' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False - StyleElements = [seClient, seBorder] end - object MaxgameticksPbox: TPaintBox - Left = 40 - Top = 54 - Width = 394 - Height = 31 - OnPaint = PboxPaint - end - object MaxgameticksCbx: TComboBox + object ScreenshotLbl: TLabel Left = 41 - Top = 55 - Width = 392 - Height = 29 - BevelEdges = [] - BevelInner = bvNone - BevelOuter = bvSpace - Style = csDropDownList - DropDownCount = 10 + Top = 344 + Width = 77 + Height = 21 + Margins.Top = 18 + Caption = 'Screenshot' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -16 Font.Name = 'Segoe UI' Font.Style = [] ParentFont = False + end + object ToggleWindowedEdt: TEdit + Left = 137 + Top = 57 + Width = 217 + Height = 29 + Margins.Top = 5 + TabStop = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + ReadOnly = True TabOrder = 0 - OnChange = MaxgameticksCbxChange - Items.Strings = ( - 'No limit' - 'Sync with monitor refresh rate' - 'Emulate 60hz refresh rate monitor' - '1000 ticks per second' - '500 ticks per second' - '60 ticks per second' - '30 ticks per second' - '25 ticks per second' - '15 ticks per second') + OnKeyDown = HotkeyEdtKeyDown + OnKeyUp = HotkeyEdtKeyUp end - object NoactivateappChk: TToggleSwitch - Left = 40 - Top = 132 - Width = 50 - Height = 20 - ShowStateCaption = False + object MaximizeWindowEdt: TEdit + Left = 137 + Top = 136 + Width = 217 + Height = 29 + Margins.Top = 5 + TabStop = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + ReadOnly = True TabOrder = 1 - OnClick = NoactivateappChkClick + OnKeyDown = HotkeyEdtKeyDown + OnKeyUp = HotkeyEdtKeyUp end - object HookChk: TToggleSwitch - Left = 40 - Top = 200 - Width = 50 - Height = 20 - ShowStateCaption = False + object UnlockCursor1Edt: TEdit + Left = 137 + Top = 215 + Width = 217 + Height = 29 + Margins.Top = 5 + TabStop = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + ReadOnly = True TabOrder = 2 - OnClick = HookChkClick + OnKeyDown = HotkeyEdtKeyDown + OnKeyUp = HotkeyEdtKeyUp end - object MinfpsChk: TToggleSwitch - Left = 40 - Top = 268 - Width = 50 - Height = 20 - ShowStateCaption = False + object UnlockCursor2Edt: TEdit + Left = 137 + Top = 294 + Width = 217 + Height = 29 + Margins.Top = 5 + TabStop = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + ReadOnly = True TabOrder = 3 - OnClick = MinfpsChkClick + OnKeyDown = HotkeyEdtKeyDown + OnKeyUp = HotkeyEdtKeyUp end - object FixpitchChk: TToggleSwitch - Left = 40 - Top = 336 - Width = 50 - Height = 20 - ShowStateCaption = False + object ScreenshotEdt: TEdit + Left = 137 + Top = 373 + Width = 217 + Height = 29 + Margins.Top = 5 + TabStop = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + ReadOnly = True TabOrder = 4 - OnClick = FixpitchChkClick - end - object NonexclusiveChk: TToggleSwitch - Left = 40 - Top = 404 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 5 - OnClick = NonexclusiveChkClick + OnKeyDown = HotkeyEdtKeyDown + OnKeyUp = HotkeyEdtKeyUp end end object MenuPnl: TPanel Left = 0 Top = 8 - Width = 201 - Height = 465 + Width = 233 + Height = 468 + Anchors = [akLeft, akTop, akBottom] BevelOuter = bvNone - Color = clBlack + Color = clMenu ParentBackground = False TabOrder = 0 + ExplicitHeight = 467 DesignSize = ( - 201 - 465) + 233 + 468) object DisplayBtn: TSpeedButton - Left = 5 + Left = 0 Top = 8 - Width = 187 + Width = 227 Height = 41 Anchors = [akLeft, akTop, akRight] Caption = 'Display Settings' Flat = True Font.Charset = DEFAULT_CHARSET - Font.Color = clWhite - Font.Height = -13 + Font.Color = clBlack + Font.Height = -16 Font.Name = 'Segoe UI' - Font.Style = [fsBold] + Font.Style = [] ParentFont = False - StyleElements = [seFont, seBorder] OnClick = DisplayBtnClick end object AdvancedBtn: TSpeedButton - Left = 5 + Left = 0 Top = 55 - Width = 187 + Width = 227 Height = 41 Anchors = [akLeft, akTop, akRight] Caption = 'Advanced Settings' Flat = True Font.Charset = DEFAULT_CHARSET - Font.Color = clWhite - Font.Height = -13 + Font.Color = clBlack + Font.Height = -16 Font.Name = 'Segoe UI' - Font.Style = [fsBold] + Font.Style = [] ParentFont = False OnClick = AdvancedBtnClick end object CompatibilityBtn: TSpeedButton - Left = 5 - Top = 102 - Width = 187 + Left = 0 + Top = 149 + Width = 227 Height = 41 Anchors = [akLeft, akTop, akRight] Caption = 'Compatibility Settings' Flat = True Font.Charset = DEFAULT_CHARSET - Font.Color = clWhite - Font.Height = -13 + Font.Color = clBlack + Font.Height = -16 Font.Name = 'Segoe UI' - Font.Style = [fsBold] + Font.Style = [] ParentFont = False OnClick = CompatibilityBtnClick end + object HotkeyBtn: TSpeedButton + Left = 0 + Top = 102 + Width = 227 + Height = 41 + Anchors = [akLeft, akTop, akRight] + Caption = 'Hotkey Settings' + Flat = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + OnClick = HotkeyBtnClick + end + object RestoreDefaultsBtn: TSpeedButton + Left = 0 + Top = 440 + Width = 227 + Height = 22 + Anchors = [akLeft, akRight, akBottom] + Caption = 'Restore default settings' + Flat = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -12 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + OnClick = RestoreDefaultsBtnClick + end end end diff --git a/config/ConfigFormUnit.h b/config/ConfigFormUnit.h index 689f83f..2e16295 100644 --- a/config/ConfigFormUnit.h +++ b/config/ConfigFormUnit.h @@ -49,12 +49,12 @@ __published: // Von der IDE verwaltete Komponenten TLabel *MaxgameticksLbl; TLabel *NoactivateappLbl; TToggleSwitch *NoactivateappChk; - TLabel *HookLbl; - TToggleSwitch *HookChk; + TLabel *ResolutionsLbl; + TToggleSwitch *ResolutionsChk; TLabel *MinfpsLbl; TToggleSwitch *MinfpsChk; - TToggleSwitch *FixpitchChk; - TLabel *FixpitchLbl; + TToggleSwitch *SinglecpuChk; + TLabel *SinglecpuLbl; TLabel *NonexclusiveLbl; TToggleSwitch *NonexclusiveChk; TPaintBox *PresentationPbox; @@ -62,6 +62,25 @@ __published: // Von der IDE verwaltete Komponenten TPaintBox *ShaderPbox; TPaintBox *MaxgameticksPbox; TImage *LanguageImg; + TPanel *HotkeyPnl; + TLabel *ToggleWindowedLbl; + TSpeedButton *HotkeyBtn; + TEdit *ToggleWindowedEdt; + TLabel *ToggleWindowedKeyLbl; + TLabel *MaximizeWindowLbl; + TEdit *MaximizeWindowEdt; + TLabel *MaximizeWindowKeyLbl; + TLabel *UnlockCursor1Lbl; + TEdit *UnlockCursor1Edt; + TLabel *UnlockCursor1KeyLbl; + TLabel *UnlockCursor2Lbl; + TEdit *UnlockCursor2Edt; + TLabel *UnlockCursor2KeyLbl; + TLabel *ScreenshotLbl; + TEdit *ScreenshotEdt; + TComboBox *ShaderD3DCbx; + TSpeedButton *RestoreDefaultsBtn; + TPanel *ThemePnl; void __fastcall DisplayBtnClick(TObject *Sender); void __fastcall AdvancedBtnClick(TObject *Sender); void __fastcall CompatibilityBtnClick(TObject *Sender); @@ -79,16 +98,29 @@ __published: // Von der IDE verwaltete Komponenten void __fastcall SavesettingsChkClick(TObject *Sender); void __fastcall MaxgameticksCbxChange(TObject *Sender); void __fastcall NoactivateappChkClick(TObject *Sender); - void __fastcall HookChkClick(TObject *Sender); + void __fastcall ResolutionsChkClick(TObject *Sender); void __fastcall MinfpsChkClick(TObject *Sender); - void __fastcall FixpitchChkClick(TObject *Sender); + void __fastcall SinglecpuChkClick(TObject *Sender); void __fastcall NonexclusiveChkClick(TObject *Sender); void __fastcall PboxPaint(TObject *Sender); void __fastcall LanguageImgClick(TObject *Sender); + void __fastcall FormActivate(TObject *Sender); + void __fastcall HotkeyBtnClick(TObject *Sender); + void __fastcall HotkeyEdtKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall HotkeyEdtKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall ShaderD3DCbxChange(TObject *Sender); + void __fastcall RestoreDefaultsBtnClick(TObject *Sender); + void __fastcall ThemePnlClick(TObject *Sender); + + + private: // Benutzer-Deklarationen + virtual void __fastcall CreateParams(TCreateParams & Params); void SaveSettings(); bool GetBool(TIniFile *ini, System::UnicodeString key, bool defValue); void ApplyTranslation(TIniFile *ini); + System::UnicodeString GetKeyText(WORD key); + WORD GetKeyCode(System::UnicodeString key); public: // Benutzer-Deklarationen __fastcall TConfigForm(TComponent* Owner); }; diff --git a/config/Resources/IT.png b/config/Resources/IT.png new file mode 100644 index 0000000..89692f7 Binary files /dev/null and b/config/Resources/IT.png differ diff --git a/config/cnc-ddraw config.cbproj b/config/cnc-ddraw config.cbproj index 3ac67c6..dbd448c 100644 --- a/config/cnc-ddraw config.cbproj +++ b/config/cnc-ddraw config.cbproj @@ -1,7 +1,7 @@  {E020D5C7-AE07-4DB9-9688-6D289E9FFF1A} - 18.8 + 19.5 VCL Application cnc-ddraw config.cpp @@ -9,6 +9,7 @@ Release Win32 1 + c true @@ -18,6 +19,11 @@ Base true + + true + Base + true + true Base @@ -29,6 +35,12 @@ true true + + true + Cfg_1 + true + true + true Base @@ -40,6 +52,12 @@ true true + + true + Cfg_2 + true + true + JPHNE true @@ -52,7 +70,7 @@ $(BDSLIB)\$(PLATFORM)\release\$(LANGDIR);$(ILINK_TranslatedLibraryPath) CppVCLApplication System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) - rtl.lib;vcl.lib;vclwinx.lib;vclimg.lib + rtl.lib;vcl.lib;vclwinx.lib;vclimg.lib;bindengine.lib <_TCHARMapping>wchar_t true $(BDS)\bin\cbuilder_PROJECTICON.ico @@ -61,7 +79,7 @@ cnc-ddraw\config\;$(IncludePath) cnc-ddraw\config\;$(ILINK_LibraryPath) cnc-ddraw_config - "Windows10 Blue|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Windows10Blue.vsf" + Windows10|VCLSTYLE|$(BDSCOMMONDIR)\Styles\Windows10.vsf;"Cobalt XEMedia|VCLSTYLE|$(BDSCOMMONDIR)\Styles\CobaltXEMedia.vsf" adortl;appanalytics;bcbie;bcbsmp;bindcomp;bindcompdbx;bindcompfmx;bindcompvcl;bindengine;CloudService;CustomIPTransport;dbexpress;dbrtl;dbxcds;DbxClientDriver;DbxCommonDriver;DBXInterBaseDriver;DBXMySQLDriver;DBXSqliteDriver;dsnap;dsnapcon;dsnapxml;FireDAC;FireDACADSDriver;FireDACCommon;FireDACCommonDriver;FireDACCommonODBC;FireDACIBDriver;FireDACMSAccDriver;FireDACMySQLDriver;FireDACPgDriver;FireDACSqliteDriver;fmx;fmxase;fmxdae;fmxFireDAC;fmxobj;IndyCore;IndyIPClient;IndyIPCommon;IndyIPServer;IndyProtocols;IndySystem;inet;inetdb;inetdbxpress;RESTBackendComponents;RESTComponents;rtl;soapmidas;soaprtl;soapserver;svn;tethering;vcl;vclactnband;vcldb;vcldsnap;vclFireDAC;vclie;vclimg;VCLRESTComponents;VclSmp;vcltouch;vclwinx;vclx;xmlrtl;$(PackageImports) @@ -71,6 +89,16 @@ true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 1033 + cnc-ddraw config.manifest + 5.0 + 5.0 + + + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 $(BDS)\bin\default_app.manifest @@ -105,21 +133,33 @@ false false rtl.lib;vcl.lib;vclwinx.lib;vclimg.lib + $(BDSLIB)\$(PLATFORM)$(CC_SUFFIX)\debug;$(ILINK_LibraryPath) + 5.0 + 5.0 + cnc-ddraw config.manifest + + + PerMonitorV2 NDEBUG;$(Defines) None - true PerMonitorV2 false false false true - rtl.lib;vcl.lib;vclwinx.lib;vclimg.lib + rtl.lib;vcl.lib;vclwinx.lib;vclimg.lib;bindengine.lib 1033 cnc-ddraw.ico + 5.0 + 5.0 + cnc-ddraw config.manifest + + + PerMonitorV2 @@ -151,6 +191,10 @@ RCDATA PngImage_HU + + RCDATA + PngImage_IT + RCDATA PngImage_RU @@ -160,10 +204,6 @@ PngImage_US - - Cfg_2 - Base - Base @@ -171,6 +211,10 @@ Cfg_1 Base + + Cfg_2 + Base + CPlusPlusBuilder.Personality.12 @@ -187,125 +231,79 @@ cnc-ddraw config.cpp - Embarcadero C++Builder-Package für Office 2000-Server - Embarcadero C++Builder-Package für Office XP-Server + Embarcadero C++Builder-Package für Office 2000-Server + Embarcadero C++Builder-Package für Office XP-Server - - - - true - - + true - - - true - - - - - true - - - - - true - - true - - - true - - + + true - + + + true - - - cnc-ddraw_config.exe - true - - - - - .\ - true - - - - - .\ - true - - - - - .\ - true - - - - - .\ - true - - - - - cnc-ddraw_config.exe - true - - - - - .\ - true - - - + true - + true - + + + - .\ true - - - true - - - + - .\ true + + + + + true + + + + + true + + + + + + + + + + + + 1 @@ -318,14 +316,14 @@ 0 - + classes - 1 + 64 classes - 1 + 64 @@ -446,6 +444,16 @@ 1 + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + res\drawable-ldpi @@ -609,6 +617,11 @@ 1 .framework + + Contents\MacOS + 1 + .framework + 0 @@ -622,7 +635,7 @@ 1 .dylib - + 1 .dylib @@ -636,6 +649,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .dll;.bpl @@ -650,7 +668,7 @@ 1 .dylib - + 1 .dylib @@ -664,6 +682,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .bpl @@ -682,7 +705,7 @@ 0 - + 0 @@ -693,272 +716,12 @@ Contents\Resources\StartUp\ 0 - + + Contents\Resources\StartUp\ 0 - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 + + 0 @@ -969,61 +732,15 @@ 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - 1 - - - 1 - - - - - ..\ - 1 - - - ..\ - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1 + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + @@ -1034,6 +751,10 @@ ..\ 1 + + ..\ + 1 + @@ -1044,6 +765,10 @@ Contents 1 + + Contents + 1 + @@ -1054,6 +779,10 @@ Contents\Resources 1 + + Contents\Resources + 1 + @@ -1070,7 +799,7 @@ 1 - + 1 @@ -1084,6 +813,10 @@ Contents\MacOS 1 + + Contents\MacOS + 1 + 0 @@ -1102,6 +835,66 @@ 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + Assets @@ -1122,19 +915,222 @@ 1 - - - - - - + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + - - + + + + + + + + + + True + False 12 diff --git a/config/cnc-ddraw config.cpp b/config/cnc-ddraw config.cpp index e98fba6..f88df0c 100644 --- a/config/cnc-ddraw config.cpp +++ b/config/cnc-ddraw config.cpp @@ -2,6 +2,8 @@ #include #pragma hdrstop +#include +#include #include //--------------------------------------------------------------------------- #include @@ -14,7 +16,29 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { Application->Initialize(); Application->MainFormOnTaskBar = true; - TStyleManager::TrySetStyle("Windows10 Blue"); + + HWND hwnd = + FindWindow( + THashSHA1::GetHashString(Application->ExeName).w_str(), NULL); + + if (hwnd && ParamStr(1) != L"-restart") { + + if (IsIconic(hwnd)) { + ShowWindow(hwnd, SW_RESTORE); + } + + SetForegroundWindow(hwnd); + return 0; + } + + auto *ini = new TIniFile(".\\dd-hd.ini"); + auto theme = ini->ReadString("ddraw", "configtheme", "Windows10"); + + TStyleManager::TrySetStyle( + theme == "Cobalt XEMedia" ? "Cobalt XEMedia" : "Windows10"); + + delete ini; + Application->CreateForm(__classid(TConfigForm), &ConfigForm); Application->Run(); } diff --git a/config/cnc-ddraw config.manifest b/config/cnc-ddraw config.manifest new file mode 100644 index 0000000..35c0fea --- /dev/null +++ b/config/cnc-ddraw config.manifest @@ -0,0 +1,34 @@ + + + + + true/pm + PerMonitorV2 + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/cnc-ddraw config_resources.rc b/config/cnc-ddraw config_resources.rc index 15a55fd..a2ed1e5 100644 --- a/config/cnc-ddraw config_resources.rc +++ b/config/cnc-ddraw config_resources.rc @@ -3,5 +3,6 @@ PngImage_DE RCDATA "Resources\\DE.png" PngImage_ES RCDATA "Resources\\ES.png" PngImage_FR RCDATA "Resources\\fr.png" PngImage_HU RCDATA "Resources\\hu.png" +PngImage_IT RCDATA "Resources\\IT.png" PngImage_RU RCDATA "Resources\\RU.png" PngImage_US RCDATA "Resources\\US.png"