summaryrefslogtreecommitdiff
path: root/plugins/liquids.cpp
diff options
context:
space:
mode:
authorPetr Mrázek2011-10-25 02:38:21 +0200
committerPetr Mrázek2011-10-25 02:38:21 +0200
commit0c2a207fcdebf1ab9dacf7d91c17672969773e3e (patch)
tree795c32ac4cad434cfc2a4d94de453fc3120bde53 /plugins/liquids.cpp
parent5962fc4e4fe86c6bcad9156324f199c8dc2da6a0 (diff)
downloaddfhack-0c2a207fcdebf1ab9dacf7d91c17672969773e3e.tar.gz
dfhack-0c2a207fcdebf1ab9dacf7d91c17672969773e3e.tar.bz2
dfhack-0c2a207fcdebf1ab9dacf7d91c17672969773e3e.tar.xz
Fix liquids bug with block brush, fix liquids bug with out-of-map painting.
Diffstat (limited to 'plugins/liquids.cpp')
-rw-r--r--plugins/liquids.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/plugins/liquids.cpp b/plugins/liquids.cpp
index a1468563..92067ba7 100644
--- a/plugins/liquids.cpp
+++ b/plugins/liquids.cpp
@@ -94,11 +94,11 @@ public:
coord_vec points(MapCache & mc, DFHack::DFCoord start)
{
coord_vec v;
- DFHack::DFCoord blockc = start % 16;
+ DFHack::DFCoord blockc = start / 16;
DFHack::DFCoord iterc = blockc * 16;
if( !mc.testCoord(start) )
return v;
-
+ auto starty = iterc.y;
for(int xi = 0; xi < 16; xi++)
{
for(int yi = 0; yi < 16; yi++)
@@ -106,6 +106,7 @@ public:
v.push_back(iterc);
iterc.y++;
}
+ iterc.y = starty;
iterc.x ++;
}
return v;
@@ -405,7 +406,6 @@ DFhackCExport command_result df_liquids (Core * c, vector <string> & parameters)
}
else if(mode == "riversource")
{
- set <Block *> seen_blocks;
coord_vec::iterator iter = all_tiles.begin();
while (iter != all_tiles.end())
{
@@ -447,7 +447,14 @@ DFhackCExport command_result df_liquids (Core * c, vector <string> & parameters)
coord_vec::iterator iter = all_tiles.begin();
while (iter != all_tiles.end())
{
- DFHack::DFCoord current = *iter;
+ DFHack::DFCoord current = *iter; // current tile coord
+ DFHack::DFCoord curblock = current /16; // current block coord
+ // check if the block is actually there
+ if(!mcache.BlockAt(curblock))
+ {
+ iter ++;
+ continue;
+ }
DFHack::t_designation des = mcache.designationAt(current);
uint16_t tt = mcache.tiletypeAt(current);
DFHack::naked_designation & flow = des.bits;
@@ -493,7 +500,7 @@ DFhackCExport command_result df_liquids (Core * c, vector <string> & parameters)
}
mcache.setDesignationAt(current,des);
}
- seen_blocks.insert(mcache.BlockAt((*iter) / 16));
+ seen_blocks.insert(mcache.BlockAt(current / 16));
iter++;
}
set <Block *>::iterator biter = seen_blocks.begin();