Set up ECS on GameScreen: register components and systems, add player
This commit is contained in:
parent
6fb664adaf
commit
d7c55d72e3
@ -1,10 +1,25 @@
|
|||||||
package com.me.asteroids.screens;
|
package com.me.asteroids.screens;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.math.Polygon;
|
||||||
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
import com.me.asteroids.Constants;
|
||||||
import com.me.asteroids.Graphics;
|
import com.me.asteroids.Graphics;
|
||||||
|
import com.me.asteroids.components.AccelerationComponent;
|
||||||
|
import com.me.asteroids.components.ModelComponent;
|
||||||
|
import com.me.asteroids.components.PlayerComponent;
|
||||||
|
import com.me.asteroids.components.PositionComponent;
|
||||||
|
import com.me.asteroids.components.VelocityComponent;
|
||||||
|
import com.me.asteroids.systems.ModelRenderSystem;
|
||||||
|
import com.me.asteroids.systems.MovementSystem;
|
||||||
|
import com.me.asteroids.systems.PlayerInputSystem;
|
||||||
import com.me.common.Screen;
|
import com.me.common.Screen;
|
||||||
|
import com.me.common.ecs.Engine;
|
||||||
|
import com.me.common.ecs.Entity;
|
||||||
|
|
||||||
public class GameScreen extends Screen {
|
public class GameScreen extends Screen {
|
||||||
|
|
||||||
|
Engine engine;
|
||||||
|
|
||||||
Graphics graphics;
|
Graphics graphics;
|
||||||
|
|
||||||
public GameScreen(Graphics graphics) {
|
public GameScreen(Graphics graphics) {
|
||||||
@ -13,12 +28,57 @@ public class GameScreen extends Screen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setup() {
|
public void setup() {
|
||||||
|
engine = new Engine();
|
||||||
|
|
||||||
|
engine.registerComponentClass(PlayerComponent.class);
|
||||||
|
engine.registerComponentClass(PositionComponent.class);
|
||||||
|
engine.registerComponentClass(VelocityComponent.class);
|
||||||
|
engine.registerComponentClass(AccelerationComponent.class);
|
||||||
|
engine.registerComponentClass(ModelComponent.class);
|
||||||
|
|
||||||
|
engine.registerSystem(new PlayerInputSystem());
|
||||||
|
engine.registerSystem(new MovementSystem());
|
||||||
|
engine.registerSystem(new ModelRenderSystem(graphics));
|
||||||
|
|
||||||
|
engine.ready();
|
||||||
|
|
||||||
|
Entity player = engine.createEntity();
|
||||||
|
|
||||||
|
PositionComponent position = new PositionComponent();
|
||||||
|
position.position = new Vector2(Constants.HALF_WIDTH, Constants.HALF_HEIGHT);
|
||||||
|
position.rotation = 90;
|
||||||
|
player.addComponent(position);
|
||||||
|
|
||||||
|
VelocityComponent velocity = new VelocityComponent();
|
||||||
|
velocity.velocity = new Vector2(0f, 0f);
|
||||||
|
velocity.maxVelocity = 400f;
|
||||||
|
player.addComponent(velocity);
|
||||||
|
|
||||||
|
ModelComponent shape = new ModelComponent();
|
||||||
|
float[] vertices = new float[] {
|
||||||
|
0f, 4f, // tip
|
||||||
|
-2.5f, -4f, // bottom left
|
||||||
|
-1f, -2.5f, // indent
|
||||||
|
1f, -2.5f, // indent
|
||||||
|
2.5f, -4f, // bottom right
|
||||||
|
};
|
||||||
|
shape.model = new Polygon(vertices);
|
||||||
|
shape.model.scale(5);
|
||||||
|
player.addComponent(shape);
|
||||||
|
|
||||||
|
AccelerationComponent accel = new AccelerationComponent();
|
||||||
|
accel.acceleration = new Vector2(0,1f);
|
||||||
|
player.addComponent(accel);
|
||||||
|
|
||||||
|
player.addComponent(new PlayerComponent());
|
||||||
|
|
||||||
|
player.activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(float dt) {
|
public void update(float dt) {
|
||||||
graphics.reset();
|
graphics.reset();
|
||||||
|
engine.update(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user