package com.gdxjam.behaviors.control; import com.badlogic.ashley.core.Entity; import com.badlogic.ashley.core.PooledEngine; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.gdxjam.components.Components; import com.gdxjam.components.ControlComponent.ControlBehavior; import com.gdxjam.components.SteerableComponent; import com.gdxjam.components.SteeringBehaviorComponent; /** * This is the movement behavior for the " saucer" ship which i called a * "Corvette" * * @author alex-place * @author Nate Baker * */ public class CorvetteControlBehavior implements ControlBehavior { PooledEngine engine; Entity entity; SteeringBehaviorComponent steer; SteerableComponent steerable; float speed = 15000; // TODO make parameters (or a param class) for ship classes (speed...) public CorvetteControlBehavior(Entity entity, PooledEngine engine, float radius) { this.entity = entity; this.engine = engine; steer = Components.STEERING_BEHAVIOR.get(entity); steerable = engine.createComponent(SteerableComponent.class).init(Components.PHYSICS.get(entity).getBody(), radius); steerable.setIndependentFacing(true); steerable.setMaxLinearSpeed(5); } @Override public void forward(float delta) { steerable.getBody().applyForce(new Vector2(0, speed * delta), steerable.getBody().getWorldCenter(), true); } @Override public void reverse(float delta) { steerable.getBody().applyForce(new Vector2(0, -speed * delta), steerable.getBody().getWorldCenter(), true); } @Override public void left(float delta) { steerable.getBody().applyForce(new Vector2(-speed * delta, 0), steerable.getBody().getWorldCenter(), true); } @Override public void right(float delta) { steerable.getBody().applyForce(new Vector2(speed * delta, 0), steerable.getBody().getWorldCenter(), true); } @Override public void lookAt(Vector2 position) { } @Override public Entity getEntity() { // TODO Auto-generated method stub return entity; } }