AdHoc relay server: Replace checkbox with "Auto" / "On" / "Off"

This commit is contained in:
Henrik Rydgård committed 2026-02-11 18:17:09 +01:00
1 parent 56b3c86742
commit 1852cae7c1
5 files changed
+34 -5

No files matched your search

+2 -2
View File
@@ -71,7 +71,7 @@ static const std::string_view logSectionName = "LogDebug";
static const std::string_view logSectionName = "Log";
#endif
static const std::vector<std::string_view> defaultProAdhocServerList = {
const std::vector<std::string_view> defaultProAdhocServerList = {
"socom.cc", "psp.gameplayer.club", // TODO: Add some saved recent history too?
};
@@ -1033,7 +1033,7 @@ static const ConfigSetting networkSettings[] = {
ConfigSetting("EnableWlan", SETTING(g_Config, bEnableWlan), false, CfgFlag::PER_GAME),
ConfigSetting("EnableAdhocServer", SETTING(g_Config, bEnableAdhocServer), false, CfgFlag::PER_GAME),
ConfigSetting("proAdhocServer", SETTING(g_Config, sProAdhocServer), "socom.cc", CfgFlag::PER_GAME),
ConfigSetting("UseServerRelay", SETTING(g_Config, bUseServerRelay), false, CfgFlag::PER_GAME),
ConfigSetting("AdhocServerRelayMode", SETTING(g_Config, iAdhocServerRelayMode), (int)AdhocServerRelayMode::Auto, CfgFlag::PER_GAME),
ConfigSetting("proAdhocServerList", SETTING(g_Config, proAdhocServerList), &defaultProAdhocServerList, CfgFlag::DEFAULT),
ConfigSetting("PortOffset", SETTING(g_Config, iPortOffset), 10000, CfgFlag::PER_GAME),
ConfigSetting("PrimaryDNSServer", SETTING(g_Config, sInfrastructureDNSServer), "67.222.156.250", CfgFlag::PER_GAME),
+3 -1
View File
@@ -552,7 +552,7 @@ public:
// Networking
bool bEnableAdhocServer;
std::string sProAdhocServer;
bool bUseServerRelay;
int iAdhocServerRelayMode;
std::vector<std::string> proAdhocServerList;
std::string sInfrastructureDNSServer;
std::string sInfrastructureUsername; // Username used for Infrastructure play. Different restrictions.
@@ -765,3 +765,5 @@ std::string CreateRandMAC();
extern http::RequestManager g_DownloadManager;
extern Config g_Config;
extern const std::vector<std::string_view> defaultProAdhocServerList;
+6
View File
@@ -81,6 +81,12 @@ enum class CPUCore {
JIT_IR = 3,
};
enum class AdhocServerRelayMode {
Auto = 0,
AlwaysOn = 1,
AlwaysOff = 2,
};
enum {
ROTATION_AUTO = 0,
ROTATION_LOCKED_HORIZONTAL = 1,
+19 -1
View File
@@ -1648,7 +1648,25 @@ u32 sceNetAdhocInit() {
// Since we are deleting GameMode Master here, we should probably need to make sure GameMode resources all cleared too.
deleteAllGMB();
serverHasRelay = g_Config.bUseServerRelay;
// If a server is in our default list, we know it supports relay.
switch ((AdhocServerRelayMode)g_Config.iAdhocServerRelayMode) {
case AdhocServerRelayMode::Auto:
serverHasRelay = false;
// If it's in our default server list, we know it supports relay.
for (auto serverName : defaultProAdhocServerList) {
if (serverName == g_Config.sProAdhocServer) {
serverHasRelay = true;
break;
}
}
break;
case AdhocServerRelayMode::AlwaysOn:
serverHasRelay = true;
break;
default:
serverHasRelay = false;
break;
}
if (serverHasRelay) {
aemu_post_office_init();
+4 -1
View File
@@ -1049,7 +1049,10 @@ void GameSettingsScreen::CreateNetworkingSettings(UI::ViewGroup *networkingSetti
}
networkingSettings->Add(new ItemHeader(n->T("Ad Hoc multiplayer")));
networkingSettings->Add(new CheckBox(&g_Config.bUseServerRelay, n->T("Try to use server-provided packet relay")))->SetEnabled(!PSP_IsInited());
static const char *relayModes[] = {"Auto", "On", "Off"};
PopupMultiChoice *relayModePopup = networkingSettings->Add(new PopupMultiChoice(&g_Config.iAdhocServerRelayMode, n->T("Try to use server-provided packet relay"), relayModes, 0, ARRAY_SIZE(relayModes), I18NCat::NETWORKING, screenManager()));
relayModePopup->SetEnabled(!PSP_IsInited());
networkingSettings->Add(new SettingHint(n->T("PacketRelayHint", "Available on servers that provide 'aemu_postoffice' packet relay, like socom.cc. Disable this for LAN or VPN play. Can be more reliable, but sometimes slower.")));
networkingSettings->Add(new ItemHeader(n->T("Ad Hoc server")));