diff --git a/init.lua b/init.lua index a773874..aaaaf07 100644 --- a/init.lua +++ b/init.lua @@ -94,7 +94,7 @@ dofile(path .. "/blocks.lua") dofile(manager_path .. "on_load.lua") dofile(manager_path .. "on_start.lua") dofile(manager_path .. "on_time_tick.lua") - +dofile(manager_path .. "on_celebrate.lua") diff --git a/minigame_manager/on_celebrate.lua b/minigame_manager/on_celebrate.lua new file mode 100644 index 0000000..34441d2 --- /dev/null +++ b/minigame_manager/on_celebrate.lua @@ -0,0 +1,22 @@ +arena_lib.register_on_celebration(function(mod_ref, arena, winners) + for pl_name,stats in pairs(arena.players) do -- it is a good convention to use "pl_name" in for loops and "p_name" elsewhere + if balloon_bop.infohuds[pl_name] then + local player = minetest.get_player_by_name(pl_name) + if player then + -- clear HUDs + player:hud_remove(balloon_bop.infohuds[pl_name]) + for idx,hud_id in ipairs(balloon_bop.numhuds[pl_name]) do + player:hud_remove(hud_id) + end + balloon_bop.infohuds[pl_name] = nil + balloon_bop.numhuds[pl_name] = nil + end + end + minetest.chat_send_player(pl_name,"Game Over! Your score is ".. arena.players[pl_name].score .."!") + end + for _,obj in pairs(minetest.get_objects_inside_radius(arena.balloon_spawner, arena.arena_radius)) do + if not( obj:is_player()) and obj:get_luaentity().name == "balloon_bop:balloon" then + obj:remove() + end + end +end) \ No newline at end of file diff --git a/minigame_manager/on_time_tick.lua b/minigame_manager/on_time_tick.lua index 567cee9..2a26a74 100644 --- a/minigame_manager/on_time_tick.lua +++ b/minigame_manager/on_time_tick.lua @@ -69,26 +69,7 @@ arena_lib.on_time_tick("balloon_bop", function(arena) end --handle end of game if arena.arena_lives == 0 then - for pl_name,stats in pairs(arena.players) do -- it is a good convention to use "pl_name" in for loops and "p_name" elsewhere - if balloon_bop.infohuds[pl_name] then - local player = minetest.get_player_by_name(pl_name) - if player then - -- clear HUDs - player:hud_remove(balloon_bop.infohuds[pl_name]) - for idx,hud_id in ipairs(balloon_bop.numhuds[pl_name]) do - player:hud_remove(hud_id) - end - balloon_bop.infohuds[pl_name] = nil - balloon_bop.numhuds[pl_name] = nil - end - end - minetest.chat_send_player(pl_name,"Game Over! Your score is ".. arena.players[pl_name].score .."!") - end - for _,obj in pairs(minetest.get_objects_inside_radius(arena.balloon_spawner, arena.arena_radius)) do - if not( obj:is_player()) and obj:get_luaentity().name == "balloon_bop:balloon" then - obj:remove() - end - end + -- determine if there is a clear winner local highscore = {[1]="",[2]=0} for pl_name,stats in pairs(arena.players) do