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.functional.test.levels.flyingDart.MousePositionScript; import com.indignado.logicbricks.components.IdentityComponent; import com.indignado.logicbricks.components.ViewsComponent; import com.indignado.logicbricks.core.EntityFactory; import com.indignado.logicbricks.core.actuators.InstanceEntityActuator; import com.indignado.logicbricks.core.controllers.ScriptController; import com.indignado.logicbricks.core.data.TextureView; import com.indignado.logicbricks.core.sensors.AlwaysSensor; import com.indignado.logicbricks.core.sensors.MouseSensor; import com.indignado.logicbricks.core.sensors.Sensor; 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; import com.indignado.logicbricks.utils.builders.actuators.InstanceEntityActuatorBuilder; import com.indignado.logicbricks.utils.builders.controllers.ScriptControllerBuilder; import com.indignado.logicbricks.utils.builders.sensors.AlwaysSensorBuilder; import com.indignado.logicbricks.utils.builders.sensors.MouseSensorBuilder; /** * @author Rubentxu. */ public class TriggerDart extends EntityFactory { private String hand = "assets/textures/hand.png"; public TriggerDart(LBBuilders builders, AssetManager assetManager) { super(builders, assetManager); } @Override public void loadAssets() { if (!assetManager.isLoaded(hand)) assetManager.load(hand, Texture.class); } @Override public Entity createEntity() { EntityBuilder entityBuilder = builders.getEntityBuilder(); entityBuilder.initialize(); BodyBuilder bodyBuilder = builders.getBodyBuilder(); IdentityComponent identity = entityBuilder.getComponent(IdentityComponent.class); identity.tag = "Trigger"; /* identity.category = game.getCategoryBitsManager().getCategoryBits("TriggerDart"); identity.collisionMask = (short) ~identity.category;*/ Body bodyTrigger = bodyBuilder.fixture(new FixtureDefBuilder() .boxShape(1, 2)) .type(BodyDef.BodyType.StaticBody) .build(); entityBuilder.addRigidBody(bodyTrigger); MouseSensor trigger = builders.getBrickBuilder(MouseSensorBuilder.class) .setMouseEvent(MouseSensor.MouseEvent.LEFT_BUTTON_DOWN) .setFrequency(0.7f) .setPulse(Sensor.Pulse.PM_TRUE) .setName("SensorMouse") .getBrick(); AlwaysSensor alwaysSensor = builders.getBrickBuilder(AlwaysSensorBuilder.class) .setPulse(Sensor.Pulse.PM_TRUE) .setName("DelayTrigger") .getBrick(); ScriptController controllerTrigger = builders.getBrickBuilder(ScriptControllerBuilder.class) .setScript(new MousePositionScript()) .setName("MousePosition") .getBrick(); InstanceEntityActuator instanceEntityActuator = builders.getBrickBuilder(InstanceEntityActuatorBuilder.class) .setType(InstanceEntityActuator.Type.AddEntity) .setEntityFactory(Dart.class) .setLocalPosition(new Vector2(2, 1)) .setDuration(5f) .setName("ActuatorInstanceDart") .getBrick(); TextureView triggerView = new TextureView(); triggerView.setName("trigger"); triggerView.setTextureRegion(new TextureRegion(assetManager.get(hand, Texture.class))); triggerView.setHeight(5f); triggerView.setWidth(3f); triggerView.setAttachedTransform(bodyTrigger.getTransform()); triggerView.setLayer(0); ViewsComponent viewsComponent = entityBuilder.getComponent(ViewsComponent.class); viewsComponent.views.add(triggerView); Entity entity = entityBuilder .addController(controllerTrigger, "Default") .connectToSensors(trigger, alwaysSensor) .connectToActuator(instanceEntityActuator) .getEntity(); Gdx.app.log("TriggerDart", "instance" + entity); return entity; } }