From 45ada5475192f6afc9645c401de46765be87ee3f Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 21 May 2015 16:39:25 +0200 Subject: Lean and mean first prototype - to be improved! --- src/main/java/org/openslx/graph/Node.java | 198 ++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 src/main/java/org/openslx/graph/Node.java (limited to 'src/main/java/org/openslx/graph/Node.java') diff --git a/src/main/java/org/openslx/graph/Node.java b/src/main/java/org/openslx/graph/Node.java new file mode 100644 index 0000000..0bf2fab --- /dev/null +++ b/src/main/java/org/openslx/graph/Node.java @@ -0,0 +1,198 @@ +package org.openslx.graph; + +import java.awt.Color; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Node implements java.io.Serializable +{ + private static final long serialVersionUID = -6997045538537830300L; + + private final String _id; + @Expose + @SerializedName( "name" ) + private final String _displayName; + @Expose + @SerializedName( "distance" ) + private double _distance = 2; + @Expose + @SerializedName( "radius" ) + private int _radius = 2; + @Expose + @SerializedName( "color" ) + private String _colorString; + @Expose + @SerializedName( "x" ) + private double _x; + @Expose + @SerializedName( "y" ) + private double _y; + private double _fx; + private double _fy; + private int _health; + private Color _color; + + protected Node( String displayName ) + { + this( displayName, displayName, null ); + } + + protected Node( String id, String displayName, Node startPos ) + { + _displayName = displayName; + _id = id; + if ( startPos == null ) { + _x = Math.random() * 2; + _y = Math.random() * 2; + } else { + _x = startPos.getX(); + _y = startPos.getY(); + } + _fx = 0; + _fy = 0; + _health = getMaxHealth(); + setColor( Color.BLUE ); + } + + public void swapPos( Node other ) + { + final double tx = _x, ty = _y; + _x = other._x; + _y = other._y; + other._x = tx; + other._y = ty; + } + + public void setX( double x ) + { + _x = x; + } + + public void setY( double y ) + { + _y = y; + } + + public void addForceX( double fx ) + { + _fx += fx; + } + + public void addForceY( double fy ) + { + _fy += fy; + } + + public void resetForce() + { + _fx = 0; + _fy = 0; + } + + public double getX() + { + return _x; + } + + public double getY() + { + return _y; + } + + public double getFX() + { + return _fx; + } + + public double getFY() + { + return _fy; + } + + public String toString() + { + return _displayName; + } + + public String getId() + { + return _id; + } + + public final boolean equals( Object o ) + { + if ( o instanceof Node ) { + Node other = (Node)o; + return _id.equals( other._id ); + } + return false; + } + + public final int hashCode() + { + return _id.hashCode(); + } + + public final void activate() + { + _health = getMaxHealth(); + } + + public final boolean isAlive() + { + return _health > 0; + } + + public final void age() + { + _health--; + } + + public final Color getColor() + { + return _color; + } + + protected final void setColor( Color color ) + { + _color = color; + _colorString = String.format( "#%02X%02X%02X", color.getRed(), color.getGreen(), color.getBlue() ); + } + + public final int getRadius() + { + return 5; + } + + protected final void setRadius( int radius ) + { + _radius = radius; + } + + public int getMaxHealth() + { + return 1; + } + + public final boolean wasActivated() + { + return _health == getMaxHealth(); + } + + public final double getDesiredDistance() + { + return _distance; + } + + protected final void setDesiredDistance( double distance ) + { + _distance = distance; + } + + public final int getAlpha() + { + return 63 + ( _health * 192 ) / getMaxHealth(); + } + +} -- cgit v1.2.3-55-g7522