| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -23,6 +23,8 @@ typedef void (*checkTile)(DFCoord, MapExtras::MapCache &);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//Forward Declarations for Commands
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result filltraffic(color_ostream &out, std::vector<std::string> & params);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result alltraffic(color_ostream &out, std::vector<std::string> & params);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result restrictLiquid(color_ostream &out, std::vector<std::string> & params);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result restrictIce(color_ostream &out, std::vector<std::string> & params);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//Forward Declarations for Utility Functions
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result setAllMatching(color_ostream &out, checkTile checkProc,
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -34,6 +36,9 @@ void allNormal(DFCoord coord, MapExtras::MapCache & map);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void allLow(DFCoord coord, MapExtras::MapCache & map);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void allRestricted(DFCoord coord, MapExtras::MapCache & map);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void restrictLiquidProc(DFCoord coord, MapExtras::MapCache &map);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void restrictIceProc(DFCoord coord, MapExtras::MapCache &map);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				DFHACK_PLUGIN("filltraffic");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <PluginCommand> &commands)
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -66,6 +71,14 @@ DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <Plug
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "  L: Low Traffic\n"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "  R: Restricted Traffic\n"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    ));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					commands.push_back(PluginCommand(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						"restrictliquids","Restrict on every visible square with liquid",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						restrictLiquid, false, ""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					commands.push_back(PluginCommand(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						"restrictice","Restrict traffic on squares above visible ice",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						restrictIce, false, ""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return CR_OK;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -265,6 +278,16 @@ command_result alltraffic(color_ostream &out, std::vector<std::string> & params)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return setAllMatching(out, proc);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result restrictLiquid(color_ostream &out, std::vector<std::string> & params)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return setAllMatching(out, restrictLiquidProc);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				command_result restrictIce(color_ostream &out, std::vector<std::string> & params)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					return setAllMatching(out, restrictIceProc);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//Helper function for writing new functions that check every tile on the map.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//newTraffic is the traffic designation to set.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//check takes a coordinate and the map cache as arguments, and returns true if the criteria is met.
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -356,3 +379,33 @@ void allRestricted(DFCoord coord, MapExtras::MapCache &map)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    des.bits.traffic = tile_traffic::Restricted;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    map.setDesignationAt(coord, des);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//Restrict traffic if tile is visible and liquid is present.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void restrictLiquidProc(DFCoord coord, MapExtras::MapCache &map)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					df::tile_designation des = map.designationAt(coord);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if ((des.bits.hidden == 0) && (des.bits.flow_size != 0))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						des.bits.traffic = tile_traffic::Restricted;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						map.setDesignationAt(coord, des);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//Restrict traffice if tile is above visible ice wall.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void restrictIceProc(DFCoord coord, MapExtras::MapCache &map)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					//There is no ice below the bottom of the map.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if (coord.z == 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					DFCoord tile_below = DFCoord(coord.x, coord.y, coord.z - 1);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					df::tiletype tt = map.tiletypeAt(tile_below);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					df::tile_designation des = map.designationAt(tile_below);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if ((des.bits.hidden == 0) && (tileMaterial(tt) == tiletype_material::FROZEN_LIQUID))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						des = map.designationAt(coord);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						des.bits.traffic = tile_traffic::Restricted;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						map.setDesignationAt(coord, des);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |