new event format

This commit is contained in:
BuckarooBanzay 2023-03-19 22:15:53 +01:00
parent d208ad6fd6
commit bd98580eb7
4 changed files with 39 additions and 18 deletions

View File

@ -78,18 +78,37 @@ function building_lib.build(mapblock_pos, playername, building_name, rotation, c
end
end)
placement.place(placement, mapblock_pos, building_def, rotation, function()
-- get or calculate replacements
local replacements = building_def.replace
if type(building_def.replace) == "function" then
replacements = building_def.replace(mapblock_pos, building_def)
end
placement.place(placement, mapblock_pos, building_def, replacements, rotation, function()
callback()
if old_building_info then
-- replacement
local old_building_def = building_lib.get_building(old_building_info.name)
building_lib.fire_event("replaced", mapblock_pos, playername,
old_building_def, old_building_info.rotation, old_building_info.size,
building_def, rotation, size
)
building_lib.fire_event("replaced", {
playername = playername,
mapblock_pos = mapblock_pos,
old_building_def = old_building_def,
old_building_info = old_building_info,
building_def = building_def,
replacements = replacements,
rotation = rotation,
size = size
})
else
-- new build
building_lib.fire_event("placed", mapblock_pos, playername, building_def, rotation, size)
building_lib.fire_event("placed", {
playername = playername,
mapblock_pos = mapblock_pos,
building_def = building_def,
replacements = replacements,
rotation = rotation,
size = size
})
end
end)
return true
@ -108,6 +127,10 @@ function building_lib.build_mapgen(mapblock_pos, building_name, rotation)
}
})
placement.place(placement, mapblock_pos, building_def, rotation)
building_lib.fire_event("placed_mapgen", mapblock_pos, building_def, rotation)
placement.place(placement, mapblock_pos, building_def, {}, rotation)
building_lib.fire_event("placed_mapgen", {
mapblock_pos = mapblock_pos,
building_def = building_def,
rotation = rotation
})
end

View File

@ -4,5 +4,5 @@ building_lib.register_placement("dummy", {
local size = building_def.size or {x=1,y=1,z=1}
return mapblock_lib.rotate_size(size, rotation)
end,
place = function(_, _, _, _, callback) callback() end
place = function(_, _, _, _, _, callback) callback() end
})

View File

@ -1,7 +1,7 @@
-- mapblock_lib schematic catalog
building_lib.register_placement("mapblock_lib", {
place = function(self, mapblock_pos, building_def, rotation, callback)
place = function(self, mapblock_pos, building_def, replacements, rotation, callback)
callback = callback or function() end
local catalog
@ -33,12 +33,6 @@ building_lib.register_placement("mapblock_lib", {
local iterator = mapblock_lib.pos_iterator(catalog_pos1, catalog_pos2)
-- get or calculate replacements
local replace = building_def.replace
if type(building_def.replace) == "function" then
replace = building_def.replace(mapblock_pos, building_def)
end
local function worker()
local catalog_pos = iterator()
if not catalog_pos then
@ -61,7 +55,7 @@ building_lib.register_placement("mapblock_lib", {
angle = rotation,
disable_orientation = building_def.disable_orientation
},
replace = replace
replace = replacements
}
})

View File

@ -46,6 +46,10 @@ function building_lib.remove(mapblock_pos, playername)
end
end
building_lib.fire_event("removed", origin, playername, building_info)
building_lib.fire_event("removed", {
mapblock_pos = origin,
playername = playername,
building_info = building_info
})
return true
end