static int l_fac_add_to_factions(lua_State *L) { FactionBuilder *facbld = l_fac_check_builder(L, 1); //const std::string factionName(luaL_checkstring(L, 2)); if (!facbld->registered && !facbld->skip) { /* XXX maybe useful for debugging, leaving for now if (facbld->fac->hasHomeworld) { Output("l_fac_add_to_factions: added (%3d,%3d,%3d) f=%4.0f e=%2.2f '%s' [%s]\n" , fac->homeworld.sectorX, fac->homeworld.sectorY, fac->homeworld.sectorZ, fac->foundingDate, fac->expansionRate, fac->name.c_str(), factionName.c_str()); } else { Output("l_fac_add_to_factions: added '%s' [%s]\n", fac->name.c_str(), factionName.c_str()); } */ // add the faction to the various faction data structures Pi::GetGalaxy()->GetFactions()->AddFaction(facbld->fac); facbld->registered = true; return 0; } else if (facbld->skip) { /* XXX maybe useful for debugging, leaving for now Output("l_fac_add_to_factions: invalid homeworld, skipped (%3d,%3d,%3d) f=%4.0f e=%2.2f '%s' [%s]\n" , fac->homeworld.sectorX, fac->homeworld.sectorY, fac->homeworld.sectorZ, fac->foundingDate, fac->expansionRate, fac->name.c_str(), factionName.c_str()); */ return 0; } else { return luaL_error(L, "faction '%s' already added\n", facbld->fac->name.c_str()); } }
static int l_fac_add_to_factions(lua_State *L) { FactionBuilder *facbld = l_fac_check_builder(L, 1); Faction *fac = facbld->fac; const std::string factionName(luaL_checkstring(L, 2)); if (!facbld->registered && !facbld->skip) { if (facbld->fac->hasHomeworld) { printf("l_fac_add_to_factions: added (%3d,%3d,%3d) f=%4.0f e=%2.2f '%s' [%s]\n" , fac->homeworld.sectorX, fac->homeworld.sectorY, fac->homeworld.sectorZ, fac->foundingDate, fac->expansionRate, fac->name.c_str(), factionName.c_str()); } else { printf("l_fac_add_to_factions: added '%s' [%s]\n", fac->name.c_str(), factionName.c_str()); } // add the faction to the various faction data structures s_factions.push_back(facbld->fac); s_factions_byName[facbld->fac->name] = facbld->fac; s_spatial_index.Add(facbld->fac); if (facbld->fac->hasHomeworld) s_homesystems.insert(facbld->fac->homeworld.SystemOnly()); facbld->fac->idx = s_factions.size()-1; facbld->registered = true; return 0; } else if (facbld->skip) { printf("l_fac_add_to_factions: invalid homeworld, skipped (%3d,%3d,%3d) f=%4.0f e=%2.2f '%s' [%s]\n" , fac->homeworld.sectorX, fac->homeworld.sectorY, fac->homeworld.sectorZ, fac->foundingDate, fac->expansionRate, fac->name.c_str(), factionName.c_str()); return 0; } else { return luaL_error(L, "faction '%s' already added\n", facbld->fac->name.c_str()); } }
static int l_fac_gc(lua_State *L) { FactionBuilder *facbld = l_fac_check_builder(L, 1); if (!facbld->registered) { delete facbld->fac; facbld->fac = 0; } return 0; }
// sector(x,y,x) + system index + body index = location in a (custom?) system of homeworld static int l_fac_homeworld (lua_State *L) { FactionBuilder *facbld = l_fac_check_builder(L, 1); Faction *fac = facbld->fac; Sint32 x = luaL_checkinteger(L, 2); Sint32 y = luaL_checkinteger(L, 3); Sint32 z = luaL_checkinteger(L, 4); Sint32 si = luaL_checkinteger(L, 5); Uint32 bi = luaL_checkinteger(L, 6); // search for home systems, first moving outward from the axes, then // if that didn't work moving inward toward them fac->hasHomeworld = true; fac->SetBestFitHomeworld(x, y, z, si, bi, +1); if (!fac->homeworld.HasValidSystem()) fac->SetBestFitHomeworld(x, y, z, si, bi, -1); facbld->skip = !fac->homeworld.HasValidSystem(); // wasn't a valid system lua_settop(L, 1); return 1; }
static Faction *l_fac_check(lua_State *L, int idx) { return l_fac_check_builder(L, idx)->fac; }