Example usage for com.badlogic.gdx.physics.box2d MassData MassData

List of usage examples for com.badlogic.gdx.physics.box2d MassData MassData

Introduction

In this page you can find the example usage for com.badlogic.gdx.physics.box2d MassData MassData.

Prototype

MassData

Source Link

Usage

From source file:com.dongbat.invasion.registry.EnemyRegistry.java

public static Entity createEnemy(String enemyType, Float positionX) {
    EnemyInfo enemyInfo = get(enemyType);

    EnemyType enemyTypeAI = createEnemyType(enemyInfo);
    Enemy enemyComponent = new Enemy();
    enemyComponent.setType(enemyTypeAI);
    enemyComponent.setAirUnit(enemyInfo.isAirUnit());
    enemyComponent.setBoss(enemyInfo.isBoss());
    enemyComponent.setInfinitePickup(enemyInfo.isInfinitePickup());
    enemyComponent.setCanPickAds(enemyInfo.canPickAds());
    enemyComponent.setAdsPickingDelay(enemyInfo.getAdsPickingDelay());
    enemyComponent.setTributeDelay(enemyInfo.getTributeDelay());
    enemyComponent.setBounty(enemyInfo.getBounty());

    Vector2 position;/*from  www  .  java2s  .  c  om*/
    if (enemyInfo.isAirUnit()) {
        position = new Vector2(Constants.ENEMY.AIR_START_X, Constants.ENEMY.AIR_START_Y);
    } else {
        float startY = Constants.PHYSICS.GROUND_Y + enemyInfo.getRadius();
        position = new Vector2(Constants.ENEMY.GROUND_START_X, startY);
    }
    if (positionX != null) {
        position.x = positionX;
    }
    Body body = PhysicsUtil.createBody(position, enemyInfo.getRadius());
    body.setGravityScale(0);
    MassData massData = new MassData();
    massData.mass = 1;
    body.setMassData(massData);

    Physics physicsComponent = new Physics();
    physicsComponent.setBody(body);
    physicsComponent.setMaxSpeed(enemyInfo.getMaxSpeed());
    physicsComponent.setRadius(enemyInfo.getRadius());

    Health healthComponent = new Health(enemyInfo.getMaxHealth(), enemyInfo.getMaxHealth());

    Collision collision = new Collision();

    Buff buffComponent = new Buff();

    Delay delayComponent = new Delay();

    Ability abilityComponent = new Ability();
    String abilities = enemyInfo.getAbilities();
    if (abilities != null && !abilities.isEmpty()) {
        String[] names = enemyInfo.getAbilities().split(",");
        for (String name : names) {
            AbilityInfo ability = AbilityRegistry.getAbility(name);
            abilityComponent.addAbility(name, ability);
        }
    }

    EnemyMovement movementComponent = new EnemyMovement();
    DisplayPosition displayPosition = new DisplayPosition(position);
    Ads ads = new Ads();
    ads.setOffline(true);
    ads.setPosition(new Vector2(Constants.ADS.DEFAULT_OFFSET_X, Constants.ADS.DEFAULT_OFFSET_Y));

    Spine spineComponent = new Spine(enemyInfo.getSpineName());

    Entity enemy = ECSUtil.getWorld().createEntity().edit().add(enemyComponent).add(physicsComponent)
            .add(healthComponent).add(collision).add(buffComponent).add(abilityComponent).add(movementComponent)
            .add(ads).add(displayPosition).add(spineComponent).add(delayComponent).getEntity();

    physicsComponent.getBody().setUserData(enemy);

    // Add enemy to a group
    ECSUtil.getWorld().getManager(GroupManager.class).add(enemy, Constants.ENEMY.GROUP_NAME);

    return enemy;
}