As far as I know Ashley does not have any pre-built systems that would handle click events and map them to entities.
A simple clickable system could easily be created using a clickable component and clickable system.
An example with an OrthographicCamera:
The clickable component with the rectangle bounds
public class ClickableComponent implements Component{
public Rectangle bounds = new Rectangle(0,0,10,10);
}
A Transform component to store location
public class TransformComponent implements Component{
public final Vector3 position = new Vector3();
}
With a Clickable System
public class ClickableSystem extends IteratingSystem{
private ComponentMapper<ClickableComponent> cc;
private ComponentMapper<TransformComponent> tc;
private OrthographicCamera camera;
@SuppressWarnings("unchecked")
public ClickableSystem(OrthographicCamera cam) {
super(Family.all(ClickableComponent.class,TransformComponent.class).get());
cc = ComponentMapper.getFor(ClickableComponent.class);
tc = ComponentMapper.getFor(TransformComponent.class);
camera = cam;
}
@Override
protected void processEntity(Entity entity, float deltaTime) {
ClickableComponent click = cc.get(entity);
TransformComponent transform = tc.get(entity);
//update click bounds
click.bounds.x = transform.position.x;
click.bounds.y = transform.position.y;
if(Gdx.input.isButtonPressed(Buttons.LEFT)){
// touching
Vector3 clickPosition = camera.unproject(new Vector3(Gdx.input.getX(), Gdx.input.getY(),0));
System.out.println(clickPosition+":"+click.bounds.toString());
if(click.bounds.contains(clickPosition.x, clickPosition.y)){
//object clicked
//do your thing
System.out.println("Touched"+entity.toString());
}
}
}
}