From 7b24f79183ae463d1d0621f217b780bd64c9d9bf Mon Sep 17 00:00:00 2001 From: "janetho@stud.ntnu.no" <janeinartho@gmail.com> Date: Thu, 16 Mar 2023 13:19:13 +0100 Subject: [PATCH] #20 Added terrain to world --- .../src/com/game/tankwars/model/Terrain.java | 47 +++++++++++++++++++ .../com/game/tankwars/view/GameScreen.java | 5 ++ 2 files changed, 52 insertions(+) create mode 100644 frontend/core/src/com/game/tankwars/model/Terrain.java diff --git a/frontend/core/src/com/game/tankwars/model/Terrain.java b/frontend/core/src/com/game/tankwars/model/Terrain.java new file mode 100644 index 0000000..c7b143e --- /dev/null +++ b/frontend/core/src/com/game/tankwars/model/Terrain.java @@ -0,0 +1,47 @@ +package com.game.tankwars.model; + +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.physics.box2d.Body; +import com.badlogic.gdx.physics.box2d.BodyDef; +import com.badlogic.gdx.physics.box2d.ChainShape; +import com.badlogic.gdx.physics.box2d.FixtureDef; +import com.badlogic.gdx.physics.box2d.World; + +import java.util.Arrays; + +public class Terrain { + World world; + Body body; + final Vector2[] vertices; + Vector2 position; + + public Terrain(){ + + float xStart = -5; + float xEnd = 100; + float yMin = 1f; + float yMax = 10; + int points = 10; + int vertNumber = 1000; + + this.world = Box2dWorld.getWorld(); + BodyDef bodyDef = new BodyDef(); + bodyDef.type = BodyDef.BodyType.StaticBody; + bodyDef.position.set(0,0); + + vertices = new TerrainGenerator(xStart, xEnd, yMin, yMax, points).generateVertices(vertNumber); + + ChainShape chainShape = new ChainShape(); + chainShape.createChain(vertices); + + FixtureDef fixtureDef = new FixtureDef(); + fixtureDef.friction = 0.5f; + fixtureDef.restitution = 0; + fixtureDef.shape = chainShape; + + body = world.createBody(bodyDef); + body.createFixture(fixtureDef); + + chainShape.dispose(); + } +} diff --git a/frontend/core/src/com/game/tankwars/view/GameScreen.java b/frontend/core/src/com/game/tankwars/view/GameScreen.java index 7247d8d..1b23b27 100644 --- a/frontend/core/src/com/game/tankwars/view/GameScreen.java +++ b/frontend/core/src/com/game/tankwars/view/GameScreen.java @@ -19,6 +19,7 @@ import com.game.tankwars.TankWarsGame; import com.game.tankwars.model.Box2dWorld; import com.game.tankwars.model.Bullet; import com.game.tankwars.model.Tank; +import com.game.tankwars.model.Terrain; public class GameScreen implements Screen { final TankWarsGame tankWarsGame; @@ -32,6 +33,7 @@ public class GameScreen implements Screen { private Tank tank; private Box2dWorld model; private World world; + private Terrain terrain; private OrthographicCamera cam; private Box2DDebugRenderer debugRenderer; @@ -51,6 +53,9 @@ public class GameScreen implements Screen { tank = new Tank(tankPos, new Texture("tank-khaki.png")); horizontalScaling = Gdx.graphics.getWidth() / VIEWPORT_WIDTH; verticalScaling = Gdx.graphics.getHeight() / VIEWPORT_HEIGHT; + + terrain = new Terrain(); + } @Override public void render(float delta) { -- GitLab