#include #include #include "list.h" // kernel includes #include #include #include // lua includes #include #include #include using namespace luabind; static faction * add_faction(const char * email, const char * racename, const char * lang) { const race * frace = findrace(racename, default_locale); if (frace==NULL) frace = findrace(racename, find_locale("de")); if (frace==NULL) frace = findrace(racename, find_locale("en")); if (frace==NULL) return NULL; locale * loc = find_locale(lang); faction * f = addfaction(email, NULL, frace, loc, 0); return f; } static eressea::list get_factions(void) { return eressea::list(factions); } class factionunit { public: static unit * next(unit * node) { return node->nextF; } static unit * value(unit * node) { return node; } }; static eressea::list faction_units(const faction& f) { return eressea::list(f.units); } static void faction_setalliance(faction& f, alliance * team) { if (f.alliance==0) setalliance(&f, team); } static alliance * faction_getalliance(const faction& f) { return f.alliance; } void bind_faction(lua_State * L) { module(L)[ def("factions", &get_factions, return_stl_iterator), def("get_faction", &findfaction), def("add_faction", &add_faction), class_("faction") .def_readonly("name", &faction::name) .def_readonly("id", &faction::no) .property("units", &faction_units, return_stl_iterator) .property("alliance", &faction_getalliance, &faction_setalliance) ]; }