(almost) support reading components in launcher

not really complete imo because it requires modification of the components file
This commit is contained in:
somewhatlurker
2019-07-10 02:44:33 +10:00
parent 23b53dc94b
commit cbc018dd84
3 changed files with 71 additions and 160 deletions
+1
View File
@@ -1,5 +1,6 @@
# components.ini
# defines which components will be enabled
[components]
# emulates game input through mouse and keyboard.
# controls can be set inside the keyconfig.ini file.
+52
View File
@@ -32,6 +32,9 @@ LPWSTR DIVA_EXECUTABLE_LAUNCH = const_cast<WCHAR*>(DIVA_EXECUTABLE_LAUNCH_STRING
wstring CONFIG_FILE_STRING = DirPath() + L"\\plugins\\config.ini";
LPCWSTR CONFIG_FILE = CONFIG_FILE_STRING.c_str();
wstring COMPONENTS_FILE_STRING = DirPath() + L"\\plugins\\components.ini";
LPCWSTR COMPONENTS_FILE = COMPONENTS_FILE_STRING.c_str();
int nDisplay = GetPrivateProfileIntW(L"resolution", L"display", 0, CONFIG_FILE);
int nWidth = GetPrivateProfileIntW(L"resolution", L"width", 1280, CONFIG_FILE);
int nHeight = GetPrivateProfileIntW(L"resolution", L"height", 720, CONFIG_FILE);
@@ -58,3 +61,52 @@ int nMLAA = GetPrivateProfileIntW(L"graphics", L"MLAA", TRUE, CONFIG_FILE);
int nFPSLimit = GetPrivateProfileIntW(L"graphics", L"FPS.Limit", 0, CONFIG_FILE);
int nSkipLauncher = GetPrivateProfileIntW(L"launcher", L"skip", FALSE, CONFIG_FILE);
// Custom function. Works like GetPrivateProfileIntW but returns bool. Can detect a numeric value or string.
bool GetPrivateProfileBoolW(LPCWSTR lpAppName, LPCWSTR lpKeyName, bool default, LPCWSTR lpFileName)
{
wchar_t buffer[8];
GetPrivateProfileStringW(lpAppName, lpKeyName, L"", buffer, 8, lpFileName);
//MessageBoxW(NULL, buffer, NULL, 0);
for (wchar_t& chr : buffer)
chr = towlower(chr);
bool out;
if ((lstrcmpW(buffer, L"true") == 0) || (lstrcmpW(buffer, L"1") == 0))
out = true;
else if ((lstrcmpW(buffer, L"false") == 0) || (lstrcmpW(buffer, L"0") == 0))
out = false;
else
out = default;
return out;
}
struct componentInfo { const LPCWSTR name; LPCWSTR friendlyName; LPCWSTR description; System::IntPtr cb; };
componentInfo componentsArray[] = {
{ L"input_emulator", L"Input Emulator", L"Emulates input through keyboard and/or mouse.", System::IntPtr::Zero },
{ L"touch_slider_emulator", L"Slider Emulator", L"Emulates slider through keyboard and/or mouse.", System::IntPtr::Zero },
{ L"touch_panel_emulator", L"Touch Panel Emulator", L"Emulates touch panel through mouse.", System::IntPtr::Zero },
{ L"sys_timer", L"Timer Freeze", L"Freezes the PV select timer at 39 seconds.", System::IntPtr::Zero },
{ L"player_data_manager", L"Player Data Manager", L"Loads user-defined values into the PlayerData struct.\nRequired for modules and game mode modifiers.", System::IntPtr::Zero },
{ L"frame_rate_manager", L"Frame Rate Manager", L"Adjusts animations to the correct speed at different frame rates.\nOnly needed when FPS isn't locket at 60.", System::IntPtr::Zero },
{ L"stage_manager", L"Stage Manager", L"Allows for playing unlimited songs per session.", System::IntPtr::Zero },
{ L"fast_loader", L"Fast Loader", L"Skip or speed up unnecessary loading steps.", System::IntPtr::Zero },
{ L"camera_controller", L"Camera Controller", L"Enables freecam (toggled using F3).\nWASD to move, SPACE/CTRL for up/down, Q/R to rotate, R/F for zoom.\nHolding SHIFT/ALT changes control speed.", System::IntPtr::Zero },
{ L"scale_component", L"Scale Component", L"Scales the graphics output framebuffer to fill the screen/window.", System::IntPtr::Zero },
{ L"debug_component", L"Debug Component", L"Allows for changing game state (F4-F8 keys), using dev GUI and tests, and speeding up 2d animations/menus (hold SHIFT+TAB).", System::IntPtr::Zero },
{ L"fps_limiter", L"FPS Limiter", L"Lets you set a framerate cap. The value of the limit is in the options tab.", System::IntPtr::Zero },
{ L"target_inspector", L"Target Inspector", L"Enables hold transfers.", System::IntPtr::Zero },
};
+18 -160
View File
@@ -27,8 +27,25 @@ namespace Launcher {
this->ClientSize = Drawing::Size(444, 323);
TabPadding^ tabpad = gcnew TabPadding(tabControl);
this->panel_Components->SuspendLayout();
// Beta version, components not working yet and tab disabled
tabPage_Components->Enabled = false;
int componentsY = 3;
for (componentInfo& component : componentsArray)
{
CheckBox^ cb = gcnew CheckBox();
cb->Text = gcnew String(component.friendlyName);
cb->Checked = GetPrivateProfileBoolW(L"components", component.name, false, COMPONENTS_FILE);
cb->Left = 3;
cb->Top = componentsY;
cb->AutoSize = true;
cb->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
panel_Components->Controls->Add(cb);
component.cb = cb->Handle;
componentsY += 23;
}
this->panel_Components->ResumeLayout(false);
this->panel_Components->PerformLayout();
comboBox_Display->SelectedIndex = nDisplay;
@@ -129,20 +146,9 @@ namespace Launcher {
private: System::Windows::Forms::GroupBox^ groupBox_InternalRes;
private: System::Windows::Forms::CheckBox^ checkBox_InternalRes;
private: System::Windows::Forms::TabPage^ tabPage_Components;
private: System::Windows::Forms::CheckBox^ checkBox_sys_timer;
private: System::Windows::Forms::CheckBox^ checkBox_touch_panel_emulator;
private: System::Windows::Forms::CheckBox^ checkBox_touch_slider_emulator;
private: System::Windows::Forms::CheckBox^ checkBox_input_emulator;
private: System::Windows::Forms::CheckBox^ checkBox_player_data_manager;
private: System::Windows::Forms::CheckBox^ checkBox_frame_rate_manager;
private: System::Windows::Forms::CheckBox^ checkBox_stage_manager;
private: System::Windows::Forms::CheckBox^ checkBox_fast_loader;
private: System::Windows::Forms::CheckBox^ checkBox_camera_controller;
private: System::Windows::Forms::Panel^ panel_Components;
private: System::Windows::Forms::CheckBox^ checkBox_scale_component;
private: System::Windows::Forms::CheckBox^ checkBox_fps_limiter;
private: System::Windows::Forms::TabPage^ tabPage_Patches;
private: System::Windows::Forms::Panel^ panel_Patches;
@@ -192,7 +198,7 @@ private: System::Windows::Forms::TableLayoutPanel^ tableLayoutPanel_Status;
private: System::Windows::Forms::CheckBox^ checkBox_NoMovies;
private: System::Windows::Forms::Label^ label_Soon;
private: System::Windows::Forms::Button^ button_github;
private: System::Windows::Forms::CheckBox^ checkBox_DisableErrorBanner;
private: System::Windows::Forms::CheckBox^ checkBox_SkipLauncher;
@@ -262,18 +268,6 @@ private: System::Windows::Forms::Label^ label_BitDepth;
this->checkBox_NoPVUi = (gcnew System::Windows::Forms::CheckBox());
this->tabPage_Components = (gcnew System::Windows::Forms::TabPage());
this->panel_Components = (gcnew System::Windows::Forms::Panel());
this->label_Soon = (gcnew System::Windows::Forms::Label());
this->checkBox_fps_limiter = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_scale_component = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_camera_controller = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_input_emulator = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_fast_loader = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_touch_slider_emulator = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_stage_manager = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_touch_panel_emulator = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_frame_rate_manager = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_sys_timer = (gcnew System::Windows::Forms::CheckBox());
this->checkBox_player_data_manager = (gcnew System::Windows::Forms::CheckBox());
this->button_Discord = (gcnew System::Windows::Forms::Button());
this->button_github = (gcnew System::Windows::Forms::Button());
this->groupBox_ScreenRes->SuspendLayout();
@@ -288,7 +282,6 @@ private: System::Windows::Forms::Label^ label_BitDepth;
this->tableLayoutPanel_FPSLimit->SuspendLayout();
this->tableLayoutPanel_Status->SuspendLayout();
this->tabPage_Components->SuspendLayout();
this->panel_Components->SuspendLayout();
this->SuspendLayout();
//
// button_Launch
@@ -783,144 +776,11 @@ private: System::Windows::Forms::Label^ label_BitDepth;
// panel_Components
//
this->panel_Components->AutoScroll = true;
this->panel_Components->Controls->Add(this->label_Soon);
this->panel_Components->Controls->Add(this->checkBox_fps_limiter);
this->panel_Components->Controls->Add(this->checkBox_scale_component);
this->panel_Components->Controls->Add(this->checkBox_camera_controller);
this->panel_Components->Controls->Add(this->checkBox_input_emulator);
this->panel_Components->Controls->Add(this->checkBox_fast_loader);
this->panel_Components->Controls->Add(this->checkBox_touch_slider_emulator);
this->panel_Components->Controls->Add(this->checkBox_stage_manager);
this->panel_Components->Controls->Add(this->checkBox_touch_panel_emulator);
this->panel_Components->Controls->Add(this->checkBox_frame_rate_manager);
this->panel_Components->Controls->Add(this->checkBox_sys_timer);
this->panel_Components->Controls->Add(this->checkBox_player_data_manager);
this->panel_Components->Location = System::Drawing::Point(0, 0);
this->panel_Components->Name = L"panel_Components";
this->panel_Components->Size = System::Drawing::Size(225, 232);
this->panel_Components->TabIndex = 0;
//
// label_Soon
//
this->label_Soon->AutoSize = true;
this->label_Soon->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->label_Soon->Location = System::Drawing::Point(3, 3);
this->label_Soon->Name = L"label_Soon";
this->label_Soon->Size = System::Drawing::Size(143, 52);
this->label_Soon->TabIndex = 12;
this->label_Soon->Text = L"Options not yet available\r\nthrough the launcher.\r\nPlease use \"components.ini\"\r\nin"
L"side the \"plugins\" folder.";
//
// checkBox_fps_limiter
//
this->checkBox_fps_limiter->AutoSize = true;
this->checkBox_fps_limiter->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_fps_limiter->Location = System::Drawing::Point(6, 277);
this->checkBox_fps_limiter->Name = L"checkBox_fps_limiter";
this->checkBox_fps_limiter->Size = System::Drawing::Size(76, 17);
this->checkBox_fps_limiter->TabIndex = 10;
this->checkBox_fps_limiter->Text = L"FPS Limiter";
//
// checkBox_scale_component
//
this->checkBox_scale_component->AutoSize = true;
this->checkBox_scale_component->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_scale_component->Location = System::Drawing::Point(6, 253);
this->checkBox_scale_component->Name = L"checkBox_scale_component";
this->checkBox_scale_component->Size = System::Drawing::Size(107, 17);
this->checkBox_scale_component->TabIndex = 9;
this->checkBox_scale_component->Text = L"Scale Component";
//
// checkBox_camera_controller
//
this->checkBox_camera_controller->AutoSize = true;
this->checkBox_camera_controller->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_camera_controller->Location = System::Drawing::Point(6, 230);
this->checkBox_camera_controller->Name = L"checkBox_camera_controller";
this->checkBox_camera_controller->Size = System::Drawing::Size(106, 17);
this->checkBox_camera_controller->TabIndex = 8;
this->checkBox_camera_controller->Text = L"Camera Controller";
//
// checkBox_input_emulator
//
this->checkBox_input_emulator->AutoSize = true;
this->checkBox_input_emulator->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_input_emulator->Location = System::Drawing::Point(6, 35);
this->checkBox_input_emulator->Name = L"checkBox_input_emulator";
this->checkBox_input_emulator->Size = System::Drawing::Size(91, 17);
this->checkBox_input_emulator->TabIndex = 0;
this->checkBox_input_emulator->Text = L"Input Emulator";
//
// checkBox_fast_loader
//
this->checkBox_fast_loader->AutoSize = true;
this->checkBox_fast_loader->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_fast_loader->Location = System::Drawing::Point(6, 207);
this->checkBox_fast_loader->Name = L"checkBox_fast_loader";
this->checkBox_fast_loader->Size = System::Drawing::Size(79, 17);
this->checkBox_fast_loader->TabIndex = 7;
this->checkBox_fast_loader->Text = L"Fast Loader";
//
// checkBox_touch_slider_emulator
//
this->checkBox_touch_slider_emulator->AutoSize = true;
this->checkBox_touch_slider_emulator->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_touch_slider_emulator->Location = System::Drawing::Point(6, 69);
this->checkBox_touch_slider_emulator->Name = L"checkBox_touch_slider_emulator";
this->checkBox_touch_slider_emulator->Size = System::Drawing::Size(128, 17);
this->checkBox_touch_slider_emulator->TabIndex = 1;
this->checkBox_touch_slider_emulator->Text = L"Touch Panel Emulator";
//
// checkBox_stage_manager
//
this->checkBox_stage_manager->AutoSize = true;
this->checkBox_stage_manager->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_stage_manager->Location = System::Drawing::Point(6, 184);
this->checkBox_stage_manager->Name = L"checkBox_stage_manager";
this->checkBox_stage_manager->Size = System::Drawing::Size(96, 17);
this->checkBox_stage_manager->TabIndex = 6;
this->checkBox_stage_manager->Text = L"Stage Manager";
//
// checkBox_touch_panel_emulator
//
this->checkBox_touch_panel_emulator->AutoSize = true;
this->checkBox_touch_panel_emulator->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_touch_panel_emulator->Location = System::Drawing::Point(6, 92);
this->checkBox_touch_panel_emulator->Name = L"checkBox_touch_panel_emulator";
this->checkBox_touch_panel_emulator->Size = System::Drawing::Size(127, 17);
this->checkBox_touch_panel_emulator->TabIndex = 2;
this->checkBox_touch_panel_emulator->Text = L"Touch Slider Emulator";
//
// checkBox_frame_rate_manager
//
this->checkBox_frame_rate_manager->AutoSize = true;
this->checkBox_frame_rate_manager->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_frame_rate_manager->Location = System::Drawing::Point(6, 161);
this->checkBox_frame_rate_manager->Name = L"checkBox_frame_rate_manager";
this->checkBox_frame_rate_manager->Size = System::Drawing::Size(123, 17);
this->checkBox_frame_rate_manager->TabIndex = 5;
this->checkBox_frame_rate_manager->Text = L"Frame Rate Manager";
//
// checkBox_sys_timer
//
this->checkBox_sys_timer->AutoSize = true;
this->checkBox_sys_timer->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_sys_timer->Location = System::Drawing::Point(6, 115);
this->checkBox_sys_timer->Name = L"checkBox_sys_timer";
this->checkBox_sys_timer->Size = System::Drawing::Size(117, 17);
this->checkBox_sys_timer->TabIndex = 3;
this->checkBox_sys_timer->Text = L"Freeze Select Timer";
//
// checkBox_player_data_manager
//
this->checkBox_player_data_manager->AutoSize = true;
this->checkBox_player_data_manager->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->checkBox_player_data_manager->Location = System::Drawing::Point(6, 138);
this->checkBox_player_data_manager->Name = L"checkBox_player_data_manager";
this->checkBox_player_data_manager->Size = System::Drawing::Size(123, 17);
this->checkBox_player_data_manager->TabIndex = 4;
this->checkBox_player_data_manager->Text = L"Player Data Manager";
//
// button_Discord
//
this->button_Discord->BackColor = System::Drawing::Color::Transparent;
@@ -997,8 +857,6 @@ private: System::Windows::Forms::Label^ label_BitDepth;
this->tableLayoutPanel_Status->ResumeLayout(false);
this->tableLayoutPanel_Status->PerformLayout();
this->tabPage_Components->ResumeLayout(false);
this->panel_Components->ResumeLayout(false);
this->panel_Components->PerformLayout();
this->ResumeLayout(false);
}