package com.captstudios.games.tafl.core.es.systems.input;
import com.artemis.Filter;
import com.artemis.Entity;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
import com.captstudios.games.tafl.core.es.components.singleton.RenderingComponent;
import com.captstudios.games.tafl.core.es.systems.events.InputEvent;
import com.captstudios.games.tafl.core.es.systems.render.RenderingSystem;
public abstract class InputProcessingSystem<T extends RenderingComponent> extends RenderingSystem<T> {
protected Array<InputEvent> inputEvents;
public InputProcessingSystem(Filter aspect, Class<T> type) {
super(aspect, type);
inputEvents = new Array<InputEvent>();
}
@Override
protected void begin(T rendComponent) {
}
@Override
protected void end(T rendComponent) {
}
@Override
protected void process(Entity e, T rendComponent) {
world.getEvents(this, InputEvent.class, inputEvents);
for (InputEvent event : inputEvents) {
if (!event.handled) {
Vector2 gameTouchPoint = InputUtil.translateTouchPoint(
rendComponent.getCamera(), event.x, event.y);
process(e, event, gameTouchPoint);
}
}
}
protected abstract void process(Entity e, InputEvent event, Vector2 gameTouchPoint);
}