summaryrefslogtreecommitdiff
path: root/advtrains/advtrains/debugringbuffer.lua
diff options
context:
space:
mode:
authorGabriel Pérez-Cerezo <gabriel@gpcf.eu>2020-10-10 23:28:42 +0200
committerGabriel Pérez-Cerezo <gabriel@gpcf.eu>2020-10-10 23:28:42 +0200
commite96cc188665384df96b89af35308716bbdc5ca37 (patch)
tree6c1c053c7df5d3903b81962eb55e1b250ad43da4 /advtrains/advtrains/debugringbuffer.lua
parentd1b1d6ab29afdb116dd7d3c6869bfec097bcb453 (diff)
parent5aad0930d1ddd63d9021d833a9379b4a01bd8414 (diff)
downloadforks-modpack-e96cc188665384df96b89af35308716bbdc5ca37.tar.gz
forks-modpack-e96cc188665384df96b89af35308716bbdc5ca37.tar.bz2
forks-modpack-e96cc188665384df96b89af35308716bbdc5ca37.zip
Merge commit '5aad0930d1ddd63d9021d833a9379b4a01bd8414' as 'advtrains'
Diffstat (limited to 'advtrains/advtrains/debugringbuffer.lua')
-rw-r--r--advtrains/advtrains/debugringbuffer.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/advtrains/advtrains/debugringbuffer.lua b/advtrains/advtrains/debugringbuffer.lua
new file mode 100644
index 0000000..704c0c5
--- /dev/null
+++ b/advtrains/advtrains/debugringbuffer.lua
@@ -0,0 +1,44 @@
+--so, some ringbuffers one for each train
+
+local ringbuflen=1000
+
+local ringbufs={}
+local ringbufcnt={}
+
+function advtrains.drb_record(tid, msg)
+ if not ringbufs[tid] then
+ ringbufs[tid]={}
+ ringbufcnt[tid]=0
+ end
+ ringbufs[tid][ringbufcnt[tid]]=msg
+ ringbufcnt[tid]=ringbufcnt[tid]+1
+ if ringbufcnt[tid] > ringbuflen then
+ ringbufcnt[tid]=0
+ end
+end
+function advtrains.drb_dump(tid)
+ atdebug("Debug ring buffer output for '"..tid.."':")
+ local stopcnt=ringbufcnt[tid]
+ if not stopcnt then
+ atdebug("ID unknown!")
+ return
+ end
+ repeat
+ atdebug(ringbufs[tid][ringbufcnt[tid]])
+ ringbufcnt[tid]=ringbufcnt[tid]+1
+ if ringbufcnt[tid] > ringbuflen then
+ ringbufcnt[tid]=0
+ end
+ until ringbufcnt[tid]==stopcnt
+end
+
+minetest.register_chatcommand("atdebug_show",
+ {
+ params = "train sid", -- Short parameter description
+ description = "Dump debug log", -- Full description
+ privs = {train_operator=true}, -- Require the "privs" privilege to run
+ func = function(name, param)
+ advtrains.drb_dump(param)
+ end, -- Called when command is run.
+ -- Returns boolean success and text output.
+ })