diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp
index 8070150..e8fb24d 100644
--- a/config/ConfigFormUnit.cpp
+++ b/config/ConfigFormUnit.cpp
@@ -78,7 +78,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini)
RendererCbx->Items->Clear();
RendererCbx->AddItem(L"自动", NULL);
- RendererCbx->AddItem(L"Direct3D9", NULL);
+ RendererCbx->AddItem(L"Direct3D 9", NULL);
RendererCbx->AddItem(L"OpenGL", NULL);
RendererCbx->AddItem(L"GDI", NULL);
@@ -128,7 +128,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini)
RendererCbx->Items->Clear();
RendererCbx->AddItem(L"Automático", NULL);
- RendererCbx->AddItem(L"Direct3D9", NULL);
+ RendererCbx->AddItem(L"Direct3D 9", NULL);
RendererCbx->AddItem(L"OpenGL", NULL);
RendererCbx->AddItem(L"GDI", NULL);
@@ -178,7 +178,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini)
RendererCbx->Items->Clear();
RendererCbx->AddItem(L"Automatisch", NULL);
- RendererCbx->AddItem(L"Direct3D9", NULL);
+ RendererCbx->AddItem(L"Direct3D 9", NULL);
RendererCbx->AddItem(L"OpenGL", NULL);
RendererCbx->AddItem(L"GDI", NULL);
@@ -199,6 +199,60 @@ void TConfigForm::ApplyTranslation(TIniFile *ini)
MaxgameticksCbx->AddItem(L"25 Ticks pro Sekunde", NULL);
MaxgameticksCbx->AddItem(L"15 Ticks pro Sekunde", NULL);
}
+ 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"Расширенные настройки";
+ CompatibilityBtn->Caption = L"Настройки совместимости";
+ PresentationLbl->Caption = L"Отображение";
+ MaintasLbl->Caption = L"Сохранять соотношение сторон";
+ VsyncLbl->Caption = L"Включить VSync";
+ AdjmouseLbl->Caption = L"Регулировка чувствительности мыши";
+ DevmodeLbl->Caption = L"Зафиксировать курсор на окне / экране";
+ RendererLbl->Caption = L"Рендер";
+ BorderLbl->Caption = L"Отображение границ окна в оконном режиме";
+ SavesettingsLbl->Caption = L"Запомнить положение и размер окна";
+ ShaderLbl->Caption = L"Шейдер OpenGL";
+ MaxfpsLbl->Caption = L"Ограничить частоту кадров";
+ BoxingLbl->Caption = L"Включить windowboxing / целочисленное масштабирование";
+ MaxgameticksLbl->Caption = L"Ограничить скорость игры";
+ NoactivateappLbl->Caption = L"Исправить сломанный Alt+Tab";
+ HookLbl->Caption = L"Исправить сломанный оконный режим или масштабированние";
+ MinfpsLbl->Caption = L"Принудительно высокий FPS / Исправить заикание при Freesync/G-Sync";
+ FixpitchLbl->Caption = L"Исправить проблемы с отображением отрисовки по диагонали";
+ NonexclusiveLbl->Caption = L"Исправить невидимые видео / элементы пользовательского интерфейса";
+
+ RendererCbx->Items->Clear();
+ RendererCbx->AddItem(L"Автоматический", NULL);
+ RendererCbx->AddItem(L"Direct3D 9", NULL);
+ RendererCbx->AddItem(L"OpenGL", NULL);
+ RendererCbx->AddItem(L"GDI", NULL);
+
+ PresentationCbx->Items->Clear();
+ PresentationCbx->AddItem(L"Полноэкранный", NULL);
+ PresentationCbx->AddItem(L"Полноэкранный масштабированный", NULL);
+ PresentationCbx->AddItem(L"Без границ", NULL);
+ PresentationCbx->AddItem(L"Оконный", NULL);
+
+ MaxgameticksCbx->Items->Clear();
+ MaxgameticksCbx->AddItem(L"Без ограничений", NULL);
+ MaxgameticksCbx->AddItem(L"Синхронизация с частотой обновления монитора", NULL);
+ MaxgameticksCbx->AddItem(L"Эмуляция частоты обновления монитора 60 Гц", NULL);
+ MaxgameticksCbx->AddItem(L"1000 тиков в секунду", NULL);
+ MaxgameticksCbx->AddItem(L"500 тиков в секунду", NULL);
+ MaxgameticksCbx->AddItem(L"60 тиков в секунду", NULL);
+ MaxgameticksCbx->AddItem(L"30 тиков в секунду", NULL);
+ MaxgameticksCbx->AddItem(L"25 тиков в секунду", NULL);
+ MaxgameticksCbx->AddItem(L"15 тиков в секунду", NULL);
+ }
else {
IsEnglish = true;
@@ -221,6 +275,12 @@ void TConfigForm::ApplyTranslation(TIniFile *ini)
LanguageImg->Picture->Graphic = png;
LanguageImg->Visible = true;
}
+ else if (priID == LANG_RUSSIAN) {
+ TPngImage *png = new TPngImage();
+ png->LoadFromResourceName((int)HInstance, "PngImage_RU");
+ LanguageImg->Picture->Graphic = png;
+ LanguageImg->Visible = true;
+ }
} catch (...) {
}
@@ -249,7 +309,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini)
RendererCbx->Items->Clear();
RendererCbx->AddItem(L"Automatic", NULL);
- RendererCbx->AddItem(L"Direct3D9", NULL);
+ RendererCbx->AddItem(L"Direct3D 9", NULL);
RendererCbx->AddItem(L"OpenGL", NULL);
RendererCbx->AddItem(L"GDI", NULL);
diff --git a/config/ConfigFormUnit.dfm b/config/ConfigFormUnit.dfm
index 53231c4..0e04389 100644
--- a/config/ConfigFormUnit.dfm
+++ b/config/ConfigFormUnit.dfm
@@ -2682,189 +2682,6 @@ object ConfigForm: TConfigForm
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
- object CompatibilityPnl: TPanel
- Left = 201
- Top = 8
- Width = 499
- Height = 465
- BevelOuter = bvNone
- Color = clWhite
- ParentBackground = False
- ShowCaption = False
- TabOrder = 3
- Visible = False
- StyleElements = [seFont, seBorder]
- 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
- StyleElements = [seClient, seBorder]
- 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
- StyleElements = [seClient, seBorder]
- end
- object HookLbl: TLabel
- Left = 40
- Top = 173
- Width = 281
- Height = 21
- Margins.Top = 18
- Caption = 'Fix broken windowed mode or upscaling'
- 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
- 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
- StyleElements = [seClient, seBorder]
- end
- object FixpitchLbl: TLabel
- Left = 40
- Top = 309
- Width = 272
- Height = 21
- Margins.Top = 18
- Caption = 'Fix diagonally displayed drawing issues'
- 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
- 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
- StyleElements = [seClient, seBorder]
- end
- object MaxgameticksPbox: TPaintBox
- Left = 40
- Top = 54
- Width = 342
- Height = 31
- OnPaint = PboxPaint
- end
- object MaxgameticksCbx: TComboBox
- Left = 41
- Top = 55
- Width = 340
- 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 = 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')
- end
- object NoactivateappChk: TToggleSwitch
- Left = 40
- Top = 132
- Width = 50
- Height = 20
- ShowStateCaption = False
- TabOrder = 1
- OnClick = NoactivateappChkClick
- end
- object HookChk: TToggleSwitch
- Left = 40
- Top = 200
- Width = 50
- Height = 20
- ShowStateCaption = False
- TabOrder = 2
- OnClick = HookChkClick
- end
- object MinfpsChk: TToggleSwitch
- Left = 40
- Top = 268
- Width = 50
- Height = 20
- ShowStateCaption = False
- TabOrder = 3
- OnClick = MinfpsChkClick
- end
- object FixpitchChk: TToggleSwitch
- Left = 40
- Top = 336
- Width = 50
- Height = 20
- ShowStateCaption = False
- TabOrder = 4
- OnClick = FixpitchChkClick
- end
- object NonexclusiveChk: TToggleSwitch
- Left = 40
- Top = 404
- Width = 50
- Height = 20
- ShowStateCaption = False
- TabOrder = 5
- OnClick = NonexclusiveChkClick
- end
- end
object AdvancedPnl: TPanel
Left = 201
Top = 8
@@ -2999,7 +2816,7 @@ object ConfigForm: TConfigForm
OnChange = RendererCbxChange
Items.Strings = (
'Automatic'
- 'Direct3D9'
+ 'Direct3D 9'
'OpenGL'
'GDI')
end
@@ -3070,6 +2887,9 @@ object ConfigForm: TConfigForm
ShowCaption = False
TabOrder = 1
StyleElements = [seFont, seBorder]
+ DesignSize = (
+ 499
+ 465)
object PresentationLbl: TLabel
Left = 40
Top = 28
@@ -3147,15 +2967,16 @@ object ConfigForm: TConfigForm
object PresentationPbox: TPaintBox
Left = 40
Top = 54
- Width = 207
+ Width = 282
Height = 31
OnPaint = PboxPaint
end
object LanguageImg: TImage
- Left = 473
+ Left = 477
Top = 8
Width = 16
Height = 11
+ Anchors = [akTop, akRight]
Picture.Data = {
0954506E67496D61676589504E470D0A1A0A0000000D49484452000000100000
000B0802000000F9809A6E0000000467414D410000AFC837058AE90000001974
@@ -3178,11 +2999,12 @@ object ConfigForm: TConfigForm
Stretch = True
Visible = False
OnClick = LanguageImgClick
+ ExplicitLeft = 569
end
object PresentationCbx: TComboBox
Left = 41
Top = 55
- Width = 205
+ Width = 280
Height = 29
BevelEdges = []
BevelInner = bvNone
@@ -3239,6 +3061,189 @@ object ConfigForm: TConfigForm
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
+ Visible = False
+ StyleElements = [seFont, seBorder]
+ 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
+ StyleElements = [seClient, seBorder]
+ 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
+ StyleElements = [seClient, seBorder]
+ end
+ object HookLbl: TLabel
+ Left = 40
+ Top = 173
+ Width = 281
+ Height = 21
+ Margins.Top = 18
+ Caption = 'Fix broken windowed mode or upscaling'
+ 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
+ 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
+ StyleElements = [seClient, seBorder]
+ end
+ object FixpitchLbl: TLabel
+ Left = 40
+ Top = 309
+ Width = 272
+ Height = 21
+ Margins.Top = 18
+ Caption = 'Fix diagonally displayed drawing issues'
+ 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
+ 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
+ StyleElements = [seClient, seBorder]
+ 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 = 10
+ 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'
+ '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 HookChk: TToggleSwitch
+ Left = 40
+ Top = 200
+ Width = 50
+ Height = 20
+ ShowStateCaption = False
+ TabOrder = 2
+ OnClick = HookChkClick
+ end
+ object MinfpsChk: TToggleSwitch
+ Left = 40
+ Top = 268
+ Width = 50
+ Height = 20
+ ShowStateCaption = False
+ TabOrder = 3
+ OnClick = MinfpsChkClick
+ end
+ object FixpitchChk: TToggleSwitch
+ Left = 40
+ Top = 336
+ Width = 50
+ Height = 20
+ ShowStateCaption = False
+ TabOrder = 4
+ OnClick = FixpitchChkClick
+ end
+ object NonexclusiveChk: TToggleSwitch
+ Left = 40
+ Top = 404
+ Width = 50
+ Height = 20
+ ShowStateCaption = False
+ TabOrder = 5
+ OnClick = NonexclusiveChkClick
+ end
+ end
object MenuPnl: TPanel
Left = 0
Top = 8
diff --git a/config/Resources/RU.png b/config/Resources/RU.png
new file mode 100644
index 0000000..47da421
Binary files /dev/null and b/config/Resources/RU.png differ
diff --git a/config/cnc-ddraw config.cbproj b/config/cnc-ddraw config.cbproj
index fb62e9b..b5183d6 100644
--- a/config/cnc-ddraw config.cbproj
+++ b/config/cnc-ddraw config.cbproj
@@ -143,6 +143,10 @@
RCDATA
PngImage_ES
+
+ RCDATA
+ PngImage_RU
+
RCDATA
PngImage_US
@@ -249,6 +253,12 @@
true
+
+
+ .\
+ true
+
+
cnc-ddraw_config.exe
diff --git a/config/cnc-ddraw config_resources.rc b/config/cnc-ddraw config_resources.rc
index b737b81..a8c1a26 100644
--- a/config/cnc-ddraw config_resources.rc
+++ b/config/cnc-ddraw config_resources.rc
@@ -1,4 +1,5 @@
PngImage_CN RCDATA "Resources\\CN.png"
PngImage_DE RCDATA "Resources\\DE.png"
PngImage_ES RCDATA "Resources\\ES.png"
+PngImage_RU RCDATA "Resources\\RU.png"
PngImage_US RCDATA "Resources\\US.png"
diff --git a/src/config.c b/src/config.c
index 43268c6..efea4a8 100644
--- a/src/config.c
+++ b/src/config.c
@@ -288,7 +288,7 @@ static void cfg_create_ini()
"; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1 and KKND Xtreme)\n"
"vhack=false\n"
"\n"
- "; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish\n"
+ "; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian\n"
"configlang=auto\n"
"\n"
"\n"