package com.indignado.functional.test.levels.flyingDart.entities; import com.badlogic.ashley.core.Entity; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.indignado.logicbricks.components.*; import com.indignado.logicbricks.core.EntityFactory; import com.indignado.logicbricks.core.data.Property; import com.indignado.logicbricks.core.data.TextureView; import com.indignado.logicbricks.utils.builders.BodyBuilder; import com.indignado.logicbricks.utils.builders.EntityBuilder; import com.indignado.logicbricks.utils.builders.FixtureDefBuilder; import com.indignado.logicbricks.utils.builders.LBBuilders; /** * @author Rubentxu. */ public class Dart extends EntityFactory { private String dartTexture = "assets/textures/dart.png"; public Dart(LBBuilders builders, AssetManager assetManager) { super(builders, assetManager); } @Override public void loadAssets() { if (!assetManager.isLoaded(dartTexture)) assetManager.load(dartTexture, Texture.class); } @Override public Entity createEntity() { EntityBuilder entityBuilder = builders.getEntityBuilder(); entityBuilder.initialize(); BodyBuilder bodyBuilder = builders.getBodyBuilder(); BlackBoardComponent context = entityBuilder.getComponent(BlackBoardComponent.class); context.addProperty(new Property<Boolean>("freeFlight", false)); context.addProperty(new Property<Boolean>("follow", true)); IdentityComponent identity = entityBuilder.getComponent(IdentityComponent.class); identity.tag = "Dart"; /* identity.category = game.getCategoryBitsManager().getCategoryBits("Dart"); identity.collisionMask = (short) (game.getCategoryBitsManager().getCategoryBits("Wall") | game.getCategoryBitsManager().getCategoryBits("Ground"));*/ StateComponent state = entityBuilder.getComponent(StateComponent.class); state.createState("Default"); Vector2[] vertices = new Vector2[4]; vertices[0] = new Vector2(-1.5f, 0); vertices[1] = new Vector2(0, -0.1f); vertices[2] = new Vector2(0.6f, 0); vertices[3] = new Vector2(0, 0.1f); Body bodyArrow = bodyBuilder.fixture(new FixtureDefBuilder() .polygonShape(vertices) .friction(0.5f) .restitution(0.5f)) .type(BodyDef.BodyType.DynamicBody) .bullet() .build(); RigidBodiesComponents bodiesComponents = entityBuilder.getComponent(RigidBodiesComponents.class); bodiesComponents.rigidBodies.add(bodyArrow); TextureView arrowView = new TextureView(); arrowView.setName("Arrow"); arrowView.setTextureRegion(new TextureRegion(assetManager.get(dartTexture, Texture.class))); arrowView.setHeight(1f); arrowView.setWidth(2.3f); arrowView.setAttachedTransform(bodyArrow.getTransform()); arrowView.setLayer(0); ViewsComponent viewsComponent = entityBuilder.getComponent(ViewsComponent.class); viewsComponent.views.add(arrowView); Entity entity = entityBuilder.getEntity(); Gdx.app.log("Dart", "size components " + entity.getComponents().size()); return entity; } }