Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.nolimitscoaster.*;
- public class Blocks extends Script implements BlockSystemController
- {
- //Dit zijn alle statussen dat een block kan zijn.
- private static final int STATE_BLOCK_FREE = 0;
- private static final int STATE_BLOCK_APPROACHING = 1;
- private static final int STATE_BLOCK_LEAVING = 2;
- private static final int STATE_BLOCK_BEFORE_TRIGGER = 3;
- private static final int STATE_BLOCK_BEHIND_TRIGGER = 4;
- private static final int STATE_BLOCK_WAITING = 5;
- private static final int STATE_BLOCK_WAIT_FOR_CLEAR = 6;
- private static final int STATE_BLOCK_WAIT_FOR_ADVANCE = 7;
- private static final int STATE_BLOCK_IN_STATION = 8;
- private static final int STATE_BLOCK_APPROACHING_B = 9;
- private static final int STATE_BLOCK_LEAVING_B = 10;
- private static final int STATE_BLOCK_BEFORE_TRIGGER_B = 11;
- //Naam van script (voor errors bijvoorbeeld)
- private static final String scriptName = "Blocks";
- //De drie manieren dat een achtbaan bestuurt kan worden
- private static final int AUTO_MODE = 0;
- private static final int MANUAL_BLOCK_MODE = 1;
- private static final int FULL_MANUAL_MODE = 2;
- //Tijd om variabelen van elk block aan te maken om er mee te werken
- private Coaster coaster;
- private Block beforeLaunch1Block;
- private Block liftSwitch1Block;
- public SpecialTrack Switch1;
- private float reverse1BlockTime;
- private float reverse2BlockTime;
- private int mode;
- //Deze methode wordt uitgevoerd wanneer de sim start.
- //Return:
- // * True: Alles is in orde
- // * False: Fouten gevonden
- public bool onInit() {
- String name;
- //We gaan aan onze variabele even de betreffende achtbaan koppelen
- coaster = sim.getCoasterForEntityId(getParentEntityId());
- if (coaster == null) {
- System.err.println(scriptName + ": Not attached to coaster");
- return false;
- }
- //De achtbaan moet DIT script gebruiken als blocksysteem, dus even toewijzen
- coaster.setBlockSystemController(this);
- String triggerName = "TriggerLift1";
- TrackTrigger tTrainEntersLift1Trigger = coaster.getTrackTrigger(triggerName);
- if (tTrainEntersLift1Trigger == null) {
- System.err.println("Trigger not found");
- return false;
- }
- //Nu is het tijd om alle blocksecties te registreren, een rotklusje maar zeer belangrijk
- //De variabele "name" moet de EXACTE naam zijn van de blocksectie (dubbelklik op de sectie om de naam te zien en deze aan te passen)
- //Eerste launch, deze is direct na het station
- name = "Before Launch 1";
- beforeLaunch1Block = coaster.getBlock(name);
- if (!checkAndSetInitialBlockState(beforeLaunch1Block, name)) {
- return false;
- }
- beforeLaunch1Block.setAdvanceFwdVisible(true); //Knop op controlepaneel om bij manueel te starten
- //Nu de blocksecties aangemaakt zijn, moeten we de triggers registreren voor de switches
- //Trigger bij de lift van switch 1 om het te switchen
- TrackTriggerListener Switch1ListenerOn = new switch1OnListener(this, Switch1, liftSwitch1Block);
- tTrainEntersLift1Trigger.addTrackTriggerListener(Switch1ListenerOn);
- return true;
- }
- public void onAutoMode(Coaster c) {
- //Niks
- }
- public void onManualBlockMode(Coaster c) {
- //Niks
- }
- public void onFullManualMode(Coaster c) {
- //Niks
- }
- public void onAdvanceFWDButton(Block block) {
- //Niks
- }
- public void onAdvanceBWDButton(Block block) {
- //Niks
- }
- //Controleert of een block bestaat, of het bezet is door een trein en registreert alle mogelijk blockstates
- private static bool checkAndSetInitialBlockState(Block block, String name) {
- if (block == null) {
- System.err.println(scriptName + ": Block '" + name + "' not found");
- return false;
- }
- registerBlockStates(block);
- setInitialBlockState(block);
- return true;
- }
- //Controleert of een trein op een block is en set de benodigde gegevens voor het controlepaneel
- private static void setInitialBlockState(Block block) {
- if (block.getNumberOfTrainsOnBlock() > 0) {
- if (block.getSection().iStation()) {
- block.setState(STATE_BLOCK_IN_STATION);
- } else {
- block.setState(STATE_BLOCK_WAIT_FOR_CLEAR);
- }
- } else {
- block.setState(STATE_BLOCK_FREE);
- }
- }
- //Labels voor iedere mogelijke blockstate, dit wordt op controlepaneel weergegeven
- private static void registerBlockStates(Block block) {
- block.registerState(STATE_BLOCK_FREE, "Free", Block.LAMP_OFF);
- block.registerState(STATE_BLOCK_APPROACHING, "Approaching", Block.LAMP_FLASHING);
- block.registerState(STATE_BLOCK_APPROACHING_B, "Approaching", Block.LAMP_FLASHING);
- block.registerState(STATE_BLOCK_LEAVING, "Leaving", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_LEAVING_B, "Leaving", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_BEFORE_TRIGGER, "Before Trigger", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_BEFORE_TRIGGER_B, "Before Trigger", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_BEHIND_TRIGGER, "Behind Trigger", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_WAITING, "Waiting", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_WAIT_FOR_CLEAR, "Waiting for Clear Block", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_WAIT_FOR_ADVANCE, "Waiting for Advance", Block.LAMP_ON);
- block.registerState(STATE_BLOCK_IN_STATION, "In Station", Block.LAMP_ON);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement