net.kolls.railworld.segment
Class EESegment

java.lang.Object
  extended by net.kolls.railworld.RailSegment
      extended by net.kolls.railworld.segment.TrackSegment
          extended by net.kolls.railworld.segment.EESegment

public class EESegment
extends TrackSegment

Entrance/Exit segment. Connected to a long, invisible segment which allows trains to smoothly enter and exit the map.

Author:
Steve Kollmansberger

Nested Class Summary
 
Nested classes/interfaces inherited from class net.kolls.railworld.segment.TrackSegment
TrackSegment.TSEP
 
Field Summary
 HiddenSegment HES
          The hidden segment that trains exit on to.
 java.lang.String label
          The description of this segment.
 
Fields inherited from class net.kolls.railworld.segment.TrackSegment
cap, coords, POINT_BEGIN, POINT_END, railBedStroke, railStroke
 
Fields inherited from class net.kolls.railworld.RailSegment
dests, ec, MOUSE_NEAR, pts, RAIL_BED_WIDTH, RAIL_WIDTH, trains
 
Constructor Summary
EESegment(RailSegment bg, RailSegment en, java.awt.geom.Line2D crds, java.lang.String lbl)
          Construct an entry/exit segment
 
Method Summary
 SegmentEditPoint createSEP(int ptIdx, RailSegment anchor)
          Given a point index in the pts array and possibly a railsegment to attach, return a segmenteditpoint if such attachment is possible.
 RailSegment dest(RailSegment source)
          Each rail segment must at the very least tell us where it comes from and where it goes, currently.
 void draw(int z, java.awt.Graphics2D gc)
          Draw the segment.
 javax.swing.JPanel editPanel()
          You are guaranteed that the variable RailSegment.ec will be set prior to this call.
 java.awt.geom.Point2D getPoint(RailSegment start, double myPos)
           
 boolean isDynamic()
          Dynamic segments receive additional events while the game is running; non-dynamic segments are only asked to draw z levels 1 and 2 at draw static time.
 java.lang.String mouseOver(java.awt.geom.Point2D pos)
          Whenever a user mouses over the canvas, all dynamic segments receive this event.
 void recomp()
          Called when changes are made; recompute or update any associated values.
 boolean singleton()
          Singleton segments may only have one train in them at a time.
 
Methods inherited from class net.kolls.railworld.segment.TrackSegment
canErase, getCoords, length, setCap
 
Methods inherited from class net.kolls.railworld.RailSegment
carHidden, click, destNZ, enter, getDest, getDests, getPoint, getPoints, nearEditPoint, pixelStep, setDest, setPoint, step, trains, update, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

label

public java.lang.String label
The description of this segment. Used for train creator.


HES

public HiddenSegment HES
The hidden segment that trains exit on to.

Constructor Detail

EESegment

public EESegment(RailSegment bg,
                 RailSegment en,
                 java.awt.geom.Line2D crds,
                 java.lang.String lbl)
Construct an entry/exit segment

Parameters:
bg - Begin segment
en - end segment
crds - Line coords
lbl - Text
Method Detail

recomp

public void recomp()
Description copied from class: RailSegment
Called when changes are made; recompute or update any associated values.

Overrides:
recomp in class TrackSegment

singleton

public boolean singleton()
Description copied from class: RailSegment
Singleton segments may only have one train in them at a time. If additional trains are detected, a rail accident occurs. Defaults to false (not a singleton).

Overrides:
singleton in class RailSegment
Returns:
If the segment may only have one train on it at a time

isDynamic

public boolean isDynamic()
Description copied from class: RailSegment
Dynamic segments receive additional events while the game is running; non-dynamic segments are only asked to draw z levels 1 and 2 at draw static time. Defaults to false (not dynamic). Non-dynamic segments also may not receive notifications for various events.

Overrides:
isDynamic in class RailSegment
Returns:
Indicates if the segment should receive z=4 draw events and click events.
See Also:
RailSegment.draw(int, Graphics2D), RailSegment.click(Point2D, RailCanvas)

mouseOver

public java.lang.String mouseOver(java.awt.geom.Point2D pos)
Description copied from class: RailSegment
Whenever a user mouses over the canvas, all dynamic segments receive this event. Check to see if the position is at your segment (as in click). Return a describe if applicable, otherwise null. Defaults to returning null.

Overrides:
mouseOver in class TrackSegment
Parameters:
pos - The mouse position
Returns:
Description if applicable, otherwise null
See Also:
RailSegment.isDynamic()

dest

public RailSegment dest(RailSegment source)
Description copied from class: RailSegment
Each rail segment must at the very least tell us where it comes from and where it goes, currently. Indicate where you are coming from, it says where you're going. Null value means end of line. These values may be dynamic, as in a switch.

Overrides:
dest in class TrackSegment
Parameters:
source - The rail segment of origin
Returns:
The destination rail segment, or null if there is none.

getPoint

public java.awt.geom.Point2D getPoint(RailSegment start,
                                      double myPos)
Overrides:
getPoint in class TrackSegment
Parameters:
start - The segment of origin
myPos - Percentage (0-1) along the segment
Returns:
A Point2D indicating the actual point that location represents

draw

public void draw(int z,
                 java.awt.Graphics2D gc)
Description copied from class: RailSegment
Draw the segment. Segments have several z-layers to allowed slightly overlaping pieces to still look nice. z = 1 is a static layer (lowest) z = 2 is a static layer (highest) z = 3 is reserved z = 4 is the dynamic layer. This is redrawn frequently, if requested by the segment.

Overrides:
draw in class TrackSegment
Parameters:
z - The currently z-layer to draw
gc - A Graphics2D graphics context.
See Also:
RailSegment.isDynamic()

editPanel

public javax.swing.JPanel editPanel()
Description copied from class: RailSegment
You are guaranteed that the variable RailSegment.ec will be set prior to this call. So if you need to refresh the canvas or make any changes to it, you can use that variable.

Overrides:
editPanel in class TrackSegment
Returns:
A JPanel to display in the sidebar to edit this segment's properties. Please keep width at 200 pixels top.

createSEP

public SegmentEditPoint createSEP(int ptIdx,
                                  RailSegment anchor)
Description copied from class: RailSegment
Given a point index in the pts array and possibly a railsegment to attach, return a segmenteditpoint if such attachment is possible. If the attach segment is null, no segment is attaching, just user editing.

Overrides:
createSEP in class TrackSegment
Parameters:
ptIdx - The index into the pts array.
anchor - The segment that desires to attach. (Note: do not attach the segment automatically; it will be called through the anchor method in the edit point).
Returns:
A SegmentEditPoint if possible, otherwise null.