#include #include // kernel includes #include #include #include // lua includes #include #include #include #ifdef HAVE_LUABIND_B7 # include #endif #include #include using namespace luabind; static std::ostream& operator<<(std::ostream& stream, const ship& sh) { stream << sh.name; stream << " (" << itoa36(sh.no) << ")"; stream << ", " << sh.type->name; stream << " size " << sh.size; return stream; } static bool operator==(const ship& a, const ship& sh) { return a.no==sh.no; } static ship * add_ship(const char * sname, region& r) { const ship_type * stype = st_find(sname); ship * sh = new_ship(stype, NULL, &r); sh->size = stype->construction->maxsize; return sh; } void bind_ship(lua_State * L) { module(L)[ def("get_ship", &findship), def("add_ship", &add_ship), class_("ship") .def(self == ship()) .def(tostring(self)) .def_readonly("name", &ship::name) .def_readonly("region", &ship::region) .def_readonly("id", &ship::no) .def_readonly("info", &ship::display) .def_readwrite("damage", &ship::damage) .def_readwrite("size", &ship::size) .def_readwrite("coast", &ship::coast) ]; }