static int lua_aoi_enter(lua_State *L){ aoi_map * m = lua_touserdata(L,1); aoi_object* o = lua_touserdata(L,2); int x = (int)lua_tonumber(L,3); int y = (int)lua_tonumber(L,4); if(0 == aoi_enter(m,o,x,y)) lua_pushboolean(L,1); else lua_pushboolean(L,0); return 1; }
int luaAoiEnterMap(lua_State *L){ struct battlemap *battlemap = (struct battlemap*)lua_touserdata(L,-1); luaObject_t self = create_luaObj(L,-2); int x = (int)lua_tonumber(L,-3); int y = (int)lua_tonumber(L,-4); struct aoi_object *aoi_obj = calloc(1,sizeof(*aoi_obj)); aoi_obj->ud = self; aoi_obj->in_myscope = in_myscope; aoi_obj->cb_enter = cb_enter; aoi_obj->cb_leave = cb_leave; if(0 == aoi_enter(battlemap->aoi,aoi_obj,x,y)){ PUSH_LUSRDATA(L,aoi_obj); }else { free(aoi_obj); PUSH_NIL(L); } return 1; }