Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.nolimitscoaster.*;
- import nlvm.lang.Math;
- public class TransferScript extends Script implements BlockSystemController
- {
- private static final int CLEAR = 0;
- private static final int APPROACHING = 1;
- private static final int WAITING = 2;
- private static final int READY = 3;
- private static final int LEAVING = 4;
- private static final int DISPATCHREADY = 5;
- private static final int DISPATCH = 6;
- private static final int ENTERING = 7;
- private static final int APPROACHING_R = 8;
- private static final int LEAVING_R = 9;
- private static final int READY_F = 10;
- private static final int READY_R = 11;
- private static final int ENTERING_R = 12;
- private static final int AUTO = 0;
- private static final int MANUAL = 1;
- private static final int FULL_MANUAL = 2;
- private Coaster coaster;
- private Block station;
- private Block transferBreak;
- private Block leftBreak1;
- private Block leftBreak2;
- private Block rightBreak1;
- private Block rightBreak2;
- private Block storage1;
- private Block storage2;
- private SpecialTrack transferTable;
- private SpecialTrack transferSwitch;
- private double trackSide = 0;
- private int mode;
- public bool onInit()
- {
- coaster = sim.getCoasterForEntityId(getParentEntityId());
- if (coaster == null){
- System.err.println("Unable to locate coaster!");
- return false;
- }
- coaster.setBlockSystemController(this);
- System.out.println("Found Coaster");
- station = coaster.getBlock("station");
- if (!initializeBlockState(station, "station"))
- {
- System.err.println("Unable to locate station!");
- return false;
- }
- station.setAdvanceFwdVisible(true);
- System.out.println("Found Station");
- transferBreak = coaster.getBlock("transferBreak");
- if (!initializeBlockState(transferBreak, "transferBreak")){
- System.err.println("Unable to locate transferBreak!");
- return false;
- }
- transferBreak.setAdvanceFwdVisible(true);
- System.out.println("Found transferBreak");
- leftBreak1 = coaster.getBlock("leftBreak1");
- if (!initializeBlockState(leftBreak1, "leftBreak1")){
- System.err.println("Unable to locate leftBreak1!");
- return false;
- }
- leftBreak1.setAdvanceFwdVisible(true);
- System.out.println("Found leftBreak1");
- leftBreak2 = coaster.getBlock("leftBreak2");
- if (!initializeBlockState(leftBreak2, "leftBreak2")){
- System.err.println("Unable to locate leftBreak2!");
- return false;
- }
- leftBreak2.setAdvanceFwdVisible(true);
- System.out.println("Found leftBreak2");
- rightBreak1 = coaster.getBlock("rightBreak1");
- if (!initializeBlockState(rightBreak1, "rightBreak1")){
- System.err.println("Unable to locate rightBreak1!");
- return false;
- }
- rightBreak1.setAdvanceFwdVisible(true);
- System.out.println("Found rightBreak1");
- rightBreak2 = coaster.getBlock("rightBreak2");
- if (!initializeBlockState(rightBreak2, "rightBreak2")){
- System.err.println("Unable to locate rightBreak2!");
- return false;
- }
- rightBreak2.setAdvanceFwdVisible(true);
- System.out.println("Found rightBreak2");
- transferTable = coaster.getSpecialTrack("transferTable");
- if (transferTable == null){
- System.err.println("Unable to locate transferTable!");
- return false;
- }
- System.out.println("Found transferTable");
- transferSwitch = coaster.getSpecialTrack("transferSwitch");
- if (transferSwitch == null){
- System.err.println("Unable to locate transferSwitch!");
- return false;
- }
- System.out.println("Found transferSwitch");
- storage1 = coaster.getBlock("storage1");
- if (!initializeBlockState(storage1, "storage1")){
- System.err.println("Unable to locate storage1!");
- return false;
- }
- storage1.setAdvanceFwdVisible(true);
- storage1.setAdvanceBwdVisible(true);
- System.out.println("Found storage1");
- storage2 = coaster.getBlock("storage2");
- if (!initializeBlockState(storage2, "storage2")){
- System.err.println("Unable to locate storage2!");
- return false;
- }
- storage2.setAdvanceBwdVisible(true);
- System.out.println("Found storage2");
- if (transferTable.getSwitchDirection() != 1)
- {
- System.out.println("Oops, Transfer track is not in the right spot, let me fix that for you!");
- transferTable.setSwitchDirection(1);
- }
- trackSide = Math.random();
- if (trackSide <= 0.5)
- {
- trackSide = 0;
- //System.out.println("Left");
- }
- else
- {
- trackSide = 1;
- //System.out.println("Right");
- }
- System.out.println("Transfer Script Initialised");
- mode = MANUAL;
- return true;
- }
- public void onExit()
- {
- }
- public void onNextFrame(float tick)
- {
- if (mode == AUTO)
- {
- autoStation();
- autoTransferBreak();
- autoLeftBreak1();
- autoLeftBreak2();
- autoRightBreak1();
- autoRightBreak2();
- updateControlPanel();
- }
- if (mode == MANUAL)
- {
- manualStation();
- manualTransferBreak();
- manualLeftBreak1();
- manualLeftBreak2();
- manualRightBreak1();
- manualRightBreak2();
- manualStorage1();
- manualStorage2();
- updateControlPanel();
- }
- }
- public void onAutoMode(Coaster c)
- {
- if (mode == FULL_MANUAL)
- {
- setInitialBlockState(station);
- setInitialBlockState(transferBreak);
- setInitialBlockState(leftBreak1);
- setInitialBlockState(leftBreak2);
- setInitialBlockState(rightBreak1);
- setInitialBlockState(rightBreak2);
- setInitialBlockState(storage1);
- setInitialBlockState(storage2);
- }
- mode = AUTO;
- updateControlPanel();
- }
- public void onManualBlockMode(Coaster c)
- {
- if (mode == FULL_MANUAL)
- {
- setInitialBlockState(station);
- setInitialBlockState(transferBreak);
- setInitialBlockState(leftBreak1);
- setInitialBlockState(leftBreak2);
- setInitialBlockState(rightBreak1);
- setInitialBlockState(rightBreak2);
- setInitialBlockState(storage1);
- setInitialBlockState(storage2);
- }
- mode = MANUAL;
- updateControlPanel();
- }
- public void onFullManualMode(Coaster c)
- {
- mode = FULL_MANUAL;
- updateControlPanel();
- }
- public void onAdvanceFWDButton(Block block)
- {
- if (block == station){
- transferBreak.setState(APPROACHING);
- station.setState(LEAVING);
- }
- else if (block == transferBreak){
- if (transferTable.getSwitchDirection() == 0)
- {
- leftBreak1.setState(APPROACHING);
- transferBreak.setState(LEAVING);
- }
- else if (transferTable.getSwitchDirection() == 2)
- {
- rightBreak1.setState(APPROACHING);
- transferBreak.setState(LEAVING);
- }
- else if (transferTable.getSwitchDirection() == 1)
- {
- storage1.setState(APPROACHING);
- transferBreak.setState(LEAVING);
- }
- }
- else if (block == storage1)
- {
- storage2.setState(APPROACHING);
- storage1.setState(LEAVING);
- }
- else if (block == leftBreak1){
- leftBreak2.setState(APPROACHING);
- leftBreak1.setState(LEAVING);
- }
- else if (block == rightBreak1){
- rightBreak2.setState(APPROACHING);
- rightBreak1.setState(LEAVING);
- }
- else if (block == leftBreak2){
- station.setState(APPROACHING);
- leftBreak2.setState(LEAVING);
- }
- else if (block == rightBreak2){
- station.setState(APPROACHING);
- rightBreak2.setState(LEAVING);
- }
- }
- public void onAdvanceBWDButton(Block block)
- {
- if (block == storage1)
- {
- transferBreak.setState(APPROACHING_R);
- storage1.setState(LEAVING_R);
- }
- else if (block == storage2)
- {
- storage1.setState(APPROACHING_R);
- storage2.setState(LEAVING_R);
- }
- }
- private static bool initializeBlockState(Block block, String name)
- {
- if (block == null)
- {
- System.err.println(":Block'" + name + "' not found");
- }
- registerBlockStates(block);
- setInitialBlockState(block);
- return true;
- }
- private static void setInitialBlockState(Block block)
- {
- if (block.getNumberOfTrainsOnBlock() > 0) block.setState(WAITING);
- else block.setState(CLEAR);
- }
- private static void registerBlockStates(Block block)
- {
- block.registerState(CLEAR,"Clear",Block.LAMP_OFF);
- block.registerState(APPROACHING,"Approaching",Block.LAMP_FLASHING);
- block.registerState(WAITING,"Waiting",Block.LAMP_OFF);
- block.registerState(READY,"Ready",Block.LAMP_ON);
- block.registerState(LEAVING,"Leaving",Block.LAMP_FLASHING);
- block.registerState(DISPATCHREADY,"Dispatch Ready",Block.LAMP_FLASHING);
- block.registerState(DISPATCH,"Dispatch",Block.LAMP_FLASHING);
- block.registerState(ENTERING,"Entering",Block.LAMP_FLASHING);
- block.registerState(APPROACHING_R,"Approaching Reverse",Block.LAMP_FLASHING);
- block.registerState(LEAVING_R,"Leaving Reverse",Block.LAMP_FLASHING);
- block.registerState(READY_F,"Ready Forward",Block.LAMP_ON);
- block.registerState(READY_R,"Ready Reverse",Block.LAMP_ON);
- block.registerState(ENTERING_R,"Entering Reverse",Block.LAMP_FLASHING);
- }
- private void updateControlPanel()
- {
- station.setAdvanceFwdEnabled(station.getState() == READY);
- transferBreak.setAdvanceFwdEnabled(transferBreak.getState() == READY || transferBreak.getState() == READY_F);
- leftBreak1.setAdvanceFwdEnabled(leftBreak1.getState() == READY);
- leftBreak2.setAdvanceFwdEnabled(leftBreak2.getState() == READY);
- rightBreak1.setAdvanceFwdEnabled(rightBreak1.getState() == READY);
- rightBreak2.setAdvanceFwdEnabled(rightBreak2.getState() == READY);
- storage1.setAdvanceFwdEnabled(storage1.getState() == READY || storage1.getState() == READY_F);
- storage1.setAdvanceBwdEnabled(storage1.getState() == READY || storage1.getState() == READY_R);
- storage2.setAdvanceBwdEnabled(storage2.getState() == READY || storage2.getState() == READY_R);
- }
- private void autoStation()
- {
- switch (station.getState())
- {
- case CLEAR:
- //System.out.println("Station State Clear");
- station.getSection().setBrakesOn();
- station.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("Station State Approaching");
- station.getSection().setBrakesOff();
- station.getSection().setTransportsStandardFwdOn();
- if (station.getSection().isTrainOnSection()) station.setState(ENTERING);
- break;
- case ENTERING:
- station.getSection().setStationEntering();
- station.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("Station State Waiting");
- if(transferBreak.getState() == CLEAR && transferTable.getSwitchDirection() == 1) station.setState(DISPATCHREADY);
- break;
- case DISPATCHREADY:
- //System.out.println("Station State Ready");
- station.getSection().setStationNextBlockClear();
- if (station.getSection().isStationWaitingForAdvance())
- {
- transferBreak.setState(APPROACHING);
- station.setState(DISPATCH);
- }
- break;
- case DISPATCH:
- //System.out.println("Station State Dispatch");
- station.getSection().setStationLeaving();
- station.getSection().setBrakesOff();
- station.getSection().setTransportsStandardFwdOn();
- if (!station.getSection().isTrainOnSection()) station.setState(CLEAR);
- break;
- }
- }
- private void autoTransferBreak()
- {
- switch (transferBreak.getState())
- {
- case CLEAR:
- //System.out.println("transferBreak State State Clear");
- transferBreak.getSection().setBrakesOn();
- transferBreak.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("transferBreak State Approaching");
- if (transferBreak.getSection().isTrainOnSection()) transferBreak.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("transferBreak State Entering");
- transferBreak.getSection().setBrakesOff();
- transferBreak.getSection().setTransportsStandardFwdOn();
- if (transferBreak.getSection().isTrainBehindBrakeTrigger()) transferBreak.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("transferBreak State Waiting");
- transferBreak.getSection().setBrakesOn();
- transferBreak.getSection().setTransportsOff();
- if (trackSide == 0)
- {
- transferTable.setSwitchDirection(0);
- if (transferTable.getSwitchDirection() == 0) transferBreak.setState(READY);
- }
- if (trackSide == 1)
- {
- transferTable.setSwitchDirection(2);
- if (transferTable.getSwitchDirection() == 2) transferBreak.setState(READY);
- }
- break;
- case READY:
- //System.out.println("transferBreak State Ready");
- if (trackSide == 0)
- {
- if (leftBreak1.getState()==CLEAR)
- {
- transferBreak.getSection().setBrakesOff();
- transferBreak.getSection().setTransportsStandardFwdOn();
- transferBreak.setState(LEAVING);
- }
- }
- if (trackSide == 1)
- {
- if (rightBreak1.getState()==CLEAR)
- {
- transferBreak.getSection().setBrakesOff();
- transferBreak.getSection().setTransportsStandardFwdOn();
- transferBreak.setState(LEAVING);
- }
- }
- if (trackSide == 0)
- {
- leftBreak1.setState(APPROACHING);
- trackSide = Math.random();
- if (trackSide <= 0.5)
- {
- trackSide = 0;
- //System.out.println("Left");
- }
- else
- {
- trackSide = 1;
- //System.out.println("Right");
- }
- //System.out.println(trackSide);
- break;
- }
- if (trackSide == 1)
- {
- rightBreak1.setState(APPROACHING);
- trackSide = Math.random();
- if (trackSide <= 0.5)
- {
- trackSide = 0;
- //System.out.println("Left");
- }
- else
- {
- trackSide = 1;
- //System.out.println("Right");
- }
- //System.out.println(trackSide);
- break;
- }
- break;
- case LEAVING:
- //System.out.println("transferBreak State Leaving");
- if (!transferBreak.getSection().isTrainOnSection())
- {
- transferBreak.setState(CLEAR);
- }
- break;
- }
- }
- private void autoLeftBreak1()
- {
- switch (leftBreak1.getState())
- {
- case CLEAR:
- //System.out.println("leftBreak1 State State Clear");
- leftBreak1.getSection().setBrakesOn();
- leftBreak1.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("leftBreak1 State Approaching");
- leftBreak1.getSection().setBrakesOff();
- leftBreak1.getSection().setTransportsStandardFwdOn();
- if (leftBreak1.getSection().isTrainOnSection()) leftBreak1.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("leftBreak1 State Entering");
- if (leftBreak1.getSection().isTrainBehindBrakeTrigger()) leftBreak1.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("leftBreak1 State Waiting");
- leftBreak1.getSection().setBrakesOn();
- leftBreak1.getSection().setTransportsOff();
- if (transferTable.getSwitchDirection() != 1){transferTable.setSwitchDirection(1);}
- if (leftBreak2.getState()==CLEAR) {leftBreak1.setState(LEAVING);}
- break;
- case READY:
- //System.out.println("leftBreak1 State Ready");
- break;
- case LEAVING:
- //System.out.println("leftBreak1 State Leaving");
- leftBreak1.getSection().setBrakesOff();
- leftBreak1.getSection().setTransportsStandardFwdOn();
- if (!leftBreak1.getSection().isTrainOnSection())
- {
- leftBreak1.setState(CLEAR);
- leftBreak2.setState(APPROACHING);
- }
- break;
- }
- }
- private void autoLeftBreak2()
- {
- switch (leftBreak2.getState())
- {
- case CLEAR:
- //System.out.println("leftBreak2 State State Clear");
- leftBreak2.getSection().setBrakesOn();
- leftBreak2.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("leftBreak2 State Approaching");
- if (leftBreak2.getSection().isTrainOnSection()) leftBreak2.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("leftBreak2 State Entering");
- leftBreak2.getSection().setBrakesOff();
- leftBreak2.getSection().setTransportsStandardFwdOn();
- if (leftBreak2.getSection().isTrainBehindBrakeTrigger()) leftBreak2.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("leftBreak2 State Waiting");
- leftBreak2.getSection().setBrakesOff();
- leftBreak2.getSection().setTransportsOff();
- if (station.getState()==CLEAR && transferSwitch.getSwitchDirection() != 0)
- {
- transferSwitch.setSwitchDirection(0);
- }
- if (station.getState()==CLEAR && transferSwitch.getSwitchDirection() == 0)
- {
- leftBreak2.setState(LEAVING);
- station.setState(APPROACHING);
- }
- break;
- case READY:
- //System.out.println("leftBreak2 State Ready");
- break;
- case LEAVING:
- //System.out.println("leftBreak2 State Leaving");
- leftBreak2.getSection().setBrakesOff();
- leftBreak2.getSection().setTransportsStandardFwdOn();
- if (!leftBreak2.getSection().isTrainOnSection()) leftBreak2.setState(CLEAR);
- break;
- }
- }
- private void autoRightBreak1()
- {
- switch (rightBreak1.getState())
- {
- case CLEAR:
- //System.out.println("rightBreak1 State State Clear");
- rightBreak1.getSection().setBrakesOn();
- rightBreak1.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("rightBreak1 State Approaching");
- rightBreak1.getSection().setBrakesOff();
- rightBreak1.getSection().setTransportsStandardFwdOn();
- if (rightBreak1.getSection().isTrainOnSection()) rightBreak1.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("rightBreak1 State Entering");
- if (rightBreak1.getSection().isTrainBehindBrakeTrigger()) rightBreak1.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("rightBreak1 State Waiting");
- rightBreak1.getSection().setBrakesOn();
- rightBreak1.getSection().setTransportsOff();
- if (transferTable.getSwitchDirection() != 1){transferTable.setSwitchDirection(1);}
- if (rightBreak2.getState()==CLEAR) {rightBreak1.setState(LEAVING);}
- break;
- case READY:
- //System.out.println("rightBreak1 State Ready");
- break;
- case LEAVING:
- //System.out.println("rightBreak1 State Leaving");
- rightBreak1.getSection().setBrakesOff();
- rightBreak1.getSection().setTransportsStandardFwdOn();
- if (!rightBreak1.getSection().isTrainOnSection())
- {
- rightBreak1.setState(CLEAR);
- rightBreak2.setState(APPROACHING);
- }
- break;
- }
- }
- private void autoRightBreak2()
- {
- switch (rightBreak2.getState())
- {
- case CLEAR:
- //System.out.println("rightBreak2 State State Clear");
- rightBreak2.getSection().setBrakesOn();
- rightBreak2.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("rightBreak2 State Approaching");
- if (rightBreak2.getSection().isTrainOnSection()) rightBreak2.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("rightBreak2 State Entering");
- rightBreak2.getSection().setBrakesOff();
- rightBreak2.getSection().setTransportsStandardFwdOn();
- if (rightBreak2.getSection().isTrainBehindBrakeTrigger()) rightBreak2.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("rightBreak2 State Waiting");
- rightBreak2.getSection().setBrakesOff();
- rightBreak2.getSection().setTransportsOff();
- if (station.getState()==CLEAR && transferSwitch.getSwitchDirection() != 1)
- {
- transferSwitch.setSwitchDirection(1);
- }
- if (station.getState()==CLEAR && transferSwitch.getSwitchDirection() == 1)
- {
- rightBreak2.setState(LEAVING);
- station.setState(APPROACHING);
- }
- break;
- case READY:
- //System.out.println("rightBreak2 State Ready");
- break;
- case LEAVING:
- //System.out.println("rightBreak2 State Leaving");
- rightBreak2.getSection().setBrakesOff();
- rightBreak2.getSection().setTransportsStandardFwdOn();
- if (!rightBreak2.getSection().isTrainOnSection()) rightBreak2.setState(CLEAR);
- break;
- }
- }
- private void manualStation()
- {
- switch (station.getState())
- {
- case CLEAR:
- station.getSection().setTransportsOff();
- station.getSection().setBrakesOn();
- break;
- case APPROACHING:
- station.getSection().setBrakesOff();
- station.getSection().setTransportsStandardFwdOn();
- if (station.getSection().isTrainOnSection()) {station.setState(ENTERING);}
- break;
- case ENTERING:
- station.getSection().setStationEntering();
- station.setState(WAITING);
- break;
- case WAITING:
- if (station.getNumberOfTrainsOnBlock() == 0) station.setState(CLEAR);
- if (transferTable.getSwitchDirection() == 1 && transferBreak.getState() == CLEAR) station.setState(READY);
- break;
- case DISPATCHREADY:
- station.setState(WAITING);
- break;
- case READY:
- station.getSection().setStationNextBlockClear();
- if (transferTable.getSwitchDirection() != 1 || transferBreak.getState() != CLEAR) station.setState(WAITING);
- break;
- case DISPATCH:
- if (station.getNumberOfTrainsOnBlock() == 1 && station.getSection().isTrainBeforeCenterOfSection()) station.setState(ENTERING);
- if (station.getNumberOfTrainsOnBlock() == 0) station.setState(CLEAR);
- break;
- case LEAVING:
- station.getSection().setStationLeaving();
- station.getSection().setBrakesOff();
- station.getSection().setTransportsStandardFwdOn();
- if (station.getNumberOfTrainsOnBlock() == 0) station.setState(CLEAR);
- break;
- }
- }
- private void manualTransferBreak()
- {
- switch (transferBreak.getState())
- {
- case CLEAR:
- transferBreak.getSection().setTransportsOff();
- transferBreak.getSection().setBrakesOn();
- break;
- case APPROACHING:
- transferBreak.getSection().setBrakesOff();
- transferBreak.getSection().setTransportsStandardFwdOn();
- if (transferBreak.getSection().isTrainOnSection()) transferBreak.setState(ENTERING);
- break;
- case APPROACHING_R:
- transferBreak.getSection().setBrakesOff();
- transferBreak.getSection().setTransportsStandardBwdOn();
- if (transferBreak.getSection().isTrainOnSection()) transferBreak.setState(ENTERING_R);
- break;
- case ENTERING:
- if (transferBreak.getSection().isTrainBehindBrakeTrigger()) transferBreak.setState(WAITING);
- break;
- case ENTERING_R:
- if (transferBreak.getSection().isTrainBeforeCenterOfSection()) transferBreak.setState(WAITING);
- break;
- case WAITING:
- transferBreak.getSection().setTransportsOff();
- transferBreak.getSection().setBrakesOn();
- if (leftBreak1.getState() == CLEAR && transferTable.getSwitchDirection() == 0) transferBreak.setState(READY);
- else if (rightBreak1.getState() == CLEAR && transferTable.getSwitchDirection() == 2) transferBreak.setState(READY);
- else if (storage1.getState() == CLEAR && transferTable.getSwitchDirection() == 1) transferBreak.setState(READY_F);
- break;
- case READY:
- if (transferTable.getSwitchDirection() == 0 && leftBreak1.getState() != CLEAR) transferBreak.setState(WAITING);
- else if (transferTable.getSwitchDirection() == 2 && rightBreak1.getState() != CLEAR) transferBreak.setState(WAITING);
- else if (transferTable.getSwitchDirection() == 1 && storage1.getState() != CLEAR) transferBreak.setState(WAITING);
- break;
- case READY_F:
- if (transferTable.getSwitchDirection() == 0 && leftBreak1.getState() != CLEAR) transferBreak.setState(WAITING);
- else if (transferTable.getSwitchDirection() == 2 && rightBreak1.getState() != CLEAR) transferBreak.setState(WAITING);
- else if (transferTable.getSwitchDirection() == 1 && storage1.getState() != CLEAR) transferBreak.setState(WAITING);
- break;
- case LEAVING:
- transferBreak.getSection().setBrakesOff();
- transferBreak.getSection().setTransportsStandardFwdOn();
- if (transferBreak.getNumberOfTrainsOnBlock() == 0) transferBreak.setState(CLEAR);
- break;
- }
- }
- private void manualLeftBreak1()
- {
- switch (leftBreak1.getState())
- {
- case CLEAR:
- //System.out.println("leftBreak1 State State Clear");
- leftBreak1.getSection().setBrakesOn();
- leftBreak1.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("leftBreak1 State Approaching");
- leftBreak1.getSection().setBrakesOff();
- leftBreak1.getSection().setTransportsStandardFwdOn();
- if (leftBreak1.getSection().isTrainOnSection()) leftBreak1.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("leftBreak1 State Entering");
- if (leftBreak1.getSection().isTrainBehindBrakeTrigger()) leftBreak1.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("leftBreak1 State Waiting");
- leftBreak1.getSection().setBrakesOn();
- leftBreak1.getSection().setTransportsOff();
- if (leftBreak2.getState()==CLEAR) {leftBreak1.setState(READY);}
- break;
- case READY:
- //System.out.println("leftBreak1 State Ready");
- break;
- case LEAVING:
- //System.out.println("leftBreak1 State Leaving");
- leftBreak1.getSection().setBrakesOff();
- leftBreak1.getSection().setTransportsStandardFwdOn();
- if (!leftBreak1.getSection().isTrainOnSection())
- {
- leftBreak1.setState(CLEAR);
- leftBreak2.setState(APPROACHING);
- }
- break;
- }
- }
- private void manualLeftBreak2()
- {
- switch (leftBreak2.getState())
- {
- case CLEAR:
- //System.out.println("leftBreak2 State State Clear");
- leftBreak2.getSection().setBrakesOn();
- leftBreak2.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("leftBreak2 State Approaching");
- if (leftBreak2.getSection().isTrainOnSection()) leftBreak2.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("leftBreak2 State Entering");
- leftBreak2.getSection().setBrakesOff();
- leftBreak2.getSection().setTransportsStandardFwdOn();
- if (leftBreak2.getSection().isTrainBehindBrakeTrigger()) leftBreak2.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("leftBreak2 State Waiting");
- leftBreak2.getSection().setBrakesOff();
- leftBreak2.getSection().setTransportsOff();
- if (station.getState()==CLEAR && transferSwitch.getSwitchDirection() == 0){leftBreak2.setState(READY);}
- break;
- case READY:
- //System.out.println("leftBreak2 State Ready");
- if (station.getState()!=CLEAR || transferSwitch.getSwitchDirection() != 0){leftBreak2.setState(WAITING);}
- break;
- case LEAVING:
- //System.out.println("leftBreak2 State Leaving");
- leftBreak2.getSection().setBrakesOff();
- leftBreak2.getSection().setTransportsStandardFwdOn();
- station.setState(APPROACHING);
- if (!leftBreak2.getSection().isTrainOnSection()) leftBreak2.setState(CLEAR);
- break;
- }
- }
- private void manualRightBreak1()
- {
- switch (rightBreak1.getState())
- {
- case CLEAR:
- //System.out.println("rightBreak1 State State Clear");
- rightBreak1.getSection().setBrakesOn();
- rightBreak1.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("rightBreak1 State Approaching");
- rightBreak1.getSection().setBrakesOff();
- rightBreak1.getSection().setTransportsStandardFwdOn();
- if (rightBreak1.getSection().isTrainOnSection()) rightBreak1.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("rightBreak1 State Entering");
- if (rightBreak1.getSection().isTrainBehindBrakeTrigger()) rightBreak1.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("rightBreak1 State Waiting");
- rightBreak1.getSection().setBrakesOn();
- rightBreak1.getSection().setTransportsOff();
- if (rightBreak2.getState()==CLEAR) {rightBreak1.setState(READY);}
- break;
- case READY:
- //System.out.println("rightBreak1 State Ready");
- break;
- case LEAVING:
- //System.out.println("leftBreak1 State Leaving");
- rightBreak1.getSection().setBrakesOff();
- rightBreak1.getSection().setTransportsStandardFwdOn();
- if (!rightBreak1.getSection().isTrainOnSection())
- {
- rightBreak1.setState(CLEAR);
- rightBreak2.setState(APPROACHING);
- }
- break;
- }
- }
- private void manualRightBreak2()
- {
- switch (rightBreak2.getState())
- {
- case CLEAR:
- //System.out.println("rightBreak2 State State Clear");
- rightBreak2.getSection().setBrakesOn();
- rightBreak2.getSection().setTransportsOff();
- break;
- case APPROACHING:
- //System.out.println("rightBreak2 State Approaching");
- if (rightBreak2.getSection().isTrainOnSection()) rightBreak2.setState(ENTERING);
- break;
- case ENTERING:
- //System.out.println("rightBreak2 State Entering");
- rightBreak2.getSection().setBrakesOff();
- rightBreak2.getSection().setTransportsStandardFwdOn();
- if (rightBreak2.getSection().isTrainBehindBrakeTrigger()) rightBreak2.setState(WAITING);
- break;
- case WAITING:
- //System.out.println("rightBreak2 State Waiting");
- rightBreak2.getSection().setBrakesOff();
- rightBreak2.getSection().setTransportsOff();
- if (station.getState()==CLEAR && transferSwitch.getSwitchDirection() == 1){rightBreak2.setState(READY);}
- break;
- case READY:
- //System.out.println("rightBreak2 State Ready");
- if (station.getState()!=CLEAR || transferSwitch.getSwitchDirection() != 1){rightBreak2.setState(WAITING);}
- break;
- case LEAVING:
- //System.out.println("rightBreak2 State Leaving");
- rightBreak2.getSection().setBrakesOff();
- rightBreak2.getSection().setTransportsStandardFwdOn();
- station.setState(APPROACHING);
- if (!rightBreak2.getSection().isTrainOnSection()) rightBreak2.setState(CLEAR);
- break;
- }
- }
- private void manualStorage1()
- {
- Train train = storage1.getSection().getTrainOnSection();
- switch (storage1.getState())
- {
- case CLEAR:
- storage1.getSection().setTransportsOff();
- storage1.getSection().setBrakesOn();
- break;
- case APPROACHING:
- storage1.getSection().setBrakesOff();
- storage1.getSection().setTransportsStandardFwdOn();
- if (storage1.getSection().isTrainOnSection()) storage1.setState(ENTERING);
- break;
- case APPROACHING_R:
- storage1.getSection().setBrakesOff();
- storage1.getSection().setTransportsStandardBwdOn();
- if (storage1.getSection().isTrainOnSection()) storage1.setState(ENTERING_R);
- break;
- case ENTERING:
- if (storage1.getSection().isTrainBehindCenterOfSection()) storage1.setState(WAITING);
- break;
- case ENTERING_R:
- if (storage1.getSection().isTrainBeforeCenterOfSection()) storage1.setState(WAITING);
- break;
- case WAITING:
- storage1.getSection().setTransportsOff();
- storage1.getSection().setBrakesOn();
- if (train != null) train.setLashedToTrack(true);
- if (storage2.getState() == CLEAR && transferBreak.getState() == CLEAR && transferTable.getSwitchDirection() == 1) storage1.setState(READY);
- else if (storage2.getState() == CLEAR) storage1.setState(READY_F);
- else if (transferBreak.getState() == CLEAR && transferTable.getSwitchDirection() == 1) storage1.setState(READY_R);
- break;
- case READY:
- if (train != null) train.setLashedToTrack(true);
- if (storage2.getState() != CLEAR || transferBreak.getState() != CLEAR || transferTable.getSwitchDirection() != 1) storage1.setState(WAITING);
- break;
- case READY_F:
- if (train != null) train.setLashedToTrack(true);
- if (storage1.getState() != CLEAR || (transferBreak.getState() == CLEAR && transferTable.getSwitchDirection() != 1)) storage1.setState(WAITING);
- break;
- case READY_R:
- if (train != null) train.setLashedToTrack(true);
- if (transferBreak.getState() != CLEAR || transferTable.getSwitchDirection() != 1 || storage2.getState() == CLEAR) storage1.setState(WAITING);
- break;
- case LEAVING:
- if (train != null) train.setLashedToTrack(false);
- storage1.getSection().setBrakesOff();
- storage1.getSection().setTransportsStandardFwdOn();
- if (storage1.getNumberOfTrainsOnBlock() == 0) storage1.setState(CLEAR);
- break;
- case LEAVING_R:
- if (train != null) train.setLashedToTrack(false);
- storage1.getSection().setBrakesOff();
- storage1.getSection().setTransportsStandardBwdOn();
- if (storage1.getNumberOfTrainsOnBlock() == 0) storage1.setState(CLEAR);
- break;
- }
- }
- private void manualStorage2()
- {
- Train train = storage2.getSection().getTrainOnSection();
- switch (storage2.getState())
- {
- case CLEAR:
- storage2.getSection().setTransportsOff();
- storage2.getSection().setBrakesOn();
- break;
- case APPROACHING:
- storage2.getSection().setBrakesOff();
- storage2.getSection().setTransportsStandardFwdOn();
- if (storage2.getSection().isTrainOnSection()) storage2.setState(ENTERING);
- break;
- case ENTERING:
- if (storage2.getSection().isTrainBehindCenterOfSection()) storage2.setState(WAITING);
- break;
- case WAITING:
- storage2.getSection().setTransportsOff();
- storage2.getSection().setBrakesOn();
- if (train != null) train.setLashedToTrack(true);
- if (storage1.getState() == CLEAR) storage2.setState(READY_R);
- break;
- case READY_R:
- if (train != null) train.setLashedToTrack(true);
- if (storage1.getState() != CLEAR) storage2.setState(WAITING);
- break;
- case LEAVING_R:
- if (train != null) train.setLashedToTrack(false);
- storage2.getSection().setBrakesOff();
- storage2.getSection().setTransportsStandardBwdOn();
- if (storage2.getNumberOfTrainsOnBlock() == 0) storage2.setState(CLEAR);
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement