/* * Method: RemoveAdvert * * Remove an advertisement from the station's bulletin board * * > station:RemoveAdvert(ref) * * If the deletefunc parameter was supplied to <AddAdvert> when the ad was * created, it will be called as part of this call. * * Parameters: * * ref - the advert reference number returned by <AddAdvert> * * Availability: * * alpha 10 * * Status: * * stable */ static int l_spacestation_remove_advert(lua_State *l) { LUA_DEBUG_START(l); SpaceStation *s = LuaSpaceStation::GetFromLua(1); int ref = luaL_checkinteger(l, 2); if (!s->RemoveBBAdvert(ref)) return 0; lua_getfield(l, LUA_REGISTRYINDEX, "PiAdverts"); if (lua_isnil(l, -1)) { lua_pop(l, 1); return 0; } lua_pushinteger(l, ref); lua_gettable(l, -2); if (lua_isnil(l, -1)) { lua_pop(l, 2); return 0; } lua_getfield(l, -1, "onDelete"); if (lua_isnil(l, -1)) lua_pop(l, 1); else { lua_pushinteger(l, ref); pi_lua_protected_call(l, 1, 0); } lua_pop(l, 1); lua_pushinteger(l, ref); lua_pushnil(l); lua_settable(l, -3); lua_pop(l, 1); LUA_DEBUG_END(l,0); return 0; }