Added borders to level.

This commit is contained in:
Jeasonfire 2015-05-16 23:51:20 +03:00
parent fed3680c18
commit 78d9890437
4 changed files with 66 additions and 19 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

@ -61,7 +61,6 @@ public class EntityFactory {
dummy.add(new CAI().setReactDistance(5).setAIListener(new DummyAI())); dummy.add(new CAI().setReactDistance(5).setAIListener(new DummyAI()));
AppUtil.engine.addEntity(dummy); AppUtil.engine.addEntity(dummy);
dummy.getComponent(CCombat.class).inputs.put(Direction.UP, true);
} }
private CRenderedObject createPlayerRenderedObject() { private CRenderedObject createPlayerRenderedObject() {

View File

@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.saltosion.gladiator.components.CPhysics; import com.saltosion.gladiator.components.CPhysics;
import com.saltosion.gladiator.components.CRenderedObject; import com.saltosion.gladiator.components.CRenderedObject;
import com.saltosion.gladiator.systems.RenderingSystem;
import com.saltosion.gladiator.util.AppUtil; import com.saltosion.gladiator.util.AppUtil;
import com.saltosion.gladiator.util.Global; import com.saltosion.gladiator.util.Global;
import com.saltosion.gladiator.util.Name; import com.saltosion.gladiator.util.Name;
@ -25,31 +26,53 @@ public class TestLevel implements Level {
audienceRO.playAnimation("Default-Animation"); audienceRO.playAnimation("Default-Animation");
audience.add(audienceRO); audience.add(audienceRO);
CPhysics audiencePO = new CPhysics().setMovable(false).setGravityApplied(false) CPhysics audiencePO = new CPhysics().setMovable(false).setGravityApplied(false)
.setProcessCollisions(false).setGhost(true).setPosition(0, 10).setZParallax(9); .setProcessCollisions(false).setGhost(true).setPosition(0, 10).setZParallax(9)
.setSize(audienceSprite0.getRegionWidth() * Global.SPRITE_SCALE,
audienceSprite0.getRegionHeight() * Global.SPRITE_SCALE);
audience.add(audiencePO); audience.add(audiencePO);
AppUtil.engine.addEntity(audience); AppUtil.engine.addEntity(audience);
// Wall // Wall
Entity wall = new Entity(); Entity wall = new Entity();
CRenderedObject wallRO = new CRenderedObject(SpriteLoader.loadSprite(Name.WALLIMG)); Sprite wallSprite = SpriteLoader.loadSprite(Name.WALLIMG);
CRenderedObject wallRO = new CRenderedObject(wallSprite);
wall.add(wallRO); wall.add(wallRO);
CPhysics wallPO = new CPhysics().setMovable(false).setGravityApplied(false) CPhysics wallPO = new CPhysics().setMovable(false).setGravityApplied(false)
.setProcessCollisions(false).setGhost(true).setPosition(0, 2).setZParallax(1.5f); .setProcessCollisions(false).setGhost(true).setPosition(0, 2).setZParallax(1.5f)
.setSize(wallSprite.getRegionWidth() * Global.SPRITE_SCALE,
wallSprite.getRegionHeight() * Global.SPRITE_SCALE);
wall.add(wallPO); wall.add(wallPO);
AppUtil.engine.addEntity(wall); AppUtil.engine.addEntity(wall);
// Ground // Ground
Entity ground = new Entity(); Entity ground = new Entity();
Sprite groundSprite = SpriteLoader.loadSprite(Name.GROUNDIMG); Sprite groundSprite = SpriteLoader.loadSprite(Name.GROUNDIMG);
CRenderedObject renderedObject = new CRenderedObject(groundSprite); CRenderedObject groundRO = new CRenderedObject(groundSprite);
ground.add(renderedObject); ground.add(groundRO);
CPhysics physics = new CPhysics().setMovable(false).setGravityApplied(false).setProcessCollisions(false) CPhysics groundPO = new CPhysics().setMovable(false).setGravityApplied(false).setProcessCollisions(false)
.setSize(groundSprite.getRegionWidth() * Global.SPRITE_SCALE, .setSize(groundSprite.getRegionWidth() * Global.SPRITE_SCALE,
groundSprite.getRegionHeight() * Global.SPRITE_SCALE); groundSprite.getRegionHeight() * Global.SPRITE_SCALE);
physics.getPosition().set(new Vector2(0, -4)); groundPO.getPosition().set(new Vector2(0, -4));
ground.add(physics); ground.add(groundPO);
AppUtil.engine.addEntity(ground); AppUtil.engine.addEntity(ground);
// Level borders
float xClamp = groundPO.getSize().x / 2f;
AppUtil.engine.getSystem(RenderingSystem.class).setXMin(-xClamp).setXMax(xClamp);
Entity borderLeft = new Entity();
CPhysics borderLeftPhysics = new CPhysics().setMovable(false).setGravityApplied(false)
.setProcessCollisions(false).setSize(0.1f, 20);
borderLeftPhysics.setPosition(-xClamp - borderLeftPhysics.getSize().x, 0);
borderLeft.add(borderLeftPhysics);
AppUtil.engine.addEntity(borderLeft);
Entity borderRight = new Entity();
CPhysics borderRightPhysics = new CPhysics().setMovable(false).setGravityApplied(false)
.setProcessCollisions(false).setSize(0.1f, 20);
borderRightPhysics.setPosition(xClamp + borderRightPhysics.getSize().x, 0);
borderRight.add(borderRightPhysics);
AppUtil.engine.addEntity(borderRight);
// Generate entities // Generate entities
AppUtil.entityFactory.createPlayer(new Vector2(0, 5)); AppUtil.entityFactory.createPlayer(new Vector2(0, 5));
AppUtil.entityFactory.createDummy(new Vector2(-6, 5)); AppUtil.entityFactory.createDummy(new Vector2(-6, 5));

View File

@ -57,6 +57,8 @@ public class RenderingSystem extends EntitySystem {
private List<TextObject> drawableText; private List<TextObject> drawableText;
private float xMin = -15, xMax = 15;
@Override @Override
public void addedToEngine(Engine engine) { public void addedToEngine(Engine engine) {
updateEntities(engine); updateEntities(engine);
@ -211,8 +213,8 @@ public class RenderingSystem extends EntitySystem {
int spriteHeight = currSprite.getRegionHeight(); int spriteHeight = currSprite.getRegionHeight();
int spriteWidth = currSprite.getRegionWidth(); int spriteWidth = currSprite.getRegionWidth();
currSprite.setPosition(((physics.getPosition().x - spriteWidth / 2) - playerPhys.getPosition().x / physics.getZParallax() + camera.viewportWidth / 2), currSprite.setPosition(((physics.getPosition().x - spriteWidth / 2) + getCameraOffset(playerPhys, physics).x),
(physics.getPosition().y - spriteHeight / 2) - playerPhys.getPosition().y / physics.getZParallax() + camera.viewportHeight / 3); (physics.getPosition().y - spriteHeight / 2) + getCameraOffset(playerPhys, physics).y);
currSprite.draw(batch); currSprite.draw(batch);
float nextFrame = renderedObject.getCurrentFrame(channel) + deltaTime * currSequence.getPlayspeed(); float nextFrame = renderedObject.getCurrentFrame(channel) + deltaTime * currSequence.getPlayspeed();
@ -256,10 +258,10 @@ public class RenderingSystem extends EntitySystem {
debugRenderer.begin(ShapeType.Line); debugRenderer.begin(ShapeType.Line);
for (int i = 0; i < entities.size(); i++) { for (int i = 0; i < entities.size(); i++) {
CPhysics physics = pm.get(entities.get(i)); CPhysics physics = pm.get(entities.get(i));
float x0 = physics.getPosition().x - physics.getSize().x / 2 - playerPhys.getPosition().x / physics.getZParallax() + camera.viewportWidth / 2; float x0 = physics.getPosition().x - physics.getSize().x / 2 + getCameraOffset(playerPhys, physics).x;
float x1 = physics.getPosition().x + physics.getSize().x / 2 - playerPhys.getPosition().x / physics.getZParallax() + camera.viewportWidth / 2; float x1 = physics.getPosition().x + physics.getSize().x / 2 + getCameraOffset(playerPhys, physics).x;
float y0 = physics.getPosition().y - physics.getSize().y / 2 - playerPhys.getPosition().y / physics.getZParallax() + camera.viewportHeight / 3; float y0 = physics.getPosition().y - physics.getSize().y / 2 + getCameraOffset(playerPhys, physics).y;
float y1 = physics.getPosition().y + physics.getSize().y / 2 - playerPhys.getPosition().y / physics.getZParallax() + camera.viewportHeight / 3; float y1 = physics.getPosition().y + physics.getSize().y / 2 + getCameraOffset(playerPhys, physics).y;
debugRenderer.setColor(debugColor); debugRenderer.setColor(debugColor);
debugRenderer.line(x0, y0, x1, y0); debugRenderer.line(x0, y0, x1, y0);
@ -292,10 +294,8 @@ public class RenderingSystem extends EntitySystem {
drawableText.add(new TextObject(text, position)); drawableText.add(new TextObject(text, position));
} }
public public void updateEntities(Engine engine) {
void updateEntities(Engine engine) { entities = engine.getEntitiesFor(Family.getFor(CRenderedObject.class, CPhysics.class));
entities = engine.getEntitiesFor(Family.getFor(CRenderedObject.class, CPhysics.class
));
} }
public boolean getDebug() { public boolean getDebug() {
@ -310,6 +310,31 @@ public class RenderingSystem extends EntitySystem {
return new Vector2(this.camera.position.x, this.camera.position.y); return new Vector2(this.camera.position.x, this.camera.position.y);
} }
private Vector2 getCameraOffset(CPhysics playerPhys, CPhysics currPhys) {
Vector2 offset = new Vector2(Math.max(xMin + camera.viewportWidth / 2, Math.min(xMax - camera.viewportWidth / 2,
-playerPhys.getPosition().x)) / currPhys.getZParallax() + camera.viewportWidth / 2,
-playerPhys.getPosition().y / currPhys.getZParallax() + camera.viewportHeight / 3);
return offset;
}
public float getXMin() {
return xMin;
}
public RenderingSystem setXMin(float xMin) {
this.xMin = xMin;
return this;
}
public float getXMax() {
return xMax;
}
public RenderingSystem setXMax(float xMax) {
this.xMax = xMax;
return this;
}
public void dispose() { public void dispose() {
batch.dispose(); batch.dispose();
debugRenderer.dispose(); debugRenderer.dispose();