Revert "Merge branch 'consoleplayer-dedicated' into 'next'"

This reverts commit 5ec44ba3fa, reversing
changes made to 4c5d69b714.
This commit is contained in:
James R 2022-08-18 18:14:23 -07:00
parent f2017fd31a
commit c6e3f780e7
4 changed files with 19 additions and 28 deletions

View file

@ -9740,10 +9740,11 @@ static inline int lib_getenum(lua_State *L)
lua_pushinteger(L, mapmusposition); lua_pushinteger(L, mapmusposition);
return 1; return 1;
} else if (fastcmp(word,"server")) { } else if (fastcmp(word,"server")) {
return LUA_PushServerPlayer(L); if ((!multiplayer || !(netgame || demo.playback)) && !playeringame[serverplayer])
return 0;
LUA_PushUserdata(L, &players[serverplayer], META_PLAYER);
return 1;
} else if (fastcmp(word,"consoleplayer")) { // Player controlling the console, basically our local player } else if (fastcmp(word,"consoleplayer")) { // Player controlling the console, basically our local player
if (consoleplayer == serverplayer)
return LUA_PushServerPlayer(L);
if (consoleplayer < 0 || !playeringame[consoleplayer]) if (consoleplayer < 0 || !playeringame[consoleplayer])
return 0; return 0;
LUA_PushUserdata(L, &players[consoleplayer], META_PLAYER); LUA_PushUserdata(L, &players[consoleplayer], META_PLAYER);

View file

@ -27,35 +27,25 @@
static int lib_iteratePlayers(lua_State *L) static int lib_iteratePlayers(lua_State *L)
{ {
INT32 i = -1; INT32 i = -1;
if (lua_gettop(L) < 2) if (lua_gettop(L) < 2)
{ {
//return luaL_error(L, "Don't call players.iterate() directly, use it as 'for player in players.iterate do <block> end'."); //return luaL_error(L, "Don't call players.iterate() directly, use it as 'for player in players.iterate do <block> end'.");
lua_pushcfunction(L, lib_iteratePlayers); lua_pushcfunction(L, lib_iteratePlayers);
return 1; return 1;
} }
lua_settop(L, 2); lua_settop(L, 2);
lua_remove(L, 1); // state is unused. lua_remove(L, 1); // state is unused.
if (!lua_isnil(L, 1)) if (!lua_isnil(L, 1))
i = (INT32)(*((player_t **)luaL_checkudata(L, 1, META_PLAYER)) - players); i = (INT32)(*((player_t **)luaL_checkudata(L, 1, META_PLAYER)) - players);
for (i++; i < MAXPLAYERS; i++)
i++;
if (i == serverplayer)
{
return LUA_PushServerPlayer(L);
}
for (; i < MAXPLAYERS; i++)
{ {
if (!playeringame[i]) if (!playeringame[i])
continue; continue;
if (!players[i].mo)
continue;
LUA_PushUserdata(L, &players[i], META_PLAYER); LUA_PushUserdata(L, &players[i], META_PLAYER);
return 1; return 1;
} }
return 0; return 0;
} }
@ -68,10 +58,10 @@ static int lib_getPlayer(lua_State *L)
lua_Integer i = luaL_checkinteger(L, 2); lua_Integer i = luaL_checkinteger(L, 2);
if (i < 0 || i >= MAXPLAYERS) if (i < 0 || i >= MAXPLAYERS)
return luaL_error(L, "players[] index %d out of range (0 - %d)", i, MAXPLAYERS-1); return luaL_error(L, "players[] index %d out of range (0 - %d)", i, MAXPLAYERS-1);
if (i == serverplayer)
return LUA_PushServerPlayer(L);
if (!playeringame[i]) if (!playeringame[i])
return 0; return 0;
if (!players[i].mo)
return 0;
LUA_PushUserdata(L, &players[i], META_PLAYER); LUA_PushUserdata(L, &players[i], META_PLAYER);
return 1; return 1;
} }
@ -132,6 +122,8 @@ static int lib_iterateDisplayplayers(lua_State *L)
if (i > splitscreen || !playeringame[displayplayers[i]]) if (i > splitscreen || !playeringame[displayplayers[i]])
return 0; // Stop! There are no more players for us to go through. There will never be a player gap in displayplayers. return 0; // Stop! There are no more players for us to go through. There will never be a player gap in displayplayers.
if (!players[displayplayers[i]].mo)
continue;
LUA_PushUserdata(L, &players[displayplayers[i]], META_PLAYER); LUA_PushUserdata(L, &players[displayplayers[i]], META_PLAYER);
lua_pushinteger(L, i); // push this to recall what number we were on for the next function call. I suppose this also means you can retrieve the splitscreen player number with 'for p, n in displayplayers.iterate'! lua_pushinteger(L, i); // push this to recall what number we were on for the next function call. I suppose this also means you can retrieve the splitscreen player number with 'for p, n in displayplayers.iterate'!
return 2; return 2;
@ -152,6 +144,8 @@ static int lib_getDisplayplayers(lua_State *L)
return 0; return 0;
if (!playeringame[displayplayers[i]]) if (!playeringame[displayplayers[i]])
return 0; return 0;
if (!players[displayplayers[i]].mo)
return 0;
LUA_PushUserdata(L, &players[displayplayers[i]], META_PLAYER); LUA_PushUserdata(L, &players[displayplayers[i]], META_PLAYER);
return 1; return 1;
} }
@ -190,7 +184,12 @@ static int player_get(lua_State *L)
else if (fastcmp(field,"name")) else if (fastcmp(field,"name"))
lua_pushstring(L, player_names[plr-players]); lua_pushstring(L, player_names[plr-players]);
else if (fastcmp(field,"mo")) else if (fastcmp(field,"mo"))
{
if (plr->spectator)
lua_pushnil(L);
else
LUA_PushUserdata(L, plr->mo, META_MOBJ); LUA_PushUserdata(L, plr->mo, META_MOBJ);
}
else if (fastcmp(field,"cmd")) else if (fastcmp(field,"cmd"))
LUA_PushUserdata(L, &plr->cmd, META_TICCMD); LUA_PushUserdata(L, &plr->cmd, META_TICCMD);
else if (fastcmp(field,"playerstate")) else if (fastcmp(field,"playerstate"))

View file

@ -369,14 +369,6 @@ void LUA_PushUserdata(lua_State *L, void *data, const char *meta)
lua_remove(L, -2); // remove LREG_VALID lua_remove(L, -2); // remove LREG_VALID
} }
int LUA_PushServerPlayer(lua_State *L)
{
if ((!multiplayer || !(netgame || demo.playback)) && !playeringame[serverplayer])
return 0;
LUA_PushUserdata(L, &players[serverplayer], META_PLAYER);
return 1;
}
// When userdata is freed, use this function to remove it from Lua. // When userdata is freed, use this function to remove it from Lua.
void LUA_InvalidateUserdata(void *data) void LUA_InvalidateUserdata(void *data)
{ {

View file

@ -46,7 +46,6 @@ void LUA_DumpFile(const char *filename);
#endif #endif
fixed_t LUA_EvalMath(const char *word); fixed_t LUA_EvalMath(const char *word);
void LUA_PushUserdata(lua_State *L, void *data, const char *meta); void LUA_PushUserdata(lua_State *L, void *data, const char *meta);
int LUA_PushServerPlayer(lua_State *L);
void LUA_InvalidateUserdata(void *data); void LUA_InvalidateUserdata(void *data);
void LUA_InvalidateLevel(void); void LUA_InvalidateLevel(void);
void LUA_InvalidateMapthings(void); void LUA_InvalidateMapthings(void);