summaryrefslogtreecommitdiff
path: root/mario
diff options
context:
space:
mode:
Diffstat (limited to 'mario')
-rw-r--r--mario/blocks.lua12
-rwxr-xr-xmario/gamestate.lua16
-rw-r--r--mario/portal.lua21
3 files changed, 24 insertions, 25 deletions
diff --git a/mario/blocks.lua b/mario/blocks.lua
index f44f61f..4c493d4 100644
--- a/mario/blocks.lua
+++ b/mario/blocks.lua
@@ -52,6 +52,10 @@ minetest.register_node("mario:coin", {
on_destruct = function(pos)
minetest.sound_play("mario-coin", {pos = pos,max_hear_distance = 40,gain = 10.0,})
end,
+ on_player_collision = function(pos, player, gameid)
+ minetest.remove_node(pos)
+ mario.on_player_got_coin(player)
+ end
})
local nbox = {
@@ -86,6 +90,10 @@ minetest.register_node("mario:mushroom",{
on_destruct = function(pos)
minetest.sound_play("mario-bonus", {pos = pos,max_hear_distance = 40,gain = 10.0,})
end,
+ on_player_collision = function(pos, player, gameid)
+ minetest.remove_node(pos)
+ mario.on_player_got_mushroom(player, 15)
+ end
})
minetest.register_node("mario:mushroom_green",{
@@ -106,4 +114,8 @@ minetest.register_node("mario:mushroom_green",{
on_destruct = function(pos)
minetest.sound_play("mario-1-up", {pos = pos,max_hear_distance = 40,gain = 10.0,})
end,
+ on_player_collision = function(pos, player, gameid)
+ minetest.remove_node(pos)
+ mario.on_player_got_mushroom(player, 15)
+ end
})
diff --git a/mario/gamestate.lua b/mario/gamestate.lua
index 1ccf4a7..c4c664b 100755
--- a/mario/gamestate.lua
+++ b/mario/gamestate.lua
@@ -262,18 +262,10 @@ local function on_player_gamestep(player, gameid)
for _,pos in pairs(positions) do
pos = vector.add(player_pos, pos)
local node = minetest.get_node(pos)
- if node.name == "mario:coin" then
- minetest.remove_node(pos)
- mario.on_player_got_coin(player)
- elseif node.name == "mario:mushroom" then
- minetest.remove_node(pos)
- mario.on_player_got_mushroom(player, 15)
- elseif node.name == "mario:portal_right" then
- player_pos.x = player_pos.x -31
- player:setpos(player_pos)
- elseif node.name == "mario:portal_left" then
- player_pos.x = player_pos.x +31
- player:setpos(player_pos)
+ local nodedef = minetest.registered_nodes[node.name]
+
+ if nodedef and nodedef.on_player_collision then
+ nodedef.on_player_collision(pos, player, gameid)
end
end
end
diff --git a/mario/portal.lua b/mario/portal.lua
index eb04b93..1ff31ee 100644
--- a/mario/portal.lua
+++ b/mario/portal.lua
@@ -9,6 +9,9 @@ minetest.register_node("mario:portal", {
walkable = false,
is_ground_content = false,
groups = {cracky = 2,not_in_creative_inventory=1},
+ on_player_collision = function(pos, player, gameid)
+ player:setpos({x=pos.x,y=pos.y+12,z=pos.z})
+ end
})
minetest.register_node("mario:portal_left", {
description = "Portal Left",
@@ -20,6 +23,9 @@ minetest.register_node("mario:portal_left", {
--walkable = false,
is_ground_content = false,
groups = {cracky = 2,not_in_creative_inventory=0},
+ on_player_collision = function(pos, player, gameid)
+ player:setpos(vector.add(pos,{x=31, y=0, z=0}))
+ end
})
minetest.register_node("mario:portal_right", {
description = "Portal Right",
@@ -31,18 +37,7 @@ minetest.register_node("mario:portal_right", {
--walkable = false,
is_ground_content = false,
groups = {cracky = 2,not_in_creative_inventory=0},
-})
-minetest.register_abm({
- nodenames = {"mario:portal"},
- interval = 0.5,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- local objs = minetest.env:get_objects_inside_radius(pos, 1)
- for k, player in pairs(objs) do
- if player:get_player_name() then
-
- player:setpos({x=pos.x,y=pos.y+12,z=pos.z})
- end
- end
+ on_player_collision = function(pos, player, gameid)
+ player:setpos(vector.add(pos,{x=-31, y=0, z=0}))
end
})