package com.angrykings.castles;
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.AnimatedSprite;
import org.andengine.extension.physics.box2d.PhysicsFactory;
import org.andengine.opengl.texture.region.TiledTextureRegion;
/**
* CastleBlock
*
* @author Shivan Taher <zn31415926535@gmail.com>
* @date 31.05.13
*/
public class Stone extends PhysicalEntity {
protected final TiledTextureRegion stoneTexture;
protected AnimatedSprite stoneSprite;
protected final Body stoneBody;
public final static FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(0.2f, 0.1f, 0.9f);
private final static float LINEAR_DAMPING = 0.1f;
private final static float ANGULAR_DAMPING = 0.1f;
public Stone(float x, float y) {
ResourceManager rm = ResourceManager.getInstance();
this.stoneTexture = rm.getStoneTexture();
GameContext gc = GameContext.getInstance();
this.stoneSprite = new AnimatedSprite(
x - this.stoneTexture.getWidth() / 2,
y - this.stoneTexture.getHeight() / 2,
this.stoneTexture,
gc.getVboManager()
);
stoneSprite.setCurrentTileIndex(0);
this.stoneBody = PhysicsFactory.createBoxBody(
gc.getPhysicsWorld(),
this.stoneSprite,
BodyDef.BodyType.DynamicBody,
Stone.FIXTURE_DEF
);
this.stoneBody.setLinearDamping(Stone.LINEAR_DAMPING);
this.stoneBody.setAngularDamping(Stone.ANGULAR_DAMPING);
this.stoneBody.setUserData("Stein");
}
@Override
public Body getBody() {
return stoneBody;
}
@Override
public IAreaShape getAreaShape() {
return this.stoneSprite;
}
}