package org.codecranachan.asteroidpush.content.behaviors; import java.util.Collection; import java.util.LinkedList; import org.codecranachan.asteroidpush.base.visuals.Representation; import org.codecranachan.asteroidpush.base.workshop.actor.Behavior; import org.codecranachan.asteroidpush.base.workshop.assembly.BehaviorFactory; import org.codecranachan.asteroidpush.content.visuals.ArrowRepresentation; import org.codecranachan.asteroidpush.utils.Arrow; import org.codecranachan.asteroidpush.utils.Force; import org.newdawn.slick.Color; public class ForceFeederFactory implements BehaviorFactory { private Force force; /** * Creates the ForceFeederFactory. * * @param force * defines the offset, direction and magnitude of the force that * the Behavior will apply to its attached body when activated. * @param socket * the socket coordinates where the created behavior will be * attached to. */ public ForceFeederFactory(Force force) { this.force = force; } public Behavior createBehavior(Arrow offset, float scale) { Force transformed = force.transformBy(offset, scale); return new ForceFeederBehavior(transformed); } public Collection<Representation> getRepresentations() { Collection<Representation> reps = new LinkedList<Representation>(); reps.add(new ArrowRepresentation(force.asArrow(), Color.red)); return reps; } }