// Copyright Andy Deck 2002, GNU Public License 2
// With the notable provision that any commercial use
// must be approved by the copyright holder.
import java.awt.*;
import java.awt.*;
import java.util.StringTokenizer;

public class bam extends Module
    implements Runnable
{

    public bam()
    {
        t = null;
        diff = 0.69999999999999996D;
    }

    public void init(lexicon lexicon1, String s)
    {
        super.lex = lexicon1;
        int i = 8;
        try
        {
            StringTokenizer stringtokenizer = new StringTokenizer(s);
            switch(stringtokenizer.countTokens())
            {
            case 1: // '\001'
                i = Integer.parseInt(stringtokenizer.nextToken());
                break;
            }
        }
        catch(Exception exception)
        {
            i = 8;
        }
        if(i <= 5)
            diff = 1.3D;
        else
        if(i == 6)
            diff = 1.1000000000000001D;
        else
        if(i == 7)
            diff = 0.90000000000000002D;
        else
        if(i == 8)
            diff = 0.78500000000000003D;
        else
        if(i == 9)
            diff = 0.69999999999999996D;
        else
        if(i == 10)
            diff = 0.62D;
        else
        if(i == 11)
            diff = 0.57499999999999996D;
        else
        if(i == 12)
            diff = 0.53000000000000003D;
        else
        if(i == 13)
            diff = 0.47999999999999998D;
        else
        if(i == 14)
            diff = 0.46000000000000002D;
        else
        if(i == 15)
            diff = 0.42999999999999999D;
        else
        if(i >= 16)
            diff = 0.40000000000000002D;
        start();
    }

    public void start()
    {
        t = new Thread(this, "bam");
        t.setPriority(3);
        t.start();
    }

    public void stop()
    {
        t = null;
    }

    public void run()
    {
        if(!super.first)
            return;
        super.first = false;
        Graphics g = super.lex.img.getGraphics();
        if(g != null)
        {
            setRenderMode(g);
            Polygon polygon = new Polygon();
            double d = (double)Module.WIDTH / 2D;
            double d1 = (double)Module.HEIGHT / 2D;
            for(double d2 = 0.0D; d2 < 6.2831853071795862D; d2 += diff)
            {
                int i = (int)Math.round(((double)Module.WIDTH * Math.cos(d2)) / 2D + d);
                int j = (int)Math.round(((double)Module.HEIGHT * Math.sin(d2)) / 2D + d1);
                polygon.addPoint(i, j);
                double d3 = d2 + diff / 2D;
                i = (int)Math.round(((double)(Module.WIDTH - 200) * Math.cos(d3)) / 2D + d + Math.random() * 15D);
                j = (int)Math.round(((double)(Module.HEIGHT - 200) * Math.sin(d3)) / 2D + d1 + Math.random() * 15D);
                polygon.addPoint(i, j);
            }

            g.setColor(Color.white);
            g.drawPolygon(polygon);
            g.setColor(Color.black);
            g.setXORMode(Color.white);
            g.fillPolygon(polygon);
            g.dispose();
        }
        super.repaint();
    }

    private volatile Thread t;
    double diff;
}
