/************************************************************************** Save the game script variables to file. **************************************************************************/ static void script_vars_save(struct section_file *file) { if (state) { lua_getglobal(state, "_freeciv_state_dump"); if (lua_pcall(state, 0, 1, 0) == 0) { const char *vars; vars = lua_tostring(state, -1); lua_pop(state, 1); if (vars) { secfile_insert_str_noescape(file, vars, "script.vars"); } } else { /* _freeciv_state_dump in api.pkg is busted */ freelog(LOG_ERROR, "lua error: Failed to dump variables"); } } }
/***************************************************************************** Save lua variables to file. *****************************************************************************/ void luascript_vars_save(struct fc_lua *fcl, struct section_file *file, const char *section) { fc_assert_ret(file); fc_assert_ret(fcl); fc_assert_ret(fcl->state); lua_getglobal(fcl->state, "_freeciv_state_dump"); if (luascript_call(fcl, 0, 1, NULL) == 0) { const char *vars; vars = lua_tostring(fcl->state, -1); lua_pop(fcl->state, 1); if (vars) { secfile_insert_str_noescape(file, vars, "%s", section); } } else { /* _freeciv_state_dump in tolua_game.pkg is busted */ luascript_log(fcl, LOG_ERROR, "lua error: Failed to dump variables"); } }
/************************************************************************** Save the optional game script code to file (useful for scenarios). **************************************************************************/ static void script_code_save(struct section_file *file) { if (script_code) { secfile_insert_str_noescape(file, script_code, "script.code"); } }