Add class choice metrics
This commit is contained in:
parent
fe53e06966
commit
d717547d41
2 changed files with 27 additions and 18 deletions
|
@ -2,23 +2,12 @@ if not minetest.create_metric then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local storage = minetest.get_mod_storage()
|
|
||||||
local function counter(name, help)
|
|
||||||
local metric = minetest.create_metric("counter", name, help)
|
|
||||||
metric:increment(tonumber(storage:get(name) or 0))
|
|
||||||
return {
|
|
||||||
get = function()
|
|
||||||
return metric:get()
|
|
||||||
end,
|
|
||||||
|
|
||||||
increment = function(_, value)
|
local function counter(...)
|
||||||
metric:increment(value)
|
return minetest.create_metric("counter", ...)
|
||||||
storage:set_string(name, tostring(metric:get()))
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
local function gauge(name, help)
|
local function gauge(...)
|
||||||
return minetest.create_metric("gauge", name, help)
|
return minetest.create_metric("gauge", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,15 +43,35 @@ minetest.register_on_placenode(function()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Gauges
|
||||||
|
--
|
||||||
|
|
||||||
|
local class_gauges = {}
|
||||||
|
for _, class in ipairs(ctf_classes.__classes_ordered) do
|
||||||
|
class_gauges[class.name] = gauge("ctf_class_players", "Player count for class", {
|
||||||
|
class = class.name
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
local online_score = gauge("ctf_online_score", "Total score of online players")
|
local online_score = gauge("ctf_online_score", "Total score of online players")
|
||||||
local match_time = gauge("ctf_match_play_time", "Current time in match")
|
local match_time = gauge("ctf_match_play_time", "Current time in match")
|
||||||
|
|
||||||
minetest.register_globalstep(function()
|
minetest.register_globalstep(function()
|
||||||
local sum = 0
|
local sum = 0
|
||||||
|
local class_counts = {}
|
||||||
for _, player in pairs(minetest.get_connected_players()) do
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
local total, _ = ctf_stats.player(player:get_player_name())
|
local total, _ = ctf_stats.player(player:get_player_name())
|
||||||
sum = sum + total.score
|
sum = sum + total.score
|
||||||
end
|
|
||||||
online_score:set(sum)
|
|
||||||
|
|
||||||
|
local class = ctf_classes.get(player)
|
||||||
|
class_counts[class.name] = (class_counts[class.name] or 0) + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
online_score:set(sum)
|
||||||
match_time:set(ctf_match.get_match_duration() or 0)
|
match_time:set(ctf_match.get_match_duration() or 0)
|
||||||
|
|
||||||
|
for _, class in ipairs(ctf_classes.__classes_ordered) do
|
||||||
|
class_gauges[class.name]:set(class_counts[class.name] or 0)
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
name = ctf_metrics
|
name = ctf_metrics
|
||||||
depends = ctf, ctf_stats
|
depends = ctf, ctf_stats, ctf_classes
|
||||||
|
|
Loading…
Reference in a new issue