col = Settings.moveRunColor;
if (step.isUsingMASC()) { col = Settings.moveMASCColor; } else { col = Settings.moveRunColor; }
        public void prepare() {            // create image for buffer            Image tempImage = createImage(bounds.width, bounds.height);            Graphics graph = tempImage.getGraphics();            // fill with key color            graph.setColor(new Color(TRANSPARENT));            graph.fillRect(0, 0, bounds.width, bounds.height);            // setup some variables            final Point stepPos = getHexLocation(step.getPosition());            stepPos.translate(-bounds.x, -bounds.y);            final Polygon facingPoly = facingPolys[step.getFacing()];            final Polygon movePoly = movementPolys[step.getFacing()];            Point offsetCostPos;            Polygon myPoly;            Color col;            // set color            switch (step.getMovementType()) {            case Entity.MOVE_RUN :                col = Settings.moveRunColor;                break;            case Entity.MOVE_JUMP :                col = Settings.moveJumpColor;                break;            case Entity.MOVE_ILLEGAL :                col = Settings.moveIllegalColor;                break;            default :                col = Settings.moveDefaultColor;                break;            }            if (step.isUsingMASC()) {                col = Settings.moveMASCColor;            }            // draw arrows and cost for the step            switch (step.getType()) {            case MovePath.STEP_FORWARDS :            case MovePath.STEP_BACKWARDS :            case MovePath.STEP_CHARGE :            case MovePath.STEP_DFA :            case MovePath.STEP_LATERAL_LEFT :            case MovePath.STEP_LATERAL_RIGHT :            case MovePath.STEP_LATERAL_LEFT_BACKWARDS :            case MovePath.STEP_LATERAL_RIGHT_BACKWARDS :                // draw arrows showing them entering the next                myPoly = new Polygon(movePoly.xpoints, movePoly.ypoints,                                     movePoly.npoints);                graph.setColor(Color.darkGray);                myPoly.translate(stepPos.x + 1, stepPos.y + 1);                graph.drawPolygon(myPoly);                graph.setColor(col);                myPoly.translate(-1, -1);                graph.drawPolygon(myPoly);                // draw movement cost                drawMovementCost(step, stepPos, graph, col, true);                break;            case MovePath.STEP_GO_PRONE:                // draw arrow indicating dropping prone                Polygon downPoly = movementPolys[7];                myPoly = new Polygon(downPoly.xpoints, downPoly.ypoints, downPoly.npoints);                graph.setColor(Color.darkGray);                myPoly.translate(stepPos.x, stepPos.y);                graph.drawPolygon(myPoly);                graph.setColor(col);                myPoly.translate(-1, -1);                graph.drawPolygon(myPoly);                offsetCostPos = new Point(stepPos.x + 1, stepPos.y + 15);                drawMovementCost(step, offsetCostPos, graph, col, false);                break;            case MovePath.STEP_GET_UP:                // draw arrow indicating standing up                Polygon upPoly = movementPolys[6];                myPoly = new Polygon(upPoly.xpoints, upPoly.ypoints, upPoly.npoints);                graph.setColor(Color.darkGray);                myPoly.translate(stepPos.x, stepPos.y);                graph.drawPolygon(myPoly);                graph.setColor(col);                myPoly.translate(-1, -1);                graph.drawPolygon(myPoly);                offsetCostPos = new Point(stepPos.x, stepPos.y + 15);                drawMovementCost(step, offsetCostPos, graph, col, false);                break;            case MovePath.STEP_TURN_LEFT:            case MovePath.STEP_TURN_RIGHT:                // draw arrows showing the facing                myPoly = new Polygon(facingPoly.xpoints, facingPoly.ypoints,                                     facingPoly.npoints);                graph.setColor(Color.darkGray);                myPoly.translate(stepPos.x + 1, stepPos.y + 1);                graph.drawPolygon(myPoly);                graph.setColor(col);                myPoly.translate(-1, -1);                graph.drawPolygon(myPoly);                break;            case MovePath.STEP_LOAD:                // Announce load.                String load = "Load";                if (step.isPastDanger()) {                    load = "(" + load + ")";                }                graph.setFont(new Font("SansSerif", Font.PLAIN, 12));                int loadX = stepPos.x + 42 - (graph.getFontMetrics(graph.getFont()).stringWidth(load) / 2);                graph.setColor(Color.darkGray);                graph.drawString(load, loadX, stepPos.y + 39);                graph.setColor(col);                graph.drawString(load, loadX - 1, stepPos.y + 38);                break;            case MovePath.STEP_UNLOAD:                // Announce unload.                String unload = "Unload";                if (step.isPastDanger()) {                    unload = "(" + unload + ")";                }                graph.setFont(new Font("SansSerif", Font.PLAIN, 12));                int unloadX = stepPos.x + 42 - (graph.getFontMetrics(graph.getFont()).stringWidth(unload) / 2);                int unloadY = stepPos.y + 38 + graph.getFontMetrics(graph.getFont()).getHeight();                graph.setColor(Color.darkGray);                graph.drawString(unload, unloadX, unloadY + 1);                graph.setColor(col);                graph.drawString(unload, unloadX - 1, unloadY);                break;            default :                break;            }            // create final image            this.image = createImage(new FilteredImageSource(tempImage.getSource(),                    new KeyAlphaFilter(TRANSPARENT)));        }