port: net: add command line arguments for quick hosting and joining

This commit is contained in:
fgsfds committed 2024-01-07 22:01:20 +01:00
1 parent c2d09135f7
commit 33f6d643be
4 files changed
+45 -4

No files matched your search

+3
View File
@@ -105,6 +105,9 @@ struct netclient {
extern s32 g_NetMode;
extern s32 g_NetJoinLatch;
extern s32 g_NetHostLatch;
// net frame, ticks at 60 fps, starts at 0 when the server is started
extern u32 g_NetTick;
extern u32 g_NetNextSyncId;
+23
View File
@@ -30,6 +30,9 @@
s32 g_NetMode = NETMODE_NONE;
s32 g_NetHostLatch = false;
s32 g_NetJoinLatch = false;
u32 g_NetServerUpdateRate = 1;
u32 g_NetServerInRate = 128 * 1024;
u32 g_NetServerOutRate = 128 * 1024;
@@ -334,6 +337,26 @@ void netInit(void)
return;
}
const s32 argmaxclients = sysArgGetInt("--maxclients", -1);
if (argmaxclients > 0) {
g_NetMaxClients = argmaxclients;
}
const s32 argport = sysArgGetInt("--port", -1);
if (argport > 0 && argport < 0x10000) {
g_NetServerPort = argport;
}
const char *argjoin = sysArgGetString("--connect");
if (argjoin) {
strncpy(g_NetLastJoinAddr, argjoin, sizeof(g_NetLastJoinAddr) - 1);
g_NetJoinLatch = true;
}
if (sysArgCheck("--host")) {
g_NetHostLatch = true;
}
g_NetInit = true;
}
+4 -4
View File
@@ -56,7 +56,7 @@ static char *menuhandlerHostPortValue(struct menuitem *item)
return tmp;
}
static MenuItemHandlerResult menuhandlerHostStart(s32 operation, struct menuitem *item, union handlerdata *data)
MenuItemHandlerResult menuhandlerHostStart(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
if (netStartServer(g_NetMenuPort, g_NetMenuMaxPlayers) == 0) {
@@ -292,7 +292,7 @@ static MenuItemHandlerResult menuhandlerJoinAddress(s32 operation, struct menuit
return 0;
}
static MenuItemHandlerResult menuhandlerJoinStart(s32 operation, struct menuitem *item, union handlerdata *data)
MenuItemHandlerResult menuhandlerJoinStart(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
if (netStartClient(g_NetJoinAddr) == 0) {
@@ -350,7 +350,7 @@ struct menudialogdef g_NetJoinMenuDialog = {
/* main */
static MenuItemHandlerResult menuhandlerHostGame(s32 operation, struct menuitem *item, union handlerdata *data)
MenuItemHandlerResult menuhandlerHostGame(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
g_NetMenuPort = g_NetServerPort;
@@ -360,7 +360,7 @@ static MenuItemHandlerResult menuhandlerHostGame(s32 operation, struct menuitem
return 0;
}
static MenuItemHandlerResult menuhandlerJoinGame(s32 operation, struct menuitem *item, union handlerdata *data)
MenuItemHandlerResult menuhandlerJoinGame(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
if (g_NetJoinAddr[0] == '\0') {
+15
View File
@@ -45,6 +45,10 @@ struct menudialogdef g_CinemaMenuDialog;
#ifndef PLATFORM_N64
extern struct menudialogdef g_ExtendedMenuDialog;
extern struct menudialogdef g_NetMenuDialog;
extern MenuItemHandlerResult menuhandlerJoinGame(s32 operation, struct menuitem *item, union handlerdata *data);
extern MenuItemHandlerResult menuhandlerJoinStart(s32 operation, struct menuitem *item, union handlerdata *data);
extern MenuItemHandlerResult menuhandlerHostGame(s32 operation, struct menuitem *item, union handlerdata *data);
extern MenuItemHandlerResult menuhandlerHostStart(s32 operation, struct menuitem *item, union handlerdata *data);
#endif
char *menuTextCurrentStageName(struct menuitem *item)
@@ -4881,6 +4885,17 @@ MenuDialogHandlerResult menudialogMainMenu(s32 operation, struct menudialogdef *
g_MissionConfig.iscoop = false;
g_MissionConfig.isanti = false;
}
#ifndef PLATFORM_N64
if (g_NetJoinLatch) {
menuhandlerJoinGame(MENUOP_SET, NULL, NULL);
menuhandlerJoinStart(MENUOP_SET, NULL, NULL);
g_NetJoinLatch = false;
} else if (g_NetHostLatch) {
menuhandlerHostGame(MENUOP_SET, NULL, NULL);
menuhandlerHostStart(MENUOP_SET, NULL, NULL);
g_NetHostLatch = false;
}
#endif
break;
}