home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / ANI10.EXE / ANIScript.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-19  |  11.6 KB  |  691 lines

  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.FontMetrics;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.io.DataInputStream;
  7. import java.io.FilterInputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.util.Vector;
  13.  
  14. public final class ANIScript {
  15.    static final int AGENTITEM = 1;
  16.    static final int STARTANIMATION = 2;
  17.    static final int ENDANIMATION = 3;
  18.    private String keywords = new String(",AGENTITEM,01,STARTANIMATION,02,ENDANIMATION,03,");
  19.    static final int SHOWTIME = 0;
  20.    static final int SHOWSEQ = 1;
  21.    static final int SCROLL_RTL = 2;
  22.    static final int SCROLL_PTL = 3;
  23.    static final int SCROLL_LTR = 4;
  24.    static final int SCROLL_LTP = 5;
  25.    static final int SCROLL_RTP = 6;
  26.    static final int SCROLL_PTR = 7;
  27.    private String methods = new String(",SHOWTIME,00,SHOWSEQ,01,SCROLL_RTL,02,SCROLL_PTL,03,SCROLL_LTR,04,SCROLL_LTP,05,SCROLL_RTP,06,SCROLL_PTR,07,");
  28.    // $FF: renamed from: ok int
  29.    public int field_0;
  30.    private ANI Applet;
  31.    private String scriptFile;
  32.    private URL documentURL;
  33.    private String lineParam;
  34.    private String lineValue;
  35.    public Vector AgentItems;
  36.    private int scrType;
  37.    private ANIAgentItem aniItem;
  38.    private int actHelpPos;
  39.    private Font actHelpFont;
  40.    private Color actHelpColor;
  41.    private FontMetrics actHelpFM;
  42.    private boolean fItalic;
  43.    private boolean fBold;
  44.  
  45.    static final Color getColor(String var0, String var1) {
  46.       int var4 = Integer.parseInt(var1.substring(0, var1.indexOf(",")));
  47.       String var3 = var1.substring(var1.indexOf(",") + 1);
  48.       int var5 = Integer.parseInt(var3.substring(0, var3.indexOf(",")));
  49.       var3 = var3.substring(var3.indexOf(",") + 1);
  50.       int var6 = Integer.parseInt(var3);
  51.       Color var2 = new Color(var4, var5, var6);
  52.       return var2;
  53.    }
  54.  
  55.    private final String getFontName(String var1, String var2) {
  56.       String var3 = null;
  57.       if (var2.indexOf(",") != -1) {
  58.          var3 = new String(var2.substring(0, var2.indexOf(",")));
  59.       } else {
  60.          System.out.println("WARNING: Bad font value '" + var2 + "' for parameter '" + var1 + "'. Ignoring font value.");
  61.       }
  62.  
  63.       return var3;
  64.    }
  65.  
  66.    public ANIScript(ANI var1, URL var2, String var3, int var4) {
  67.       this.Applet = var1;
  68.       this.scriptFile = var3;
  69.       this.documentURL = var2;
  70.       this.scrType = var4;
  71.       if (this.scrType == 1) {
  72.          this.AgentItems = new Vector();
  73.       }
  74.  
  75.       this.field_0 = this.initScript();
  76.    }
  77.  
  78.    private final int getFontSize(String var1, String var2) {
  79.       int var3 = 0;
  80.       if (var2.indexOf(",") != -1) {
  81.          var3 = Integer.parseInt(var2.substring(var2.indexOf(",") + 1));
  82.       }
  83.  
  84.       return var3;
  85.    }
  86.  
  87.    private final int getMethod(String var1) {
  88.       String var2 = var1.toUpperCase();
  89.       int var3 = -1;
  90.       String var4 = "," + var2 + ",";
  91.       int var5 = this.methods.indexOf(var4);
  92.       if (var5 != -1) {
  93.          var5 += var4.length();
  94.          var3 = Integer.parseInt(this.methods.substring(var5, var5 + 2));
  95.       }
  96.  
  97.       if (var3 == -1) {
  98.          System.out.println("ERROR: Invalid method '" + var2 + "'.");
  99.       }
  100.  
  101.       return var3;
  102.    }
  103.  
  104.    private final int getNextWordWidth(ANIAgentItem var1) {
  105.       int var2 = 0;
  106.       int var3 = this.actHelpPos;
  107.       Font var4 = this.actHelpFont;
  108.  
  109.       for(char var5 = this.getNextChar(var1); var5 != 0 && var5 != ' ' && var5 != '\r'; var5 = this.getNextChar(var1)) {
  110.          var2 += this.actHelpFM.charWidth(var5);
  111.       }
  112.  
  113.       this.actHelpPos = var3;
  114.       this.actHelpFont = var4;
  115.       this.actHelpFM = this.Applet.getFontMetrics(this.actHelpFont);
  116.       return var2;
  117.    }
  118.  
  119.    private final boolean parseAgentItem(String var1, int var2) {
  120.       boolean var3 = true;
  121.       int var4 = 0;
  122.       String var5 = var1;
  123.       String var6 = null;
  124.       String var7 = null;
  125.       if (var2 != 1 && this.aniItem == null) {
  126.          System.out.println("ERROR: BEGINANIMATION or ENDANIMATION without previous AGENTITEM.");
  127.          return false;
  128.       } else {
  129.          ANIAgentItem var8 = new ANIAgentItem();
  130.          var8.id = this.Applet.iID;
  131.          var8.xHelp = 100;
  132.          var8.yHelp = 5;
  133.          var8.wHelp = 100;
  134.          var8.hHelp = 40;
  135.          var8.fHelpToRight = true;
  136.          var8.aniIndex = -1;
  137.          var8.aniFrames = 1;
  138.          var8.aniSequences = 1;
  139.          var8.banIndex = -1;
  140.          var8.banSequences = 1;
  141.          var8.delay = 50;
  142.          var8.xInc = 1;
  143.          var8.holdTime = 10;
  144.          var8.launchRepeat = -1;
  145.          var8.launchIntervalMin = 60;
  146.          var8.launchIntervalMax = 60;
  147.          if (var2 == 1) {
  148.             var8.preAni = new Vector();
  149.             var8.postAni = new Vector();
  150.             var8.banFrames = 1;
  151.             var8.scriptLines = var1;
  152.          } else {
  153.             ANIAgentItem var10000 = this.aniItem;
  154.             String var10001 = var10000.scriptLines;
  155.             var10000.scriptLines = var10001 + var1;
  156.          }
  157.  
  158.          ANI var15 = this.Applet;
  159.          var15.iID += 2;
  160.  
  161.          while(var4 != -1) {
  162.             var4 = this.getNextParameter(var5);
  163.             if (var4 != -1) {
  164.                var5 = var5.substring(var4 + 1).trim();
  165.                if (this.lineParam.equals("METHOD")) {
  166.                   var8.method = this.getMethod(this.lineValue);
  167.                } else if (this.lineParam.equals("DELAY")) {
  168.                   var8.delay = Integer.parseInt(this.lineValue);
  169.                } else if (this.lineParam.equals("XINC")) {
  170.                   var8.xInc = Integer.parseInt(this.lineValue);
  171.                } else if (this.lineParam.equals("HOLDTIME")) {
  172.                   var8.holdTime = Integer.parseInt(this.lineValue);
  173.                } else if (this.lineParam.equals("ENDDELAY")) {
  174.                   var8.endDelay = Integer.parseInt(this.lineValue);
  175.                } else if (this.lineParam.equals("ANIIMAGE")) {
  176.                   var8.aniImage = getURL(this.lineParam, this.lineValue, this.documentURL);
  177.                } else if (this.lineParam.equals("ANIIMAGEFRAMES")) {
  178.                   var8.aniFrames = Integer.parseInt(this.lineValue);
  179.                } else if (this.lineParam.equals("ANIIMAGEINC")) {
  180.                   var6 = this.lineValue;
  181.                } else if (this.lineParam.equals("ANIIMAGESEQUENCES")) {
  182.                   var8.aniSequences = Integer.parseInt(this.lineValue);
  183.                } else if (this.lineParam.equals("ANIIMAGEXOFFSET")) {
  184.                   var8.xpAni = Integer.parseInt(this.lineValue);
  185.                } else if (this.lineParam.equals("ANIIMAGEYOFFSET")) {
  186.                   var8.ypAni = Integer.parseInt(this.lineValue);
  187.                } else if (var2 == 1) {
  188.                   if (this.lineParam.equals("HELP")) {
  189.                      var8.helpText = this.lineValue;
  190.                   } else if (this.lineParam.equals("HELPXOFFSET")) {
  191.                      var8.xHelp = Integer.parseInt(this.lineValue);
  192.                   } else if (this.lineParam.equals("HELPYOFFSET")) {
  193.                      var8.yHelp = Integer.parseInt(this.lineValue);
  194.                   } else if (this.lineParam.equals("HELPWIDTH")) {
  195.                      var8.wHelp = Integer.parseInt(this.lineValue);
  196.                   } else if (this.lineParam.equals("HELPHEIGHT")) {
  197.                      var8.hHelp = Integer.parseInt(this.lineValue);
  198.                   } else if (this.lineParam.equals("HELPDIRECTION")) {
  199.                      if (this.lineValue.toUpperCase().equals("LEFT")) {
  200.                         var8.fHelpToRight = false;
  201.                      }
  202.                   } else if (this.lineParam.equals("URL")) {
  203.                      var8.url = getURL(this.lineParam, this.lineValue, this.documentURL);
  204.                   } else if (this.lineParam.equals("TARGET")) {
  205.                      var8.target = this.lineValue;
  206.                   } else if (this.lineParam.equals("BANIMAGE")) {
  207.                      var8.banImage = getURL(this.lineParam, this.lineValue, this.documentURL);
  208.                   } else if (this.lineParam.equals("BANIMAGEFRAMES")) {
  209.                      var8.banFrames = Integer.parseInt(this.lineValue);
  210.                   } else if (this.lineParam.equals("BANIMAGEINC")) {
  211.                      var7 = this.lineValue;
  212.                   } else if (this.lineParam.equals("BANIMAGESEQUENCES")) {
  213.                      var8.banSequences = Integer.parseInt(this.lineValue);
  214.                   } else if (this.lineParam.equals("BANIMAGEXOFFSET")) {
  215.                      var8.xpBan = Integer.parseInt(this.lineValue);
  216.                   } else if (this.lineParam.equals("BANIMAGEYOFFSET")) {
  217.                      var8.ypBan = Integer.parseInt(this.lineValue);
  218.                   } else if (this.lineParam.equals("LAUNCHINTERVAL")) {
  219.                      int[] var9 = this.getMinMaxInterval(this.lineParam, this.lineValue);
  220.                      var8.launchIntervalMin = var9[0];
  221.                      var8.launchIntervalMax = var9[1];
  222.                   } else if (this.lineParam.equals("LAUNCHFIRST")) {
  223.                      var8.launchFirst = Integer.parseInt(this.lineValue);
  224.                   } else if (this.lineParam.equals("LAUNCHREPEAT")) {
  225.                      var8.launchRepeat = Integer.parseInt(this.lineValue);
  226.                   } else if (this.lineParam.equals("SOUND")) {
  227.                      var8.sound = this.lineValue;
  228.                   } else if (this.lineParam.equals("SOUNDDELAY")) {
  229.                      var8.soundDelay = Integer.parseInt(this.lineValue);
  230.                   }
  231.                } else {
  232.                   System.out.println("WARNING: Invalid AGENTITEM parameter '" + this.lineParam + "'. Parameter ignored.");
  233.                }
  234.             }
  235.          }
  236.  
  237.          if (var8.method == -1) {
  238.             var3 = false;
  239.          } else if (var8.aniFrames <= 0) {
  240.             System.out.println("ERROR: Item with negative or zero animation frames. You must have at least one frame.");
  241.             var3 = false;
  242.          } else if (var8.banFrames <= 0 && var8.banImage != null) {
  243.             System.out.println("ERROR: Item with negative or zero banner frames. You must have at least one frame.");
  244.             var3 = false;
  245.          } else if (var8.delay <= 0) {
  246.             System.out.println("ERROR: Item with negative or zero delay time. Please use a positive number.");
  247.             var3 = false;
  248.          } else if (var8.aniSequences <= 0) {
  249.             System.out.println("ERROR: Item with negative or zero times to show the animation. Please use a positive number.");
  250.             var3 = false;
  251.          } else if (var8.banSequences <= 0) {
  252.             System.out.println("ERROR: Item with negative or zero times to show the banner. Please use a positive number.");
  253.             var3 = false;
  254.          }
  255.  
  256.          if (!var3) {
  257.             return var3;
  258.          } else {
  259.             var8.aniIncList = new int[var8.aniFrames];
  260.             int var12 = var8.aniFrames;
  261.  
  262.             while(true) {
  263.                --var12;
  264.                if (var12 < 0) {
  265.                   if (var6 != null) {
  266.                      var8.aniIncList = this.getFrameIncrements(var6, var8.aniFrames);
  267.                   }
  268.  
  269.                   var8.banIncList = new int[var8.banFrames];
  270.                   var12 = var8.banFrames;
  271.  
  272.                   while(true) {
  273.                      --var12;
  274.                      if (var12 < 0) {
  275.                         if (var7 != null) {
  276.                            var8.banIncList = this.getFrameIncrements(var7, var8.banFrames);
  277.                         }
  278.  
  279.                         if (var3) {
  280.                            if (var8.method != 0) {
  281.                               var8.holdTime = 1000;
  282.                            }
  283.  
  284.                            switch (var2) {
  285.                               case 1:
  286.                                  this.AgentItems.addElement(var8);
  287.                                  if (var8.helpText != null) {
  288.                                     Image var14 = this.Applet.ANICreateImage(var8.wHelp, var8.hHelp);
  289.                                     Graphics var10 = var14.getGraphics();
  290.                                     var10.setColor(this.Applet.agentBgColor);
  291.                                     var10.fillRect(0, 0, var8.wHelp, var8.hHelp);
  292.                                     var10.setColor(this.Applet.helpBgColor);
  293.                                     var10.fillRoundRect(0, 0, var8.wHelp, var8.hHelp, 20, 20);
  294.                                     var10.setColor(this.Applet.helpBorderColor);
  295.                                     var10.drawRoundRect(0, 0, var8.wHelp - 1, var8.hHelp - 1, 20, 20);
  296.                                     this.drawText(var8, var10);
  297.                                     ANIImageTransition var11 = new ANIImageTransition(var14, this.Applet);
  298.                                     var11.makeTransparent(this.Applet.agentBgColor);
  299.                                     var8.helpTextImg = var11.createImage();
  300.                                  }
  301.  
  302.                                  this.aniItem = var8;
  303.                                  break;
  304.                               case 2:
  305.                                  this.aniItem.preAni.addElement(var8);
  306.                                  break;
  307.                               case 3:
  308.                                  this.aniItem.postAni.addElement(var8);
  309.                            }
  310.                         }
  311.  
  312.                         return var3;
  313.                      }
  314.  
  315.                      var8.banIncList[var12] = 1;
  316.                   }
  317.                }
  318.  
  319.                var8.aniIncList[var12] = 1;
  320.             }
  321.          }
  322.       }
  323.    }
  324.  
  325.    private final int getQuoteIndex(String var1, int var2) {
  326.       boolean var3 = false;
  327.       int var4 = var2;
  328.  
  329.       while(!var3) {
  330.          var4 = var1.indexOf("\"", var4 + 1);
  331.          if (var4 > 0) {
  332.             if (var1.charAt(var4 - 1) != '\\') {
  333.                var3 = true;
  334.             }
  335.          } else {
  336.             if (var4 == -1) {
  337.                return -1;
  338.             }
  339.  
  340.             var3 = true;
  341.          }
  342.       }
  343.  
  344.       return var4;
  345.    }
  346.  
  347.    private final int getKeyword(String var1) {
  348.       int var4 = -1;
  349.       int var3 = var1.indexOf(" ");
  350.       String var2;
  351.       if (var3 != -1) {
  352.          var2 = var1.substring(0, var3);
  353.       } else {
  354.          var2 = var1;
  355.       }
  356.  
  357.       var2 = var2.toUpperCase();
  358.       String var5 = "," + var2 + ",";
  359.       int var6 = this.keywords.indexOf(var5);
  360.       if (var6 != -1) {
  361.          var6 += var5.length();
  362.          var4 = Integer.parseInt(this.keywords.substring(var6, var6 + 2));
  363.       }
  364.  
  365.       if (var4 == -1) {
  366.          System.out.println("ERROR: Invalid keyword '" + var2 + "' in line '" + var1 + "'.");
  367.       }
  368.  
  369.       return var4;
  370.    }
  371.  
  372.    private final int getNextParameter(String var1) {
  373.       this.lineParam = null;
  374.       this.lineValue = null;
  375.       var1 = var1.trim();
  376.       int var2 = var1.indexOf("=");
  377.       if (var2 == -1) {
  378.          return -1;
  379.       } else {
  380.          this.lineParam = var1.substring(0, var2).toUpperCase();
  381.          String var3 = var1.substring(var2 + 1);
  382.          int var4 = this.getQuoteIndex(var3, -1);
  383.          if (var4 != -1) {
  384.             int var5 = this.getQuoteIndex(var3, var4);
  385.             if (var4 > 1) {
  386.                System.out.println("WARNING: Characters before value of parameter '" + this.lineParam + "' ignored.");
  387.             }
  388.  
  389.             if (var5 == -1) {
  390.                System.out.println("ERROR: No ending double quotes found for parameter '" + this.lineParam + "'.");
  391.                return -1;
  392.             } else {
  393.                this.lineValue = var3.substring(var4 + 1, var5 - var4);
  394.                int var6 = 0;
  395.  
  396.                while(var6 != -1) {
  397.                   var6 = this.lineValue.indexOf("\\\"");
  398.                   if (var6 != -1) {
  399.                      this.lineValue = this.lineValue.substring(0, var6) + this.lineValue.substring(var6 + 1);
  400.                   }
  401.                }
  402.  
  403.                return var2 + var5 + 1;
  404.             }
  405.          } else {
  406.             System.out.println("ERROR: No starting double quotes found for parameter '" + this.lineParam + "'.");
  407.             return -1;
  408.          }
  409.       }
  410.    }
  411.  
  412.    public static final URL getURL(String var0, String var1, URL var2) {
  413.       URL var3;
  414.       try {
  415.          var3 = new URL(var1);
  416.       } catch (MalformedURLException var5) {
  417.          var3 = null;
  418.       }
  419.  
  420.       if (var3 == null) {
  421.          try {
  422.             var3 = new URL(var2, var1);
  423.          } catch (MalformedURLException var4) {
  424.          }
  425.       }
  426.  
  427.       if (var3 == null) {
  428.          System.out.println("WARNING: Bad URL value '" + var1 + "' for parameter '" + var0 + "'. URL ignored.");
  429.       }
  430.  
  431.       return var3;
  432.    }
  433.  
  434.    private final int initScript() {
  435.       Object var4 = null;
  436.       byte var8 = 1;
  437.  
  438.       InputStream var1;
  439.       DataInputStream var2;
  440.       try {
  441.          URL var12 = new URL(this.documentURL, this.scriptFile);
  442.          var1 = var12.openStream();
  443.          var2 = new DataInputStream(var1);
  444.       } catch (IOException var10) {
  445.          System.out.println("ERROR: Error opening script file '" + ((URL)var4).toExternalForm() + "'.");
  446.          return -1;
  447.       }
  448.  
  449.       Vector var3 = new Vector();
  450.  
  451.       try {
  452.          String var5;
  453.          while((var5 = var2.readLine()) != null) {
  454.             var5 = var5.trim();
  455.             if (!var5.startsWith("//") && var5.length() != 0) {
  456.                while(var5.endsWith("\\")) {
  457.                   var5 = var5.substring(0, var5.length() - 1);
  458.                   String var6 = var2.readLine();
  459.                   if (var6 == null) {
  460.                      var8 = -1;
  461.                      System.out.println("ERROR: Last line of script file has concatination sign.");
  462.                      break;
  463.                   }
  464.  
  465.                   var6 = var6.trim();
  466.                   if (!var6.startsWith("//") && var6.length() != 0) {
  467.                      var5 = var5 + var6;
  468.                   }
  469.                }
  470.  
  471.                var3.addElement(var5);
  472.             }
  473.          }
  474.  
  475.          var1.close();
  476.          ((FilterInputStream)var2).close();
  477.          if (var8 == -1) {
  478.             return var8;
  479.          }
  480.       } catch (IOException var11) {
  481.          System.out.println("ERROR: I/O error while reading script file.");
  482.          return -1;
  483.       }
  484.  
  485.       for(int var7 = 0; var7 < var3.size(); ++var7) {
  486.          String var14 = (String)var3.elementAt(var7);
  487.          this.parseLine(var14);
  488.       }
  489.  
  490.       return var8;
  491.    }
  492.  
  493.    private final char getNextChar(ANIAgentItem var1) {
  494.       char var2 = 0;
  495.       boolean var3 = true;
  496.       String var5 = var1.helpText;
  497.       int var6 = var5.length();
  498.  
  499.       while(var3) {
  500.          var3 = false;
  501.          if (this.actHelpPos < var6) {
  502.             var2 = var5.charAt(this.actHelpPos);
  503.             switch (var2) {
  504.                case '&':
  505.                   String var11 = var5.substring(this.actHelpPos, this.actHelpPos + 4).toUpperCase();
  506.                   if (var11.equals(">")) {
  507.                      var2 = '>';
  508.                      this.actHelpPos += 3;
  509.                   } else if (var11.equals("<")) {
  510.                      var2 = '<';
  511.                      this.actHelpPos += 3;
  512.                   }
  513.  
  514.                   ++this.actHelpPos;
  515.                   break;
  516.                case '<':
  517.                   if (this.actHelpPos + 2 <= var6) {
  518.                      String var4 = var5.substring(this.actHelpPos, this.actHelpPos + 3).toUpperCase();
  519.                      if (var4.equals("<B>")) {
  520.                         this.fBold = true;
  521.                         this.actHelpPos += 2;
  522.                         var3 = true;
  523.                      } else if (var4.equals("<I>")) {
  524.                         this.fItalic = true;
  525.                         this.actHelpPos += 2;
  526.                         var3 = true;
  527.                      }
  528.                   }
  529.  
  530.                   if (this.actHelpPos + 3 <= var6) {
  531.                      String var9 = var5.substring(this.actHelpPos, this.actHelpPos + 4).toUpperCase();
  532.                      if (var9.equals("</B>")) {
  533.                         this.fBold = false;
  534.                         this.actHelpPos += 3;
  535.                         var3 = true;
  536.                      } else if (var9.equals("</I>")) {
  537.                         this.fItalic = false;
  538.                         this.actHelpPos += 3;
  539.                         var3 = true;
  540.                      } else if (var9.equals("<BR>")) {
  541.                         var2 = '\r';
  542.                         this.actHelpPos += 3;
  543.                      }
  544.                   }
  545.  
  546.                   if (this.actHelpPos + 7 <= var6) {
  547.                      String var10 = var5.substring(this.actHelpPos, this.actHelpPos + 7).toUpperCase();
  548.                      if (var10.compareTo("<COLOR ") == 0) {
  549.                         int var7 = var5.indexOf(">", this.actHelpPos + 1);
  550.                         String var8 = var5.substring(this.actHelpPos + 7, var7).trim();
  551.                         this.getNextParameter(var8);
  552.                         if (this.lineParam.equals("VALUE")) {
  553.                            this.actHelpColor = getColor("<color>", this.lineValue);
  554.                         }
  555.  
  556.                         this.actHelpPos = var7;
  557.                         var3 = true;
  558.                      }
  559.                   }
  560.  
  561.                   ++this.actHelpPos;
  562.                   if (var3) {
  563.                      int var12 = 0;
  564.                      if (this.fBold) {
  565.                         var12 |= 1;
  566.                      }
  567.  
  568.                      if (this.fItalic) {
  569.                         var12 |= 2;
  570.                      }
  571.  
  572.                      this.actHelpFont = new Font(this.actHelpFont.getName(), var12, this.actHelpFont.getSize());
  573.                      this.actHelpFM = this.Applet.getFontMetrics(this.actHelpFont);
  574.                   }
  575.                   break;
  576.                default:
  577.                   ++this.actHelpPos;
  578.             }
  579.          } else {
  580.             var2 = 0;
  581.          }
  582.       }
  583.  
  584.       return var2;
  585.    }
  586.  
  587.    private final int[] getFrameIncrements(String var1, int var2) {
  588.       String var3 = var1;
  589.       int var4 = 0;
  590.  
  591.       int var5;
  592.       int[] var6;
  593.       for(var6 = new int[var2]; (var5 = var3.indexOf(",")) != -1 && var4 < var2; var3 = var3.substring(var5 + 1)) {
  594.          var6[var4++] = Integer.parseInt(var3.substring(0, var5));
  595.       }
  596.  
  597.       if (var4 < var2) {
  598.          var6[var4] = Integer.parseInt(var3);
  599.       }
  600.  
  601.       return var6;
  602.    }
  603.  
  604.    private final boolean parseLine(String var1) {
  605.       boolean var2 = false;
  606.       String var5 = null;
  607.       int var3 = this.getKeyword(var1);
  608.       int var4 = var1.indexOf(" ");
  609.       if (var4 != -1) {
  610.          var5 = var1.substring(var4 + 1).trim();
  611.       }
  612.  
  613.       switch (var3) {
  614.          case 1:
  615.          case 2:
  616.          case 3:
  617.             var2 = this.parseAgentItem(var5, var3);
  618.             break;
  619.          default:
  620.             System.out.println("ERROR: Invalid keyword in line '" + var1 + "'.");
  621.       }
  622.  
  623.       return var2;
  624.    }
  625.  
  626.    private final int[] getMinMaxInterval(String var1, String var2) {
  627.       int[] var3 = new int[2];
  628.       if (var2.indexOf(",") != -1) {
  629.          var3[0] = Integer.parseInt(var2.substring(0, var2.indexOf(",")));
  630.          var3[1] = Integer.parseInt(var2.substring(var2.indexOf(",") + 1));
  631.       } else {
  632.          var3[0] = Integer.parseInt(var2);
  633.          var3[1] = var3[0];
  634.       }
  635.  
  636.       return var3;
  637.    }
  638.  
  639.    private final void drawText(ANIAgentItem var1, Graphics var2) {
  640.       boolean var3 = false;
  641.       int var4 = var1.wHelp - 10;
  642.       byte var10 = 5;
  643.       this.actHelpColor = this.Applet.helpTextColor;
  644.       this.actHelpFont = this.Applet.helpTextFont;
  645.       this.actHelpFM = this.Applet.getFontMetrics(this.actHelpFont);
  646.       this.actHelpPos = 0;
  647.       this.fBold = false;
  648.       this.fItalic = false;
  649.       int var8 = var10;
  650.  
  651.       int var6;
  652.       for(int var9 = this.actHelpFM.getHeight() - this.actHelpFM.getLeading() - this.actHelpFM.getMaxDescent() + 2; !var3; this.actHelpPos = var6) {
  653.          int var5 = this.getNextWordWidth(var1);
  654.          if (var8 + var5 > var4 && var5 < var4) {
  655.             var8 = var10;
  656.             var9 += this.actHelpFM.getHeight();
  657.          }
  658.  
  659.          char var7;
  660.          for(var7 = this.getNextChar(var1); var7 != 0 && var7 != ' ' && var7 != '\r'; var7 = this.getNextChar(var1)) {
  661.             var2.setFont(this.actHelpFont);
  662.             var2.setColor(this.actHelpColor);
  663.             var2.drawString(String.valueOf(var7), var8, var9);
  664.             var8 += this.actHelpFM.charWidth(var7);
  665.             if (var8 > var4) {
  666.                var8 = var10;
  667.                var9 += this.actHelpFM.getHeight();
  668.             }
  669.          }
  670.  
  671.          var6 = this.actHelpPos;
  672.          if (var7 == 0) {
  673.             var3 = true;
  674.          } else {
  675.             while(var7 == ' ' || var7 == '\r') {
  676.                if (var7 == '\r') {
  677.                   var8 = var10;
  678.                   var9 += this.actHelpFM.getHeight();
  679.                } else if (var7 == ' ') {
  680.                   var8 += this.actHelpFM.charWidth(var7);
  681.                }
  682.  
  683.                var6 = this.actHelpPos;
  684.                var7 = this.getNextChar(var1);
  685.             }
  686.          }
  687.       }
  688.  
  689.    }
  690. }
  691.