com.golden.gamedev.object
Class CollisionGroupStandard

java.lang.Object
  |
  +--com.golden.gamedev.object.CollisionGroupStandard
All Implemented Interfaces:
CollisionGroupManager
Direct Known Subclasses:
CollisionGroup

public abstract class CollisionGroupStandard
extends Object
implements CollisionGroupManager

The basic standard of collision check, it only check is the collision occured or not. The collision side, the sprite position to return after collision is not provided in here. To get more information about the collision event, use CollisionGroup instead. This class is suitable for hit and destroy collision type.

For example: collision between projectile and enemy ships.

    Playfield   playfield;
    SpriteGroup PROJECTILE, ENEMY;

    playfield.addCollisionGroup(PROJECTILE, ENEMY,
       new CollisionGroupStandard() {
          public void collided(Sprite sprite1, Sprite sprite2) {
             // after enemy collided with projectile,
             // the enemy explode, set to non-active
             sprite2.setActive(false);
          }
       }
    );
 

See Also:
CollisionGroupManager, PlayField.addCollisionGroup(SpriteGroup, SpriteGroup, CollisionGroupManager)

Constructor Summary
CollisionGroupStandard()
           
CollisionGroupStandard(SpriteGroup group1, SpriteGroup group2)
           
 
Method Summary
 void checkCollision()
           
abstract  void collided(Sprite sprite1, Sprite sprite2)
          Sprite sprite1 and Sprite sprite2 is collided, perform any collide implementation.
 CollisionRect getCollisionRect1()
           
 CollisionRect getCollisionRect2()
           
 SpriteGroup getGroup1()
           
 SpriteGroup getGroup2()
           
 boolean isActive()
           
 boolean isCollide(CollisionRect r1, CollisionRect r2, Sprite s1, Sprite s2)
           
 boolean isCollide(Sprite s1, Sprite s2)
          Returns true if Sprite s1 collide with Sprite s2.
 void setActive(boolean b)
           
 void setCollisionGroup(SpriteGroup group1, SpriteGroup group2)
           
 boolean setCollisionRect1(Sprite s1, CollisionRect rect)
          Sets Sprite one collision rectangle (sprite bounding box) into rect.
 boolean setCollisionRect2(Sprite s2, CollisionRect rect)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CollisionGroupStandard

public CollisionGroupStandard(SpriteGroup group1,
                              SpriteGroup group2)

CollisionGroupStandard

public CollisionGroupStandard()
Method Detail

setCollisionGroup

public void setCollisionGroup(SpriteGroup group1,
                              SpriteGroup group2)
Specified by:
setCollisionGroup in interface CollisionGroupManager

getGroup1

public SpriteGroup getGroup1()
Specified by:
getGroup1 in interface CollisionGroupManager

getGroup2

public SpriteGroup getGroup2()
Specified by:
getGroup2 in interface CollisionGroupManager

isActive

public boolean isActive()
Specified by:
isActive in interface CollisionGroupManager

setActive

public void setActive(boolean b)
Specified by:
setActive in interface CollisionGroupManager

setCollisionRect1

public boolean setCollisionRect1(Sprite s1,
                                 CollisionRect rect)
Sets Sprite one collision rectangle (sprite bounding box) into rect.

In this implementation, the sprite bounding box is as large as Sprite dimension :

     public boolean getCollisionRect1(Sprite s1, CollisionRect rect) {
         rect.setBounds(s1.getX(), s1.getY(),
                        s1.getWidth(), s1.getHeight());
         return rect;
     }
 

Returns:
false, to skip collision check
See Also:
CollisionRect.intersects(CollisionRect), CollisionRect.setBounds(int,int,int,int)

setCollisionRect2

public boolean setCollisionRect2(Sprite s2,
                                 CollisionRect rect)

getCollisionRect1

public CollisionRect getCollisionRect1()

getCollisionRect2

public CollisionRect getCollisionRect2()

checkCollision

public void checkCollision()
Specified by:
checkCollision in interface CollisionGroupManager

isCollide

public boolean isCollide(Sprite s1,
                         Sprite s2)
Returns true if Sprite s1 collide with Sprite s2. This method do not check is the sprites in active state or not, therefore check for sprite active state before call this method.


isCollide

public boolean isCollide(CollisionRect r1,
                         CollisionRect r2,
                         Sprite s1,
                         Sprite s2)

collided

public abstract void collided(Sprite sprite1,
                              Sprite sprite2)
Sprite sprite1 and Sprite sprite2 is collided, perform any collide implementation.