[Patches] Lag Compensation; [Launcher] Acrylic and Light/Dark themes and other improvements
This commit is contained in:
+6
@@ -54,6 +54,12 @@ hair_npr1.*=cfg:toon_hair_improve||from:MUL spec.x, tmp.x, 0.7;||to:MUL spec.x,
|
||||
tone_map_npr1.*=cfg:toon_lines_improve||from:MUL density.y, density.y, 0.25;||to:MUL density.y, density.y, <val1>;
|
||||
tone_map_npr1.*=cfg:toon_lines_improve||from:MAD density.w, density.x, 0.7, 0.25;||to:MAD density.w, density.x, <val2>, <val3>;
|
||||
|
||||
# Intel related patches
|
||||
(?:movie|sprite|imgfilter).*=cfg:intel||from:; ||to:;\n
|
||||
(?:movie|sprite|imgfilter).*=cfg:intel||from:(?:RET|TXL|NRM|OPTION NV_fragment|PARAM p_charfragment.color|ATTRIB).*?||to:##
|
||||
(?:movie|sprite|imgfilter).*=cfg:intel||from:(?:SHORT |LONG ).*?||to:
|
||||
.*sprite.100.fp.*=cfg:intel||from:MUL result.color, col1, fragment.color;||to:##MUL result.color, col1, fragment.color;
|
||||
|
||||
# Debug patches:
|
||||
# Nametags
|
||||
# Adds comments with the shader file name to the shader text. Useful for debugging issues
|
||||
@@ -7,7 +7,7 @@
|
||||
Enable=1
|
||||
|
||||
[GPU]
|
||||
# Force GPU model -- -1=auto, 0=Kepler, 1=Maxwell, 2=Turing
|
||||
# Force GPU model -- -1=auto, 0=Kepler, 1=Maxwell, 2=Turing, 3=Ampere
|
||||
Model=-1
|
||||
|
||||
[Launcher]
|
||||
@@ -15,6 +15,10 @@ Model=-1
|
||||
Skip=0
|
||||
# Disables unsupported GPU warning dialogs.
|
||||
No_GPU_Dialog=0
|
||||
# Sets the dark colour scheme in the launcher.
|
||||
Dark_Launcher=0
|
||||
# Enables acrylic blur in the launcher on Windows 10 20H2 or later.
|
||||
Acrylic_Blur=0
|
||||
#Ignores some OpenGL-related errors. Don't use both patches at the same time unless you're know what you're doing
|
||||
OpenGL_Patch_A=0
|
||||
#Ignores some OpenGL-related errors. Don't use both patches at the same time unless you're know what you're doing
|
||||
@@ -88,6 +92,8 @@ Custom_Patches=1
|
||||
Prevent_Data_Deletion=0
|
||||
|
||||
[Graphics]
|
||||
# Lag Compensation
|
||||
Lag_Compensation = 0
|
||||
# Set to -1 to unlock the frame rate.
|
||||
FPS.Limit=60
|
||||
# Reduces FPS Limiter CPU usage
|
||||
@@ -121,7 +127,7 @@ NPR1=0
|
||||
FRM.Motion.Rate=400
|
||||
|
||||
[Resolution]
|
||||
# 0 = Windowed, 1 = Popup (recommended), 2 = Exclusive, 3 = Failsafe
|
||||
# 0 = Windowed, 1 = Fast, 2 = Exclusive, 3 = Safe
|
||||
# For same as screen res: -1x-1
|
||||
Display=1
|
||||
Width=-1
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace GPUModel
|
||||
// note that the used GL context may differ
|
||||
std::string getGpuName()
|
||||
{
|
||||
// detected model can be overridden -- 0: Kepler, 1: Maxwell, 2: Turing
|
||||
// detected model can be overridden -- 0: Kepler, 1: Maxwell, 2: Turing, 3: Ampere
|
||||
int nGPUModel = GetPrivateProfileIntW(L"gpu", L"model", -1, CONFIG_FILE);
|
||||
if (nGPUModel >= 0 && nGPUModel <= 2)
|
||||
{
|
||||
@@ -50,6 +50,9 @@ namespace GPUModel
|
||||
case 2:
|
||||
arch = "TU000";
|
||||
break;
|
||||
case 3:
|
||||
arch = "GA000";
|
||||
break;
|
||||
}
|
||||
|
||||
printf("[GPUModel] GPU Model override: %s\n", arch.c_str());
|
||||
|
||||
@@ -19,7 +19,7 @@ using namespace System::Windows::Forms;
|
||||
|
||||
float BaseScaleSize = 96;
|
||||
int Col1Width = 110;
|
||||
int Col2Left = 114;
|
||||
int Col2Left = 140;
|
||||
int Col2Width = 90;
|
||||
int ConfigBtnLeft = 120;
|
||||
int ControlSpacing = 6;
|
||||
@@ -301,6 +301,41 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class OptionMetaSeparator : public ConfigOptionBase
|
||||
{
|
||||
public:
|
||||
OptionMetaSeparator()
|
||||
{
|
||||
}
|
||||
|
||||
virtual int AddToPanel(Panel^ panel, unsigned int left, unsigned int top, ToolTip^ tooltip)
|
||||
{
|
||||
Label^ lab = gcnew Label();
|
||||
|
||||
lab->Text = "_____________________________________";
|
||||
lab->Left = left + 2;
|
||||
lab->Top = top;
|
||||
lab->AutoSize = true;
|
||||
|
||||
Form^ RootForm = panel->FindForm();
|
||||
float ScaleWidth = 1.0f;
|
||||
float ScaleHeight = 1.0f;
|
||||
if (RootForm)
|
||||
{
|
||||
Drawing::SizeF CurrentScaleSize = RootForm->CurrentAutoScaleDimensions;
|
||||
ScaleWidth = CurrentScaleSize.Width / BaseScaleSize;
|
||||
ScaleHeight = CurrentScaleSize.Height / BaseScaleSize;
|
||||
}
|
||||
lab->Scale(ScaleWidth, ScaleHeight);
|
||||
|
||||
panel->Controls->Add(lab);
|
||||
mainControlHandle = lab->Handle;
|
||||
|
||||
int ControlHeight = lab->Font->Height / ScaleHeight;
|
||||
return ControlHeight + ControlSpacing;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class BooleanOption : public ConfigOptionBase
|
||||
{
|
||||
@@ -331,7 +366,7 @@ public:
|
||||
cb->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
|
||||
// hack to ensure high contrast
|
||||
cb->BackColor = System::Drawing::Color::FromArgb(0, 0, 0, 0);
|
||||
cb->BackColor = System::Drawing::Color::FromArgb(0, 127, 127, 127);
|
||||
|
||||
Form^ RootForm = panel->FindForm();
|
||||
float ScaleWidth = 1.0f;
|
||||
@@ -534,9 +569,10 @@ class DropdownOption : public ConfigOptionBase
|
||||
{
|
||||
public:
|
||||
int _defaultVal;
|
||||
int _indexOffset;
|
||||
std::vector<LPCWSTR> _valueStrings;
|
||||
|
||||
DropdownOption(LPCWSTR iniVarName, LPCWSTR iniSectionName, LPCWSTR iniFilePath, LPCWSTR friendlyName, LPCWSTR description, int defaultVal, std::vector<LPCWSTR> valueStrings)
|
||||
DropdownOption(LPCWSTR iniVarName, LPCWSTR iniSectionName, LPCWSTR iniFilePath, LPCWSTR friendlyName, LPCWSTR description, int defaultVal, std::vector<LPCWSTR> valueStrings, int indexOffset=0)
|
||||
{
|
||||
_iniVarName = iniVarName;
|
||||
_iniSectionName = iniSectionName;
|
||||
@@ -545,6 +581,7 @@ public:
|
||||
_description = description;
|
||||
_defaultVal = defaultVal;
|
||||
_valueStrings = valueStrings;
|
||||
_indexOffset = indexOffset;
|
||||
}
|
||||
|
||||
virtual int AddToPanel(Panel^ panel, unsigned int left, unsigned int top, ToolTip^ tooltip)
|
||||
@@ -562,12 +599,12 @@ public:
|
||||
for (LPCWSTR& choice : _valueStrings) {
|
||||
combobox->Items->Add(msclr::interop::marshal_as<System::String^>(choice));
|
||||
}
|
||||
combobox->SelectedIndex = GetIniInt(_iniSectionName, _iniVarName, _defaultVal, _iniFilePath);
|
||||
combobox->SelectedIndex = GetIniInt(_iniSectionName, _iniVarName, _defaultVal, _iniFilePath)-_indexOffset;
|
||||
combobox->Left = left + Col2Left;
|
||||
combobox->Top = top;
|
||||
combobox->Width = Col2Width;
|
||||
combobox->AutoSize = true;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::System;
|
||||
combobox->DropDownStyle = ComboBoxStyle::DropDownList;
|
||||
|
||||
Form^ RootForm = panel->FindForm();
|
||||
@@ -600,7 +637,7 @@ public:
|
||||
|
||||
virtual void SaveOption()
|
||||
{
|
||||
SetIniInt(_iniSectionName, _iniVarName, Convert::ToInt32(((ComboBox^)ComboBox::FromHandle(mainControlHandle))->SelectedIndex), _iniFilePath);
|
||||
SetIniInt(_iniSectionName, _iniVarName, Convert::ToInt32(((ComboBox^)ComboBox::FromHandle(mainControlHandle))->SelectedIndex+_indexOffset), _iniFilePath);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -651,7 +688,7 @@ public:
|
||||
combobox->Top = top;
|
||||
combobox->Width = Col2Width;
|
||||
combobox->AutoSize = true;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::System;
|
||||
|
||||
if (_editable)
|
||||
combobox->DropDownStyle = ComboBoxStyle::DropDown;
|
||||
@@ -756,7 +793,7 @@ public:
|
||||
combobox->Top = top;
|
||||
combobox->Width = Col2Width;
|
||||
combobox->AutoSize = true;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::System;
|
||||
|
||||
if (_editable)
|
||||
combobox->DropDownStyle = ComboBoxStyle::DropDown;
|
||||
@@ -889,7 +926,7 @@ public:
|
||||
combobox->Top = top;
|
||||
combobox->Width = Col2Width;
|
||||
combobox->AutoSize = true;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
combobox->FlatStyle = System::Windows::Forms::FlatStyle::System;
|
||||
|
||||
if (_editable)
|
||||
combobox->DropDownStyle = ComboBoxStyle::DropDown;
|
||||
@@ -1032,7 +1069,7 @@ public:
|
||||
cb->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
|
||||
// hack to ensure high contrast
|
||||
cb->BackColor = System::Drawing::Color::FromArgb(0, 0, 0, 0);
|
||||
cb->BackColor = System::Drawing::Color::FromArgb(0, 127, 127, 127);
|
||||
|
||||
button->Text = L"Config";
|
||||
button->Left = left + ConfigBtnLeft;
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -109,6 +109,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="composition.h" />
|
||||
<ClInclude Include="ConfigOption.h" />
|
||||
<ClInclude Include="framework.h" />
|
||||
<ClInclude Include="IniReader.h" />
|
||||
@@ -127,6 +128,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="FeelsThinkMan.gif" />
|
||||
<Image Include="Help.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -275,11 +275,16 @@ private: ref class SkinnedMessageBoxForm : Form
|
||||
}
|
||||
else if (icon == MessageBoxIcon::Information) // also Asterisk
|
||||
{
|
||||
Drawing::Icon^ infoicon = gcnew Drawing::Icon(SystemIcons::Information, iconsize, iconsize);
|
||||
/*Drawing::Icon^ infoicon = gcnew Drawing::Icon(SystemIcons::Information, iconsize, iconsize);
|
||||
iconPB->Image = infoicon->ToBitmap();
|
||||
iconPB->AccessibleDescription = "Information";
|
||||
//this.Icon = SystemIcons.Question;
|
||||
System::Media::SystemSounds::Asterisk->Play();
|
||||
System::Media::SystemSounds::Asterisk->Play();*/
|
||||
|
||||
iconPB->Image = (Image^)(ResMgr->GetObject("Help"));
|
||||
iconPB->AccessibleDescription = "Question";
|
||||
//this.Icon = SystemIcons.Question;
|
||||
System::Media::SystemSounds::Question->Play();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -121,6 +121,9 @@
|
||||
<data name="FeelsThinkMan" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>FeelsThinkMan.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>Help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="PokeSnarf4xd" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>PokeSnarf4xd.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
#pragma once
|
||||
#include <windows.h>
|
||||
|
||||
enum AccentState {
|
||||
ACCENT_DISABLED = 0,
|
||||
ACCENT_ENABLE_GRADIENT = 1,
|
||||
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
|
||||
ACCENT_ENABLE_BLURBEHIND = 3,
|
||||
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4,
|
||||
ACCENT_ENABLE_HOSTBACKDROP = 5,
|
||||
ACCENT_INVALID_STATE = 6
|
||||
};
|
||||
|
||||
enum WindowCompositionAttribute {
|
||||
WCA_ACCENT_POLICY = 19,
|
||||
WCA_USEDARKMODECOLORS = 26
|
||||
};
|
||||
|
||||
struct AccentPolicy {
|
||||
AccentState accentState;
|
||||
int accentFlags;
|
||||
int gradientColor;
|
||||
int animationId;
|
||||
};
|
||||
|
||||
struct WindowCompositionAttributeData {
|
||||
WindowCompositionAttribute attribute;
|
||||
PVOID pData;
|
||||
ULONG dataSize;
|
||||
};
|
||||
|
||||
bool setBlur(HWND hWnd, AccentState accentState)
|
||||
{
|
||||
HKEY CurrentVersion;
|
||||
auto result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_QUERY_VALUE, &CurrentVersion);
|
||||
if (result == ERROR_SUCCESS)
|
||||
{
|
||||
DWORD DataSize = 32;
|
||||
WCHAR* DataPtr = (WCHAR*)malloc(DataSize);
|
||||
memset(DataPtr, 0, DataSize);
|
||||
bool queryBuild = RegQueryValueEx(CurrentVersion, L"CurrentBuild", NULL, NULL, (LPBYTE)DataPtr, &DataSize) == ERROR_SUCCESS;
|
||||
RegCloseKey(CurrentVersion);
|
||||
if (queryBuild)
|
||||
{
|
||||
int BuildNum = _wtoi(DataPtr);
|
||||
//MessageBox::Show(BuildNum.ToString());
|
||||
if (BuildNum < 19042) return 0;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
else return 0;
|
||||
|
||||
const HINSTANCE hModule_user32 = LoadLibrary(TEXT("user32.dll"));
|
||||
if (hModule_user32)
|
||||
{
|
||||
typedef BOOL(WINAPI* p_SetWindowCompositionAttribute)(HWND, WindowCompositionAttributeData*);
|
||||
|
||||
const p_SetWindowCompositionAttribute SetWindowCompositionAttribute = (p_SetWindowCompositionAttribute)GetProcAddress(hModule_user32, "SetWindowCompositionAttribute");
|
||||
|
||||
bool result = false;
|
||||
|
||||
if (SetWindowCompositionAttribute)
|
||||
{
|
||||
AccentPolicy policy;
|
||||
policy.accentState = accentState;
|
||||
policy.accentFlags = 2;
|
||||
policy.gradientColor = 0x01000000;
|
||||
policy.animationId = 0;
|
||||
|
||||
WindowCompositionAttributeData data;
|
||||
data.attribute = WCA_ACCENT_POLICY;
|
||||
data.pData = &policy;
|
||||
data.dataSize = sizeof(AccentPolicy);
|
||||
|
||||
result = SetWindowCompositionAttribute(hWnd, &data);
|
||||
}
|
||||
FreeLibrary(hModule_user32);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
void setDarkTheme(HWND hWnd, bool dark=true)
|
||||
{
|
||||
const HINSTANCE hModule_dwmapi = LoadLibrary(TEXT("dwmapi.dll"));
|
||||
if (hModule_dwmapi)
|
||||
{
|
||||
typedef BOOL(WINAPI* p_DwmSetWindowAttribute)(HWND, DWORD, LPCVOID, DWORD);
|
||||
const p_DwmSetWindowAttribute DwmSetWindowAttribute = (p_DwmSetWindowAttribute)GetProcAddress(hModule_dwmapi, "DwmSetWindowAttribute");
|
||||
|
||||
if (DwmSetWindowAttribute)
|
||||
{
|
||||
LONG useDarkModeColors = dark;
|
||||
if(DwmSetWindowAttribute(hWnd, 20, &useDarkModeColors, sizeof(useDarkModeColors)))
|
||||
DwmSetWindowAttribute(hWnd, 19, &useDarkModeColors, sizeof(useDarkModeColors));
|
||||
}
|
||||
FreeLibrary(hModule_dwmapi);
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ static std::vector<int> getScreenRatesVec(std::vector<DEVMODEW> &screenModes) {
|
||||
std::vector<DEVMODEW> screenModes = getScreenModes();
|
||||
|
||||
|
||||
DropdownOption* DisplayModeDropdown = new DropdownOption(L"display", RESOLUTION_SECTION, CONFIG_FILE, L"Display:", L"Sets the window/screen mode.", 1, std::vector<LPCWSTR>({ L"Windowed", L"Popup (recommended)", L"Exclusive", L"Failsafe" }));
|
||||
DropdownOption* DisplayModeDropdown = new DropdownOption(L"display", RESOLUTION_SECTION, CONFIG_FILE, L"Display:", L"Sets the window/screen mode.", 1, std::vector<LPCWSTR>({ L"Windowed", L"Fast", L"Exclusive", L"Safe" }));
|
||||
ResolutionOption* DisplayResolutionOption = new ResolutionOption(L"width", L"height", RESOLUTION_SECTION, CONFIG_FILE, L"Resolution:", L"Sets the display resolution.", resolution(-1, -1), getScreenResolutionsVec(screenModes), true, RESOPT_INCLUDE_MATCH_SCREEN);
|
||||
|
||||
ConfigOptionBase* screenResolutionArray[] = {
|
||||
@@ -159,6 +159,7 @@ ConfigOptionBase* internalResolutionArray[] = {
|
||||
};
|
||||
|
||||
ConfigOptionBase* graphicsArray[] = {
|
||||
new DropdownOption(L"model", L"GPU", CONFIG_FILE, L"NVIDIA GPU:", L"Select your NVIDIA GPU's architecture to apply the necessary workarounds.\n\nNOTE: Automatic detection does not currently work on GNU/Linux.", -1, std::vector<LPCWSTR>({ L"Automatic", L"Kepler", L"Maxwell", L"Turing", L"Ampere" }), -1),
|
||||
new BooleanOption(L"TAA", GRAPHICS_SECTION, CONFIG_FILE, L"TAA", L"Temporal Anti-Aliasing", true, false),
|
||||
new BooleanOption(L"MLAA", GRAPHICS_SECTION, CONFIG_FILE, L"MLAA", L"Morphological Anti-Aliasing", true, false),
|
||||
new DropdownOption(L"MAG", GRAPHICS_SECTION, CONFIG_FILE, L"Filter:", L"Image filter.\n\nBilinear: default filter\nNearest-neighbour: sharpest, but blocky\nSharpen: sharp filter\nCone: smooth filter", 0, std::vector<LPCWSTR>({ L"Bilinear", L"Nearest-neighbour", L"Sharpen", L"Cone" })),
|
||||
@@ -180,14 +181,17 @@ ConfigOptionBase* optionsArray[] = {
|
||||
new BooleanOption(L"mp4_movies", PATCHES_SECTION, CONFIG_FILE, L"Custom MP4 Adv Movies", L"Enable MP4 (instead of WMV) advertise/attract movies.", false, false),
|
||||
new BooleanOption(L"cursor", PATCHES_SECTION, CONFIG_FILE, L"Cursor", L"Enable or disable the mouse cursor.", true, false),
|
||||
new BooleanOption(L"stereo", PATCHES_SECTION, CONFIG_FILE, L"Stereo", L"Use 2 channels instead of 4 (when not using DivaSound).", true, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new DropdownOption(L"quick_start", PATCHES_SECTION, CONFIG_FILE, L"Quick Start:", L"Skip one or more menus.", 1, std::vector<LPCWSTR>({ L"Disabled", L"Guest", L"Guest + Normal" })),
|
||||
new BooleanOption(L"no_scrolling_sfx", PATCHES_SECTION, CONFIG_FILE, L"Disable Scrolling SFX", L"Disable the scrolling sound effect.", false, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new NumericOption(L"Enhanced_Stage_Manager", PATCHES_SECTION, CONFIG_FILE, L"Number of Stages:", L"Set the number of stages (0 = default).", 0, 0, INT_MAX),
|
||||
new BooleanOption(L"Enhanced_Stage_Manager_Encore", PATCHES_SECTION, CONFIG_FILE, L"Encore", L"Enable encore stages.", true, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new DropdownOption(L"force_mouth", PATCHES_SECTION, CONFIG_FILE, L"Mouth Type:", L"Change the mouth animations.", 0, std::vector<LPCWSTR>({ L"Default", L"Force PDA", L"Force FT" })),
|
||||
@@ -196,12 +200,13 @@ ConfigOptionBase* optionsArray[] = {
|
||||
new BooleanOption(L"no_hand_scaling", PATCHES_SECTION, CONFIG_FILE, L"No Hand Scaling", L"Disable hand scaling.", false, false),
|
||||
new NumericOption(L"default_hand_size", PATCHES_SECTION, CONFIG_FILE, L"Default Hand Size:", L"-1: default\n12200: PDA", -1, -1, INT_MAX),
|
||||
new BooleanOption(L"sing_missed", PATCHES_SECTION, CONFIG_FILE, L"Sing Missed", L"Sing missed notes.", false, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"hide_volume", PATCHES_SECTION, CONFIG_FILE, L"Hide Volume Buttons", L"Hide the volume and SE control buttons.", false, false),
|
||||
new BooleanOption(L"no_pv_ui", PATCHES_SECTION, CONFIG_FILE, L"Disable PV UI", L"Remove the photo controls during PV playback.", false, false),
|
||||
new BooleanOption(L"hide_pv_watermark", PATCHES_SECTION, CONFIG_FILE, L"Hide PV Watermark", L"Hide the watermark that's usually shown in PV viewing mode.", false, false),
|
||||
new DropdownOption(L"status_icons", PATCHES_SECTION, CONFIG_FILE, L"Network Status Icons:", L"Set the state of card reader and network status icons.", 3, std::vector<LPCWSTR>({ L"Default", L"Hidden", L"Error", L"OK", L"Partial OK" })),
|
||||
new DropdownOption(L"status_icons", PATCHES_SECTION, CONFIG_FILE, L"Top-Right Corner Icons:", L"Set the state of card reader and network status icons.", 3, std::vector<LPCWSTR>({ L"Default", L"Hidden", L"Error", L"OK", L"Partial OK" })),
|
||||
new BooleanOption(L"no_lyrics", PATCHES_SECTION, CONFIG_FILE, L"Disable Lyrics", L"Disable showing lyrics.", false, false),
|
||||
new BooleanOption(L"no_error", PATCHES_SECTION, CONFIG_FILE, L"Disable Error Banner", L"Disable the error banner on the attract screen.", true, false),
|
||||
new BooleanOption(L"hide_freeplay", PATCHES_SECTION, CONFIG_FILE, L"Hide \"FREE PLAY\"/\"CREDIT(S)\"", L"Hide the \"FREE PLAY\"/\"CREDIT(S)\" text.", false, false),
|
||||
@@ -209,37 +214,49 @@ ConfigOptionBase* optionsArray[] = {
|
||||
new BooleanOption(L"pdloadertext", PATCHES_SECTION, CONFIG_FILE, L"PD Loader FREE PLAY", L"Show \"PD Loader\" instead of \"FREE PLAY\".", true, false),
|
||||
new BooleanOption(L"no_timer", PATCHES_SECTION, CONFIG_FILE, L"Freeze Timer", L"Disable the timer.", true, false),
|
||||
new BooleanOption(L"no_timer_sprite", PATCHES_SECTION, CONFIG_FILE, L"Disable Timer Sprite", L"Disable the timer sprite.", true, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"unlock_pseudo", PATCHES_SECTION, CONFIG_FILE, L"Unlock PSEUDO modules (incomplete)", L"Lets you play any PV with any performer.\n(incomplete, recommended modules will default to Miku)", false, false),
|
||||
new BooleanOption(L"card", PATCHES_SECTION, CONFIG_FILE, L"Unlock card menu (incomplete)", L"Enables the card menu.\n(incomplete, it doesn't bypass the card prompt)", false, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"FPS.Limit.LightMode", GRAPHICS_SECTION, CONFIG_FILE, L"Use Lightweight Limiter", L"Makes the FPS limiter use less CPU.\nMay have less consistent performance.", true, false),
|
||||
new NumericOption(L"FPS.Limit", GRAPHICS_SECTION, CONFIG_FILE, L"FPS Limit:", L"Allows you to set a frame rate cap. Set to -1 to unlock the frame rate.", 60, -1, INT_MAX),
|
||||
new NumericOption(L"frm.motion.rate", GRAPHICS_SECTION, CONFIG_FILE, L"FRM Motion Rate:", L"Sets the motion rate (fps) for the Frame Rate Manager component.\nLarger values should be smoother, but more CPU intensive and possibly buggier.", 300, 1, INT_MAX),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"autopause", KEYCONFIG_SECTION, KEYCONFIG_FILE, L"Pause Automatically", L"Pause when focus is lost.", true, true),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"rumble", KEYCONFIG_SECTION, KEYCONFIG_FILE, L"XInput Rumble", L"Enables rumble during chainslides.", true, true),
|
||||
new NumericOption(L"xinput_preferred", KEYCONFIG_SECTION, KEYCONFIG_FILE, L"XInput Controller Num:", L"Sets the preferred XInput controller.\nIf unavailable, the next connected controller is used.", 0, 0, 3),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"hardware_slider", PATCHES_SECTION, CONFIG_FILE, L"Use Hardware Slider", L"Enable this if using a real arcade slider.\n(set the slider to port COM11)", false, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"opengl_patch_a", LAUNCHER_SECTION, CONFIG_FILE, L"OpenGL Patch A", L"Ignores some OpenGL-related errors. Don't use both patches at the same time unless you're know what you're doing.", false, false),
|
||||
new BooleanOption(L"opengl_patch_b", LAUNCHER_SECTION, CONFIG_FILE, L"OpenGL Patch B", L"Ignores some OpenGL-related errors. Don't use both patches at the same time unless you're know what you're doing.", false, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"custom_patches", PATCHES_SECTION, CONFIG_FILE, L"Enable Custom Patches", L"Enables all custom patches.", true, false),
|
||||
new BooleanOption(L"no_gpu_dialog", LAUNCHER_SECTION, CONFIG_FILE, L"Disable GPU Warning", L"Disables the warning dialog for unsupported GPUs.", false, false),
|
||||
//new BooleanOption(L"ignore_exe_checksum", PATCHES_SECTION, CONFIG_FILE, L"Ignore exe checksum", L"Use at your own risk.", false, false),
|
||||
new BooleanOption(L"prevent_data_deletion", PATCHES_SECTION, CONFIG_FILE, L"Prevent Data Deletion", L"Prevents the game from deleting files.", false, false),
|
||||
new StringOption(L"command_line", LAUNCHER_SECTION, CONFIG_FILE, L"Command Line:", L"Allows setting command line parameters for the game when using the launcher.\nDisabling the launcher will bypass this.", L"", false),
|
||||
new BooleanOption(L"use_divahook_bat", LAUNCHER_SECTION, CONFIG_FILE, L"Use divahook.bat", L"Launches divahook.bat intead of diva.exe.", false, false),
|
||||
new OptionMetaSeparator(),
|
||||
new OptionMetaSpacer(8),
|
||||
|
||||
new BooleanOption(L"dark_launcher", LAUNCHER_SECTION, CONFIG_FILE, L"Dark Launcher", L"Sets the dark colour scheme in the launcher.", false, false),
|
||||
new BooleanOption(L"acrylic_blur", LAUNCHER_SECTION, CONFIG_FILE, L"Acrylic Blur", L"Enables acrylic blur in the launcher on Windows 10 20H2 or later.", false, false),
|
||||
new BooleanOption(L"no_gpu_dialog", LAUNCHER_SECTION, CONFIG_FILE, L"Disable GPU Warning", L"Disables the warning dialog for unsupported GPUs.", false, false),
|
||||
};
|
||||
|
||||
ConfigOptionBase* playerdataArray[] = {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "PluginConfig.h"
|
||||
#include "GPUModel.h"
|
||||
#include "WineVer.h"
|
||||
#include "composition.h"
|
||||
|
||||
namespace Launcher {
|
||||
|
||||
@@ -20,6 +21,8 @@ namespace Launcher {
|
||||
using namespace System::Drawing;
|
||||
using namespace msclr::interop;
|
||||
|
||||
HWND hWnd;
|
||||
|
||||
/// <summary>
|
||||
/// Summary for ui
|
||||
/// </summary>
|
||||
@@ -29,7 +32,9 @@ namespace Launcher {
|
||||
ui(void)
|
||||
{
|
||||
InitializeComponent();
|
||||
this->button_Discord->Cursor = Cursors::Hand;
|
||||
|
||||
hWnd = (HWND)Control::Handle.ToPointer();
|
||||
|
||||
this->ClientSize = Drawing::Size(444, 323);
|
||||
TabPadding^ tabpad = gcnew TabPadding(tabControl);
|
||||
|
||||
@@ -94,6 +99,7 @@ namespace Launcher {
|
||||
option->hasChanged = OptionsConfigChanged;
|
||||
detailsY += option->AddToPanel(panel_Details, 12, detailsY, toolTip1);
|
||||
}
|
||||
trackBar_LagCompensation->Value = GetIniInt(GRAPHICS_SECTION, L"lag_compensation", 0, CONFIG_FILE);
|
||||
this->panel_Details->ResumeLayout(false);
|
||||
this->panel_Details->PerformLayout();
|
||||
|
||||
@@ -178,8 +184,15 @@ namespace Launcher {
|
||||
int argc = 1;
|
||||
char* argv[1] = { (char*)"" };
|
||||
|
||||
|
||||
updateLagCompMsec();
|
||||
|
||||
updateStyle();
|
||||
|
||||
|
||||
glutInit(&argc, argv);
|
||||
int window = glutCreateWindow("glut"); // a context must be created to use glGetString
|
||||
glutHideWindow();
|
||||
|
||||
String^ vendor = gcnew String((char*)glGetString(GL_VENDOR));
|
||||
vendor = vendor->Replace(" Corporation", ""); // this is useless.. remove it to help ensure the GPU type line fits
|
||||
@@ -249,13 +262,13 @@ namespace Launcher {
|
||||
{
|
||||
this->labelGPU->Text += "Issues: May have minor noise on some stages.\n(Click for more information)";
|
||||
GPUIssueText = "On Maxwell GPUs (~GTX 900) or newer, some minor stage shaders create noise.\nPlease make sure the ShaderPatch plugin is enabled.";
|
||||
this->labelGPU->LinkColor = System::Drawing::Color::Yellow;
|
||||
this->labelGPU->LinkColor = System::Drawing::Color::Teal;
|
||||
}
|
||||
else if (gpuModel->StartsWith("GK"))
|
||||
{
|
||||
this->labelGPU->Text += "Issues: None.";
|
||||
GPUIssueText = "Your GPU should have no issues running the game.";
|
||||
this->labelGPU->LinkColor = System::Drawing::Color::Lime;
|
||||
this->labelGPU->LinkColor = System::Drawing::Color::LightBlue;
|
||||
}
|
||||
else if (gpuModel->StartsWith("GF"))
|
||||
{
|
||||
@@ -270,7 +283,7 @@ namespace Launcher {
|
||||
{
|
||||
this->labelGPU->Text += "Issues: No known issues.";
|
||||
GPUIssueText = "Your GPU should have no issues running the game, but it is older than the GPU the game was originally designed for (GTX 650 Ti).\nThere may be some issues with graphics.\nPlease report any issues so that they can be analysed and potentially fixed.";
|
||||
this->labelGPU->LinkColor = System::Drawing::Color::Lime;
|
||||
this->labelGPU->LinkColor = System::Drawing::Color::Teal;
|
||||
}
|
||||
}
|
||||
else if (version[0] >= '4' && gpuModel->Length > 0 && !gpuModel->StartsWith("Unk") && !gpuModel->StartsWith("Oth"))
|
||||
@@ -313,8 +326,101 @@ namespace Launcher {
|
||||
delete components;
|
||||
}
|
||||
}
|
||||
|
||||
void OnPaintBackground(PaintEventArgs e) override
|
||||
{
|
||||
}
|
||||
|
||||
/*property System::Windows::Forms::CreateParams^ CreateParams
|
||||
{
|
||||
virtual System::Windows::Forms::CreateParams^ get() override
|
||||
{
|
||||
System::Windows::Forms::CreateParams^ params = Form::CreateParams;
|
||||
params->ExStyle |= 0x00200000L;
|
||||
|
||||
return params;
|
||||
}
|
||||
}*/
|
||||
|
||||
void updateLagCompMsec()
|
||||
{
|
||||
this->groupBox_Lag->Text = "Lag Compensation (" + this->trackBar_LagCompensation->Value * 10 + " msec)";
|
||||
}
|
||||
|
||||
void updateStyle()
|
||||
{
|
||||
int nDarkLauncher = GetPrivateProfileIntW(LAUNCHER_SECTION, L"dark_launcher", FALSE, CONFIG_FILE);
|
||||
int nAcrylicLauncher = GetPrivateProfileIntW(LAUNCHER_SECTION, L"acrylic_blur", FALSE, CONFIG_FILE);
|
||||
|
||||
bool useAcrylic = nAcrylicLauncher && setBlur(hWnd, AccentState::ACCENT_ENABLE_ACRYLICBLURBEHIND);
|
||||
|
||||
Color colourBg, colourBg2, colourFg;
|
||||
|
||||
if (nDarkLauncher)
|
||||
{
|
||||
setDarkTheme(hWnd);
|
||||
colourFg = Color::White;
|
||||
colourBg = Color::FromArgb(64, 64, 64); // tabControl
|
||||
colourBg2 = Color::Black;
|
||||
}
|
||||
else
|
||||
{
|
||||
setDarkTheme(hWnd, false);
|
||||
colourFg = Color::FromArgb(64, 64, 64);
|
||||
colourBg = Color::White; // tabControl
|
||||
colourBg2 = Color::FromArgb(242, 242, 242);
|
||||
}
|
||||
|
||||
if (useAcrylic)
|
||||
{
|
||||
colourBg2 = Color::FromArgb(255, 255, 255);
|
||||
this->button_Discord->BackColor = colourBg2;
|
||||
this->button_github->BackColor = colourBg2;
|
||||
this->button_Wiki->BackColor = colourBg2;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->button_Discord->BackColor = Color::Transparent;
|
||||
this->button_github->BackColor = Color::Transparent;
|
||||
this->button_Wiki->BackColor = Color::Transparent;
|
||||
}
|
||||
|
||||
this->tabPage_Resolution->BackColor = colourBg;
|
||||
this->tabPage_Resolution->ForeColor = colourFg;
|
||||
this->tabPage_Patches->BackColor = colourBg;
|
||||
this->tabPage_Patches->ForeColor = colourFg;
|
||||
this->tabPage_Playerdata->BackColor = colourBg;
|
||||
this->tabPage_Playerdata->ForeColor = colourFg;
|
||||
this->tabPage_Plugins->BackColor = colourBg;
|
||||
this->tabPage_Plugins->ForeColor = colourFg;
|
||||
this->tabPage_Components->BackColor = colourBg;
|
||||
this->tabPage_Components->ForeColor = colourFg;
|
||||
this->creditsTextBox->BackColor = colourBg;
|
||||
this->creditsTextBox->ForeColor = colourFg;
|
||||
|
||||
this->tabControl->BackColor = colourBg;
|
||||
this->tabControl->ForeColor = colourFg;
|
||||
|
||||
this->BackColor = colourBg2;
|
||||
|
||||
this->button_Launch->BackColor = colourBg;
|
||||
this->button_Launch->ForeColor = colourFg;
|
||||
this->button_Apply->BackColor = colourBg;
|
||||
this->button_Apply->ForeColor = colourFg;
|
||||
|
||||
this->labelGPU->ForeColor = colourFg;
|
||||
|
||||
this->groupBox_Details->ForeColor = colourFg;
|
||||
this->groupBox_InternalRes->ForeColor = colourFg;
|
||||
this->groupBox_Lag->ForeColor = colourFg;
|
||||
this->groupBox_ScreenRes->ForeColor = colourFg;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private: System::Windows::Forms::Button^ button_Launch;
|
||||
private: System::Windows::Forms::Button^ button_Help;
|
||||
|
||||
private: System::Windows::Forms::GroupBox^ groupBox_ScreenRes;
|
||||
private: System::Windows::Forms::TabControl^ tabControl;
|
||||
private: System::Windows::Forms::TabPage^ tabPage_Resolution;
|
||||
@@ -333,7 +439,7 @@ namespace Launcher {
|
||||
private: System::Windows::Forms::Panel^ panel_ScreenRes;
|
||||
private: System::Windows::Forms::Panel^ panel_IntRes;
|
||||
private: System::Windows::Forms::LinkLabel^ labelGPU;
|
||||
private: System::Windows::Forms::Button^ button_Apply;
|
||||
|
||||
|
||||
|
||||
private: System::Windows::Forms::TabPage^ tabPage_Credits;
|
||||
@@ -341,6 +447,14 @@ private: System::Windows::Forms::TextBox^ creditsTextBox;
|
||||
private: System::Windows::Forms::GroupBox^ groupBox_Details;
|
||||
private: System::Windows::Forms::Panel^ panel_Details;
|
||||
private: System::Windows::Forms::Panel^ panel_Custom;
|
||||
private: System::Windows::Forms::Button^ button_Apply;
|
||||
private: System::Windows::Forms::GroupBox^ groupBox_Lag;
|
||||
private: System::Windows::Forms::TrackBar^ trackBar_LagCompensation;
|
||||
private: System::Windows::Forms::Button^ button_Wiki;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -375,11 +489,12 @@ private: System::Windows::Forms::Panel^ panel_Custom;
|
||||
this->components = (gcnew System::ComponentModel::Container());
|
||||
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(ui::typeid));
|
||||
this->button_Launch = (gcnew System::Windows::Forms::Button());
|
||||
this->button_Help = (gcnew System::Windows::Forms::Button());
|
||||
this->groupBox_ScreenRes = (gcnew System::Windows::Forms::GroupBox());
|
||||
this->panel_ScreenRes = (gcnew System::Windows::Forms::Panel());
|
||||
this->tabControl = (gcnew System::Windows::Forms::TabControl());
|
||||
this->tabPage_Resolution = (gcnew System::Windows::Forms::TabPage());
|
||||
this->groupBox_Lag = (gcnew System::Windows::Forms::GroupBox());
|
||||
this->trackBar_LagCompensation = (gcnew System::Windows::Forms::TrackBar());
|
||||
this->groupBox_Details = (gcnew System::Windows::Forms::GroupBox());
|
||||
this->panel_Details = (gcnew System::Windows::Forms::Panel());
|
||||
this->labelGPU = (gcnew System::Windows::Forms::LinkLabel());
|
||||
@@ -400,9 +515,12 @@ private: System::Windows::Forms::Panel^ panel_Custom;
|
||||
this->button_github = (gcnew System::Windows::Forms::Button());
|
||||
this->toolTip1 = (gcnew System::Windows::Forms::ToolTip(this->components));
|
||||
this->button_Apply = (gcnew System::Windows::Forms::Button());
|
||||
this->button_Wiki = (gcnew System::Windows::Forms::Button());
|
||||
this->groupBox_ScreenRes->SuspendLayout();
|
||||
this->tabControl->SuspendLayout();
|
||||
this->tabPage_Resolution->SuspendLayout();
|
||||
this->groupBox_Lag->SuspendLayout();
|
||||
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->trackBar_LagCompensation))->BeginInit();
|
||||
this->groupBox_Details->SuspendLayout();
|
||||
this->groupBox_InternalRes->SuspendLayout();
|
||||
this->tabPage_Patches->SuspendLayout();
|
||||
@@ -411,57 +529,29 @@ private: System::Windows::Forms::Panel^ panel_Custom;
|
||||
this->tabPage_Plugins->SuspendLayout();
|
||||
this->tabPage_Credits->SuspendLayout();
|
||||
this->SuspendLayout();
|
||||
//
|
||||
// button_Launch
|
||||
//
|
||||
this->button_Launch->BackColor = System::Drawing::Color::White;
|
||||
this->button_Launch->FlatAppearance->BorderColor = System::Drawing::SystemColors::Control;
|
||||
this->button_Launch->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->button_Launch->Location = System::Drawing::Point(4, 496);
|
||||
this->button_Launch->Margin = System::Windows::Forms::Padding(4);
|
||||
this->button_Launch->Location = System::Drawing::Point(172, 389);
|
||||
this->button_Launch->Name = L"button_Launch";
|
||||
this->button_Launch->Size = System::Drawing::Size(102, 34);
|
||||
this->button_Launch->Size = System::Drawing::Size(217, 23);
|
||||
this->button_Launch->TabIndex = 20;
|
||||
this->button_Launch->Text = L"Launch";
|
||||
this->button_Launch->UseVisualStyleBackColor = false;
|
||||
this->button_Launch->Click += gcnew System::EventHandler(this, &ui::Button_Launch_Click);
|
||||
//
|
||||
// button_Help
|
||||
//
|
||||
this->button_Help->DialogResult = System::Windows::Forms::DialogResult::Cancel;
|
||||
this->button_Help->FlatAppearance->BorderColor = System::Drawing::SystemColors::Control;
|
||||
this->button_Help->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->button_Help->Location = System::Drawing::Point(114, 496);
|
||||
this->button_Help->Margin = System::Windows::Forms::Padding(4);
|
||||
this->button_Help->Name = L"button_Help";
|
||||
this->button_Help->Size = System::Drawing::Size(104, 34);
|
||||
this->button_Help->TabIndex = 21;
|
||||
this->button_Help->Text = L"User guide";
|
||||
this->button_Help->Click += gcnew System::EventHandler(this, &ui::Button_Help_Click);
|
||||
//
|
||||
// groupBox_ScreenRes
|
||||
//
|
||||
this->groupBox_ScreenRes->Controls->Add(this->panel_ScreenRes);
|
||||
this->groupBox_ScreenRes->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->groupBox_ScreenRes->ForeColor = System::Drawing::Color::White;
|
||||
this->groupBox_ScreenRes->Location = System::Drawing::Point(8, 9);
|
||||
this->groupBox_ScreenRes->Margin = System::Windows::Forms::Padding(4);
|
||||
this->groupBox_ScreenRes->Location = System::Drawing::Point(5, 6);
|
||||
this->groupBox_ScreenRes->Name = L"groupBox_ScreenRes";
|
||||
this->groupBox_ScreenRes->Padding = System::Windows::Forms::Padding(4);
|
||||
this->groupBox_ScreenRes->Size = System::Drawing::Size(395, 170);
|
||||
this->groupBox_ScreenRes->Size = System::Drawing::Size(263, 113);
|
||||
this->groupBox_ScreenRes->TabIndex = 10;
|
||||
this->groupBox_ScreenRes->TabStop = false;
|
||||
this->groupBox_ScreenRes->Text = L"Screen Resolution";
|
||||
//
|
||||
// panel_ScreenRes
|
||||
//
|
||||
this->panel_ScreenRes->AutoScroll = true;
|
||||
this->panel_ScreenRes->Location = System::Drawing::Point(8, 28);
|
||||
this->panel_ScreenRes->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_ScreenRes->Location = System::Drawing::Point(5, 19);
|
||||
this->panel_ScreenRes->Name = L"panel_ScreenRes";
|
||||
this->panel_ScreenRes->Size = System::Drawing::Size(379, 134);
|
||||
this->panel_ScreenRes->Size = System::Drawing::Size(253, 89);
|
||||
this->panel_ScreenRes->TabIndex = 0;
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this->tabControl->Controls->Add(this->tabPage_Resolution);
|
||||
this->tabControl->Controls->Add(this->tabPage_Patches);
|
||||
this->tabControl->Controls->Add(this->tabPage_Playerdata);
|
||||
@@ -469,288 +559,242 @@ private: System::Windows::Forms::Panel^ panel_Custom;
|
||||
this->tabControl->Controls->Add(this->tabPage_Plugins);
|
||||
this->tabControl->Controls->Add(this->tabPage_Credits);
|
||||
this->tabControl->Location = System::Drawing::Point(0, 0);
|
||||
this->tabControl->Margin = System::Windows::Forms::Padding(4);
|
||||
this->tabControl->Name = L"tabControl";
|
||||
this->tabControl->SelectedIndex = 0;
|
||||
this->tabControl->Size = System::Drawing::Size(777, 489);
|
||||
this->tabControl->Size = System::Drawing::Size(560, 384);
|
||||
this->tabControl->TabIndex = 10;
|
||||
//
|
||||
// tabPage_Resolution
|
||||
//
|
||||
this->tabPage_Resolution->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Resolution->BackColor = System::Drawing::Color::White;
|
||||
this->tabPage_Resolution->BackgroundImageLayout = System::Windows::Forms::ImageLayout::Stretch;
|
||||
this->tabPage_Resolution->Controls->Add(this->groupBox_Lag);
|
||||
this->tabPage_Resolution->Controls->Add(this->groupBox_Details);
|
||||
this->tabPage_Resolution->Controls->Add(this->labelGPU);
|
||||
this->tabPage_Resolution->Controls->Add(this->groupBox_InternalRes);
|
||||
this->tabPage_Resolution->Controls->Add(this->groupBox_ScreenRes);
|
||||
this->tabPage_Resolution->Location = System::Drawing::Point(4, 29);
|
||||
this->tabPage_Resolution->Margin = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Resolution->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Resolution->Location = System::Drawing::Point(4, 22);
|
||||
this->tabPage_Resolution->Name = L"tabPage_Resolution";
|
||||
this->tabPage_Resolution->Padding = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Resolution->Size = System::Drawing::Size(769, 456);
|
||||
this->tabPage_Resolution->Padding = System::Windows::Forms::Padding(3);
|
||||
this->tabPage_Resolution->Size = System::Drawing::Size(552, 358);
|
||||
this->tabPage_Resolution->TabIndex = 0;
|
||||
this->tabPage_Resolution->Text = L"Graphics";
|
||||
//
|
||||
// groupBox_Details
|
||||
//
|
||||
this->groupBox_Lag->Controls->Add(this->trackBar_LagCompensation);
|
||||
this->groupBox_Lag->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->groupBox_Lag->Location = System::Drawing::Point(5, 282);
|
||||
this->groupBox_Lag->Name = L"groupBox_Lag";
|
||||
this->groupBox_Lag->Size = System::Drawing::Size(263, 70);
|
||||
this->groupBox_Lag->TabIndex = 21;
|
||||
this->groupBox_Lag->TabStop = false;
|
||||
this->groupBox_Lag->Text = L"Lag Compensation";
|
||||
this->trackBar_LagCompensation->Location = System::Drawing::Point(7, 20);
|
||||
this->trackBar_LagCompensation->Maximum = 50;
|
||||
this->trackBar_LagCompensation->Name = L"trackBar_LagCompensation";
|
||||
this->trackBar_LagCompensation->Size = System::Drawing::Size(250, 45);
|
||||
this->trackBar_LagCompensation->TabIndex = 0;
|
||||
this->trackBar_LagCompensation->ValueChanged += gcnew System::EventHandler(this, &ui::trackBar_LagCompensation_ValueChanged);
|
||||
this->groupBox_Details->Controls->Add(this->panel_Details);
|
||||
this->groupBox_Details->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->groupBox_Details->ForeColor = System::Drawing::Color::White;
|
||||
this->groupBox_Details->Location = System::Drawing::Point(411, 9);
|
||||
this->groupBox_Details->Margin = System::Windows::Forms::Padding(4);
|
||||
this->groupBox_Details->Location = System::Drawing::Point(274, 6);
|
||||
this->groupBox_Details->Name = L"groupBox_Details";
|
||||
this->groupBox_Details->Padding = System::Windows::Forms::Padding(4);
|
||||
this->groupBox_Details->Size = System::Drawing::Size(350, 439);
|
||||
this->groupBox_Details->Size = System::Drawing::Size(272, 346);
|
||||
this->groupBox_Details->TabIndex = 11;
|
||||
this->groupBox_Details->TabStop = false;
|
||||
this->groupBox_Details->Text = L"Details";
|
||||
//
|
||||
// panel_Details
|
||||
//
|
||||
this->panel_Details->AutoScroll = true;
|
||||
this->panel_Details->Location = System::Drawing::Point(8, 28);
|
||||
this->panel_Details->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_Details->Location = System::Drawing::Point(5, 19);
|
||||
this->panel_Details->Name = L"panel_Details";
|
||||
this->panel_Details->Size = System::Drawing::Size(334, 403);
|
||||
this->panel_Details->Size = System::Drawing::Size(261, 321);
|
||||
this->panel_Details->TabIndex = 0;
|
||||
//
|
||||
// labelGPU
|
||||
//
|
||||
this->labelGPU->AutoSize = true;
|
||||
this->labelGPU->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(80)), static_cast<System::Int32>(static_cast<System::Byte>(24)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(24)), static_cast<System::Int32>(static_cast<System::Byte>(24)));
|
||||
this->labelGPU->Location = System::Drawing::Point(8, 314);
|
||||
this->labelGPU->MinimumSize = System::Drawing::Size(395, 20);
|
||||
this->labelGPU->BackColor = System::Drawing::Color::Transparent;
|
||||
this->labelGPU->ForeColor = System::Drawing::Color::Black;
|
||||
this->labelGPU->Location = System::Drawing::Point(5, 209);
|
||||
this->labelGPU->Margin = System::Windows::Forms::Padding(2, 0, 2, 0);
|
||||
this->labelGPU->MinimumSize = System::Drawing::Size(263, 13);
|
||||
this->labelGPU->Name = L"labelGPU";
|
||||
this->labelGPU->Size = System::Drawing::Size(395, 20);
|
||||
this->labelGPU->Size = System::Drawing::Size(263, 13);
|
||||
this->labelGPU->TabIndex = 21;
|
||||
this->labelGPU->TextAlign = System::Drawing::ContentAlignment::MiddleLeft;
|
||||
//
|
||||
// groupBox_InternalRes
|
||||
//
|
||||
this->groupBox_InternalRes->Controls->Add(this->panel_IntRes);
|
||||
this->groupBox_InternalRes->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->groupBox_InternalRes->ForeColor = System::Drawing::Color::White;
|
||||
this->groupBox_InternalRes->Location = System::Drawing::Point(8, 186);
|
||||
this->groupBox_InternalRes->Margin = System::Windows::Forms::Padding(4);
|
||||
this->groupBox_InternalRes->Location = System::Drawing::Point(5, 124);
|
||||
this->groupBox_InternalRes->Name = L"groupBox_InternalRes";
|
||||
this->groupBox_InternalRes->Padding = System::Windows::Forms::Padding(4);
|
||||
this->groupBox_InternalRes->Size = System::Drawing::Size(395, 124);
|
||||
this->groupBox_InternalRes->Size = System::Drawing::Size(263, 83);
|
||||
this->groupBox_InternalRes->TabIndex = 20;
|
||||
this->groupBox_InternalRes->TabStop = false;
|
||||
this->groupBox_InternalRes->Text = L"Internal Resolution (Quality)";
|
||||
//
|
||||
// panel_IntRes
|
||||
//
|
||||
this->panel_IntRes->AutoScroll = true;
|
||||
this->panel_IntRes->Location = System::Drawing::Point(8, 28);
|
||||
this->panel_IntRes->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_IntRes->Location = System::Drawing::Point(5, 19);
|
||||
this->panel_IntRes->Name = L"panel_IntRes";
|
||||
this->panel_IntRes->Size = System::Drawing::Size(379, 88);
|
||||
this->panel_IntRes->Size = System::Drawing::Size(253, 59);
|
||||
this->panel_IntRes->TabIndex = 1;
|
||||
//
|
||||
// tabPage_Patches
|
||||
//
|
||||
this->tabPage_Patches->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Patches->BackColor = System::Drawing::Color::White;
|
||||
this->tabPage_Patches->Controls->Add(this->panel_Patches);
|
||||
this->tabPage_Patches->Location = System::Drawing::Point(4, 29);
|
||||
this->tabPage_Patches->Margin = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Patches->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Patches->Location = System::Drawing::Point(4, 22);
|
||||
this->tabPage_Patches->Name = L"tabPage_Patches";
|
||||
this->tabPage_Patches->Size = System::Drawing::Size(769, 456);
|
||||
this->tabPage_Patches->Size = System::Drawing::Size(552, 358);
|
||||
this->tabPage_Patches->TabIndex = 1;
|
||||
this->tabPage_Patches->Text = L"Options";
|
||||
//
|
||||
// panel_Patches
|
||||
//
|
||||
this->panel_Patches->AutoScroll = true;
|
||||
this->panel_Patches->Location = System::Drawing::Point(0, 0);
|
||||
this->panel_Patches->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_Patches->Name = L"panel_Patches";
|
||||
this->panel_Patches->Size = System::Drawing::Size(769, 448);
|
||||
this->panel_Patches->Size = System::Drawing::Size(552, 358);
|
||||
this->panel_Patches->TabIndex = 9;
|
||||
//
|
||||
// tabPage_Playerdata
|
||||
//
|
||||
this->tabPage_Playerdata->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Playerdata->BackColor = System::Drawing::Color::White;
|
||||
this->tabPage_Playerdata->Controls->Add(this->panel_Playerdata);
|
||||
this->tabPage_Playerdata->Location = System::Drawing::Point(4, 29);
|
||||
this->tabPage_Playerdata->Margin = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Playerdata->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Playerdata->Location = System::Drawing::Point(4, 22);
|
||||
this->tabPage_Playerdata->Name = L"tabPage_Playerdata";
|
||||
this->tabPage_Playerdata->Size = System::Drawing::Size(769, 456);
|
||||
this->tabPage_Playerdata->Size = System::Drawing::Size(552, 358);
|
||||
this->tabPage_Playerdata->TabIndex = 3;
|
||||
this->tabPage_Playerdata->Text = L"Player";
|
||||
//
|
||||
// panel_Playerdata
|
||||
//
|
||||
this->panel_Playerdata->AutoScroll = true;
|
||||
this->panel_Playerdata->Location = System::Drawing::Point(0, 0);
|
||||
this->panel_Playerdata->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_Playerdata->Name = L"panel_Playerdata";
|
||||
this->panel_Playerdata->Size = System::Drawing::Size(769, 448);
|
||||
this->panel_Playerdata->Size = System::Drawing::Size(552, 358);
|
||||
this->panel_Playerdata->TabIndex = 1;
|
||||
//
|
||||
// tabPage_Components
|
||||
//
|
||||
this->tabPage_Components->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Components->BackColor = System::Drawing::Color::White;
|
||||
this->tabPage_Components->Controls->Add(this->panel_Components);
|
||||
this->tabPage_Components->Location = System::Drawing::Point(4, 29);
|
||||
this->tabPage_Components->Margin = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Components->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Components->Location = System::Drawing::Point(4, 22);
|
||||
this->tabPage_Components->Name = L"tabPage_Components";
|
||||
this->tabPage_Components->Padding = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Components->Size = System::Drawing::Size(769, 456);
|
||||
this->tabPage_Components->Padding = System::Windows::Forms::Padding(3);
|
||||
this->tabPage_Components->Size = System::Drawing::Size(552, 358);
|
||||
this->tabPage_Components->TabIndex = 2;
|
||||
this->tabPage_Components->Text = L"Components";
|
||||
//
|
||||
// panel_Components
|
||||
//
|
||||
this->panel_Components->AutoScroll = true;
|
||||
this->panel_Components->Location = System::Drawing::Point(0, 0);
|
||||
this->panel_Components->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_Components->Name = L"panel_Components";
|
||||
this->panel_Components->Size = System::Drawing::Size(769, 448);
|
||||
this->panel_Components->Size = System::Drawing::Size(552, 358);
|
||||
this->panel_Components->TabIndex = 0;
|
||||
//
|
||||
// tabPage_Plugins
|
||||
//
|
||||
this->tabPage_Plugins->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Plugins->BackColor = System::Drawing::Color::White;
|
||||
this->tabPage_Plugins->Controls->Add(this->panel_Custom);
|
||||
this->tabPage_Plugins->Controls->Add(this->panel_Plugins);
|
||||
this->tabPage_Plugins->Location = System::Drawing::Point(4, 29);
|
||||
this->tabPage_Plugins->Margin = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Plugins->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->tabPage_Plugins->Location = System::Drawing::Point(4, 22);
|
||||
this->tabPage_Plugins->Name = L"tabPage_Plugins";
|
||||
this->tabPage_Plugins->Padding = System::Windows::Forms::Padding(4);
|
||||
this->tabPage_Plugins->Size = System::Drawing::Size(769, 456);
|
||||
this->tabPage_Plugins->Padding = System::Windows::Forms::Padding(3);
|
||||
this->tabPage_Plugins->Size = System::Drawing::Size(552, 358);
|
||||
this->tabPage_Plugins->TabIndex = 3;
|
||||
this->tabPage_Plugins->Text = L"Plugins and Patches";
|
||||
//
|
||||
// panel_Custom
|
||||
//
|
||||
this->panel_Custom->AutoScroll = true;
|
||||
this->panel_Custom->Location = System::Drawing::Point(385, 0);
|
||||
this->panel_Custom->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_Custom->Location = System::Drawing::Point(276, 0);
|
||||
this->panel_Custom->Name = L"panel_Custom";
|
||||
this->panel_Custom->Size = System::Drawing::Size(384, 448);
|
||||
this->panel_Custom->Size = System::Drawing::Size(276, 358);
|
||||
this->panel_Custom->TabIndex = 3;
|
||||
//
|
||||
// panel_Plugins
|
||||
//
|
||||
this->panel_Plugins->AutoScroll = true;
|
||||
this->panel_Plugins->Location = System::Drawing::Point(0, 0);
|
||||
this->panel_Plugins->Margin = System::Windows::Forms::Padding(4);
|
||||
this->panel_Plugins->Name = L"panel_Plugins";
|
||||
this->panel_Plugins->Size = System::Drawing::Size(384, 444);
|
||||
this->panel_Plugins->Size = System::Drawing::Size(276, 358);
|
||||
this->panel_Plugins->TabIndex = 0;
|
||||
//
|
||||
// tabPage_Credits
|
||||
//
|
||||
this->tabPage_Credits->Controls->Add(this->creditsTextBox);
|
||||
this->tabPage_Credits->Location = System::Drawing::Point(4, 29);
|
||||
this->tabPage_Credits->Location = System::Drawing::Point(4, 22);
|
||||
this->tabPage_Credits->Margin = System::Windows::Forms::Padding(2);
|
||||
this->tabPage_Credits->Name = L"tabPage_Credits";
|
||||
this->tabPage_Credits->Padding = System::Windows::Forms::Padding(3);
|
||||
this->tabPage_Credits->Size = System::Drawing::Size(769, 456);
|
||||
this->tabPage_Credits->Padding = System::Windows::Forms::Padding(2);
|
||||
this->tabPage_Credits->Size = System::Drawing::Size(552, 358);
|
||||
this->tabPage_Credits->TabIndex = 5;
|
||||
this->tabPage_Credits->Text = L"Credits";
|
||||
this->tabPage_Credits->UseVisualStyleBackColor = true;
|
||||
//
|
||||
// creditsTextBox
|
||||
//
|
||||
this->creditsTextBox->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
this->creditsTextBox->BackColor = System::Drawing::Color::White;
|
||||
this->creditsTextBox->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->creditsTextBox->ForeColor = System::Drawing::Color::White;
|
||||
this->creditsTextBox->Location = System::Drawing::Point(0, 0);
|
||||
this->creditsTextBox->Margin = System::Windows::Forms::Padding(2);
|
||||
this->creditsTextBox->Multiline = true;
|
||||
this->creditsTextBox->Name = L"creditsTextBox";
|
||||
this->creditsTextBox->ReadOnly = true;
|
||||
this->creditsTextBox->ScrollBars = System::Windows::Forms::ScrollBars::Both;
|
||||
this->creditsTextBox->Size = System::Drawing::Size(769, 456);
|
||||
this->creditsTextBox->Size = System::Drawing::Size(552, 358);
|
||||
this->creditsTextBox->TabIndex = 0;
|
||||
this->creditsTextBox->Text = resources->GetString(L"creditsTextBox.Text");
|
||||
//
|
||||
// button_Discord
|
||||
//
|
||||
this->button_Discord->BackColor = System::Drawing::Color::Transparent;
|
||||
this->button_Discord->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(242)), static_cast<System::Int32>(static_cast<System::Byte>(242)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(242)));
|
||||
this->button_Discord->Cursor = System::Windows::Forms::Cursors::Hand;
|
||||
this->button_Discord->FlatAppearance->BorderSize = 0;
|
||||
this->button_Discord->FlatAppearance->MouseDownBackColor = System::Drawing::Color::Transparent;
|
||||
this->button_Discord->FlatAppearance->MouseOverBackColor = System::Drawing::Color::Transparent;
|
||||
this->button_Discord->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->button_Discord->Image = (cli::safe_cast<System::Drawing::Image^>(resources->GetObject(L"button_Discord.Image")));
|
||||
this->button_Discord->Location = System::Drawing::Point(674, 489);
|
||||
this->button_Discord->Margin = System::Windows::Forms::Padding(4);
|
||||
this->button_Discord->Location = System::Drawing::Point(496, 384);
|
||||
this->button_Discord->Name = L"button_Discord";
|
||||
this->button_Discord->Size = System::Drawing::Size(48, 48);
|
||||
this->button_Discord->Size = System::Drawing::Size(32, 32);
|
||||
this->button_Discord->TabIndex = 31;
|
||||
this->button_Discord->UseVisualStyleBackColor = false;
|
||||
this->button_Discord->Click += gcnew System::EventHandler(this, &ui::button_Discord_Click);
|
||||
//
|
||||
// button_github
|
||||
//
|
||||
this->button_github->BackColor = System::Drawing::Color::Transparent;
|
||||
this->button_github->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(242)), static_cast<System::Int32>(static_cast<System::Byte>(242)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(242)));
|
||||
this->button_github->Cursor = System::Windows::Forms::Cursors::Hand;
|
||||
this->button_github->FlatAppearance->BorderSize = 0;
|
||||
this->button_github->FlatAppearance->MouseDownBackColor = System::Drawing::Color::Transparent;
|
||||
this->button_github->FlatAppearance->MouseOverBackColor = System::Drawing::Color::Transparent;
|
||||
this->button_github->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->button_github->Image = (cli::safe_cast<System::Drawing::Image^>(resources->GetObject(L"button_github.Image")));
|
||||
this->button_github->Location = System::Drawing::Point(729, 489);
|
||||
this->button_github->Margin = System::Windows::Forms::Padding(4);
|
||||
this->button_github->Location = System::Drawing::Point(528, 384);
|
||||
this->button_github->Name = L"button_github";
|
||||
this->button_github->Size = System::Drawing::Size(48, 48);
|
||||
this->button_github->Size = System::Drawing::Size(32, 32);
|
||||
this->button_github->TabIndex = 32;
|
||||
this->button_github->UseVisualStyleBackColor = false;
|
||||
this->button_github->Click += gcnew System::EventHandler(this, &ui::button_github_Click);
|
||||
//
|
||||
// button_Apply
|
||||
//
|
||||
this->button_Apply->BackColor = System::Drawing::Color::White;
|
||||
this->button_Apply->FlatAppearance->BorderColor = System::Drawing::SystemColors::Control;
|
||||
this->button_Apply->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->button_Apply->Location = System::Drawing::Point(225, 496);
|
||||
this->button_Apply->Margin = System::Windows::Forms::Padding(4);
|
||||
this->button_Apply->Location = System::Drawing::Point(4, 389);
|
||||
this->button_Apply->Name = L"button_Apply";
|
||||
this->button_Apply->Size = System::Drawing::Size(104, 34);
|
||||
this->button_Apply->Size = System::Drawing::Size(69, 23);
|
||||
this->button_Apply->TabIndex = 33;
|
||||
this->button_Apply->Text = L"Apply";
|
||||
this->button_Apply->UseVisualStyleBackColor = false;
|
||||
this->button_Apply->Click += gcnew System::EventHandler(this, &ui::button_Apply_Click);
|
||||
//
|
||||
// ui
|
||||
//
|
||||
this->button_Wiki->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(242)), static_cast<System::Int32>(static_cast<System::Byte>(242)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(242)));
|
||||
this->button_Wiki->BackgroundImage = (cli::safe_cast<System::Drawing::Image^>(resources->GetObject(L"button_Wiki.BackgroundImage")));
|
||||
this->button_Wiki->BackgroundImageLayout = System::Windows::Forms::ImageLayout::Stretch;
|
||||
this->button_Wiki->Cursor = System::Windows::Forms::Cursors::Hand;
|
||||
this->button_Wiki->FlatAppearance->BorderSize = 0;
|
||||
this->button_Wiki->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
|
||||
this->button_Wiki->Location = System::Drawing::Point(464, 384);
|
||||
this->button_Wiki->Name = L"button_Wiki";
|
||||
this->button_Wiki->Size = System::Drawing::Size(32, 32);
|
||||
this->button_Wiki->TabIndex = 34;
|
||||
this->button_Wiki->UseVisualStyleBackColor = false;
|
||||
this->button_Wiki->Click += gcnew System::EventHandler(this, &ui::button_Wiki_Click);
|
||||
this->AcceptButton = this->button_Launch;
|
||||
this->AutoScaleDimensions = System::Drawing::SizeF(144, 144);
|
||||
this->AutoScaleDimensions = System::Drawing::SizeF(96, 96);
|
||||
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Dpi;
|
||||
this->AutoSize = true;
|
||||
this->AutoSizeMode = System::Windows::Forms::AutoSizeMode::GrowAndShrink;
|
||||
this->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->BackColor = System::Drawing::Color::Magenta;
|
||||
this->BackgroundImageLayout = System::Windows::Forms::ImageLayout::Stretch;
|
||||
this->ClientSize = System::Drawing::Size(778, 538);
|
||||
this->ClientSize = System::Drawing::Size(560, 417);
|
||||
this->Controls->Add(this->button_Wiki);
|
||||
this->Controls->Add(this->button_Apply);
|
||||
this->Controls->Add(this->tabControl);
|
||||
this->Controls->Add(this->button_Help);
|
||||
this->Controls->Add(this->button_Launch);
|
||||
this->Controls->Add(this->button_github);
|
||||
this->Controls->Add(this->button_Discord);
|
||||
this->DoubleBuffered = true;
|
||||
this->ForeColor = System::Drawing::Color::White;
|
||||
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
|
||||
this->ForeColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
|
||||
static_cast<System::Int32>(static_cast<System::Byte>(64)));
|
||||
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::Fixed3D;
|
||||
this->HelpButton = true;
|
||||
this->Icon = (cli::safe_cast<System::Drawing::Icon^>(resources->GetObject(L"$this.Icon")));
|
||||
this->KeyPreview = true;
|
||||
this->Margin = System::Windows::Forms::Padding(4);
|
||||
this->MaximizeBox = false;
|
||||
this->MinimizeBox = false;
|
||||
this->Name = L"ui";
|
||||
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
|
||||
this->Text = L"PD Launcher";
|
||||
this->TransparencyKey = System::Drawing::Color::Magenta;
|
||||
this->FormClosing += gcnew System::Windows::Forms::FormClosingEventHandler(this, &ui::Ui_FormClosing);
|
||||
this->FormClosed += gcnew System::Windows::Forms::FormClosedEventHandler(this, &ui::Ui_FormClosed);
|
||||
this->Load += gcnew System::EventHandler(this, &ui::Ui_Load);
|
||||
this->groupBox_ScreenRes->ResumeLayout(false);
|
||||
this->tabControl->ResumeLayout(false);
|
||||
this->tabPage_Resolution->ResumeLayout(false);
|
||||
this->tabPage_Resolution->PerformLayout();
|
||||
this->groupBox_Lag->ResumeLayout(false);
|
||||
this->groupBox_Lag->PerformLayout();
|
||||
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->trackBar_LagCompensation))->EndInit();
|
||||
this->groupBox_Details->ResumeLayout(false);
|
||||
this->groupBox_InternalRes->ResumeLayout(false);
|
||||
this->tabPage_Patches->ResumeLayout(false);
|
||||
@@ -814,6 +858,12 @@ private: System::Void SaveSettings() {
|
||||
*ComponentsConfigChanged = false;
|
||||
}
|
||||
|
||||
if (*LagCompensationConfigChanged)
|
||||
{
|
||||
SetIniInt(GRAPHICS_SECTION, L"lag_compensation", trackBar_LagCompensation->Value, CONFIG_FILE);
|
||||
*LagCompensationConfigChanged = false;
|
||||
}
|
||||
|
||||
for (ConfigOptionBase* option : AllPluginOpts)
|
||||
{
|
||||
if (*(option->hasChanged))
|
||||
@@ -834,8 +884,6 @@ private: System::Void SaveSettings() {
|
||||
*(option->hasChanged) = false;
|
||||
}
|
||||
}
|
||||
private: System::Void Ui_Load(System::Object^ sender, System::EventArgs^ e){
|
||||
}
|
||||
private: System::Void Button_Help_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
System::Diagnostics::Process::Start("https://notabug.org/PDModdingCommunity/PD-Loader/wiki");
|
||||
}
|
||||
@@ -931,13 +979,25 @@ private: System::Void Ui_FormClosed(System::Object^ sender, System::Windows::For
|
||||
TerminateProcess(GetCurrentProcess(), EXIT_SUCCESS);
|
||||
}
|
||||
private: System::Void button_Discord_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
System::Diagnostics::Process::Start("https://discord.gg/cvBVGDZ");
|
||||
switch (SkinnedMessageBox::Show(this, "Would you like to read the user guide for troubleshooting?", "PD Launcher", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Information))
|
||||
{
|
||||
case System::Windows::Forms::DialogResult::Yes:
|
||||
System::Diagnostics::Process::Start("https://notabug.org/PDModdingCommunity/PD-Loader");
|
||||
break;
|
||||
|
||||
case System::Windows::Forms::DialogResult::No:
|
||||
System::Diagnostics::Process::Start("https://discord.gg/cvBVGDZ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
private: System::Void button_github_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
System::Diagnostics::Process::Start("https://notabug.org/PDModdingCommunity/PD-Loader");
|
||||
}
|
||||
private: System::Void button_Apply_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
SaveSettings();
|
||||
updateStyle();
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
ShowWindow(hWnd, SW_SHOW);
|
||||
}
|
||||
private: System::Void Ui_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {
|
||||
if (e->KeyCode == Keys::Escape) this->Close();
|
||||
@@ -947,9 +1007,10 @@ private: bool* ResolutionConfigChanged = new bool(false);
|
||||
bool* OptionsConfigChanged = new bool(false);
|
||||
bool* PlayerdataConfigChanged = new bool(false);
|
||||
bool* ComponentsConfigChanged = new bool(false);
|
||||
bool* LagCompensationConfigChanged = new bool(false);
|
||||
|
||||
private: bool AnyConfigChanged() {
|
||||
if (*ResolutionConfigChanged || *OptionsConfigChanged || *PlayerdataConfigChanged || *ComponentsConfigChanged)
|
||||
if (*ResolutionConfigChanged || *OptionsConfigChanged || *PlayerdataConfigChanged || *ComponentsConfigChanged || *LagCompensationConfigChanged)
|
||||
return true; // fast case
|
||||
|
||||
for (ConfigOptionBase* option : AllPluginOpts)
|
||||
@@ -964,5 +1025,17 @@ private: String^ GPUIssueText;
|
||||
private: System::Void LinkLabelLinkClickedGPUIssueHandler(System::Object^ sender, System::Windows::Forms::LinkLabelLinkClickedEventArgs^ e) {
|
||||
SkinnedMessageBox::Show(this, GPUIssueText, "PD Launcher", MessageBoxButtons::OK, MessageBoxIcon::Warning);
|
||||
}
|
||||
private: System::Void trackBar_LagCompensation_ValueChanged(System::Object^ sender, System::EventArgs^ e) {
|
||||
*LagCompensationConfigChanged = true;
|
||||
|
||||
updateLagCompMsec();
|
||||
}
|
||||
private: System::Void tabPage_Resolution_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
}
|
||||
private: System::Void button_Wiki_Click(System::Object^ sender, System::EventArgs^ e) {
|
||||
System::Diagnostics::Process::Start("https://notabug.org/PDModdingCommunity/PD-Loader/wiki");
|
||||
}
|
||||
private: System::Void trackBar_LagCompensation_Scroll(System::Object^ sender, System::EventArgs^ e) {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -294,8 +294,221 @@ AMD compatibilty pack dependencies have additional licenses, detailed in the AMD
|
||||
ZSNnuf0xq38QLKYcn/7WyZSb81ROzr/0gUC6FNUQmwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing">
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="button_Wiki.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
|
||||
@@ -678,5 +678,16 @@ class PatchApplier710 : public PatchApplier {
|
||||
InjectCode((void*)(0x14050294d), { 0x89, 0x01 }); // MOV dword ptr [RCX], EAX
|
||||
InjectCode((void*)(0x14050294f), { 0xc3 }); // RET
|
||||
}
|
||||
|
||||
// lag compensation
|
||||
if (nLagCompensation>0 && nLagCompensation<50)
|
||||
{
|
||||
InjectCode((void*)(0x14011e44e), { 0xf3, 0x0f, 0x10, 0x05, 0x8a, 0xcf, 0x9c, 0x00 }); // hijack xmm0
|
||||
InjectCode((void*)(0x14011e46b), { 0xf3, 0x0f, 0x11, 0x44, 0x24, 0x20 }); // get value from xmm0 instead of xmm1
|
||||
float startPos = (float)nLagCompensation / 100.0;
|
||||
InjectCode((void*)(0x140aeB3e0), { *((uint8_t*)(&startPos)), *((uint8_t*)(&startPos)+1), *((uint8_t*)(&startPos) + 2), *((uint8_t*)(&startPos) + 3) });
|
||||
|
||||
printf("[Patches] Lag Compensation: %f\n", startPos);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -125,4 +125,5 @@ auto nNoDelete = GetPrivateProfileIntW(L"patches", L"prevent_data_deletion", FAL
|
||||
auto nReflectResWidth = GetPrivateProfileIntW(L"graphics", L"reflect_res_width", 512, CONFIG_FILE);
|
||||
auto nReflectResHeight = GetPrivateProfileIntW(L"graphics", L"reflect_res_height", 256, CONFIG_FILE);
|
||||
auto nRefractResWidth = GetPrivateProfileIntW(L"graphics", L"refract_res_width", 512, CONFIG_FILE);
|
||||
auto nRefractResHeight = GetPrivateProfileIntW(L"graphics", L"refract_res_height", 256, CONFIG_FILE);
|
||||
auto nRefractResHeight = GetPrivateProfileIntW(L"graphics", L"refract_res_height", 256, CONFIG_FILE);
|
||||
auto nLagCompensation = GetPrivateProfileIntW(L"graphics", L"lag_compensation", 0, CONFIG_FILE);
|
||||
Reference in New Issue
Block a user