Advertisement
Guest User

Untitled

a guest
Jan 15th, 2014
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.27 KB | None | 0 0
  1. import com.nolimitscoaster.*;
  2.  
  3. public class Blocks extends Script implements BlockSystemController
  4. {
  5.     //Dit zijn alle statussen dat een block kan zijn.
  6.     private static final int STATE_BLOCK_FREE = 0;
  7.     private static final int STATE_BLOCK_APPROACHING = 1;
  8.     private static final int STATE_BLOCK_LEAVING = 2;
  9.     private static final int STATE_BLOCK_BEFORE_TRIGGER = 3;
  10.     private static final int STATE_BLOCK_BEHIND_TRIGGER = 4;
  11.     private static final int STATE_BLOCK_WAITING = 5;
  12.     private static final int STATE_BLOCK_WAIT_FOR_CLEAR = 6;
  13.     private static final int STATE_BLOCK_WAIT_FOR_ADVANCE = 7;
  14.     private static final int STATE_BLOCK_IN_STATION = 8;
  15.     private static final int STATE_BLOCK_APPROACHING_B = 9;
  16.     private static final int STATE_BLOCK_LEAVING_B = 10;
  17.     private static final int STATE_BLOCK_BEFORE_TRIGGER_B = 11;
  18.  
  19.     //Naam van script (voor errors bijvoorbeeld)
  20.     private static final String scriptName = "Blocks";
  21.  
  22.     //De drie manieren dat een achtbaan bestuurt kan worden
  23.     private static final int AUTO_MODE = 0;
  24.     private static final int MANUAL_BLOCK_MODE = 1;
  25.     private static final int FULL_MANUAL_MODE = 2;
  26.  
  27.     //Tijd om variabelen van elk block aan te maken om er mee te werken
  28.     private Coaster coaster;
  29.     private Block beforeLaunch1Block;
  30.     private Block liftSwitch1Block;
  31.     public SpecialTrack Switch1;
  32.     private float reverse1BlockTime;
  33.     private float reverse2BlockTime;
  34.     private int mode;
  35.    
  36.     //Deze methode wordt uitgevoerd wanneer de sim start.
  37.     //Return:
  38.     // * True: Alles is in orde
  39.     // * False: Fouten gevonden
  40.     public bool onInit() {
  41.         String name;
  42.        
  43.         //We gaan aan onze variabele even de betreffende achtbaan koppelen
  44.         coaster = sim.getCoasterForEntityId(getParentEntityId());
  45.         if (coaster == null) {
  46.             System.err.println(scriptName + ": Not attached to coaster");
  47.             return false;
  48.         }
  49.        
  50.         //De achtbaan moet DIT script gebruiken als blocksysteem, dus even toewijzen
  51.         coaster.setBlockSystemController(this);
  52.        
  53.         String triggerName = "TriggerLift1";
  54.         TrackTrigger tTrainEntersLift1Trigger = coaster.getTrackTrigger(triggerName);
  55.        
  56.         if (tTrainEntersLift1Trigger == null) {
  57.             System.err.println("Trigger not found");
  58.             return false;
  59.         }
  60.        
  61.         //Nu is het tijd om alle blocksecties te registreren, een rotklusje maar zeer belangrijk
  62.         //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)
  63.        
  64.         //Eerste launch, deze is direct na het station
  65.         name = "Before Launch 1";
  66.         beforeLaunch1Block = coaster.getBlock(name);
  67.         if (!checkAndSetInitialBlockState(beforeLaunch1Block, name)) {
  68.             return false;
  69.         }
  70.         beforeLaunch1Block.setAdvanceFwdVisible(true); //Knop op controlepaneel om bij manueel te starten
  71.        
  72.         //Nu de blocksecties aangemaakt zijn, moeten we de triggers registreren voor de switches
  73.        
  74.         //Trigger bij de lift van switch 1 om het te switchen
  75.         TrackTriggerListener Switch1ListenerOn = new switch1OnListener(this, Switch1, liftSwitch1Block);
  76.         tTrainEntersLift1Trigger.addTrackTriggerListener(Switch1ListenerOn);
  77.        
  78.         return true;
  79.     }
  80.    
  81.     public void onAutoMode(Coaster c) {
  82.         //Niks
  83.     }
  84.    
  85.     public void onManualBlockMode(Coaster c) {
  86.         //Niks
  87.     }
  88.    
  89.     public void onFullManualMode(Coaster c) {
  90.         //Niks
  91.     }
  92.    
  93.     public void onAdvanceFWDButton(Block block) {
  94.         //Niks
  95.     }
  96.    
  97.     public void onAdvanceBWDButton(Block block) {
  98.         //Niks
  99.     }
  100.    
  101.     //Controleert of een block bestaat, of het bezet is door een trein en registreert alle mogelijk blockstates
  102.     private static bool checkAndSetInitialBlockState(Block block, String name) {
  103.         if (block == null) {
  104.             System.err.println(scriptName + ": Block '" + name + "' not found");
  105.             return false;
  106.         }
  107.         registerBlockStates(block);
  108.         setInitialBlockState(block);
  109.         return true;
  110.     }
  111.    
  112.     //Controleert of een trein op een block is en set de benodigde gegevens voor het controlepaneel
  113.     private static void setInitialBlockState(Block block) {
  114.         if (block.getNumberOfTrainsOnBlock() > 0) {
  115.             if (block.getSection().iStation()) {
  116.                 block.setState(STATE_BLOCK_IN_STATION);
  117.             } else {
  118.             block.setState(STATE_BLOCK_WAIT_FOR_CLEAR);
  119.             }
  120.         } else {
  121.             block.setState(STATE_BLOCK_FREE);
  122.         }
  123.     }
  124.    
  125.     //Labels voor iedere mogelijke blockstate, dit wordt op controlepaneel weergegeven
  126.     private static void registerBlockStates(Block block) {
  127.         block.registerState(STATE_BLOCK_FREE, "Free", Block.LAMP_OFF);
  128.        
  129.         block.registerState(STATE_BLOCK_APPROACHING, "Approaching", Block.LAMP_FLASHING);
  130.         block.registerState(STATE_BLOCK_APPROACHING_B, "Approaching", Block.LAMP_FLASHING);
  131.        
  132.         block.registerState(STATE_BLOCK_LEAVING, "Leaving", Block.LAMP_ON);
  133.         block.registerState(STATE_BLOCK_LEAVING_B, "Leaving", Block.LAMP_ON);
  134.        
  135.         block.registerState(STATE_BLOCK_BEFORE_TRIGGER, "Before Trigger", Block.LAMP_ON);
  136.         block.registerState(STATE_BLOCK_BEFORE_TRIGGER_B, "Before Trigger", Block.LAMP_ON);
  137.        
  138.         block.registerState(STATE_BLOCK_BEHIND_TRIGGER, "Behind Trigger", Block.LAMP_ON);
  139.        
  140.         block.registerState(STATE_BLOCK_WAITING, "Waiting", Block.LAMP_ON);
  141.         block.registerState(STATE_BLOCK_WAIT_FOR_CLEAR, "Waiting for Clear Block", Block.LAMP_ON);
  142.         block.registerState(STATE_BLOCK_WAIT_FOR_ADVANCE, "Waiting for Advance", Block.LAMP_ON);
  143.        
  144.         block.registerState(STATE_BLOCK_IN_STATION, "In Station", Block.LAMP_ON);
  145.     }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement