package net.mostlyoriginal.game.system.agent; import com.artemis.Aspect; import com.artemis.ComponentMapper; import com.artemis.Entity; import com.artemis.annotations.Wire; import com.artemis.systems.EntityProcessingSystem; import net.mostlyoriginal.api.component.basic.Bounds; import net.mostlyoriginal.api.component.basic.Pos; import net.mostlyoriginal.api.component.graphics.Anim; import net.mostlyoriginal.api.system.camera.CameraSystem; import net.mostlyoriginal.game.component.Questee; /** * Places Questees where they need to be on the screen, depending if they are questing or not. * * @author Daan van Yperen */ @Wire public class QuesteePositioningSystem extends EntityProcessingSystem { public static final int OFFSET_X = 45; ComponentMapper<Questee> qm; ComponentMapper<Pos> pm; ComponentMapper<Anim> am; CameraSystem cameraSystem; private int countLeft; private int countRight; public QuesteePositioningSystem() { super(Aspect.getAspectForAll(Questee.class, Pos.class, Bounds.class)); } @Override protected void begin() { countLeft=countRight=0; } @Override protected void process(Entity e) { // don't position invisible mobs. if ( am.has(e) && !am.get(e).visible ) return; Questee questee = qm.get(e); boolean placeRight = ( questee.quest != null && questee.quest.isActive()); Pos pos = pm.get(e); if ( placeRight) { pos.x = cameraSystem.getPixelWidth() - 10 - 13 - 18 * countRight; countRight++; } else { pos.x = (cameraSystem.getPixelWidth() / 2 + 22) - (18 * countLeft); countLeft++; } } }