package gizmoball.game;

import gizmoball.NotImplementedException;

/**
 * A typesafe enmeration for collidability types. Indicates whether
 * two gizmos can collide and whether one gizmo has a collision
 * handler that supports collisions with the other type.
 *
 * @author <a href="mailto:drkp@mit.edu">Dan R. K. Ports</a>
 * @version $Id: Collidability.java,v 1.3 2004/04/24 11:53:58 dan Exp $
 */
public class Collidability {

    /**
     * Creates a new <code>Collidability</code> instance.
     * Private constructor --- typesafe enum pattern.
    */
    private Collidability() {
        
    } // Collidability constructor

    /**
     * Indicates two gizmos can never collide.
     */
    public static final Collidability NEVER_COLLIDE = new Collidability();

    /**
     * Indicates that two gizmos may or may not be able to collide,
     * but the first gizmo does not have a handler for it; it defers
     * the handling to the second gizmo.
     */
    public static final Collidability DEFER_COLLIDE = new Collidability();

    /**
     * Indicates that this gizmo has a handler to handle collisions
     * with the other gizmo type.
     */
    public static final Collidability CAN_COLLIDE = new Collidability();
    
} // Collidability
