aboutsummaryrefslogtreecommitdiff
path: root/advtrains/nodedb.lua
diff options
context:
space:
mode:
authororwell96 <orwell@bleipb.de>2018-10-17 21:02:43 +0200
committerorwell96 <orwell@bleipb.de>2018-10-17 21:05:06 +0200
commitfe4b4a695af2df5a9c0c43efb9255bbdbf783a12 (patch)
tree818657ffc2ef1fc0190c36cf13fc8132d07c5d2b /advtrains/nodedb.lua
parent267ce6fe6da5c8a59c6ccdbb86b0c66d4398e098 (diff)
downloadadvtrains-fe4b4a695af2df5a9c0c43efb9255bbdbf783a12.tar.gz
advtrains-fe4b4a695af2df5a9c0c43efb9255bbdbf783a12.tar.bz2
advtrains-fe4b4a695af2df5a9c0c43efb9255bbdbf783a12.zip
Fix node database ATC rail bug
After successfully registering newly-placed ATC rails in the nodedb, the rail's after_place_node() callback (local apn_func()) immediately cleared it again by passing a "node" object that was actually a player object and thus had no "name" or "param2" to ndb.update(), which it handled how it should not in this situation. Since those ndb.update calls were unnecessary anyways, I removed them completely.
Diffstat (limited to 'advtrains/nodedb.lua')
-rw-r--r--advtrains/nodedb.lua7
1 files changed, 5 insertions, 2 deletions
diff --git a/advtrains/nodedb.lua b/advtrains/nodedb.lua
index edb3329..9513740 100644
--- a/advtrains/nodedb.lua
+++ b/advtrains/nodedb.lua
@@ -153,10 +153,13 @@ function ndb.update(pos, pnode)
nid=#ndb_nodeids+1
ndb_nodeids[nid]=node.name
end
- ndbset(pos.x, pos.y, pos.z, (nid * 4) + (l2b(node.param2 or 0)) )
- --atprint("nodedb: updating node", pos, "stored nid",nid,"assigned",ndb_nodeids[nid],"resulting cid",ndb_nodes[hash])
+ local resid = (nid * 4) + (l2b(node.param2 or 0))
+ ndbset(pos.x, pos.y, pos.z, resid )
+ --atdebug("nodedb: updating node", pos, "stored nid",nid,"assigned",ndb_nodeids[nid],"resulting cid",resid)
+ advtrains.invalidate_all_paths(pos)
else
--at this position there is no longer a node that needs to be tracked.
+ --atdebug("nodedb: updating node", pos, "cleared")
ndbset(pos.x, pos.y, pos.z, nil)
end
end