monitoring mod support / config

master
BuckarooBanzay 2020-05-19 15:34:48 +02:00
parent c1c21e721d
commit 012f04ea3c
4 changed files with 46 additions and 3 deletions

View File

@ -13,5 +13,5 @@ read_globals = {
"dump", "screwdriver",
-- Deps
"default"
"default", "monitoring"
}

View File

@ -1,3 +1,18 @@
local has_monitoring_mod = minetest.get_modpath("monitoring")
local active_trains_metric, inactive_trains_metric
if has_monitoring_mod then
active_trains_metric = monitoring.gauge(
"advtrains_custom_active_trains",
"number of active trains"
)
inactive_trains_metric = monitoring.gauge(
"advtrains_custom_inactive_trains",
"number of inactive trains"
)
end
-- id -> true
local disabled_trains = {}
@ -9,8 +24,13 @@ minetest.register_globalstep(function(dtime)
timer=0
disabled_trains = {}
local max_range = 500
local max_range_setting = minetest.settings:get("advtrains_custom.max_range") or "500"
local max_range = tonumber(max_range_setting)
local players = minetest.get_connected_players()
local active_trains = 0
local inactive_trains = 0
for id, train in pairs(advtrains.trains) do
disabled_trains[id] = true
local tpos = train.last_pos
@ -20,12 +40,28 @@ minetest.register_globalstep(function(dtime)
if distance < max_range then
-- enable train
disabled_trains[id] = nil
-- skip other players
break
end
end
if has_monitoring_mod then
-- collect metrics
if disabled_trains[id] then
inactive_trains = inactive_trains + 1
else
active_trains = active_trains + 1
end
active_trains_metric.set(active_trains)
inactive_trains_metric.set(inactive_trains)
end
end
end)
-- overrides
assert(type(advtrains.train_ensure_init) == "function")
local old_train_ensure_init = advtrains.train_ensure_init
advtrains.train_ensure_init = function(k, v)
if disabled_trains[k] then
@ -35,6 +71,7 @@ advtrains.train_ensure_init = function(k, v)
end
end
assert(type(advtrains.train_step_b) == "function")
local old_train_step_b = advtrains.train_step_b
advtrains.train_step_b = function(k, v, dtime)
if disabled_trains[k] then
@ -44,6 +81,7 @@ advtrains.train_step_b = function(k, v, dtime)
end
end
assert(type(advtrains.train_step_c) == "function")
local old_train_step_c = advtrains.train_step_c
advtrains.train_step_c = function(k, v, dtime)
if disabled_trains[k] then

View File

@ -1,2 +1,3 @@
depends = advtrains
name = advtrains_custom
depends = advtrains
optional_depends = monitoring

View File

@ -11,3 +11,7 @@ various advtrains hacks and customizations
## Far away trains
Disables far away (>500 nodes) trains
# Settings
* **advtrains_custom.max_range** max range of active trains (default: 500 nodes)