package org.codecranachan.asteroidpush.content.behaviors;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.codecranachan.asteroidpush.base.simulation.ActorFactory;
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.base.workshop.assembly.Socket;
import org.codecranachan.asteroidpush.content.visuals.ArrowRepresentation;
import org.codecranachan.asteroidpush.content.visuals.CircleRepresentation;
import org.codecranachan.asteroidpush.utils.Arrow;
import org.codecranachan.asteroidpush.utils.Circle;
import org.codecranachan.asteroidpush.utils.NewtonianState;
import org.newdawn.slick.Color;
public class ActorSpawnFactory implements BehaviorFactory {
private Socket socket;
private NewtonianState initial_state;
private ActorFactory factory;
public ActorSpawnFactory(NewtonianState initial_state,
ActorFactory factory, Socket socket) {
this.socket = socket;
this.initial_state = initial_state;
this.factory = factory;
}
public Behavior createBehavior(Arrow offset, float scale) {
NewtonianState converted = initial_state.transform(offset);
return new ActorSpawnBehavior(converted, factory);
}
public Collection<Representation> getRepresentations() {
Collection<Representation> reps = new LinkedList<Representation>();
reps.add(new ArrowRepresentation(initial_state.getState(), Color.red));
reps.add(new CircleRepresentation(new Circle(initial_state.getPosition(), 0.05f), Color.red));
return reps;
}
public List<Socket> getSockets() {
List<Socket> sockets = new LinkedList<Socket>();
sockets.add(socket);
return sockets;
}
}