home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / DISPLAY.EXE / DisplayScript.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-02-01  |  4.5 KB  |  321 lines

  1. import java.io.DataInputStream;
  2. import java.io.FilterInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;
  7.  
  8. public class DisplayScript {
  9.    LineList list;
  10.    LineList ptr;
  11.    LineList start;
  12.    // $FF: renamed from: ok int
  13.    int field_0;
  14.    String scrpt;
  15.    URL documentURL;
  16.    String colors = new String("wrgbyopcl");
  17.  
  18.    LineInfo getFunc(String var1) {
  19.       LineInfo var4 = new LineInfo();
  20.       var4.func = -1;
  21.       var4.line = 1;
  22.       var4.delay = 1000;
  23.       var4.times = -1;
  24.       var4.remaining = 0;
  25.       var4.text = new String();
  26.       var4.url = null;
  27.       var4.target = null;
  28.       var4.ret = null;
  29.       var1 = var1.trim();
  30.       String var3 = this.getParam(var1, "text");
  31.       if (var3 != null) {
  32.          var4.text = var3;
  33.       }
  34.  
  35.       try {
  36.          var3 = this.getParam(var1, "wait");
  37.          if (var3 != null) {
  38.             var4.delay = new Integer(var3);
  39.          }
  40.  
  41.          if (var4.delay < 0) {
  42.             var4.delay = 1000;
  43.          }
  44.       } catch (NumberFormatException var9) {
  45.          System.out.println("Bad wait value '" + var3 + "'. Setting wait=1000.");
  46.          var4.delay = 1000;
  47.       }
  48.  
  49.       try {
  50.          var3 = this.getParam(var1, "line");
  51.          if (var3 != null) {
  52.             var4.line = new Integer(var3);
  53.          }
  54.  
  55.          if (var4.line <= 0) {
  56.             var4.line = 1;
  57.          }
  58.       } catch (NumberFormatException var8) {
  59.          System.out.println("Bad line number '" + var3 + "'. Setting line=1.");
  60.          var4.line = 1;
  61.       }
  62.  
  63.       try {
  64.          var3 = this.getParam(var1, "times");
  65.          if (var3 != null) {
  66.             var4.times = new Integer(var3);
  67.             var4.remaining = var4.times;
  68.          }
  69.       } catch (NumberFormatException var7) {
  70.          System.out.println("Bad times value '" + var3 + "'. Setting times=-1.");
  71.          var4.times = -1;
  72.          var4.remaining = 0;
  73.       }
  74.  
  75.       var3 = this.getParam(var1, "URL");
  76.       if (var3 != null) {
  77.          if (var3.indexOf(44) != -1) {
  78.             var4.target = var3.substring(var3.indexOf(44) + 1);
  79.             var3 = var3.substring(0, var3.indexOf(44));
  80.          }
  81.  
  82.          try {
  83.             var4.url = new URL(var3);
  84.          } catch (MalformedURLException var6) {
  85.             System.out.println("Bad URL '" + var3 + "'. Deleting URL value.");
  86.             var4.url = null;
  87.          }
  88.       }
  89.  
  90.       int var2 = var1.indexOf(" ");
  91.       if (var2 != -1) {
  92.          var3 = var1.substring(0, var2);
  93.       } else {
  94.          var3 = var1;
  95.       }
  96.  
  97.       if (var3.compareTo("Show") == 0) {
  98.          var4.func = 0;
  99.       } else if (var3.compareTo("Remove") == 0) {
  100.          var4.func = 1;
  101.       } else if (var3.compareTo("Sleep") == 0) {
  102.          var4.func = 2;
  103.       } else if (var3.compareTo("Do") == 0) {
  104.          var4.func = 97;
  105.       } else if (var3.compareTo("Repeat") == 0) {
  106.          var4.func = 98;
  107.       } else if (var3.compareTo("Reload") == 0) {
  108.          var4.func = 99;
  109.       } else {
  110.          System.out.println("Bad function '" + var3 + "'. Setting function=Sleep.");
  111.          var4.func = 2;
  112.       }
  113.  
  114.       var4.store = var4.text;
  115.       return var4;
  116.    }
  117.  
  118.    LineInfo nextFunc() {
  119.       LineInfo var1 = this.ptr.li;
  120.       this.ptr = this.ptr.next;
  121.       switch (var1.func) {
  122.          case 97:
  123.             var1 = this.nextFunc();
  124.             break;
  125.          case 98:
  126.             if (var1.times >= 0) {
  127.                var1.remaining += -1;
  128.                if (var1.remaining <= 0) {
  129.                   var1.remaining = var1.times;
  130.                   var1 = this.nextFunc();
  131.                } else {
  132.                   this.ptr = var1.ret;
  133.                   var1 = this.nextFunc();
  134.                }
  135.             } else {
  136.                this.ptr = var1.ret;
  137.                var1 = this.nextFunc();
  138.             }
  139.             break;
  140.          case 99:
  141.             if (this.initScript() == -1) {
  142.                var1 = null;
  143.             } else {
  144.                var1 = this.nextFunc();
  145.             }
  146.       }
  147.  
  148.       return var1;
  149.    }
  150.  
  151.    boolean isColor(char var1) {
  152.       return this.colors.indexOf(var1) != -1;
  153.    }
  154.  
  155.    String getParam(String var1, String var2) {
  156.       int var3 = -1;
  157.       int var4 = -1;
  158.       boolean var6 = false;
  159.  
  160.       while(!var6) {
  161.          var3 = var1.indexOf(var2, var3 + 1);
  162.          if (var3 == -1) {
  163.             var6 = true;
  164.          } else if (var1.charAt(var3 - 1) == ' ') {
  165.             var6 = true;
  166.          }
  167.       }
  168.  
  169.       var6 = false;
  170.  
  171.       while(!var6) {
  172.          var4 = var1.indexOf("text", var4 + 1);
  173.          if (var4 == -1) {
  174.             var6 = true;
  175.          } else if (var1.charAt(var4 - 1) == ' ') {
  176.             var6 = true;
  177.          }
  178.       }
  179.  
  180.       if (var4 != -1 && var3 > var4) {
  181.          return null;
  182.       } else if (var3 == -1) {
  183.          return null;
  184.       } else {
  185.          String var5 = var1.substring(var3);
  186.          var3 = var5.indexOf("=");
  187.          if (var3 == -1) {
  188.             System.out.println("Error in '" + var2 + "' parameter in " + var1);
  189.             return null;
  190.          } else {
  191.             ++var3;
  192.             if (var2.compareTo("text") == 0) {
  193.                var5 = var5.substring(var3);
  194.             } else {
  195.                var5 = var5.substring(var3);
  196.                if (var5.indexOf(" ") != -1) {
  197.                   var5 = var5.substring(0, var5.indexOf(" "));
  198.                }
  199.             }
  200.  
  201.             var5.trim();
  202.             return var5;
  203.          }
  204.       }
  205.    }
  206.  
  207.    public DisplayScript(URL var1, String var2) {
  208.       this.scrpt = var2;
  209.       this.documentURL = var1;
  210.       if (this.initScript() == -1) {
  211.          this.field_0 = -1;
  212.       } else {
  213.          this.field_0 = 1;
  214.       }
  215.  
  216.    }
  217.  
  218.    int initScript() {
  219.       InputStream var1;
  220.       DataInputStream var2;
  221.       try {
  222.          URL var3 = new URL(this.documentURL, this.scrpt);
  223.          var1 = var3.openStream();
  224.          var2 = new DataInputStream(var1);
  225.       } catch (IOException var11) {
  226.          return -1;
  227.       }
  228.  
  229.       try {
  230.          this.list = new LineList();
  231.          this.start = this.list;
  232.          this.ptr = this.list;
  233.          int var5 = 0;
  234.          int var6 = 0;
  235.  
  236.          String var4;
  237.          while((var4 = var2.readLine()) != null) {
  238.             var4 = var4.trim();
  239.             if (!var4.startsWith("//") && var4.length() != 0) {
  240.                ++var5;
  241.                this.ptr.li = this.getFunc(var4);
  242.                if (this.ptr.li.func == 97) {
  243.                   ++var6;
  244.                }
  245.  
  246.                this.ptr.next = new LineList();
  247.                this.ptr = this.ptr.next;
  248.             }
  249.          }
  250.  
  251.          LineList[] var8 = new LineList[var6];
  252.          this.ptr = this.start;
  253.          var6 = 0;
  254.  
  255.          for(int var7 = 0; var7 < var5; ++var7) {
  256.             if (this.ptr.li.func == 97) {
  257.                var8[var6] = new LineList();
  258.                var8[var6] = this.ptr;
  259.                ++var6;
  260.             } else if (this.ptr.li.func == 98) {
  261.                if (var6 > 0) {
  262.                   --var6;
  263.                   this.ptr.li.ret = var8[var6];
  264.                } else {
  265.                   System.out.println("Repeat error in line : Repeat times=" + this.ptr.li.times);
  266.                }
  267.             }
  268.  
  269.             this.ptr = this.ptr.next;
  270.          }
  271.  
  272.          this.ptr = this.start;
  273.          var1.close();
  274.          ((FilterInputStream)var2).close();
  275.          return 1;
  276.       } catch (IOException var10) {
  277.          return -1;
  278.       }
  279.    }
  280.  
  281.    LineInfo parseLine(LineInfo var1, int var2) {
  282.       String var3 = var1.store;
  283.       String var7 = new String();
  284.       if (var1.func == 0 || var1.func == 1) {
  285.          char var5 = 'w';
  286.          int var4 = 0;
  287.  
  288.          while(var4 < var3.length()) {
  289.             if (var3.charAt(var4) == '\\') {
  290.                String var6 = var3.substring(var4 + 1, var4 + 2);
  291.                var3 = var3.substring(0, var4).concat(var3.substring(var4 + 2));
  292.                if (this.isColor(var6.charAt(0))) {
  293.                   var5 = var6.charAt(0);
  294.                } else if (var6.compareTo("\\") == 0) {
  295.                   var3 = var3.substring(0, var4).concat(var3.substring(var4 + 1));
  296.                   --var4;
  297.                } else {
  298.                   System.out.println("Backslash (\\) error in text line: " + var1.store);
  299.                }
  300.             } else {
  301.                ++var4;
  302.                var7 = var7.concat((new Character(var5)).toString());
  303.             }
  304.          }
  305.       }
  306.  
  307.       var1.text = var3;
  308.       var1.color = new int[var2 + 1];
  309.  
  310.       for(int var8 = 0; var8 < var2; ++var8) {
  311.          if (var8 >= var7.length()) {
  312.             var1.color[var8] = 0;
  313.          } else {
  314.             var1.color[var8] = this.colors.indexOf(var7.charAt(var8));
  315.          }
  316.       }
  317.  
  318.       return var1;
  319.    }
  320. }
  321.