diff options
author | Fernando Carmona Varo <ferkiwi@gmail.com> | 2015-11-07 10:27:05 +0100 |
---|---|---|
committer | Fernando Carmona Varo <ferkiwi@gmail.com> | 2015-11-07 10:27:05 +0100 |
commit | aeaca5d7494efe55767c997181a5c071c4800c43 (patch) | |
tree | 8ea473837f6efed03c5c5ec63639b0e3042272fe | |
parent | 234cac868e1baf2089ef255d0751a7e288725db5 (diff) |
Some refactoring for the on_player_collision
-rw-r--r-- | mario/blocks.lua | 12 | ||||
-rwxr-xr-x | mario/gamestate.lua | 16 | ||||
-rw-r--r-- | mario/portal.lua | 21 | ||||
-rw-r--r-- | pacmine/fruit.lua | 16 | ||||
-rwxr-xr-x | pacmine/gamestate.lua | 22 | ||||
-rw-r--r-- | pacmine/init.lua | 8 |
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 |