// 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:   Client.java

package Scrabble;

import java.awt.*;
import java.io.PrintStream;

// Referenced classes of package Scrabble:
//            Board, BoardSquare, ButtonPanel, Client, 
//            ClientGameState, ClientRackState, Tile

class Rack extends Canvas
{

    public Rack(Client client)
    {
        _app = client;
        _rackImg = _app.loadImg("rack.gif", this);
        _width = _rackImg.getWidth(null);
        _height = _rackImg.getHeight(null);
        System.out.println("Rack pixel dimens: " + _width + "x" + _height);
        _buffer = null;
        _rackState = new ClientRackState();
    }

    public synchronized void setContents(String s)
    {
        System.out.println("Rack contents set to: " + s);
        _rackState.setContents(s);
    }

    public Dimension preferredSize()
    {
        return new Dimension(_width, _height);
    }

    public Dimension minimumSize()
    {
        System.out.println("Minimum size called");
        return new Dimension(_width, _height);
    }

    public synchronized void update(Graphics g)
    {
        paint(g);
    }

    public synchronized void paint(Graphics g)
    {
        if(_buffer == null)
        {
            _buffer = createImage(_width, _height);
            if(_buffer == null)
                System.out.println("RACK OFFSCREEN BUFFER IS NULL!");
            else
                System.out.println("Rack offscreen buffer image created");
        }
        Graphics g1 = _buffer.getGraphics();
        g1.drawImage(_rackImg, 0, 0, null);
        for(int i = 0; i < 7; i++)
        {
            int j = _rackState.letterAt(i);
            if(j != 100)
            {
                g1.clipRect(i * 25, 0, 25, 25);
                g1.drawImage(_app._tilesImg, i * 25, -j * 25, null);
                g1.dispose();
                g1 = _buffer.getGraphics();
            }
        }

        g1.dispose();
        g.drawImage(_buffer, 0, 0, this);
    }

    public synchronized boolean mouseDown(Event event, int i, int j)
    {
        int k = j / 25;
        int l = i / 25;
        Object obj = null;
        if(l < 7 && k < 1)
        {
            if(_app._gameState.haveActiveTile())
            {
                if(_rackState.letterAt(l) == 100)
                {
                    Tile tile = _app._gameState.putActiveTile();
                    tile.resetBlankTile();
                    _rackState.putTileAt(l, tile);
                }
            } else
            if(_rackState.letterAt(l) != 100)
                _app._gameState.pickupActiveTile(_rackState.pickupTileAt(l));
            repaint();
        }
        return true;
    }

    private Client _app;
    private Image _rackImg;
    private int _width;
    private int _height;
    private Image _buffer;
    private ClientRackState _rackState;
}
