package org.open2jam.render.entities;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
/**
*
* @author fox
*/
public class CompositeEntity extends Entity
{
private final LinkedList<Entity> entity_list;
public CompositeEntity(Collection<Entity> list)
{
entity_list = new LinkedList<Entity>();
entity_list.addAll(list);
}
public CompositeEntity(Entity ... e)
{
entity_list = new LinkedList<Entity>();
Collections.addAll(entity_list, e);
}
private CompositeEntity(CompositeEntity org)
{
super(org);
entity_list = new LinkedList<Entity>();
for(Entity e : org.entity_list)entity_list.add(e.copy());
}
public LinkedList<Entity> getEntityList()
{
return entity_list;
}
@Override
public void move(double delta)
{
super.move(delta);
for(Entity e : entity_list)e.move(delta);
}
@Override
public void setLayer(int layer)
{
super.setLayer(layer);
for(Entity e : entity_list)e.setLayer(layer);
}
@Override
public void setXMove(double dx)
{
throw new UnsupportedOperationException("CompositeEntity does not support this");
}
@Override
public void setYMove(double dy)
{
throw new UnsupportedOperationException("CompositeEntity does not support this");
}
@Override
public void draw()
{
for(Entity e : entity_list)e.draw();
}
/**
* compositeEntity is alive as long
* as there is a entity alive inside it
* @return
*/
@Override
public boolean isDead(){
for (Entity e : entity_list) {
if (e.isDead()) return false;
}
return true;
}
@Override
public void setDead(boolean state){
for(Entity e : entity_list)e.setDead(state);
}
@Override
public CompositeEntity copy()
{
return new CompositeEntity(this);
}
}