From 72889473901fe3013c9448404b741edadc5f9132 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 16 Jan 2024 01:27:03 +0100 Subject: [PATCH] port: net: handle UCMD_ACTIVATE as a press --- port/src/net/net.c | 3 ++- src/game/bondmove.c | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/port/src/net/net.c b/port/src/net/net.c index f2e4d9399..3d9a4e8c6 100644 --- a/port/src/net/net.c +++ b/port/src/net/net.c @@ -262,7 +262,8 @@ static inline s32 netClientNeedReliableMove(const struct netclient *cl) const struct netplayermove *move = &cl->outmove[0]; const struct netplayermove *moveprev = &cl->outmove[1]; return !moveprev->tick || (g_NetMode == NETMODE_SERVER && cl->forcetick) || - (moveprev->ucmd & UCMD_IMPORTANT_MASK) != (move->ucmd & UCMD_IMPORTANT_MASK); + (moveprev->ucmd & UCMD_IMPORTANT_MASK) != (move->ucmd & UCMD_IMPORTANT_MASK) || + (move->ucmd & UCMD_ACTIVATE); } static inline s32 netClientNeedMove(const struct netclient *cl) diff --git a/src/game/bondmove.c b/src/game/bondmove.c index 2b6742684..0ad8e8405 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -123,6 +123,8 @@ static inline void bmoveProcessRemoteInput(const bool allowc1buttons) moveticks = g_NetInterpTicks; } + const bool handled = (pl->client->inmovetick >= inmove->tick); + if (!inmove->tick) { // no input inmove->pos = inmoveprev->pos = pl->prop->pos; @@ -206,12 +208,12 @@ static inline void bmoveProcessRemoteInput(const bool allowc1buttons) netmsgSvcPlayerStatsWrite(&g_NetMsgRel, pl->client); } - if (inmove->ucmd & UCMD_RELOAD) { + if (!handled && (inmove->ucmd & UCMD_RELOAD)) { pl->bondactivateorreload |= JO_ACTION_RELOAD; } if (g_NetMode == NETMODE_SERVER) { - if (inmove->ucmd & UCMD_ACTIVATE) { + if (!handled && (inmove->ucmd & UCMD_ACTIVATE)) { pl->bondactivateorreload |= JO_ACTION_ACTIVATE; }