DraggingSlot.java
上传用户:njled888
上传日期:2007-01-07
资源大小:29k
文件大小:4k
源码类别:

游戏

开发平台:

Java

  1. /*
  2.  * @(#)DraggingSlot.java Version 1.0 98/03/12
  3.  * 
  4.  * Copyright (c) 1998 by Huahai Yang
  5.  * 
  6.  * Use at your own risk. I do not guarantee the fitness of this 
  7.  * software for any purpose, and I do not accept responsibility for 
  8.  * any damage you do to yourself or others by using this software.
  9.  * This file may be distributed freely, provided its contents 
  10.  * are not tampered with in any way.
  11.  *
  12.  */
  13. import java.awt.*;
  14. /**
  15.  * slot to put a dragging image onto it. 
  16.  */
  17. public class DraggingSlot 
  18. {
  19.    int x;
  20.    int y;
  21.    int width;
  22.    int height;
  23.    
  24.    public int type;         
  25.    static final int CARD_SLOT = 0,
  26.                     OPERATOR_SLOT = 1;
  27.    
  28.    DraggingImage holdenImage = null;
  29.    
  30.    static final Color emptyColor = Color.cyan,
  31.                       fillColor = Color.red;
  32.    
  33.    public DraggingSlot()
  34.    {
  35.       x = 0;
  36.       y = 0;
  37.       width = 0;
  38.       height = 0;
  39.    } // 0 param constructor
  40.    
  41.    public DraggingSlot(int x, int y, int width, int height)
  42.    {
  43.       this.x = x;
  44.       this.y = y;
  45.       this.width = width;
  46.       this.height = height;
  47.    } // 4 param constructor   
  48.    
  49.    public boolean isEmpty()
  50.    {
  51.       return holdenImage == null;
  52.    } // isEmpty
  53.    
  54.    public Point getLocation ()
  55.    {
  56.       return new Point(x, y);
  57.    } // getLocation   
  58.    
  59.    public void setLocation ( int x, int y )
  60.    {
  61.       this.x = x;
  62.       this.y = y;
  63.    } // setLocation   
  64.    
  65.    public Dimension getSize ()
  66.    {
  67.       return new Dimension(width, height);
  68.    } // getSize
  69.    
  70.    public void setSize ( int width, int height )
  71.    {
  72.       this.width = width;
  73.       this.height = height;
  74.    } // setSize   
  75.    
  76.    /**
  77.     * see if slot contains a point
  78.     */
  79.    public boolean contains ( int xp, int yp )
  80.    {
  81.       return (xp >= x) && (xp < x + width) && (yp >= y) && (yp < y + height);
  82.    } // contains
  83.    
  84.    /**
  85.     * see if slot hold a draggingImage
  86.     */
  87.    public boolean holds ( DraggingImage image )
  88.    {
  89.       return holdenImage == image;
  90.    } // holds
  91.    
  92.    /**
  93.     * Judge whether a draggingImage is right on my top and
  94.     * should be hold by me.  If its center is inside me, it should.
  95.     */
  96.    public boolean underneath ( DraggingImage drag )
  97.    {
  98.       int centerX = drag.getLocation().x + drag.getSize().width / 2;
  99.       int centerY = drag.getLocation().y + drag.getSize().height / 2;
  100.       return contains( centerX, centerY );
  101.    } // underneath
  102.    
  103.    /**
  104.     * fill me with a draggingImage
  105.     */
  106.    public void fillWith ( DraggingImage drag )
  107.    {
  108.       int centerX = x + width / 2;
  109.       int centerY = y + height / 2; 
  110.       drag.centerAt( centerX, centerY );
  111.       drag.settle(this);
  112.       holdenImage = drag;
  113.       
  114.    } // fillWith
  115.    
  116.    public DraggingImage getHoldenImage()
  117.    {
  118.       return holdenImage;
  119.    } // getHoldImage
  120.    
  121.    /**
  122.     * kick off the invader
  123.     */
  124.    public void kickOff ( DraggingImage invader )
  125.    {
  126.       invader.setLocation( invader.getLocation().x, 
  127.                            invader.getLocation().y - height );
  128.    } // kickOff
  129.    
  130.    /**
  131.     * empty this slot
  132.     */
  133.    public void empty ()
  134.    {
  135.       if(holdenImage != null)
  136.       {
  137.          holdenImage.unsettle();
  138.          holdenImage = null;
  139.       } // if   
  140.    } // getRideOf
  141.    
  142.    /**
  143.     * remove the holden image
  144.     */
  145.    public void remove()
  146.    {
  147.       if(holdenImage != null)
  148.       {
  149.          kickOff(holdenImage);
  150.          empty();
  151.       } // if
  152.    } // remove   
  153.    
  154.    public void paint (Graphics g) 
  155.    {
  156.       Color oldColor = g.getColor();
  157.       
  158.       if( isEmpty() ) g.setColor( emptyColor );
  159.       else g.setColor( fillColor );
  160.      
  161.       g.drawRect(x, y, width, height);
  162.       
  163.       g.setColor( new Color(64, 128, 128) );
  164.       g.drawRect(x + 2, y + 2, width - 4, height - 4);
  165.       g.fillRect(x + 2, y + 2, width - 4, height - 4);
  166.       g.setColor( oldColor );
  167.    } // paint
  168.    
  169. } // DraggingSlot