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