From dc70f50b5901732f928c439060dcbbcc6a5dfeb7 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 31 Mar 2012 13:50:25 +0300 Subject: [PATCH] initial_properties field in entity definition --- doc/lua_api.txt | 7 +++++-- games/minimal/mods/experimental/init.lua | 21 +++++++++++---------- src/scriptapi.cpp | 7 ++++++- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index db8ae25b1..b068a8a01 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -792,8 +792,10 @@ Object Properties Entity definition (register_entity) { - Everything from object properties, - -- entity specific -- + (Deprecated: Everything in object properties is read directly from here) + + initial_properties = , + on_activate = function(self, staticdata), on_step = function(self, dtime), on_punch = function(self, hitter), @@ -801,6 +803,7 @@ Entity definition (register_entity) get_staticdata = function(self), ^ Called sometimes; the string returned is passed to on_activate when the entity is re-activated from static state + # Also you can define arbitrary member variables here myvariable = whatever, } diff --git a/games/minimal/mods/experimental/init.lua b/games/minimal/mods/experimental/init.lua index 55ea64132..11f32b3f9 100644 --- a/games/minimal/mods/experimental/init.lua +++ b/games/minimal/mods/experimental/init.lua @@ -409,16 +409,17 @@ minetest.register_alias("TNT", "experimental:tnt") -- minetest.register_entity("experimental:dummyball", { - -- Static definition - hp_max = 20, - physical = false, - collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4}, - visual = "sprite", - visual_size = {x=1, y=1}, - textures = {"experimental_dummyball.png"}, - spritediv = {x=1, y=3}, - initial_sprite_basepos = {x=0, y=0}, - -- Dynamic variables + initial_properties = { + hp_max = 20, + physical = false, + collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4}, + visual = "sprite", + visual_size = {x=1, y=1}, + textures = {"experimental_dummyball.png"}, + spritediv = {x=1, y=3}, + initial_sprite_basepos = {x=0, y=0}, + }, + phase = 0, phasetimer = 0, diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 4ca114a0c..a9f54627d 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -4887,8 +4887,13 @@ void scriptapi_luaentity_get_properties(lua_State *L, u16 id, // Set default values that differ from ObjectProperties defaults prop->hp_max = 10; - // Read stuff + // Deprecated: read object properties directly read_object_properties(L, -1, prop); + + // Read initial_properties + lua_getfield(L, -1, "initial_properties"); + read_object_properties(L, -1, prop); + lua_pop(L, 1); } void scriptapi_luaentity_step(lua_State *L, u16 id, float dtime)