Fuck magic numbers; COM_ flags for Lua commands!

This commit is contained in:
James R 2019-12-29 20:59:48 -08:00
parent 1d8608c00d
commit bb97e0805e
3 changed files with 22 additions and 4 deletions

View file

@ -20,6 +20,13 @@
// Command buffer & command execution // Command buffer & command execution
//=================================== //===================================
/* Lua command registration flags. */
enum
{
COM_ADMIN = 1,
COM_SPLITSCREEN = 2,
};
typedef void (*com_func_t)(void); typedef void (*com_func_t)(void);
void COM_AddCommand(const char *name, com_func_t func); void COM_AddCommand(const char *name, com_func_t func);

View file

@ -8685,6 +8685,10 @@ struct {
{"BT_CUSTOM2",BT_CUSTOM2}, // Lua customizable {"BT_CUSTOM2",BT_CUSTOM2}, // Lua customizable
{"BT_CUSTOM3",BT_CUSTOM3}, // Lua customizable {"BT_CUSTOM3",BT_CUSTOM3}, // Lua customizable
// Lua command registration flags
{"COM_ADMIN",COM_ADMIN},
{"COM_SPLITSCREEN",COM_SPLITSCREEN},
// cvflags_t // cvflags_t
{"CV_SAVE",CV_SAVE}, {"CV_SAVE",CV_SAVE},
{"CV_CALL",CV_CALL}, {"CV_CALL",CV_CALL},

View file

@ -113,12 +113,12 @@ void COM_Lua_f(void)
lua_rawgeti(gL, -1, 2); // push flags from command info table lua_rawgeti(gL, -1, 2); // push flags from command info table
if (lua_isboolean(gL, -1)) if (lua_isboolean(gL, -1))
flags = (lua_toboolean(gL, -1) ? 1 : 0); flags = (lua_toboolean(gL, -1) ? COM_ADMIN : 0);
else else
flags = (UINT8)lua_tointeger(gL, -1); flags = (UINT8)lua_tointeger(gL, -1);
lua_pop(gL, 1); // pop flags lua_pop(gL, 1); // pop flags
if (flags & 2) // flag 2: splitscreen player command. TODO: support 4P if (flags & COM_SPLITSCREEN) // flag 2: splitscreen player command. TODO: support 4P
{ {
if (!splitscreen) if (!splitscreen)
{ {
@ -133,7 +133,7 @@ void COM_Lua_f(void)
UINT8 argc; UINT8 argc;
lua_pop(gL, 1); // pop command info table lua_pop(gL, 1); // pop command info table
if (flags & 1 && !server && !IsPlayerAdmin(playernum)) // flag 1: only server/admin can use this command. if (flags & COM_ADMIN && !server && !IsPlayerAdmin(playernum)) // flag 1: only server/admin can use this command.
{ {
CONS_Printf(M_GetText("Only the server or a remote admin can use this.\n")); CONS_Printf(M_GetText("Only the server or a remote admin can use this.\n"));
return; return;
@ -187,7 +187,14 @@ static int lib_comAddCommand(lua_State *L)
if (lua_gettop(L) >= 3) if (lua_gettop(L) >= 3)
{ // For the third argument, only take a boolean or a number. { // For the third argument, only take a boolean or a number.
lua_settop(L, 3); lua_settop(L, 3);
if (lua_type(L, 3) != LUA_TBOOLEAN) if (lua_type(L, 3) == LUA_TBOOLEAN)
{
CONS_Alert(CONS_WARNING,
"Using a boolean is deprecated and will be removed.\n"
"Use \"COM_\" flags instead.\n"
);
}
else
luaL_checktype(L, 3, LUA_TNUMBER); luaL_checktype(L, 3, LUA_TNUMBER);
} }
else else