add and finalize singleplayer leaderboards and multiplayer scoreboards

master
MisterE123 2021-03-11 22:42:08 -05:00
parent 8e507f453a
commit c8c67658dc
5 changed files with 56 additions and 4 deletions

View File

@ -1,9 +1,11 @@
wormball.version = "02.17.2021.1"
wormball.version = "03.11.2021.1"
wormball.player_texture_save = {}
wormball.storage = minetest.get_mod_storage()
--lookup tables

View File

@ -1,8 +1,8 @@
wormball = {}
wormball.HUD = {}
dofile(minetest.get_modpath("wormball") .. "/globals.lua")
wormball.storage = minetest.get_mod_storage()
wormball.arenas = {}
arena_lib.register_minigame("wormball", {
@ -58,6 +58,7 @@ wormball.arenas = {}
dots = {},
num_players = 0,
time_to_next_elim = 60,
elims = 0,
},
initial_time = 300,
@ -90,3 +91,15 @@ dofile(minetest.get_modpath("wormball") .. "/privs.lua")
dofile(minetest.get_modpath("wormball") .. "/minigame_manager.lua")
if arena_lib.mods and arena_lib.mods["wormball"] and arena_lib.mods["wormball"].arenas and # arena_lib.mods["wormball"].arenas > 0 then
for arena_name, arena_stats in pairs(arena_lib.mods["wormball"].arenas) do
if wormball.storage:get_string(arena_name .. "_highscores") then
local wormball_highscores = wormball.storage:get_string(arena_name .. "_highscores")
local leaderboard = {}
if wormball_highscores then leaderboard = minetest.deserialize( wormball_highscores ) end
arena_lib.mods["wormball"].arenas.singleplayer_leaderboard = leaderboard
end
end
end

View File

@ -240,8 +240,12 @@ arena_lib.on_celebration('wormball', function(arena, winner_name)
arena_lib.HUD_send_msg_all("title", arena, 'New High Score!', 2 ,'sumo_win',0xAEAE00)
table.insert( arena.multi_scores , 1 , { arena.players[ winner_name ] .score , winner_name } )
local scores = arena.multi_scores
if minetest.get_modpath( 'panel_lib' ) then
minetest.after( 2 , function( arena , scores )

View File

@ -10,8 +10,13 @@ arena_lib.on_load("wormball", function(arena)
-- load the saved highscore data from disk
local wormball_highscores = storage:get_string(arena.name .. "_highscores")
local leaderboard = {}
if wormball_highscores then leaderboard = minetest.deserialize( wormball_highscores ) end
arena.singleplayer_leaderboard = leaderboard

View File

@ -66,6 +66,9 @@ arena_lib.on_time_tick('wormball', function(arena)
end
--minetest.chat_send_all( dump(arena.multi_scores))
------------------------------------------------------------------
@ -81,7 +84,32 @@ arena_lib.on_time_tick('wormball', function(arena)
--eliminate a player
if arena.time_to_next_elim == 0 then
arena.time_to_next_elim = 60
arena.elims = arena.elims + 1
arena.time_to_next_elim = 90
if arena.elims > 1 then
arena.time_to_next_elim = 60
end
if arena.elims > 2 then
arena.time_to_next_elim = 55
end
if arena.elims > 3 then
arena.time_to_next_elim = 50
end
if arena.elims > 4 then
arena.time_to_next_elim = 45
end
if arena.elims > 5 then
arena.time_to_next_elim = 30
end
local pl_name = scores[#scores][1]
local pl_score = scores[#scores][2]
local color = arena.players[ pl_name ].color