package studio.junk.jam.coloritum.entities;

import com.badlogic.ashley.core.Family;

import studio.junk.jam.coloritum.entities.components.Collision;
import studio.junk.jam.coloritum.entities.components.DrainComponent;
import studio.junk.jam.coloritum.entities.components.LightBulb;
import studio.junk.jam.coloritum.entities.components.Lights;
import studio.junk.jam.coloritum.entities.components.MirrorComponent;
import studio.junk.jam.coloritum.entities.components.Name;
import studio.junk.jam.coloritum.entities.components.OrientationComponent;
import studio.junk.jam.coloritum.entities.components.PigmentComponent;
import studio.junk.jam.coloritum.entities.components.Placable;
import studio.junk.jam.coloritum.entities.components.Source;
import studio.junk.jam.coloritum.entities.components.TilePosition;

@SuppressWarnings("unchecked")
public class Families {

	public static final Family	lightSource			= Family
			.all(Lights.class, Name.class, Source.class, PigmentComponent.class, TilePosition.class, Collision.class)
			.get();
	public static final Family	presetLightSource	= Family
			.all(Lights.class, Name.class, Source.class, PigmentComponent.class, TilePosition.class, Collision.class)
			.exclude(Placable.class).get();
	public static final Family	pacableLightSource	= Family.all(Lights.class, Name.class, Source.class,
			PigmentComponent.class, TilePosition.class, Collision.class, Placable.class).get();
	public static final Family	mirror				= Family
			.all(Name.class, MirrorComponent.class, TilePosition.class, Collision.class).get();
	public static final Family	presetMirror		= Family
			.all(Name.class, MirrorComponent.class, TilePosition.class, Collision.class).exclude(Placable.class).get();
	public static final Family	placableMirror		= Family
			.all(Name.class, MirrorComponent.class, TilePosition.class, Collision.class, Placable.class).get();
	public static final Family	obstacle			= Family.all(Name.class, TilePosition.class, Collision.class)
			.exclude(OrientationComponent.class, Source.class, DrainComponent.class).get();
	public static final Family	drain				= Family.all(Lights.class, Name.class, TilePosition.class,
			Collision.class, DrainComponent.class, PigmentComponent.class).get();
	public static final Family	lightBulb			= Family
			.all(LightBulb.class, Lights.class, Name.class, Collision.class, PigmentComponent.class).get();
}
