// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   TileBag.java

package Scrabble;

import KennethTam.Debug;
import java.util.Random;
import java.util.Vector;

// Referenced classes of package Scrabble:
//            Tile

public class TileBag
{

    public TileBag()
    {
        _rng = new Random();
        _vecTiles = new Vector(100);
        for(int i = 0; i < 9; i++)
            _vecTiles.addElement(new Tile(0));

        for(int j = 0; j < 2; j++)
            _vecTiles.addElement(new Tile(1));

        for(int k = 0; k < 2; k++)
            _vecTiles.addElement(new Tile(2));

        for(int l = 0; l < 4; l++)
            _vecTiles.addElement(new Tile(3));

        for(int i1 = 0; i1 < 12; i1++)
            _vecTiles.addElement(new Tile(4));

        for(int j1 = 0; j1 < 2; j1++)
            _vecTiles.addElement(new Tile(5));

        for(int k1 = 0; k1 < 3; k1++)
            _vecTiles.addElement(new Tile(6));

        for(int l1 = 0; l1 < 2; l1++)
            _vecTiles.addElement(new Tile(7));

        for(int i2 = 0; i2 < 9; i2++)
            _vecTiles.addElement(new Tile(8));

        for(int j2 = 0; j2 < 1; j2++)
            _vecTiles.addElement(new Tile(9));

        for(int k2 = 0; k2 < 1; k2++)
            _vecTiles.addElement(new Tile(10));

        for(int l2 = 0; l2 < 4; l2++)
            _vecTiles.addElement(new Tile(11));

        for(int i3 = 0; i3 < 2; i3++)
            _vecTiles.addElement(new Tile(12));

        for(int j3 = 0; j3 < 6; j3++)
            _vecTiles.addElement(new Tile(13));

        for(int k3 = 0; k3 < 8; k3++)
            _vecTiles.addElement(new Tile(14));

        for(int l3 = 0; l3 < 2; l3++)
            _vecTiles.addElement(new Tile(15));

        for(int i4 = 0; i4 < 1; i4++)
            _vecTiles.addElement(new Tile(16));

        for(int j4 = 0; j4 < 6; j4++)
            _vecTiles.addElement(new Tile(17));

        for(int k4 = 0; k4 < 4; k4++)
            _vecTiles.addElement(new Tile(18));

        for(int l4 = 0; l4 < 6; l4++)
            _vecTiles.addElement(new Tile(19));

        for(int i5 = 0; i5 < 4; i5++)
            _vecTiles.addElement(new Tile(20));

        for(int j5 = 0; j5 < 2; j5++)
            _vecTiles.addElement(new Tile(21));

        for(int k5 = 0; k5 < 2; k5++)
            _vecTiles.addElement(new Tile(22));

        for(int l5 = 0; l5 < 1; l5++)
            _vecTiles.addElement(new Tile(23));

        for(int i6 = 0; i6 < 2; i6++)
            _vecTiles.addElement(new Tile(24));

        for(int j6 = 0; j6 < 1; j6++)
            _vecTiles.addElement(new Tile(25));

    }

    public Tile drawTile()
    {
        if(numTiles() == 0)
        {
            return null;
        } else
        {
            int i = Math.abs(_rng.nextInt()) % numTiles();
            Tile tile = (Tile)_vecTiles.elementAt(i);
            _vecTiles.removeElementAt(i);
            Debug.assert(isValid(), "Invalid tilebag after drawTile");
            return tile;
        }
    }

    public void putBackTile(Tile tile)
    {
        Debug.assert(numTiles() < 100, "Tilebag full!");
        _vecTiles.insertElementAt(tile, Math.abs(_rng.nextInt()) % numTiles());
        Debug.assert(isValid(), "Invalid tilebag after putBackTile");
    }

    public int numTiles()
    {
        return _vecTiles.size();
    }

    private boolean isValid()
    {
        return numTiles() >= 0 && numTiles() <= 100;
    }

    private Vector _vecTiles;
    private Random _rng;
}
