package com.indignado.logicbricks.systems.controllers;
import com.badlogic.ashley.core.Entity;
import com.badlogic.gdx.utils.ObjectSet;
import com.indignado.logicbricks.components.controllers.ScriptControllerComponent;
import com.indignado.logicbricks.core.LogicBricksException;
import com.indignado.logicbricks.config.Settings;
import com.indignado.logicbricks.core.controllers.ScriptController;
import com.indignado.logicbricks.utils.Log;
/**
* @author Rubentxu
*/
public class ScriptControllerSystem extends ControllerSystem<ScriptController, ScriptControllerComponent> {
public ScriptControllerSystem() {
super(ScriptControllerComponent.class);
}
@Override
public void processEntity(Entity entity, float deltaTime) {
if (Settings.DEBUG_ENTITY != null) tag = Log.tagEntity(this.getClass().getSimpleName(), entity);
Integer state = stateMapper.get(entity).getCurrentState();
ObjectSet<ScriptController> controllers = (ObjectSet<ScriptController>) controllerMapper.get(entity).controllers.get(state);
if (controllers != null) {
for (ScriptController controller : controllers) {
processController(controller);
}
}
}
@Override
public void processController(ScriptController controller) {
if (controller.sensors.size == 0)
throw new LogicBricksException("ControllerSystem", "This sensor does not have any associated sensor");
controller.script.execute(controller, controller.sensors, controller.actuators);
}
}