summaryrefslogtreecommitdiff
path: root/src/map.cpp
diff options
context:
space:
mode:
authordarkrose <lisa@ltmnet.com>2012-07-17 23:00:04 +1000
committerPerttu Ahola <celeron55@gmail.com>2012-07-23 08:18:37 +0300
commitcd6becd442a50a6e2f7129108e1c2c495f885764 (patch)
tree9f013b53ff4ec7d4df6ee26769e397f3defee268 /src/map.cpp
parent829f262c7954c4eb82eff3931d065fce8bc7809e (diff)
downloadminetest-cd6becd442a50a6e2f7129108e1c2c495f885764.tar.gz
minetest-cd6becd442a50a6e2f7129108e1c2c495f885764.tar.bz2
minetest-cd6becd442a50a6e2f7129108e1c2c495f885764.zip
Implement node timers
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/map.cpp b/src/map.cpp
index c6e010c45..dc1f45068 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -1881,6 +1881,59 @@ void Map::removeNodeMetadata(v3s16 p)
block->m_node_metadata.remove(p_rel);
}
+NodeTimer Map::getNodeTimer(v3s16 p)
+{
+ v3s16 blockpos = getNodeBlockPos(p);
+ v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
+ MapBlock *block = getBlockNoCreateNoEx(blockpos);
+ if(!block){
+ infostream<<"Map::getNodeTimer(): Need to emerge "
+ <<PP(blockpos)<<std::endl;
+ block = emergeBlock(blockpos, false);
+ }
+ if(!block)
+ {
+ infostream<<"WARNING: Map::getNodeTimer(): Block not found"
+ <<std::endl;
+ return NodeTimer();
+ }
+ NodeTimer t = block->m_node_timers.get(p_rel);
+ return t;
+}
+
+void Map::setNodeTimer(v3s16 p, NodeTimer t)
+{
+ v3s16 blockpos = getNodeBlockPos(p);
+ v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
+ MapBlock *block = getBlockNoCreateNoEx(blockpos);
+ if(!block){
+ infostream<<"Map::setNodeTimer(): Need to emerge "
+ <<PP(blockpos)<<std::endl;
+ block = emergeBlock(blockpos, false);
+ }
+ if(!block)
+ {
+ infostream<<"WARNING: Map::setNodeTimer(): Block not found"
+ <<std::endl;
+ return;
+ }
+ block->m_node_timers.set(p_rel, t);
+}
+
+void Map::removeNodeTimer(v3s16 p)
+{
+ v3s16 blockpos = getNodeBlockPos(p);
+ v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
+ MapBlock *block = getBlockNoCreateNoEx(blockpos);
+ if(block == NULL)
+ {
+ infostream<<"WARNING: Map::removeNodeTimer(): Block not found"
+ <<std::endl;
+ return;
+ }
+ block->m_node_timers.remove(p_rel);
+}
+
/*
ServerMap
*/