SDL event functions don't seem to work...

This commit is contained in:
VoxelTek 2025-08-18 14:46:15 +10:00
parent 5da0769606
commit e5656bace1
7 changed files with 66 additions and 11 deletions

View File

@ -73,6 +73,8 @@ CMainDialog::CMainDialog(QWidget* pParent) : QDialog(pParent)
connect(m_ui->cancelButton, &QPushButton::clicked, this, &CMainDialog::reject);
connect(m_ui->launchButton, &QPushButton::clicked, this, &CMainDialog::launch);
connect(m_ui->keyForward_1, &QPushButton::clicked, this, &CMainDialog::ForwardKeyChanged);
connect(m_ui->dataPathOpen, &QPushButton::clicked, this, &CMainDialog::SelectDataPathDialog);
connect(m_ui->savePathOpen, &QPushButton::clicked, this, &CMainDialog::SelectSavePathDialog);
@ -749,3 +751,12 @@ void CMainDialog::FramerateChanged(int i)
m_modified = true;
UpdateInterface();
}
void CMainDialog::ForwardKeyChanged() {
RebindInput(m_ui->keyForward_1);
}
void CMainDialog::RebindInput(QPushButton* &button)
{
button->setText(QString("Press a key..."));
}

View File

@ -76,6 +76,8 @@ private slots:
void AspectRatioChanged(int index);
void EnsureAspectRatio();
void FramerateChanged(int i);
void ForwardKeyChanged();
void RebindInput(QPushButton* &button);
};
// SYNTHETIC: CONFIG 0x00403de0

View File

