- switch( cellbytes[0] )
- {
- // DOWN
- case 1: case 5: case 11: case 9: case 3:
- map_tile( (int[2]){ cr[0], cr[1]+1 } )->flowing[ compute_flow_counter ] += k_rate_flow;
- break;
-
- // R
- case 2: case 6:
- if( celldata[ (cr[1]*map.x+cr[0]+1)*4 ] != 14 )
- map_tile( (int[2]){ cr[0]+1, cr[1] } )->flowing[ compute_flow_counter ] += k_rate_flow;
- break;
-
- // L
- case 8: case 12:
- if( celldata[ (cr[1]*map.x+cr[0]-1)*4 ] != 14 )
- map_tile( (int[2]){ cr[0]-1, cr[1] } )->flowing[ compute_flow_counter ] += k_rate_flow;
- break;
-
- // L+R
- case 10: case 14:
- if( celldata[ (cr[1]*map.x+cr[0]+1)*4 ] != 14 )
- map_tile( (int[2]){ cr[0]+1, cr[1] } )->flowing[ compute_flow_counter ] += k_rate_flow;
- if( celldata[ (cr[1]*map.x+cr[0]-1)*4 ] != 14 )
- map_tile( (int[2]){ cr[0]-1, cr[1] } )->flowing[ compute_flow_counter ] += k_rate_flow;
- break;
- default: break;
- }
+ // DOWN
+ case 1: case 5: case 11: case 9: case 3:
+ a->flowing[ compute_flow_counter ] += outrate;
+ a->source_count += sourcing;
+ break;
+ case 2: case 6: compute_r = 1; break;
+ case 8: case 12: compute_l = 1; break;
+ case 10: case 14: compute_l = 1; compute_r = 1; break;
+ default: break;
+ }
+
+ if( compute_r && (celldata[ (cr[1]*map.x+cr[0]+1)*4 ] != 14) )
+ {
+ b->flowing[ compute_flow_counter ] += outrate;
+ b->source_count += sourcing;
+ }
+
+ if( compute_l && (celldata[ (cr[1]*map.x+cr[0]-1)*4 ] != 14) )
+ {
+ d->flowing[ compute_flow_counter ] += outrate;
+ d->source_count += sourcing;