Skip to content
Snippets Groups Projects
Select Git revision
  • 0af32ee2fa6c83892a705c44bf3c61c09701367c
  • next default protected
  • gitlab-ci_timeout
  • master protected
  • unfuck-icon-mac
  • rr-item-cruncher
  • http-ms-startup-print
  • better-bans
  • http-ms-rules
  • chat-flood-fix
  • prevent-permissions-footgun
  • ms-address-warning
  • uncapped-master
  • uncapped-hud
  • spectator-little-things
  • no-turn-easing-v1
  • master-server-is-a-bad-name
  • findfile-with-threads
  • fix-nocurl
  • spinout-changes
  • itemodds-fallthrough-fix
  • v1.6
  • v1.5
  • v1.4
  • v1.3
  • v1.2
  • v1.1
  • v1.0.4
  • v1.0.3
  • v1.0.2
  • v1.0.1
  • V1.0.0
32 results

lua_hooklib.c

Blame
  • lua_baselib.c 92.82 KiB
    // SONIC ROBO BLAST 2
    //-----------------------------------------------------------------------------
    // Copyright (C) 2012-2016 by John "JTE" Muniz.
    // Copyright (C) 2012-2020 by Sonic Team Junior.
    //
    // This program is free software distributed under the
    // terms of the GNU General Public License, version 2.
    // See the 'LICENSE' file for more details.
    //-----------------------------------------------------------------------------
    /// \file  lua_baselib.c
    /// \brief basic functions for Lua scripting
    
    #include "doomdef.h"
    #include "fastcmp.h"
    #include "p_local.h"
    #include "p_setup.h" // So we can have P_SetupLevelSky
    #include "p_slopes.h" // P_GetSlopeZAt
    #include "z_zone.h"
    #include "r_main.h"
    #include "r_draw.h"
    #include "r_things.h" // R_Frame2Char etc
    #include "m_random.h"
    #include "s_sound.h"
    #include "g_game.h"
    #include "m_menu.h"
    #include "y_inter.h"
    #include "hu_stuff.h"	// HU_AddChatText
    #include "console.h"
    #include "d_netcmd.h" // IsPlayerAdmin
    #include "m_menu.h" // Player Setup menu color stuff
    
    #include "lua_script.h"
    #include "lua_libs.h"
    #include "lua_hud.h" // hud_running errors
    #include "taglist.h" // P_FindSpecialLineFromTag
    
    #define NOHUD if (hud_running)\
    return luaL_error(L, "HUD rendering code should not call this function!");
    
    boolean luaL_checkboolean(lua_State *L, int narg) {
    	luaL_checktype(L, narg, LUA_TBOOLEAN);
    	return lua_toboolean(L, narg);
    }
    
    // String concatination
    static int lib_concat(lua_State *L)
    {
      int n = lua_gettop(L);  /* number of arguments */
      int i;
      char *r = NULL;
      size_t rl = 0,sl;
      lua_getglobal(L, "tostring");
      for (i=1; i<=n; i++) {
        const char *s;
        lua_pushvalue(L, -1);  /* function to be called */
        lua_pushvalue(L, i);   /* value to print */
        lua_call(L, 1, 1);
        s = lua_tolstring(L, -1, &sl);  /* get result */
        if (s == NULL)
          return luaL_error(L, LUA_QL("tostring") " must return a string to "
    													 LUA_QL("__add"));
    		r = Z_Realloc(r, rl+sl, PU_STATIC, NULL);
    		M_Memcpy(r+rl, s, sl);
    		rl += sl;
        lua_pop(L, 1);  /* pop result */
      }
      lua_pushlstring(L, r, rl);
      Z_Free(r);
    	return 1;
    }