aboutsummaryrefslogtreecommitdiff
path: root/signs_road/compatibility.lua
diff options
context:
space:
mode:
Diffstat (limited to 'signs_road/compatibility.lua')
-rw-r--r--signs_road/compatibility.lua90
1 files changed, 90 insertions, 0 deletions
diff --git a/signs_road/compatibility.lua b/signs_road/compatibility.lua
new file mode 100644
index 0000000..5fb673a
--- /dev/null
+++ b/signs_road/compatibility.lua
@@ -0,0 +1,90 @@
+--[[
+ signs mod for Minetest - Various signs with text displayed on
+ (c) Pierre-Yves Rollo
+
+ This file is part of signs.
+
+ signs is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ signs is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with signs. If not, see <http://www.gnu.org/licenses/>.
+--]]
+
+-- Wallmounted to facedir conversion
+------------------------------------
+
+local wallmounted_to_facedir = {
+ [0]=1, -- Should not happend with signs
+ [1]=1, -- Should not happend with signs
+ [2]=1,
+ [3]=3,
+ [4]=0,
+ [5]=2
+}
+
+-- Nodes conversions
+local convert_nodes = {
+ ['signs_road:blue_street'] = 'signs_road:blue_street_sign',
+ ['signs_road:green_street'] = 'signs_road:green_street_sign',
+ ['signs_road:black_right'] = 'signs_road:black_right_sign',
+ ['signs_road:black_left'] = 'signs_road:black_left_sign',
+ ['signs_road:green_right'] = 'signs_road:green_right_sign',
+ ['signs_road:green_left'] = 'signs_road:green_left_sign'
+}
+
+local function compatibility_check(pos, node)
+ -- Old wallmounted modes to new facedir nodes conversion
+ node.name = convert_nodes[node.name]
+ if node.name then
+ node.param2 = wallmounted_to_facedir[node.param2]
+ display_api.on_destruct(pos)
+ minetest.swap_node(pos, node)
+ display_api.on_construct(pos)
+ end
+end
+
+minetest.register_lbm({ name = "signs_road:conpatibility_1",
+ nodenames = {'signs_road:blue_street', 'signs_road:green_street', 'signs_road:black_right',
+ 'signs_road:black_left', 'signs_road:green_right', 'signs_road:green_left'},
+ action = compatibility_check,
+})
+
+-- Text entity name change because of signs_lib using signs prefix
+------------------------------------------------------------------
+
+local function compatibility_check_2(pos, node)
+ -- Remove old entity
+ for _, objref in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
+ local entity = objref:get_luaentity()
+ if entity and entity.name == "signs:text" then
+ objref:remove()
+ end
+ end
+ -- Create new entity
+ display_api.update_entities(pos)
+end
+
+minetest.register_lbm({ name = "signs_road:conpatibility_2",
+ nodenames = {
+ "signs_road:blue_street_sign", "signs_road:red_street_sign", "signs_road:white_street_sign",
+ "signs_road:green_street_sign", "signs_road:yellow_street_sign", "signs_road:black_right_sign",
+ "signs_road:black_left_sign", "signs_road:green_right_sign", "signs_road:green_left_sign",
+ "signs_road:yellow_right_sign", "signs_road:yellow_left_sign", "signs_road:white_right_sign",
+ "signs_road:white_left_sign"},
+ action = compatibility_check_2,
+})
+
+-- Node name tidy up
+--------------------
+
+minetest.register_alias("signs_road:green_street_sign", "signs_road:green_sign")
+minetest.register_alias("signs_road:yellow_street_sign", "signs_road:yellow_sign")
+minetest.register_alias("signs_road:white_street_sign", "signs_road:white_sign")