Open colonelfazackerley opened 5 years ago
What benefits do you see from this?
I am have a personal dislike of checkstyle for code formatting, because it doesn't correct your code, only complains about it, and sometimes in ways that are hard to apply. So, for code formatting, I'd prefer a formatting tool such as Google Java Formatter with the --aosp
argument because it fixes your code instead of just complaining about it.
I also personally see little value in "warnings" that don't fail the build because they tend to rot, so if we introduced something like this I would always want it to be part of a feasible plan to fix all warnings and then make any new warnings fail the build. [Note: this falls down if different operating systems or Java versions cause different warnings, so if that was the case I'd be less favourable towards doing it.]
I noticed we have a lot of deviations from the code style (whitespace, line length), and I'm introducing more by accident. checkstyle also does a few things to make bugs less likely or make code clearer (eg pointing out where variables can be declared final
).
I was looking for something to help pick them up. I can look at Google's. I agree that having the option to make it fix the code is useful.
Looks like Google's is not configurable, and Google style is quite different (curly brace position, line length, ... ).
maybe astyle https://sourceforge.net/projects/astyle/
I took some time to look into code formatters a few years ago and found none that I thought were good enough to use. Google's seems better, but we would have to change the style to fit it. I could live with that.
See #357
maybe uncrustify https://github.com/uncrustify/uncrustify
ha, I joined in the chat for the previous discussion: forgot completely.
I prefer Google's java style to the current rabbit style.
uncrustify looks promising. I am trawling through the config.
I prefer Google's java style to the current rabbit style.
I can live with it.
Fwiw I'd be happy with the Google Java style.
Despite preferring Google style, I have been fiddling with making uncrustify do rabbit style.
```cfg
# Uncrustify 0.58
#
# General options
#
# The type of line endings
newlines = auto # auto/lf/crlf/cr
# The original size of tabs in the input
input_tab_size = 4 # number
# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list>=val);'.
# If true (default), 'assert(x<0 && y>=3)' will be broken.
# Improvements to template detection may make this option obsolete.
tok_split_gte = false # false/true
#
# Indenting
#
# The number of columns to indent per level.
# Usually 2, 3, 4, or 8.
indent_columns = 4 # number
# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
# For FreeBSD, this is set to 4.
indent_continue = 0 # number
# How to use tabs when indenting code
# 0=spaces only
# 1=indent with tabs to brace level, align with spaces
# 2=indent and align with tabs, using spaces when not on a tabstop
indent_with_tabs = 0 # number
# Whether to indent strings broken by '\' so that they line up
indent_align_string = true # false/true
# The number of spaces to indent multi-line XML strings.
# Requires indent_align_string=True
indent_xml_string = 2 # number
# Spaces to indent '{' from level
indent_brace = 0 # number
# Whether braces are indented to the body level
indent_braces = false # false/true
# Disabled indenting function braces if indent_braces is true
indent_braces_no_func = false # false/true
# Disabled indenting class braces if indent_braces is true
indent_braces_no_class = false # false/true
# Disabled indenting struct braces if indent_braces is true
indent_braces_no_struct = false # false/true
# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
indent_brace_parent = false # false/true
# Whether the 'namespace' body is indented
indent_namespace = false # false/true
# The number of spaces to indent a namespace block
indent_namespace_level = 0 # number
# If the body of the namespace is longer than this number, it won't be indented.
# Requires indent_namespace=true. Default=0 (no limit)
indent_namespace_limit = 0 # number
# Whether the 'extern "C"' body is indented
indent_extern = false # false/true
# Whether the 'class' body is indented
indent_class = true # false/true
# Whether to indent the stuff after a leading class colon
indent_class_colon = false # false/true
# False=treat 'else\nif' as 'else if' for indenting purposes
# True=indent the 'if' one level
indent_else_if = true # false/true
# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
indent_var_def_blk = 0 # number
# Indent continued variable declarations instead of aligning.
indent_var_def_cont = true # false/true
# True: indent continued function call parameters one indent level
# False: align parameters under the open paren
indent_func_call_param = true # false/true
# Same as indent_func_call_param, but for function defs
indent_func_def_param = true # false/true
# Same as indent_func_call_param, but for function protos
indent_func_proto_param = true # false/true
# Same as indent_func_call_param, but for class declarations
indent_func_class_param = true # false/true
# Same as indent_func_call_param, but for class variable constructors
indent_func_ctor_var_param = true # false/true
# Same as indent_func_call_param, but for templates
indent_template_param = true # false/true
# Double the indent for indent_func_xxx_param options
indent_func_param_double = false # false/true
# Indentation column for standalone 'const' function decl/proto qualifier
indent_func_const = 0 # number
# Indentation column for standalone 'throw' function decl/proto qualifier
indent_func_throw = 0 # number
# The number of spaces to indent a continued '->' or '.'
# Usually set to 0, 1, or indent_columns.
indent_member = 4 # number
# Spaces to indent single line ('//') comments on lines before code
indent_sing_line_comments = 0 # number
# If set, will indent trailing single line ('//') comments relative
# to the code instead of trying to keep the same absolute column
indent_relative_single_line_comments = false # false/true
# Spaces to indent 'case' from 'switch'
# Usually 0 or indent_columns.
indent_switch_case = 0 # number
# Spaces to shift the 'case' line, without affecting any other lines
# Usually 0.
indent_case_shift = 0 # number
# Spaces to indent '{' from 'case'.
# By default, the brace will appear under the 'c' in case.
# Usually set to 0 or indent_columns.
indent_case_brace = 0 # number
# Whether to indent comments found in first column
indent_col1_comment = false # false/true
# How to indent goto labels
# >0 : absolute column where 1 is the leftmost column
# <=0 : subtract from brace indent
indent_label = -4 # number
# Same as indent_label, but for access specifiers that are followed by a colon
indent_access_spec = -4 # number
# Indent the code after an access specifier by one level.
# If set, this option forces 'indent_access_spec=0'
indent_access_spec_body = true # false/true
# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
indent_paren_nl = false # false/true
# Controls the indent of a close paren after a newline.
# 0: Indent to body level
# 1: Align under the open paren
# 2: Indent to the brace level
indent_paren_close = 0 # number
# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
indent_comma_paren = false # false/true
# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
indent_bool_paren = false # false/true
# If 'indent_bool_paren' is true, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
indent_first_bool_expr = false # false/true
# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
indent_square_nl = false # false/true
# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
indent_preserve_sql = false # false/true
# Align continued statements at the '='. Default=True
# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
indent_align_assign = false # false/true
#
# Spacing options
#
# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
sp_arith = force # ignore/add/remove/force
# Add or remove space around assignment operator '=', '+=', etc
sp_assign = force # ignore/add/remove/force
# Add or remove space around assignment operator '=' in a prototype
sp_assign_default = force # ignore/add/remove/force
# Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
sp_before_assign = force # ignore/add/remove/force
# Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
sp_after_assign = force # ignore/add/remove/force
# Add or remove space around assignment '=' in enum
sp_enum_assign = force # ignore/add/remove/force
# Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
sp_enum_before_assign = force # ignore/add/remove/force
# Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
sp_enum_after_assign = force # ignore/add/remove/force
# Add or remove space around boolean operators '&&' and '||'
sp_bool = force # ignore/add/remove/force
# Add or remove space around compare operator '<', '>', '==', etc
sp_compare = force # ignore/add/remove/force
# Add or remove space inside '(' and ')'
sp_inside_paren = force # ignore/add/remove/force
# Add or remove space between nested parens
sp_paren_paren = force # ignore/add/remove/force
# Whether to balance spaces inside nested parens
sp_balance_nested_parens = false # false/true
# Add or remove space between ')' and '{'
sp_paren_brace = force # ignore/add/remove/force
# Add or remove space between type and word. Default=Force
sp_after_type = force # ignore/add/remove/force
# Add or remove space in 'template <' vs 'template<'.
# If set to ignore, sp_before_angle is used.
sp_template_angle = remove # ignore/add/remove/force
# Add or remove space before '<>'
sp_before_angle = remove # ignore/add/remove/force
# Add or remove space inside '<' and '>'
sp_inside_angle = remove # ignore/add/remove/force
# Add or remove space after '<>'
sp_after_angle = remove # ignore/add/remove/force
# Add or remove space between '<>' and '(' as found in 'new List
diff example after running on WaterRegionRenderer. Perhaps not perfect yet, but good. Anything here not correct? I can look in the config and try to adjust.
diff --git a/rabbit-escape-render/src/rabbitescape/render/WaterRegionRenderer.java b/rabbit-escape-render/src/rabbitescape/render/WaterRegionRenderer.java
index c503e67f..c58eced8 100644
--- a/rabbit-escape-render/src/rabbitescape/render/WaterRegionRenderer.java
+++ b/rabbit-escape-render/src/rabbitescape/render/WaterRegionRenderer.java
@@ -6,28 +6,27 @@ import java.util.List;
import rabbitescape.engine.Block;
import rabbitescape.engine.CellularDirection;
-import static rabbitescape.engine.CellularDirection.UP;
-import static rabbitescape.engine.CellularDirection.DOWN;
-import static rabbitescape.engine.CellularDirection.LEFT;
-import static rabbitescape.engine.CellularDirection.RIGHT;
import rabbitescape.engine.Pipe;
-import rabbitescape.engine.Thing;
-import rabbitescape.engine.WaterRegion;
-import rabbitescape.engine.World;
import rabbitescape.engine.textworld.BlockRenderer;
+import rabbitescape.engine.Thing;
import rabbitescape.engine.util.CellDebugPrint;
import rabbitescape.engine.util.LookupItem2D;
import rabbitescape.engine.util.MathUtil;
import rabbitescape.engine.util.Position;
import rabbitescape.engine.util.WaterUtil;
+import rabbitescape.engine.WaterRegion;
+import rabbitescape.engine.World;
import rabbitescape.render.gameloop.WaterAnimation;
+import static rabbitescape.engine.CellularDirection.DOWN;
+import static rabbitescape.engine.CellularDirection.LEFT;
+import static rabbitescape.engine.CellularDirection.RIGHT;
+import static rabbitescape.engine.CellularDirection.UP;
import static rabbitescape.engine.BehaviourTools.*;
import static rabbitescape.engine.CellularDirection.*;
public class WaterRegionRenderer implements LookupItem2D
{
-
private static final int maxHeightChange = 1;
public WaterRegion region;
@@ -38,13 +37,14 @@ public class WaterRegionRenderer implements LookupItem2D
private int targetParticleCount = 0;
private int particleCount = 0;
- public final ArrayList<WaterParticle> particles = new ArrayList<WaterParticle>();
+ public final ArrayList<WaterParticle> particles =
+ new ArrayList<WaterParticle>();
private final World world;
private final WaterAnimation waterAnimation;
- public WaterRegionRenderer(WaterRegion region, World world,
- WaterAnimation waterAnimation )
+ public WaterRegionRenderer( WaterRegion region, World world,
+ WaterAnimation waterAnimation )
{
this.region = region;
this.world = world;
@@ -53,7 +53,8 @@ public class WaterRegionRenderer implements LookupItem2D
public WaterRegionRenderer adjacentRenderer( CellularDirection d )
{
- return waterAnimation.lookupRenderer.getItemAt( region.x + d.xOffset, region.y + d.yOffset );
+ return waterAnimation.lookupRenderer.getItemAt( region.x + d.xOffset,
+ region.y + d.yOffset );
}
public boolean adjacentIsNull( CellularDirection d )
@@ -64,6 +65,7 @@ public class WaterRegionRenderer implements LookupItem2D
public boolean adjacentWaterIsFalling( CellularDirection d )
{
WaterRegionRenderer adj = adjacentRenderer( d );
+
if ( null == adj )
{
return false;
@@ -88,7 +90,7 @@ public class WaterRegionRenderer implements LookupItem2D
}
targetParticleCount = 0;
Block block = world.getBlockAt( region.x, region.y );
- if ( null == block || isBridge( block ))
+ if ( ( null == block ) || isBridge( block ) )
{
targetWaterHeight = region.getContents() / 32;
}
@@ -109,19 +111,20 @@ public class WaterRegionRenderer implements LookupItem2D
*/
private void adjustParticleCount()
{
- targetParticleCount = region.getContents() / waterAnimation.contentsPerParticle;
- int particleDeficit = targetParticleCount - particles.size();
- if ( particleDeficit < 0 ) // Need to remove some: start fading
+ targetParticleCount = region.getContents() /
+ waterAnimation.contentsPerParticle;
+ int particleDeficit = targetParticleCount - particles.size();
+ if ( particleDeficit < 0 ) // Need to remove some: start fading
{
- for ( int i = 0 ; i < -particleDeficit ; i++)
+ for ( int i = 0; i < -particleDeficit; i++ )
{
WaterParticle p = particles.get( i );
p.alphaStep = -p.alphaStepMagnitude;
}
}
- else if (particleDeficit > 0 ) // Need to add some
+ else if ( particleDeficit > 0 ) // Need to add some
{
- for ( int i = 0 ; i < particleDeficit ; i++)
+ for ( int i = 0; i < particleDeficit; i++ )
{
particles.add( new WaterParticle( this ) );
}
@@ -135,8 +138,8 @@ public class WaterRegionRenderer implements LookupItem2D
public void setWaterHeight()
{
height = MathUtil.constrain( targetWaterHeight,
- lastHeight - maxHeightChange ,
- lastHeight + maxHeightChange );
+ lastHeight - maxHeightChange,
+ lastHeight + maxHeightChange );
lastHeight = height;
}
@@ -147,20 +150,20 @@ public class WaterRegionRenderer implements LookupItem2D
private void checkParticlesInRegion()
{
// make temporary list to iterate, so we can transfer ownership of items
- for ( WaterParticle p : new ArrayList<WaterParticle>(particles) )
+ for ( WaterParticle p : new ArrayList<WaterParticle>( particles ) )
{
if ( p.outOfRegion( this ) )
{
- WaterRegionRenderer newRend = p.rendererByPosition( waterAnimation );
- if ( newRend == null )
- { // no water here: accelerate fading
+ WaterRegionRenderer newRend = p.rendererByPosition(
+ waterAnimation );
+ if ( newRend == null ) // no water here: accelerate fading
+ {
p.alphaStep = p.alphaStep - p.alphaStepMagnitude;
continue;
}
- if ( isFull( newRend.region.x, newRend.region.y ) )
- { // particle has moved to full cell: delete immediately
- // block cells count as full too
- particles.remove(p);
+ if ( isFull( newRend.region.x, newRend.region.y ) ) // particle has moved to full cell: delete immediately
+ { // block cells count as full too
+ particles.remove( p );
continue;
}
// transfer ownership to other renderer
@@ -170,18 +173,19 @@ public class WaterRegionRenderer implements LookupItem2D
}
// now particles are in the correct cell remove those that have
// fallen below the water level.
- for ( WaterParticle p : new ArrayList<WaterParticle>(particles) )
+ for ( WaterParticle p : new ArrayList<WaterParticle>( particles ) )
{
WaterRegionRenderer r = p.rendererByPosition( waterAnimation );
- if ( r == null )
- { // particle is not in a cell with a renderer:leave it
+ if ( r == null ) // particle is not in a cell with a renderer:leave it
+ {
continue;
}
// convert to nominal pixels (32 in a cell)
- int heightInCell = (int)( (1.0f + Math.floor(p.y) - p.y) * 32.0f );
- if ( heightInCell < r.targetWaterHeight )
- { // below water level: delete immediately
- particles.remove(p);
+ int heightInCell =
+ (int)( ( 1.0f + Math.floor( p.y ) - p.y ) * 32.0f );
+ if ( heightInCell < r.targetWaterHeight ) // below water level: delete immediately
+ {
+ particles.remove( p );
}
}
}
@@ -193,7 +197,6 @@ public class WaterRegionRenderer implements LookupItem2D
{
// Some particles may have left the region: update this first.
checkParticlesInRegion();
-
for ( WaterParticle p : particles )
{
p.step();
@@ -224,6 +227,7 @@ public class WaterRegionRenderer implements LookupItem2D
public void removeHeightGaps()
{
WaterRegionRenderer above = adjacentRenderer( CellularDirection.UP );
+
if ( null == above )
{
return;
@@ -249,30 +253,34 @@ public class WaterRegionRenderer implements LookupItem2D
*/
public Vertex topVertex( CellPosition d )
{
- int x = region.x * 32, y = region.y * 32; // Local cell origin in nominal pixels.
+ int x = region.x * 32, y = region.y * 32; // Local cell origin in nominal pixels.
+
if ( 0 == height )
{
switch ( d )
{
case TOP_LEFT:
return new Vertex( x, y + 32 );
+
case TOP_MIDDLE:
return new Vertex( x + 16, y + 32 );
+
case TOP_RIGHT:
return new Vertex( x + 32, y + 32 );
+
default:
- throw new RuntimeException( "Can only add vertices for TOP_LEFT, TOP_MIDDLE or TOP_RIGHT cells.");
+ throw new RuntimeException(
+ "Can only add vertices for TOP_LEFT, TOP_MIDDLE or TOP_RIGHT cells." );
}
}
- Block block = world.getBlockAt( region.x, region.y );
- int boundaryHeight = calcBoundaryHeight( d );
- int xOffset, yOffset;
-
+ Block block = world.getBlockAt( region.x, region.y );
+ int boundaryHeight = calcBoundaryHeight( d );
+ int xOffset, yOffset;
switch ( d )
{
case TOP_LEFT:
xOffset = 0;
- if ( shapeEquals ( block, Block.Shape.UP_LEFT ) )
+ if ( shapeEquals( block, Block.Shape.UP_LEFT ) )
{
yOffset = 0;
}
@@ -281,9 +289,12 @@ public class WaterRegionRenderer implements LookupItem2D
yOffset = 32 - boundaryHeight;
}
break;
+
case TOP_MIDDLE:
xOffset = 16;
- if ( shapeEquals ( block, Block.Shape.UP_LEFT ) || shapeEquals ( block, Block.Shape.UP_RIGHT ) )
+ if ( shapeEquals( block,
+ Block.Shape.UP_LEFT ) ||
+ shapeEquals( block, Block.Shape.UP_RIGHT ) )
{
yOffset = ( 32 - height ) / 2;
}
@@ -292,9 +303,10 @@ public class WaterRegionRenderer implements LookupItem2D
yOffset = 32 - height;
}
break;
+
case TOP_RIGHT:
xOffset = 32;
- if ( shapeEquals ( block, Block.Shape.UP_RIGHT ) )
+ if ( shapeEquals( block, Block.Shape.UP_RIGHT ) )
{
yOffset = 0;
}
@@ -303,8 +315,10 @@ public class WaterRegionRenderer implements LookupItem2D
yOffset = 32 - boundaryHeight;
}
break;
+
default:
- throw new RuntimeException( "Can only add vertices for LEFT or RIGHT cells." );
+ throw new RuntimeException(
+ "Can only add vertices for LEFT or RIGHT cells." );
}
return new Vertex( x + xOffset, y + yOffset );
}
@@ -316,7 +330,7 @@ public class WaterRegionRenderer implements LookupItem2D
{
if ( region.isConnected( d ) )
{
- WaterRegionRenderer wrr = adjacentRenderer ( d );
+ WaterRegionRenderer wrr = adjacentRenderer( d );
if ( null == wrr )
{
return height;
@@ -328,17 +342,24 @@ public class WaterRegionRenderer implements LookupItem2D
private int calcBoundaryHeight( CellPosition cellPosition )
{
- if ( cellPosition.leftRightness == null || !region.isConnected( cellPosition.leftRightness ) || isFull( region.x, region.y ) )
- { // The cell in that direction is not relevant
+ if ( ( cellPosition.leftRightness == null ) ||
+ !region.isConnected( cellPosition.leftRightness ) ||
+ isFull( region.x, region.y ) ) // The cell in that direction is not relevant
+ {
return height;
}
- WaterRegionRenderer adjWrr = adjacentRenderer( cellPosition.leftRightness );
- if ( null == adjWrr )
- { // Adjacent is probably empty, and this cell is probably a low level
+ WaterRegionRenderer adjWrr =
+ adjacentRenderer( cellPosition.leftRightness );
+ if ( null == adjWrr ) // Adjacent is probably empty, and this cell is probably a low level
+ {
if ( region.isConnected( cellPosition.leftRightness ) )
{
- WaterRegion adjReg = world.waterTable.getItemAt( region.x + cellPosition.leftRightness.xOffset, region.y + cellPosition.leftRightness.yOffset );
- if ( adjReg != null && adjReg.isConnected( CellularDirection.opposite( cellPosition.leftRightness ) ) )
+ WaterRegion adjReg = world.waterTable.getItemAt(
+ region.x + cellPosition.leftRightness.xOffset,
+ region.y + cellPosition.leftRightness.yOffset );
+ if ( adjReg !=
+ null && adjReg.isConnected( CellularDirection.opposite(
+ cellPosition.leftRightness ) ) )
{
return 0;
}
@@ -354,13 +375,14 @@ public class WaterRegionRenderer implements LookupItem2D
public Vertex bottomVertex( CellPosition d )
{
- int x = region.x * 32, y = region.y * 32; // Local cell origin in nominal pixels.
- int xOffset;
- Block block = world.getBlockAt( region.x, region.y );
+ int x = region.x * 32, y = region.y * 32; // Local cell origin in nominal pixels.
+ int xOffset;
+ Block block = world.getBlockAt( region.x, region.y );
+
switch ( d )
{
case BOTTOM_LEFT:
- if ( shapeEquals ( block, Block.Shape.UP_LEFT ) )
+ if ( shapeEquals( block, Block.Shape.UP_LEFT ) )
{
xOffset = 32;
}
@@ -369,8 +391,9 @@ public class WaterRegionRenderer implements LookupItem2D
xOffset = 0;
}
break;
+
case BOTTOM_RIGHT:
- if ( shapeEquals ( block, Block.Shape.UP_RIGHT ) )
+ if ( shapeEquals( block, Block.Shape.UP_RIGHT ) )
{
xOffset = 0;
}
@@ -379,32 +402,35 @@ public class WaterRegionRenderer implements LookupItem2D
xOffset = 32;
}
break;
+
default:
- throw new RuntimeException( "Can only add bottom vertices for BOTTOM_LEFT or BOTTOM_RIGHT cells." );
+ throw new RuntimeException(
+ "Can only add bottom vertices for BOTTOM_LEFT or BOTTOM_RIGHT cells." );
}
return new Vertex( x + xOffset, y + 32 );
}
boolean isFalling()
{
- if ( isSlopeNotBridge( world.getBlockAt( region.x, region.y ) ) )
- { // Non bridge slopes are not connected down.
+ if ( isSlopeNotBridge( world.getBlockAt( region.x, region.y ) ) ) // Non bridge slopes are not connected down.
+ {
return false;
}
-
return !isFull( region.x, region.y + 1 );
}
boolean isFull( int x, int y )
{
Block b = world.getBlockAt( x, y );
- if ( s_isFlat( b ) )
- { // Flat block cells have zero capacity: always full.
+
+ if ( s_isFlat( b ) ) // Flat block cells have zero capacity: always full.
+ {
return true;
}
- WaterRegionRenderer wrr = waterAnimation.lookupRenderer.getItemAt( x, y );
- if ( null == wrr )
- { // Not full of flat block, but no region yet, empty
+ WaterRegionRenderer wrr =
+ waterAnimation.lookupRenderer.getItemAt( x, y );
+ if ( null == wrr ) // Not full of flat block, but no region yet, empty
+ {
return false;
}
return 32 == wrr.height && 32 == wrr.targetWaterHeight;
@@ -416,12 +442,13 @@ public class WaterRegionRenderer implements LookupItem2D
*/
public int backShadeAlpha()
{
- Block b = world.getBlockAt( region.x, region.y );
+ Block b = world.getBlockAt( region.x, region.y );
// slope cells are half full of block to start with
- int baselineContent = isSlopeNotBridge( b ) ?
- WaterUtil.HALF_CAPACITY : 0;
- int alpha = 255 * ( baselineContent + region.getContents() ) /
- WaterUtil.MAX_CAPACITY;
+ int baselineContent = isSlopeNotBridge( b ) ?
+ WaterUtil.HALF_CAPACITY : 0;
+ int alpha = 255 * ( baselineContent + region.getContents() ) /
+ WaterUtil.MAX_CAPACITY;
+
// divide by 4 to tame it, as particles and polygons should show
// the same thing.
return MathUtil.constrain( alpha, 0, 255 ) / 4;
@@ -448,6 +475,7 @@ public class WaterRegionRenderer implements LookupItem2D
public int edgeNetFlow( CellularDirection edge )
{
WaterRegionRenderer adj = adjacentRenderer( edge );
+
if ( null == adj )
{
return region.getFlow( edge );
@@ -458,10 +486,11 @@ public class WaterRegionRenderer implements LookupItem2D
public Vertex netFlow()
{
- float netX = (float)( edgeNetFlow( CellularDirection.RIGHT ) -
- edgeNetFlow( CellularDirection.LEFT ) );
- float netY = (float)( edgeNetFlow( CellularDirection.DOWN ) -
- edgeNetFlow( CellularDirection.UP ) );
+ float netX = (float)( edgeNetFlow( CellularDirection.RIGHT ) -
+ edgeNetFlow( CellularDirection.LEFT ) );
+ float netY = (float)( edgeNetFlow( CellularDirection.DOWN ) -
+ edgeNetFlow( CellularDirection.UP ) );
+
return new Vertex( netX, netY );
}
@@ -478,33 +507,33 @@ public class WaterRegionRenderer implements LookupItem2D
public void debugCellPrint( CellDebugPrint p )
{
- Block b = world.getBlockAt( region.x, region.y );
- String s = null == b ? " " : "" + BlockRenderer.charForBlock( b );
+ Block b = world.getBlockAt( region.x, region.y );
+ String s = null == b ? " " : "" + BlockRenderer.charForBlock( b );
- String connStr = "U" + bool01( region.isConnected( UP ) ) + " " +
- "D" + bool01( region.isConnected( DOWN ) ) + " " +
- "L" + bool01( region.isConnected( LEFT ) ) + " " +
- "R" + bool01( region.isConnected( RIGHT ) );
+ String connStr = "U" + bool01( region.isConnected( UP ) ) + " " +
+ "D" + bool01( region.isConnected( DOWN ) ) + " " +
+ "L" + bool01( region.isConnected( LEFT ) ) + " " +
+ "R" + bool01( region.isConnected( RIGHT ) );
p.addString( region.x, region.y, 0,
- s );
+ s );
p.addString( region, 1, "cont %04d", region.getContents() );
- p.addString( region, 4, connStr );
+ p.addString( region, 4, connStr );
p.addString( region, 5,
- "falling" + bool01( isFalling() ) + " full" + isFull( region.x, region.y ) );
+ "falling" + bool01( isFalling() ) + " full" +
+ isFull( region.x, region.y ) );
- p.addString( region, 6, "height(targ) %02d(%02d)", height, targetWaterHeight );
+ p.addString( region, 6, "height(targ) %02d(%02d)", height,
+ targetWaterHeight );
- p.addString( region, 7, "(%d,%d)", region.x, region.y );
+ p.addString( region, 7, "(%d,%d)", region.x, region.y );
}
private String bool01( boolean b )
{
return b ? "1" : "0";
}
-
-
}
Point of information: I fought uncrustify for quite a while once, before giving up on it :-(
What details made you give up? It seems to do spaces lining parentheses OK, and braces. Sorting long lines is tricky, but I am surprised that you prefer to change style completely to Google instead.
It's philosophical really: I want a tool that entirely removes the human element from the layout, so there can be no disagreement or noisy diffs. The Google tool is closer to that (although it still allows more freedom than I would like).
If uncrustify gives us more consistent formatting than we have now in the same style, I would be happy with integrating it.
In uncrustify many check items can be configured to 'ignore', so it doesn't make changes resulting in noisy diffs. We can get it to fix some hefty fraction of style deviations automatically. Is this an approach you tried?
I think it should help to give a more consistent style.
Go for it, don't listen to my stop energy.
I am experimenting with using checkstyle to report on rabbit escape. I have spent a few min tweaking the config xml (starting with sun style). It looks promising. Would there be interest in having a checkstyle makefile target?
tweaked config so far is below (search 'rabbit' to find my changes). output is starting to look useful.