summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/graph/Node.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/graph/Node.java')
-rw-r--r--src/main/java/org/openslx/graph/Node.java198
1 files changed, 198 insertions, 0 deletions
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();
+ }
+
+}