import java.awt.*; import com.genuts.gameui.*; /** * Follows a sprite by moving the offset of the playfield. */ public class FollowWrapper extends SpriteWrapper { public FollowWrapper(Sprite sprite) { super(sprite); } public boolean setPosition(int x, int y) { if (super.setPosition(x, y)) { PlayField parent = getParent(); if (parent != null) { int px = Math.min(parent.getPreferredWidth() - parent.getWidth(), Math.max(0, x - (parent.getWidth() - getWidth())/2)); int py = Math.min(parent.getPreferredHeight() - parent.getHeight(), Math.max(0, y - (parent.getHeight() - getHeight())/2)); if ((px - parent.getXOffset()) > 1) { px = parent.getXOffset() + 2; } else if ((px - parent.getXOffset()) < -1) { px = parent.getXOffset() - 2; } if ((py - parent.getYOffset()) > 1) { py = parent.getYOffset() + 2; } else if ((py - parent.getYOffset()) < -1) { py = parent.getYOffset() - 2; } parent.setOffset(px, py); } return true; } else { return false; } } }