package com.cookbook.samples; import com.badlogic.ashley.core.Engine; import com.badlogic.ashley.core.Entity; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.utils.viewport.FitViewport; import com.badlogic.gdx.utils.viewport.Viewport; import com.cookbook.ashley.MovementComponent; import com.cookbook.ashley.MovementSystem; import com.cookbook.ashley.RenderSystem; import com.cookbook.ashley.SizeComponent; import com.cookbook.ashley.TextureComponent; import com.cookbook.ashley.TransformComponent; import com.cookbook.ashley.UserControlledComponent; import com.cookbook.ashley.UserControlledSystem; public class AshleySample extends GdxSample { private static final String TAG = "AshleySample"; private static final float SCENE_WIDTH = 12.8f; private static final float SCENE_HEIGHT = 7.2f; private OrthographicCamera camera; private Viewport viewport; private Engine ashleyEngine; private Entity caveman; @Override public void create() { camera = new OrthographicCamera(); viewport = new FitViewport(SCENE_WIDTH, SCENE_HEIGHT, camera); // Centers camera viewport.getCamera().position.set( viewport.getCamera().position.x + SCENE_WIDTH*0.5f, viewport.getCamera().position.y + SCENE_HEIGHT*0.5f, 0); viewport.getCamera().update(); viewport.update((int)SCENE_WIDTH, (int)SCENE_HEIGHT); camera.update(); // Initializes ashely engine ashleyEngine = new Engine(); // Creates systems and add them to the engine MovementSystem movementSystem = new MovementSystem(); RenderSystem renderSystem = new RenderSystem(camera); UserControlledSystem userControlledSystem = new UserControlledSystem(camera); ashleyEngine.addSystem(movementSystem); ashleyEngine.addSystem(renderSystem); ashleyEngine.addSystem(userControlledSystem); // Creates a caveman entity from several components caveman = new Entity(); TextureComponent texture = new TextureComponent(); TransformComponent transform = new TransformComponent(); SizeComponent size = new SizeComponent(); MovementComponent movement = new MovementComponent(); UserControlledComponent userControlled = new UserControlledComponent(); texture.region = new TextureRegion(new Texture(Gdx.files.internal("data/caveman.png"))); size.width = 1f; size.height = 1.5f; transform.pos.set(SCENE_WIDTH*.5f - size.width*.5f, SCENE_HEIGHT*.5f - size.height*.5f); caveman.add(texture); caveman.add(transform); caveman.add(size); caveman.add(movement); caveman.add(userControlled); ashleyEngine.addEntity(caveman); // updates entities references to render renderSystem.addedToEngine(ashleyEngine); } @Override public void dispose() { } @Override public void render() { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); ashleyEngine.update(Gdx.graphics.getDeltaTime()); } @Override public void resize(int width, int height) { viewport.update(width, height); } }