package com.angrykings.cannons; import com.angrykings.GameContext; import com.angrykings.PhysicalEntity; import com.angrykings.ResourceManager; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.FixtureDef; import org.andengine.entity.shape.IAreaShape; import org.andengine.entity.sprite.Sprite; import org.andengine.extension.physics.box2d.PhysicsFactory; import org.andengine.opengl.texture.region.TextureRegion; /** * Cannonball * * @author Shivan Taher <zn31415926535@gmail.com> * @date 31.05.13 */ public class Cannonball extends PhysicalEntity { private final Body ballBody; private final FixtureDef ballFixture; private final Sprite ballSprite; private static final float DEFAULT_LINEAR_DAMPING = 0.05f; private static final float DEFAULT_ANGULAR_DAMPING = 0.09f; private static final FixtureDef DEFAULT_FIXTURE_DEF = PhysicsFactory.createFixtureDef(5.5f, 0.1f, 0.9f); public Cannonball(float x, float y) { this(x, y, Cannonball.DEFAULT_FIXTURE_DEF, Cannonball.DEFAULT_LINEAR_DAMPING, Cannonball.DEFAULT_ANGULAR_DAMPING); this.autoRemove = true; } public Cannonball(float x, float y, FixtureDef fixtureDef, float linearDamping, float angularDamping) { GameContext gc = GameContext.getInstance(); ResourceManager rm = ResourceManager.getInstance(); TextureRegion ballTexture = rm.getBallTexture(); this.ballSprite = new Sprite( x - ballTexture.getWidth() / 2, y - ballTexture.getHeight() / 2, ballTexture, gc.getVboManager() ); this.ballFixture = fixtureDef; this.ballBody = PhysicsFactory.createCircleBody( gc.getPhysicsWorld(), this.ballSprite, BodyDef.BodyType.DynamicBody, this.ballFixture ); this.ballBody.setLinearDamping(linearDamping); this.ballBody.setAngularDamping(angularDamping); this.ballBody.setBullet(true); this.ballBody.setUserData("Kugel"); } @Override public Body getBody() { return this.ballBody; } @Override public IAreaShape getAreaShape() { return this.ballSprite; } }