static int l_csys_long_desc(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); cs->longDesc = luaL_checkstring(L, 2); lua_settop(L, 1); return 1; }
static int l_csys_bodies(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); CustomSystemBody **primary_ptr = l_csb_check_ptr(L, 2); int primary_type = (*primary_ptr)->type; luaL_checktype(L, 3, LUA_TTABLE); if ((primary_type < SystemBody::TYPE_STAR_MIN || primary_type > SystemBody::TYPE_STAR_MAX) && primary_type != SystemBody::TYPE_GRAVPOINT) return luaL_error(L, "first body does not have a valid star type"); if (primary_type != cs->primaryType[0] && primary_type != SystemBody::TYPE_GRAVPOINT) return luaL_error(L, "first body type does not match the system's primary star type"); lua_pushvalue(L, 3); _add_children_to_sbody(L, *primary_ptr); lua_pop(L, 1); cs->sBody = *primary_ptr; *primary_ptr = 0; if (cs->sBody) { unsigned star_count = count_stars(cs->sBody); if (star_count != cs->numStars) return luaL_error(L, "expected %u star(s) in system %s, but found %u (did you forget star types in CustomSystem:new?)", cs->numStars, cs->name.c_str(), star_count); // XXX Someday, we should check the other star types as well, but we do not use them anyway now. } lua_settop(L, 1); return 1; }
static int l_csys_govtype(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); cs->govType = static_cast<Polit::GovType>(LuaConstants::GetConstantFromArg(L, "PolitGovType", 2)); lua_settop(L, 1); return 1; }
static int l_csys_seed(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); cs->seed = luaL_checkinteger(L, 2); lua_settop(L, 1); return 1; }
static int l_csys_explored(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); cs->explored = lua_toboolean(L, 2); cs->want_rand_explored = false; lua_settop(L, 1); return 1; }
static int l_csys_lawlessness(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); const fixed *value = LuaFixed::CheckFromLua(L, 2); cs->lawlessness = *value; cs->want_rand_lawlessness = false; lua_settop(L, 1); return 1; }
static int l_csys_faction(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); std::string factionName = luaL_checkstring(L, 2); cs->factionIdx = Faction::GetIndexOfFaction(factionName); if (cs->factionIdx == Faction::BAD_FACTION_IDX) { luaL_argerror(L, 2, "Faction not found"); } lua_settop(L, 1); return 1; }
static int l_csys_faction(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); std::string factionName = luaL_checkstring(L, 2); if (!s_activeCustomSystemsDatabase->GetGalaxy()->GetFactions()->IsInitialized()) { s_activeCustomSystemsDatabase->GetGalaxy()->GetFactions()->RegisterCustomSystem(cs, factionName); lua_settop(L, 1); return 1; } cs->faction = s_activeCustomSystemsDatabase->GetGalaxy()->GetFactions()->GetFaction(factionName); if (cs->faction->idx == Faction::BAD_FACTION_IDX) { luaL_argerror(L, 2, "Faction not found"); } lua_settop(L, 1); return 1; }
static int l_csys_bodies(lua_State *L) { CustomSystem *cs = l_csys_check(L, 1); CustomSystemBody **primary_ptr = l_csb_check_ptr(L, 2); int primary_type = (*primary_ptr)->type; luaL_checktype(L, 3, LUA_TTABLE); if (primary_type < SystemBody::TYPE_STAR_MIN || primary_type > SystemBody::TYPE_STAR_MAX) return luaL_error(L, "first body does not have a valid star type"); if (primary_type != cs->primaryType[0]) return luaL_error(L, "first body type does not match the system's primary star type"); lua_pushvalue(L, 3); _add_children_to_sbody(L, *primary_ptr); lua_pop(L, 1); cs->sBody = *primary_ptr; *primary_ptr = 0; lua_settop(L, 1); return 1; }