From 54cae8484978cdc35086abaf0996ceb804f7fb1f Mon Sep 17 00:00:00 2001 From: MPC Date: Fri, 30 Nov 2018 14:01:40 -0300 Subject: [PATCH] Change MapChange so Lua returns the map number you change --- src/d_netcmd.c | 6 +++++- src/g_game.c | 8 +++----- src/lua_hook.h | 2 +- src/lua_hooklib.c | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 16788bae..b4ee060f 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1749,6 +1749,9 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum) UINT8 flags; INT32 resetplayer = 1, lastgametype; UINT8 skipprecutscene, FLS; +#ifdef HAVE_BLUA + INT16 mapnumber; +#endif if (playernum != serverplayer && playernum != adminplayer) { @@ -1810,7 +1813,8 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum) } #ifdef HAVE_BLUA - LUAh_MapChange(); + mapnumber = M_MapNumber(mapname[3], mapname[4]); + LUAh_MapChange(mapnumber); #endif G_InitNew(ultimatemode, mapname, resetplayer, skipprecutscene); diff --git a/src/g_game.c b/src/g_game.c index 4a7719fa..bc50d8a2 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2547,14 +2547,12 @@ void G_DoReborn(INT32 playernum) } } else -#ifdef HAVE_BLUA { - LUAh_MapChange(); +#ifdef HAVE_BLUA + LUAh_MapChange(gamemap); #endif G_DoLoadLevel(true); -#ifdef HAVE_BLUA } -#endif } else { @@ -5091,7 +5089,7 @@ void G_DoPlayDemo(char *defdemoname) demo_start = false; #ifdef HAVE_BLUA - LUAh_MapChange(); + LUAh_MapChange(gamemap); #endif displayplayer = consoleplayer = 0; memset(playeringame,0,sizeof(playeringame)); diff --git a/src/lua_hook.h b/src/lua_hook.h index db32c42b..8f95bd11 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -48,7 +48,7 @@ enum hook { }; extern const char *const hookNames[]; -void LUAh_MapChange(void); // Hook for map change (before load) +void LUAh_MapChange(INT16 mapnumber); // Hook for map change (before load) void LUAh_MapLoad(void); // Hook for map load void LUAh_PlayerJoin(int playernum); // Hook for Got_AddPlayer void LUAh_ThinkFrame(void); // Hook for frame (after mobj and player thinkers) diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 2a98a82e..d732f8ef 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -314,14 +314,14 @@ boolean LUAh_PlayerHook(player_t *plr, enum hook which) } // Hook for map change (before load) -void LUAh_MapChange(void) +void LUAh_MapChange(INT16 mapnumber) { hook_p hookp; if (!gL || !(hooksAvailable[hook_MapChange/8] & (1<<(hook_MapChange%8)))) return; lua_settop(gL, 0); - lua_pushinteger(gL, gamemap); + lua_pushinteger(gL, mapnumber); for (hookp = roothook; hookp; hookp = hookp->next) if (hookp->type == hook_MapChange)