package net.mostlyoriginal.ns2d.system.active; import com.artemis.Aspect; import com.artemis.ComponentMapper; import com.artemis.Entity; import com.artemis.annotations.Wire; import com.artemis.systems.EntityProcessingSystem; import com.badlogic.gdx.utils.Array; import net.mostlyoriginal.ns2d.component.Script; import net.mostlyoriginal.ns2d.step.Step; /** * @author Daan van Yperen */ @Wire public class ScriptSystem extends EntityProcessingSystem { private ComponentMapper<Script> sm; public ScriptSystem() { super(Aspect.getAspectForAll(Script.class)); } @Override protected void process(Entity e) { Script script = sm.get(e); script.age += world.delta; final Array<Step> steps = script.steps; for (int i = 0; i < steps.size; i++) { final Step step = steps.get(i); if (script.age >= step.atAge && step.act(world.delta, e) && i < steps.size) { steps.removeIndex(i); step.release(); i--; } } if (script.steps.size == 0) { e.edit().remove(Script.class); } } }