Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
s_env.{cpp, h} cleanups
* Replace string by-val passing with const reference
* Fix code style
* Remove redundant `int table` definition and indentation level
  • Loading branch information
est31 committed Mar 7, 2016
1 parent d494733 commit 725cb4e
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 57 deletions.
108 changes: 53 additions & 55 deletions src/script/cpp_api/s_env.cpp
Expand Up @@ -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

Expand All @@ -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");
Expand All @@ -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

Expand All @@ -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);

/*
Expand All @@ -94,68 +94,66 @@ 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)){
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);
}
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)){
} 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);
}
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);
float trigger_interval = 10.0;
getfloatfield(L, current_abm, "interval", trigger_interval);

int trigger_chance = 50;
getintfield(L, current_abm, "chance", trigger_chance);
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);
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);
LuaABM *abm = new LuaABM(L, id, trigger_contents, required_neighbors,
trigger_interval, trigger_chance, simple_catch_up);

env->addActiveBlockModifier(abm);
env->addActiveBlockModifier(abm);

// removes value, keeps key for next iteration
lua_pop(L, 1);
}
} else {
// removes value, keeps key for next iteration
lua_pop(L, 1);
throw LuaError("core.registered_abms was not a lua table, as expected.");
}
lua_pop(L, 1);

Expand Down
5 changes: 3 additions & 2 deletions src/script/cpp_api/s_env.h
Expand Up @@ -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);
Expand All @@ -35,7 +36,7 @@ class ScriptApiEnv : virtual public ScriptApiBase {
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,
Expand Down

0 comments on commit 725cb4e

Please sign in to comment.