De-duplicate code in doors mod in make_on_blast
authorNovatux <nathanael.courant@laposte.net>
Tue, 12 May 2015 18:55:46 +0000 (20:55 +0200)
committerNovatux <nathanael.courant@laposte.net>
Tue, 12 May 2015 18:55:46 +0000 (20:55 +0200)
mods/doors/init.lua

index ee08d954670065d606200ab314fec7cf4624da0b..f3dd16959c9a8a8b085278e9c4ad97ab463194ba 100644 (file)
@@ -115,22 +115,14 @@ function doors.register_door(name, def)
                end
        end
 
-       local function make_on_blast(base_name, door_type, other_door_type)
+       local function make_on_blast(base_name, dir, door_type, other_door_type)
                if def.only_placer_can_open then
                        return function() end
                else
-                       if door_type == "_b_1" or door_type == "_b_2" then
-                               return function(pos, intensity)
-                                       check_and_blast(pos, base_name .. door_type)
-                                       pos.y = pos.y + 1
-                                       check_and_blast(pos, base_name .. other_door_type)
-                               end
-                       elseif door_type == "_t_1" or door_type == "_t_2" then
-                               return function(pos, intensity)
-                                       check_and_blast(pos, base_name .. door_type)
-                                       pos.y = pos.y - 1
-                                       check_and_blast(pos, base_name .. other_door_type)
-                               end
+                       return function(pos, intensity)
+                               check_and_blast(pos, base_name .. door_type)
+                               pos.y = pos.y + dir
+                               check_and_blast(pos, base_name .. other_door_type)
                        end
                end
        end
@@ -201,7 +193,7 @@ function doors.register_door(name, def)
                can_dig = check_player_priv,
                sounds = def.sounds,
                sunlight_propagates = def.sunlight,
-               on_blast = make_on_blast(name, "_b_1", "_t_1")
+               on_blast = make_on_blast(name, 1, "_b_1", "_t_1")
        })
 
        minetest.register_node(name.."_t_1", {
@@ -234,7 +226,7 @@ function doors.register_door(name, def)
                can_dig = check_player_priv,
                sounds = def.sounds,
                sunlight_propagates = def.sunlight,
-               on_blast = make_on_blast(name, "_t_1", "_b_1")
+               on_blast = make_on_blast(name, -1, "_t_1", "_b_1")
        })
 
        minetest.register_node(name.."_b_2", {
@@ -267,7 +259,7 @@ function doors.register_door(name, def)
                can_dig = check_player_priv,
                sounds = def.sounds,
                sunlight_propagates = def.sunlight,
-               on_blast = make_on_blast(name, "_b_2", "_t_2")
+               on_blast = make_on_blast(name, 1, "_b_2", "_t_2")
        })
 
        minetest.register_node(name.."_t_2", {
@@ -300,7 +292,7 @@ function doors.register_door(name, def)
                can_dig = check_player_priv,
                sounds = def.sounds,
                sunlight_propagates = def.sunlight,
-               on_blast = make_on_blast(name, "_t_2", "_b_2")
+               on_blast = make_on_blast(name, -1, "_t_2", "_b_2")
        })
 
 end