package com.deftwun.zombiecopter.systems; import com.badlogic.ashley.core.Entity; import com.badlogic.ashley.core.Family; import com.badlogic.ashley.systems.IteratingSystem; import com.deftwun.zombiecopter.ComponentMappers; import com.deftwun.zombiecopter.App; import com.deftwun.zombiecopter.components.Collectable; import com.deftwun.zombiecopter.components.Collector; import com.deftwun.zombiecopter.components.PhysicsComponent; public class CollectableSystem extends IteratingSystem { @SuppressWarnings("unchecked") public CollectableSystem() { super(Family.all(PhysicsComponent.class,Collector.class).get()); } @SuppressWarnings("unchecked") @Override protected void processEntity(Entity entity, float deltaTime) { ComponentMappers maps =App.engine.mappers; PhysicsComponent physics = maps.physics.get(entity); Collector collector = maps.collector.get(entity); for (Entity e : App.engine.getEntitiesFor(Family.all(Collectable.class).get())){ Collectable c = maps.collectable.get(e); PhysicsComponent p = maps.physics.get(e); if (c!= null && p != null){ if (p.getPosition().sub(physics.getPosition()).len() < c.pickupRange){ if (c.type == Collectable.ItemType.Civilian && collector.civilians < collector.maxCivilians) { collector.civilians += 1; App.engine.removeEntity(p.ownerEntity); } } } } } }