mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	s_env.{cpp, h} cleanups
* Replace string by-val passing with const reference * Fix code style * Remove redundant `int table` definition and indentation level
This commit is contained in:
		@@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 | 
			
		||||
#include "server.h"
 | 
			
		||||
 | 
			
		||||
void ScriptApiEnv::environment_OnGenerated(v3s16 minp, v3s16 maxp,
 | 
			
		||||
		u32 blockseed)
 | 
			
		||||
	u32 blockseed)
 | 
			
		||||
{
 | 
			
		||||
	SCRIPTAPI_PRECHECKHEADER
 | 
			
		||||
 | 
			
		||||
@@ -44,7 +44,7 @@ void ScriptApiEnv::environment_OnGenerated(v3s16 minp, v3s16 maxp,
 | 
			
		||||
void ScriptApiEnv::environment_Step(float dtime)
 | 
			
		||||
{
 | 
			
		||||
	SCRIPTAPI_PRECHECKHEADER
 | 
			
		||||
	//infostream<<"scriptapi_environment_step"<<std::endl;
 | 
			
		||||
	//infostream << "scriptapi_environment_step" << std::endl;
 | 
			
		||||
 | 
			
		||||
	// Get core.registered_globalsteps
 | 
			
		||||
	lua_getglobal(L, "core");
 | 
			
		||||
@@ -58,7 +58,7 @@ void ScriptApiEnv::environment_Step(float dtime)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ScriptApiEnv::player_event(ServerActiveObject* player, std::string type)
 | 
			
		||||
void ScriptApiEnv::player_event(ServerActiveObject *player, const std::string &type)
 | 
			
		||||
{
 | 
			
		||||
	SCRIPTAPI_PRECHECKHEADER
 | 
			
		||||
 | 
			
		||||
@@ -82,7 +82,7 @@ void ScriptApiEnv::player_event(ServerActiveObject* player, std::string type)
 | 
			
		||||
void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env)
 | 
			
		||||
{
 | 
			
		||||
	SCRIPTAPI_PRECHECKHEADER
 | 
			
		||||
	verbosestream<<"scriptapi_add_environment"<<std::endl;
 | 
			
		||||
	verbosestream << "scriptapi_add_environment" << std::endl;
 | 
			
		||||
	setEnv(env);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
@@ -94,69 +94,67 @@ void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env)
 | 
			
		||||
	lua_getfield(L, -1, "registered_abms");
 | 
			
		||||
	int registered_abms = lua_gettop(L);
 | 
			
		||||
 | 
			
		||||
	if(lua_istable(L, registered_abms)){
 | 
			
		||||
		int table = lua_gettop(L);
 | 
			
		||||
		lua_pushnil(L);
 | 
			
		||||
		while(lua_next(L, table) != 0){
 | 
			
		||||
			// key at index -2 and value at index -1
 | 
			
		||||
			int id = lua_tonumber(L, -2);
 | 
			
		||||
			int current_abm = lua_gettop(L);
 | 
			
		||||
 | 
			
		||||
			std::set<std::string> trigger_contents;
 | 
			
		||||
			lua_getfield(L, current_abm, "nodenames");
 | 
			
		||||
			if(lua_istable(L, -1)){
 | 
			
		||||
				int table = lua_gettop(L);
 | 
			
		||||
				lua_pushnil(L);
 | 
			
		||||
				while(lua_next(L, table) != 0){
 | 
			
		||||
					// key at index -2 and value at index -1
 | 
			
		||||
					luaL_checktype(L, -1, LUA_TSTRING);
 | 
			
		||||
					trigger_contents.insert(lua_tostring(L, -1));
 | 
			
		||||
					// removes value, keeps key for next iteration
 | 
			
		||||
					lua_pop(L, 1);
 | 
			
		||||
				}
 | 
			
		||||
			} else if(lua_isstring(L, -1)){
 | 
			
		||||
				trigger_contents.insert(lua_tostring(L, -1));
 | 
			
		||||
			}
 | 
			
		||||
			lua_pop(L, 1);
 | 
			
		||||
 | 
			
		||||
			std::set<std::string> required_neighbors;
 | 
			
		||||
			lua_getfield(L, current_abm, "neighbors");
 | 
			
		||||
			if(lua_istable(L, -1)){
 | 
			
		||||
				int table = lua_gettop(L);
 | 
			
		||||
				lua_pushnil(L);
 | 
			
		||||
				while(lua_next(L, table) != 0){
 | 
			
		||||
					// key at index -2 and value at index -1
 | 
			
		||||
					luaL_checktype(L, -1, LUA_TSTRING);
 | 
			
		||||
					required_neighbors.insert(lua_tostring(L, -1));
 | 
			
		||||
					// removes value, keeps key for next iteration
 | 
			
		||||
					lua_pop(L, 1);
 | 
			
		||||
				}
 | 
			
		||||
			} else if(lua_isstring(L, -1)){
 | 
			
		||||
				required_neighbors.insert(lua_tostring(L, -1));
 | 
			
		||||
			}
 | 
			
		||||
			lua_pop(L, 1);
 | 
			
		||||
 | 
			
		||||
			float trigger_interval = 10.0;
 | 
			
		||||
			getfloatfield(L, current_abm, "interval", trigger_interval);
 | 
			
		||||
 | 
			
		||||
			int trigger_chance = 50;
 | 
			
		||||
			getintfield(L, current_abm, "chance", trigger_chance);
 | 
			
		||||
 | 
			
		||||
			bool simple_catch_up = true;
 | 
			
		||||
			getboolfield(L, current_abm, "catch_up", simple_catch_up);
 | 
			
		||||
 | 
			
		||||
			LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors,
 | 
			
		||||
				trigger_interval, trigger_chance, simple_catch_up);
 | 
			
		||||
 | 
			
		||||
			env->addActiveBlockModifier(abm);
 | 
			
		||||
 | 
			
		||||
			// removes value, keeps key for next iteration
 | 
			
		||||
			lua_pop(L, 1);
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
	if (!lua_istable(L, registered_abms)) {
 | 
			
		||||
		lua_pop(L, 1);
 | 
			
		||||
		throw LuaError("core.registered_abms was not a lua table, as expected.");
 | 
			
		||||
	}
 | 
			
		||||
	lua_pushnil(L);
 | 
			
		||||
	while (lua_next(L, registered_abms)) {
 | 
			
		||||
		// key at index -2 and value at index -1
 | 
			
		||||
		int id = lua_tonumber(L, -2);
 | 
			
		||||
		int current_abm = lua_gettop(L);
 | 
			
		||||
 | 
			
		||||
		std::set<std::string> trigger_contents;
 | 
			
		||||
		lua_getfield(L, current_abm, "nodenames");
 | 
			
		||||
		if (lua_istable(L, -1)) {
 | 
			
		||||
			int table = lua_gettop(L);
 | 
			
		||||
			lua_pushnil(L);
 | 
			
		||||
			while (lua_next(L, table)) {
 | 
			
		||||
				// key at index -2 and value at index -1
 | 
			
		||||
				luaL_checktype(L, -1, LUA_TSTRING);
 | 
			
		||||
				trigger_contents.insert(lua_tostring(L, -1));
 | 
			
		||||
				// removes value, keeps key for next iteration
 | 
			
		||||
				lua_pop(L, 1);
 | 
			
		||||
			}
 | 
			
		||||
		} else if (lua_isstring(L, -1)) {
 | 
			
		||||
			trigger_contents.insert(lua_tostring(L, -1));
 | 
			
		||||
		}
 | 
			
		||||
		lua_pop(L, 1);
 | 
			
		||||
 | 
			
		||||
		std::set<std::string> required_neighbors;
 | 
			
		||||
		lua_getfield(L, current_abm, "neighbors");
 | 
			
		||||
		if (lua_istable(L, -1)) {
 | 
			
		||||
			int table = lua_gettop(L);
 | 
			
		||||
			lua_pushnil(L);
 | 
			
		||||
			while (lua_next(L, table)) {
 | 
			
		||||
				// key at index -2 and value at index -1
 | 
			
		||||
				luaL_checktype(L, -1, LUA_TSTRING);
 | 
			
		||||
				required_neighbors.insert(lua_tostring(L, -1));
 | 
			
		||||
				// removes value, keeps key for next iteration
 | 
			
		||||
				lua_pop(L, 1);
 | 
			
		||||
			}
 | 
			
		||||
		} else if (lua_isstring(L, -1)) {
 | 
			
		||||
			required_neighbors.insert(lua_tostring(L, -1));
 | 
			
		||||
		}
 | 
			
		||||
		lua_pop(L, 1);
 | 
			
		||||
 | 
			
		||||
		float trigger_interval = 10.0;
 | 
			
		||||
		getfloatfield(L, current_abm, "interval", trigger_interval);
 | 
			
		||||
 | 
			
		||||
		int trigger_chance = 50;
 | 
			
		||||
		getintfield(L, current_abm, "chance", trigger_chance);
 | 
			
		||||
 | 
			
		||||
		bool simple_catch_up = true;
 | 
			
		||||
		getboolfield(L, current_abm, "catch_up", simple_catch_up);
 | 
			
		||||
 | 
			
		||||
		LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors,
 | 
			
		||||
			trigger_interval, trigger_chance, simple_catch_up);
 | 
			
		||||
 | 
			
		||||
		env->addActiveBlockModifier(abm);
 | 
			
		||||
 | 
			
		||||
		// removes value, keeps key for next iteration
 | 
			
		||||
		lua_pop(L, 1);
 | 
			
		||||
	}
 | 
			
		||||
	lua_pop(L, 1);
 | 
			
		||||
 | 
			
		||||
	// Get core.registered_lbms
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 | 
			
		||||
class ServerEnvironment;
 | 
			
		||||
struct ScriptCallbackState;
 | 
			
		||||
 | 
			
		||||
class ScriptApiEnv : virtual public ScriptApiBase {
 | 
			
		||||
class ScriptApiEnv : virtual public ScriptApiBase
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	// Called on environment step
 | 
			
		||||
	void environment_Step(float dtime);
 | 
			
		||||
@@ -35,7 +36,7 @@ public:
 | 
			
		||||
	void environment_OnGenerated(v3s16 minp, v3s16 maxp, u32 blockseed);
 | 
			
		||||
 | 
			
		||||
	// Called on player event
 | 
			
		||||
	void player_event(ServerActiveObject *player, std::string type);
 | 
			
		||||
	void player_event(ServerActiveObject *player, const std::string &type);
 | 
			
		||||
 | 
			
		||||
	// Called after emerge of a block queued from core.emerge_area()
 | 
			
		||||
	void on_emerge_area_completion(v3s16 blockpos, int action,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user