summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando Carmona Varo <ferkiwi@gmail.com>2015-11-07 10:27:05 +0100
committerFernando Carmona Varo <ferkiwi@gmail.com>2015-11-07 10:27:05 +0100
commitaeaca5d7494efe55767c997181a5c071c4800c43 (patch)
tree8ea473837f6efed03c5c5ec63639b0e3042272fe
parent234cac868e1baf2089ef255d0751a7e288725db5 (diff)
Some refactoring for the on_player_collision
-rw-r--r--mario/blocks.lua12
-rwxr-xr-xmario/gamestate.lua16
-rw-r--r--mario/portal.lua21
-rw-r--r--pacmine/fruit.lua16
-rwxr-xr-xpacmine/gamestate.lua22
-rw-r--r--pacmine/init.lua8
6 files changed, 46 insertions, 49 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
})
diff --git a/pacmine/fruit.lua b/pacmine/fruit.lua
index 4c21ccc..3100312 100644
--- a/pacmine/fruit.lua
+++ b/pacmine/fruit.lua
@@ -6,17 +6,17 @@ local sbox = {
type = "fixed",
fixed = {{0, 0, 0, 0, 0, 0}}
}
-
+
local pelletitems = {
- {"cherrys", "Cherrys","2"},
- {"apple", "Apple","3"},
- {"orange", "Orange","4"},
- {"strawberry", "Strawberry","2"},
+ {"cherrys", "Cherrys","100"},
+ {"strawberry", "Strawberry","300"},
+ {"orange", "Orange","500"},
+ {"apple", "Apple","700"},
}
for i in ipairs (pelletitems) do
local itm = pelletitems[i][1]
local desc = pelletitems[i][2]
- local hlth = pelletitems[i][3]
+ local points = pelletitems[i][3]
minetest.register_node("pacmine:"..itm,{
description = desc,
@@ -34,6 +34,10 @@ minetest.register_node("pacmine:"..itm,{
collision_box = cbox,
on_timer = function(pos, dtime)
minetest.remove_node(pos)
+ end,
+ on_player_collision = function(pos, player, gameid)
+ minetest.remove_node(pos)
+ pacmine.on_player_got_fruit(player, points)
end
})
end
diff --git a/pacmine/gamestate.lua b/pacmine/gamestate.lua
index 3b948f7..f028e65 100755
--- a/pacmine/gamestate.lua
+++ b/pacmine/gamestate.lua
@@ -262,24 +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 == "pacmine:pellet_1" then
- minetest.remove_node(pos)
- pacmine.on_player_got_pellet(player)
- elseif node.name == "pacmine:pellet_2" then
- minetest.remove_node(pos)
- pacmine.on_player_got_power_pellet(player)
- elseif node.name == "pacmine:cherrys" then
- minetest.remove_node(pos)
- pacmine.on_player_got_fruit(player, 100)
- elseif node.name == "pacmine:strawberry" then
- minetest.remove_node(pos)
- pacmine.on_player_got_fruit(player, 300)
- elseif node.name == "pacmine:orange" then
- minetest.remove_node(pos)
- pacmine.on_player_got_fruit(player, 500)
- elseif node.name == "pacmine:apple" then
- minetest.remove_node(pos)
- pacmine.on_player_got_fruit(player, 700)
+ 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/pacmine/init.lua b/pacmine/init.lua
index 53fbb53..5e8823b 100644
--- a/pacmine/init.lua
+++ b/pacmine/init.lua
@@ -35,6 +35,10 @@ minetest.register_node("pacmine:pellet_1", {
{0, 0, 0, 0, 0, 0},
}
},
+ on_player_collision = function(pos, player, gameid)
+ minetest.remove_node(pos)
+ pacmine.on_player_got_pellet(player)
+ end
})
--Power Pellets. Need to make these do something
@@ -68,6 +72,10 @@ minetest.register_node("pacmine:pellet_2", {
{0, 0, 0, 0, 0, 0},
}
},
+ on_player_collision = function(pos, player, gameid)
+ minetest.remove_node(pos)
+ pacmine.on_player_got_power_pellet(player)
+ end
})
--The placer block for pacmine