package com.indignado.functional.test.levels.radialgravity.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.IdentityComponent;
import com.indignado.logicbricks.components.RadialGravityComponent;
import com.indignado.logicbricks.components.RigidBodiesComponents;
import com.indignado.logicbricks.components.ViewsComponent;
import com.indignado.logicbricks.core.EntityFactory;
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.LBBuilders;
/**
* @author Rubentxu.
*/
public class Planet extends EntityFactory {
private String planet = "assets/textures/planet.png";
public Planet(LBBuilders builders, AssetManager assetManager) {
super(builders, assetManager);
}
@Override
public void loadAssets() {
if (!assetManager.isLoaded(planet)) assetManager.load(planet, Texture.class);
}
@Override
public Entity createEntity() {
EntityBuilder entityBuilder = builders.getEntityBuilder();
entityBuilder.initialize();
BodyBuilder bodyBuilder = builders.getBodyBuilder();
IdentityComponent identity = entityBuilder.getComponent(IdentityComponent.class);
identity.tag = "Planet";
Body bodyPlanet = bodyBuilder
.fixture(bodyBuilder.fixtureDefBuilder()
.circleShape(5f)
.density(1)
.friction(2f))
.mass(2f)
.type(BodyDef.BodyType.StaticBody)
.build();
RigidBodiesComponents rigidByPool = entityBuilder.getComponent(RigidBodiesComponents.class);
rigidByPool.rigidBodies.add(bodyPlanet);
RadialGravityComponent radialGravityComponent = entityBuilder.getComponent(RadialGravityComponent.class);
radialGravityComponent.radius = 24f;
// radialGravityComponent.gravity = -18;
TextureView planetView = new TextureView();
planetView.setName("Planet");
planetView.setTextureRegion(new TextureRegion(assetManager.get(planet, Texture.class)));
planetView.setHeight(10f);
planetView.setWidth(10f);
planetView.position = new Vector2(0,10f);
planetView.setAttachedTransform(bodyPlanet.getTransform());
planetView.setLayer(0);
ViewsComponent viewsComponent = entityBuilder.getComponent(ViewsComponent.class);
viewsComponent.views.add(planetView);
Entity entity = entityBuilder.getEntity();
Gdx.app.log("Planet", "instance " + entity);
return entity;
}
}