@ -199,6 +199,18 @@ bool CConfigApp::ReadRegisterSettings()
m_exf_y_res = iniparser_getint(dict, "isle:Exclusive Y Resolution", m_exf_y_res);
m_exf_fps = iniparser_getdouble(dict, "isle:Exclusive Framerate", m_exf_fps);
m_frame_delta = iniparser_getdouble(dict, "isle:Frame Delta", m_frame_delta);
g_keyMaps.k_forward[0] = (SDL_Scancode) iniparser_getint(dict, "input:Forward", g_keyMaps.k_forward[0]);
g_keyMaps.k_forward[1] = (SDL_Scancode) iniparser_getint(dict, "input:Forward Alt", g_keyMaps.k_forward[1]);
g_keyMaps.k_back[0] = (SDL_Scancode) iniparser_getint(dict, "input:Backward", g_keyMaps.k_back[0]);
g_keyMaps.k_back[1] = (SDL_Scancode) iniparser_getint(dict, "input:Backward Alt", g_keyMaps.k_back[1]);
g_keyMaps.k_left[0] = (SDL_Scancode) iniparser_getint(dict, "input:Left", g_keyMaps.k_left[0]);
g_keyMaps.k_left[1] = (SDL_Scancode) iniparser_getint(dict, "input:Left Alt", g_keyMaps.k_left[1]);
g_keyMaps.k_right[0] = (SDL_Scancode) iniparser_getint(dict, "input:Right", g_keyMaps.k_right[0]);
g_keyMaps.k_right[1] = (SDL_Scancode) iniparser_getint(dict, "input:Right Alt", g_keyMaps.k_right[1]);
g_keyMaps.k_sprint[0] = (SDL_Scancode) iniparser_getint(dict, "input:Sprint", g_keyMaps.k_sprint[0]);
g_keyMaps.k_sprint[1] = (SDL_Scancode) iniparser_getint(dict, "input:Sprint Alt", g_keyMaps.k_sprint[1]);
iniparser_freedict(dict);
return true;
}
@ -370,6 +382,7 @@ void CConfigApp::WriteRegisterSettings() const
iniparser_set(dict, "extensions", NULL);
iniparser_set(dict, "texture loader", NULL);
iniparser_set(dict, "si loader", NULL);
iniparser_set(dict, "input", NULL);
if (m_device_enumerator->FormatDeviceName(buffer, m_driver, m_device) >= 0) {
iniparser_set(dict, "isle:3D Device ID", buffer);
@ -419,6 +432,17 @@ void CConfigApp::WriteRegisterSettings() const
iniparser_set(dict, "isle:Exclusive Framerate", std::to_string(m_exf_fps).c_str());
iniparser_set(dict, "isle:Frame Delta", std::to_string(m_frame_delta).c_str());
SetIniInt(dict, "input:Forward", g_keyMaps.k_forward[0]);
SetIniInt(dict, "input:Forward Alt", g_keyMaps.k_forward[1]);
SetIniInt(dict, "input:Backward", g_keyMaps.k_back[0]);
SetIniInt(dict, "input:Backward Alt", g_keyMaps.k_back[1]);
SetIniInt(dict, "input:Left", g_keyMaps.k_left[0]);
SetIniInt(dict, "input:Left Alt", g_keyMaps.k_left[1]);
SetIniInt(dict, "input:Right", g_keyMaps.k_right[0]);
SetIniInt(dict, "input:Right Alt", g_keyMaps.k_right[1]);
SetIniInt(dict, "input:Sprint", g_keyMaps.k_sprint[0]);
SetIniInt(dict, "input:Sprint Alt", g_keyMaps.k_sprint[1]);
#undef SetIniBool
#undef SetIniInt

View File

@ -4,6 +4,7 @@
#include "AboutDlg.h"
#include "compat.h"
#include "decomp.h"
#include "lego/legoomni/include/legokeymaps.h"
#ifdef MINIWIN
#include "miniwin/d3d.h"
@ -12,6 +13,7 @@
#endif
#include <string>
#include <SDL3/SDL_scancode.h>
class LegoDeviceEnumerate;
struct Direct3DDeviceInfo;

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>640</width>
<height>480</height>
<height>502</height>
</rect>
</property>
<property name="sizePolicy">
@ -958,7 +958,7 @@ The game will gradually increase the number of actors until this maximum is reac
<item>
<widget class="QGroupBox" name="keyMappings">
<property name="enabled">
<bool>false</bool>
<bool>true</bool>
</property>
<property name="toolTip">
<string>Work-In-Progress, currently non-functional</string>
@ -1155,8 +1155,8 @@ The game will gradually increase the number of actors until this maximum is reac
<rect>
<x>0</x>
<y>0</y>
<width>217</width>
<height>217</height>
<width>449</width>
<height>391</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">

View File

@ -1107,6 +1107,18 @@ bool IsleApp::LoadConfig()
iniparser_set(dict, "isle:Exclusive Framerate", SDL_itoa(m_exclusiveFrameRate, buf, 10));
iniparser_set(dict, "isle:Frame Delta", SDL_itoa(m_frameDelta, buf, 10));
iniparser_set(dict, "input", NULL);
iniparser_set(dict, "input:Forward", SDL_itoa(g_keyMaps.k_forward[0], buf, 10));
iniparser_set(dict, "input:Forward Alt", SDL_itoa(g_keyMaps.k_forward[1], buf, 10));
iniparser_set(dict, "input:Backward", SDL_itoa(g_keyMaps.k_back[0], buf, 10));
iniparser_set(dict, "input:Backward Alt", SDL_itoa(g_keyMaps.k_back[1], buf, 10));
iniparser_set(dict, "input:Left", SDL_itoa(g_keyMaps.k_left[0], buf, 10));
iniparser_set(dict, "input:Left Alt", SDL_itoa(g_keyMaps.k_left[1], buf, 10));
iniparser_set(dict, "input:Right", SDL_itoa(g_keyMaps.k_right[0], buf, 10));
iniparser_set(dict, "input:Right Alt", SDL_itoa(g_keyMaps.k_right[1], buf, 10));
iniparser_set(dict, "input:Sprint", SDL_itoa(g_keyMaps.k_sprint[0], buf, 10));
iniparser_set(dict, "input:Sprint Alt", SDL_itoa(g_keyMaps.k_sprint[1], buf, 10));
#ifdef EXTENSIONS
iniparser_set(dict, "extensions", NULL);
for (const char* key : Extensions::availableExtensions) {
@ -1184,6 +1196,17 @@ bool IsleApp::LoadConfig()
m_videoParam.SetMSAASamples((m_msaaSamples = iniparser_getint(dict, "isle:MSAA", m_msaaSamples)));
m_videoParam.SetAnisotropic((m_anisotropic = iniparser_getdouble(dict, "isle:Anisotropic", m_anisotropic)));
g_keyMaps.k_forward[0] = (SDL_Scancode) iniparser_getint(dict, "input:Forward", g_keyMaps.k_forward[0]);
g_keyMaps.k_forward[1] = (SDL_Scancode) iniparser_getint(dict, "input:Forward Alt", g_keyMaps.k_forward[1]);
g_keyMaps.k_back[0] = (SDL_Scancode) iniparser_getint(dict, "input:Backward", g_keyMaps.k_back[0]);
g_keyMaps.k_back[1] = (SDL_Scancode) iniparser_getint(dict, "input:Backward Alt", g_keyMaps.k_back[1]);
g_keyMaps.k_left[0] = (SDL_Scancode) iniparser_getint(dict, "input:Left", g_keyMaps.k_left[0]);
g_keyMaps.k_left[1] = (SDL_Scancode) iniparser_getint(dict, "input:Left Alt", g_keyMaps.k_left[1]);
g_keyMaps.k_right[0] = (SDL_Scancode) iniparser_getint(dict, "input:Right", g_keyMaps.k_right[0]);
g_keyMaps.k_right[1] = (SDL_Scancode) iniparser_getint(dict, "input:Right Alt", g_keyMaps.k_right[1]);
g_keyMaps.k_sprint[0] = (SDL_Scancode) iniparser_getint(dict, "input:Sprint", g_keyMaps.k_sprint[0]);
g_keyMaps.k_sprint[1] = (SDL_Scancode) iniparser_getint(dict, "input:Sprint Alt", g_keyMaps.k_sprint[1]);
const char* deviceId = iniparser_getstring(dict, "isle:3D Device ID", NULL);
if (deviceId != NULL) {
m_deviceId = SDL_strdup(deviceId);

View File

@ -3,17 +3,10 @@
#include "decomp.h"
#include "lego1_export.h"
#include "legoeventnotificationparam.h"
#include "mxlist.h"
#include "mxpresenter.h"
#include "mxqueue.h"
#include <SDL3/SDL_haptic.h>
#include <SDL3/SDL_joystick.h>
#include <SDL3/SDL_keyboard.h>
#include <SDL3/SDL_keycode.h>
#include <SDL3/SDL_scancode.h>
#include <SDL3/SDL_timer.h>
#ifdef MINIWIN
#include "miniwin/windows.h"
#else