Fix summary not stored before restart
- Match summary is now shown at the end of the going match (using `registered_on_winner` and `register_on_skip_map` callbacks), instead of at the start of the next match. - Therefore, `prev_match_summary` is now preserved even after restart. - Also fixes the "Can't initialize mod storage twice" error which occurred due to mod storage also being initialized in `gui.lua` to set/get summary from mod storage. Now, the code for storing and retrieving `prev_match_summary` has been moved to init.lua itself.
This commit is contained in:
parent
b28f5b94bb
commit
66a8a73c68
2 changed files with 37 additions and 28 deletions
|
@ -1,6 +1,3 @@
|
|||
local storage = minetest.get_mod_storage()
|
||||
local prev_match_summary = storage:get_string("prev_match_summary")
|
||||
|
||||
-- Formspec element that governs table columns and their attributes
|
||||
local tablecolumns = {
|
||||
"tablecolumns[color;",
|
||||
|
@ -86,10 +83,6 @@ function ctf_stats.get_formspec_match_summary(stats, winner_team, winner_player,
|
|||
ret = ret .. "label[12,0.5;" .. render_team_stats(red, blue, "score", true) .. "]"
|
||||
ret = ret .. "label[2,7.75;Tip: type /rankings for league tables]"
|
||||
|
||||
-- Set prev_match_summary and write to mod_storage
|
||||
prev_match_summary = ret
|
||||
storage:set_string("prev_match_summary", ret)
|
||||
|
||||
return ret
|
||||
end
|
||||
|
||||
|
@ -375,14 +368,3 @@ minetest.register_chatcommand("transfer_rankings", {
|
|||
return true, "Stats of '" .. src .. "' have been transferred to '" .. dest .. "'."
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("summary", {
|
||||
description = "Display the scoreboard of the previous match.",
|
||||
func = function (name, param)
|
||||
if not prev_match_summary then
|
||||
return false, "Couldn't find the requested data."
|
||||
end
|
||||
|
||||
minetest.show_formspec(name, "ctf_stats:prev_match_summary", prev_match_summary)
|
||||
end
|
||||
})
|
||||
|
|
|
@ -139,11 +139,6 @@ ctf.register_on_join_team(function(name, tname)
|
|||
}
|
||||
end)
|
||||
|
||||
ctf_match.register_on_skip_map(function()
|
||||
ctf.needs_save = true
|
||||
ctf_stats.matches.skipped = ctf_stats.matches.skipped + 1
|
||||
end)
|
||||
|
||||
local winner_team = "-"
|
||||
local winner_player = "-"
|
||||
|
||||
|
@ -159,19 +154,41 @@ ctf_flag.register_on_capture(function(name, flag)
|
|||
winner_player = name
|
||||
end)
|
||||
|
||||
local prev_match_summary = storage:get_string("prev_match_summary")
|
||||
ctf_match.register_on_winner(function(winner)
|
||||
ctf.needs_save = true
|
||||
ctf_stats.matches.wins[winner] = ctf_stats.matches.wins[winner] + 1
|
||||
winner_team = winner
|
||||
end)
|
||||
|
||||
ctf_match.register_on_new_match(function()
|
||||
local fs = ctf_stats.get_formspec_match_summary(ctf_stats.current, winner_team, winner_player, os.time()-ctf_stats.start)
|
||||
local players = minetest.get_connected_players()
|
||||
for _, player in pairs(players) do
|
||||
-- Show match summary
|
||||
local fs = ctf_stats.get_formspec_match_summary(ctf_stats.current,
|
||||
winner_team, winner_player, os.time()-ctf_stats.start)
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
minetest.show_formspec(player:get_player_name(), "ctf_stats:eom", fs)
|
||||
end
|
||||
|
||||
-- Set prev_match_summary and write to mod_storage
|
||||
prev_match_summary = fs
|
||||
storage:set_string("prev_match_summary", fs)
|
||||
end)
|
||||
|
||||
ctf_match.register_on_skip_map(function()
|
||||
ctf.needs_save = true
|
||||
ctf_stats.matches.skipped = ctf_stats.matches.skipped + 1
|
||||
|
||||
-- Show match summary
|
||||
local fs = ctf_stats.get_formspec_match_summary(ctf_stats.current,
|
||||
winner_team, winner_player, os.time()-ctf_stats.start)
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
minetest.show_formspec(player:get_player_name(), "ctf_stats:eom", fs)
|
||||
end
|
||||
|
||||
-- Set prev_match_summary and write to mod_storage
|
||||
prev_match_summary = fs
|
||||
storage:set_string("prev_match_summary", fs)
|
||||
end)
|
||||
|
||||
ctf_match.register_on_new_match(function()
|
||||
ctf_stats.current = {
|
||||
red = {},
|
||||
blue = {}
|
||||
|
@ -291,6 +308,16 @@ minetest.register_on_dieplayer(function(player)
|
|||
end
|
||||
end)
|
||||
|
||||
minetest.register_chatcommand("summary", {
|
||||
func = function (name, param)
|
||||
if not prev_match_summary then
|
||||
return false, "Couldn't find the requested data."
|
||||
end
|
||||
|
||||
minetest.show_formspec(name, "ctf_stats:prev_match_summary", prev_match_summary)
|
||||
end
|
||||
})
|
||||
|
||||
ctf_stats.load()
|
||||
|
||||
dofile(minetest.get_modpath("ctf_stats").."/gui.lua")
|
||||
|
|
Loading…
Reference in a new issue