aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
Commit message (Expand)AuthorAge
...
* command-line/world game selectionPerttu Ahola2012-03-11
* Chat console, including a number of rebases and modifications.Kahrl2012-03-10
* Remove servermain.cpp, use main.cpp with a couple of #ifdefs insteadPerttu Ahola2012-03-10
* Immediate smoke puff when a normal entity is punched to deathPerttu Ahola2012-03-10
* Digging time groups WIPPerttu Ahola2012-03-10
* Node placement / mineral / serialization / iron freq / node_dig callbackKahrl2012-01-22
* The huge item definition and item namespace unification patch (itemdef), see ...Kahrl2012-01-12
* Add InvRef and InvStack (currently untested and unusable)Perttu Ahola2012-01-02
* Use plain IBillboardSceneNode instead of MyBillboardSceneNode (improvesKahrl2011-12-04
* inventorycube: use all three specified textures; also moved mesh creation / m...Kahrl2011-12-03
* Better mod loading error handlingPerttu Ahola2011-12-03
* Script-defined creative inventoryPerttu Ahola2011-12-02
* Move ServerRemotePlayer to a separate filePerttu Ahola2011-12-02
* Remove content_inventory.{h,cpp}Perttu Ahola2011-11-29
* CraftItem rework and Lua interfaceKahrl2011-11-29
* Fix CMake install data pathPerttu Ahola2011-11-29
* Update installation in CMakeLists.txtPerttu Ahola2011-11-29
* Replace old active block random node modifying things with actual ActiveBlock...Perttu Ahola2011-11-29
* Crafting definition in scriptsPerttu Ahola2011-11-29
* Node definition namesPerttu Ahola2011-11-29
* Move tool definitions to scriptPerttu Ahola2011-11-29
* GameDef compilesPerttu Ahola2011-11-29
* Create framework for getting rid of global definitions of node/tool/item/what...Perttu Ahola2011-11-29
* Move tool stuff to tool.{h,cpp}Perttu Ahola2011-11-29
* Move ContentFeatures to mapnode_contentfeatures.{h,cpp} and clean stuffPerttu Ahola2011-11-29
* Scripting WIPPerttu Ahola2011-11-29
* Scripting WIPPerttu Ahola2011-11-29
* Move images to data/textures and fix some path stuff; hope that installation ...Perttu Ahola2011-11-29
* Add LuaPerttu Ahola2011-11-29
* Initially add small and tight logging facilityPerttu Ahola2011-10-16
* Resource file handling for exe icon for MinGWPerttu Ahola2011-10-15
* Handle death and respawn betterPerttu Ahola2011-10-15
* mobv2Perttu Ahola2011-10-15
* In CMake scripts: New version number, fix MSVC stuffPerttu Ahola2011-10-14
* Header file tweaking; mainly for speedPerttu Ahola2011-10-12
* Merge branch 'view_bobbing_and_vielded_tool'Perttu Ahola2011-09-26
|\
| * Collected and moved existing camera infrastructure from game.cpp to camera.cp...Kahrl2011-09-08
* | Move PLATFORM_LIBS around to make sqlite3 link with libdl on some distrosPerttu Ahola2011-09-23
* | SQLite needs to be linked with -ldl on some Linux distros.Kahrl2011-09-16
|/
* added ipban supportConstantin Wenger2011-08-12
* Merged some FreeBSD fixesPerttu Ahola2011-08-11
|\
| * Proper placement of binary files.q662011-08-11
* | Clang doesn't like -Wno-unused-but-set-variableGiuseppe Bilotta2011-08-11
* | Project uses C++, so use CHECK_CXX_COMPILER_FLAGGiuseppe Bilotta2011-08-11
|/
* Check whether -Wno-unused-but-set-variable is supported before usingDmitry Marakasov2011-08-01
* merged delta and c55Perttu Ahola2011-08-05
|\
| * Merge remote-tracking branch 'origin/upstream'Nils Dagsson Moskopp2011-07-31
| |\ | |/ |/|
| * Sanitize GETTEXT usage macrosGiuseppe Bilotta2011-07-24
| * Bring po update out of cmake againGiuseppe Bilotta2011-07-24
| * Do not package en translation, since we don't build itGiuseppe Bilotta2011-07-24
pan class="hl opt">= name && meta && meta->isPrivate(*name); m_env->getMap().dispatchEvent(event); } // Exported functions // garbage collector int NodeMetaRef::gc_object(lua_State *L) { NodeMetaRef *o = *(NodeMetaRef **)(lua_touserdata(L, 1)); delete o; return 0; } // get_inventory(self) int NodeMetaRef::l_get_inventory(lua_State *L) { MAP_LOCK_REQUIRED; NodeMetaRef *ref = checkobject(L, 1); ref->getmeta(true); // try to ensure the metadata exists InvRef::createNodeMeta(L, ref->m_p); return 1; } // mark_as_private(self, <string> or {<string>, <string>, ...}) int NodeMetaRef::l_mark_as_private(lua_State *L) { MAP_LOCK_REQUIRED; NodeMetaRef *ref = checkobject(L, 1); NodeMetadata *meta = dynamic_cast<NodeMetadata*>(ref->getmeta(true)); assert(meta); if (lua_istable(L, 2)) { lua_pushnil(L); while (lua_next(L, 2) != 0) { // key at index -2 and value at index -1 luaL_checktype(L, -1, LUA_TSTRING); meta->markPrivate(readParam<std::string>(L, -1), true); // removes value, keeps key for next iteration lua_pop(L, 1); } } else if (lua_isstring(L, 2)) { meta->markPrivate(readParam<std::string>(L, 2), true); } ref->reportMetadataChange(); return 0; } void NodeMetaRef::handleToTable(lua_State *L, Metadata *_meta) { // fields MetaDataRef::handleToTable(L, _meta); NodeMetadata *meta = (NodeMetadata*) _meta; // inventory lua_newtable(L); Inventory *inv = meta->getInventory(); if (inv) { std::vector<const InventoryList *> lists = inv->getLists(); for(std::vector<const InventoryList *>::const_iterator i = lists.begin(); i != lists.end(); ++i) { push_inventory_list(L, inv, (*i)->getName().c_str()); lua_setfield(L, -2, (*i)->getName().c_str()); } } lua_setfield(L, -2, "inventory"); } // from_table(self, table) bool NodeMetaRef::handleFromTable(lua_State *L, int table, Metadata *_meta) { // fields if (!MetaDataRef::handleFromTable(L, table, _meta)) return false; NodeMetadata *meta = (NodeMetadata*) _meta; // inventory Inventory *inv = meta->getInventory(); lua_getfield(L, table, "inventory"); if (lua_istable(L, -1)) { int inventorytable = lua_gettop(L); lua_pushnil(L); while (lua_next(L, inventorytable) != 0) { // key at index -2 and value at index -1 std::string name = luaL_checkstring(L, -2); read_inventory_list(L, -1, inv, name.c_str(), getServer(L)); lua_pop(L, 1); // Remove value, keep key for next iteration } lua_pop(L, 1); } return true; } NodeMetaRef::NodeMetaRef(v3s16 p, ServerEnvironment *env): m_p(p), m_env(env) { } NodeMetaRef::NodeMetaRef(Metadata *meta): m_meta(meta), m_is_local(true) { } // Creates an NodeMetaRef and leaves it on top of stack // Not callable from Lua; all references are created on the C side. void NodeMetaRef::create(lua_State *L, v3s16 p, ServerEnvironment *env) { NodeMetaRef *o = new NodeMetaRef(p, env); //infostream<<"NodeMetaRef::create: o="<<o<<std::endl; *(void **)(lua_newuserdata(L, sizeof(void *))) = o; luaL_getmetatable(L, className); lua_setmetatable(L, -2); } // Client-sided version of the above void NodeMetaRef::createClient(lua_State *L, Metadata *meta) { NodeMetaRef *o = new NodeMetaRef(meta); *(void **)(lua_newuserdata(L, sizeof(void *))) = o; luaL_getmetatable(L, className); lua_setmetatable(L, -2); } const char NodeMetaRef::className[] = "NodeMetaRef"; void NodeMetaRef::RegisterCommon(lua_State *L) { lua_newtable(L); int methodtable = lua_gettop(L); luaL_newmetatable(L, className); int metatable = lua_gettop(L); lua_pushliteral(L, "__metatable"); lua_pushvalue(L, methodtable); lua_settable(L, metatable); // hide metatable from Lua getmetatable() lua_pushliteral(L, "metadata_class"); lua_pushlstring(L, className, strlen(className)); lua_settable(L, metatable); lua_pushliteral(L, "__index"); lua_pushvalue(L, methodtable); lua_settable(L, metatable); lua_pushliteral(L, "__gc"); lua_pushcfunction(L, gc_object); lua_settable(L, metatable); lua_pushliteral(L, "__eq"); lua_pushcfunction(L, l_equals); lua_settable(L, metatable); lua_pop(L, 1); // drop metatable } void NodeMetaRef::Register(lua_State *L) { RegisterCommon(L); luaL_openlib(L, 0, methodsServer, 0); // fill methodtable lua_pop(L, 1); // drop methodtable } const luaL_Reg NodeMetaRef::methodsServer[] = { luamethod(MetaDataRef, contains), luamethod(MetaDataRef, get), luamethod(MetaDataRef, get_string), luamethod(MetaDataRef, set_string), luamethod(MetaDataRef, get_int), luamethod(MetaDataRef, set_int), luamethod(MetaDataRef, get_float), luamethod(MetaDataRef, set_float), luamethod(MetaDataRef, to_table), luamethod(MetaDataRef, from_table), luamethod(NodeMetaRef, get_inventory), luamethod(NodeMetaRef, mark_as_private), luamethod(MetaDataRef, equals), {0,0} }; void NodeMetaRef::RegisterClient(lua_State *L) { RegisterCommon(L); luaL_openlib(L, 0, methodsClient, 0); // fill methodtable lua_pop(L, 1); // drop methodtable } const luaL_Reg NodeMetaRef::methodsClient[] = { luamethod(MetaDataRef, contains), luamethod(MetaDataRef, get), luamethod(MetaDataRef, get_string), luamethod(MetaDataRef, get_int), luamethod(MetaDataRef, get_float), luamethod(MetaDataRef, to_table), {0,0} };