From 794d88a45de881ef84b91b697a9445702505a065 Mon Sep 17 00:00:00 2001
From: ALGLAVE Ivan <ivan.alglave8@etu.univ-lorraine.fr>
Date: Sun, 20 Dec 2020 14:54:14 +0100
Subject: [PATCH] Fixed position to displaying objects as being centered with
 coordinates, added joysticks - non functionnal

---
 .../com/mygdx/game/GameScreens/GamePlay.java  |  8 ++++
 core/src/com/mygdx/game/bodies/Field.java     |  2 +-
 core/src/com/mygdx/game/bodies/Joystick.java  | 46 +++++++++++++++++++
 .../com/mygdx/game/bodies/TextureBody.java    |  2 +-
 4 files changed, 56 insertions(+), 2 deletions(-)
 create mode 100644 core/src/com/mygdx/game/bodies/Joystick.java

diff --git a/core/src/com/mygdx/game/GameScreens/GamePlay.java b/core/src/com/mygdx/game/GameScreens/GamePlay.java
index 2b7a454..e43d10d 100644
--- a/core/src/com/mygdx/game/GameScreens/GamePlay.java
+++ b/core/src/com/mygdx/game/GameScreens/GamePlay.java
@@ -17,6 +17,7 @@ import com.badlogic.gdx.physics.box2d.Shape;
 import com.badlogic.gdx.physics.box2d.World;
 import com.mygdx.game.bodies.Ball;
 import com.mygdx.game.bodies.Field;
+import com.mygdx.game.bodies.Joystick;
 import com.mygdx.game.bodies.Player;
 
 /**
@@ -29,6 +30,7 @@ public class GamePlay extends GameScreen
     Player pleft, pright;
     Field field;
     World world;
+    Joystick jleft, jright;
 
     Box2DDebugRenderer b2dd;
 
@@ -40,6 +42,8 @@ public class GamePlay extends GameScreen
         ball = new Ball(world,  new Vector2(Gdx.graphics.getWidth()/2f, Gdx.graphics.getHeight()/2f));
         pleft = new Player(world, Player.TYPE.LEFT);
         pright = new Player(world, Player.TYPE.RIGHT);
+        jleft = new Joystick(world, Joystick.SIDE.LEFT);
+        jright = new Joystick(world, Joystick.SIDE.RIGHT);
     }
 
     @Override
@@ -54,6 +58,10 @@ public class GamePlay extends GameScreen
 
         ball.draw(batch);
 
+        jleft.draw(batch);
+
+        jright.draw(batch);
+
         world.step(delta, 1, 1);
 
         super.render(delta);
diff --git a/core/src/com/mygdx/game/bodies/Field.java b/core/src/com/mygdx/game/bodies/Field.java
index 8c51c24..72a7258 100644
--- a/core/src/com/mygdx/game/bodies/Field.java
+++ b/core/src/com/mygdx/game/bodies/Field.java
@@ -20,7 +20,7 @@ public class Field
         BodyDef bdef = new BodyDef();
         bdef.type = BodyDef.BodyType.StaticBody;
         bdef.active = false;
-        bdef.position.set(Gdx.graphics.getWidth()*0.1f, 0);
+        bdef.position.set(Gdx.graphics.getWidth()*0.5f, Gdx.graphics.getHeight()*0.5f);
 
         FixtureDef fdef = new FixtureDef();
 
diff --git a/core/src/com/mygdx/game/bodies/Joystick.java b/core/src/com/mygdx/game/bodies/Joystick.java
new file mode 100644
index 0000000..4a9f4ca
--- /dev/null
+++ b/core/src/com/mygdx/game/bodies/Joystick.java
@@ -0,0 +1,46 @@
+package com.mygdx.game.bodies;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Vector2;
+import com.badlogic.gdx.physics.box2d.BodyDef;
+import com.badlogic.gdx.physics.box2d.CircleShape;
+import com.badlogic.gdx.physics.box2d.FixtureDef;
+import com.badlogic.gdx.physics.box2d.World;
+
+public class Joystick
+{
+    private TextureBody tb;
+
+    public Joystick(World world, SIDE side)
+    {
+        BodyDef bdef = new BodyDef();
+        bdef.type = BodyDef.BodyType.StaticBody;
+        Vector2 pos = side == SIDE.RIGHT ? new Vector2(Gdx.graphics.getWidth()*0.95f, Gdx.graphics.getHeight()/2f) : new Vector2(Gdx.graphics.getWidth()*0.05f, Gdx.graphics.getHeight()/2f);
+        bdef.position.set(pos);
+
+        FixtureDef fdef = new FixtureDef();
+
+        CircleShape cs = new CircleShape();
+        cs.setRadius(Gdx.graphics.getWidth() * (1f/40f));
+
+        fdef.shape = cs;
+        fdef.density = 0f;
+        fdef.restitution = 0f;
+        fdef.friction = 0f;
+
+        bdef.active = false;
+
+        tb = new TextureBody(Gdx.files.internal( "images/Pad.png"), world, bdef, fdef, Gdx.graphics.getWidth()*0.1f, Gdx.graphics.getWidth()*0.1f);
+    }
+
+    public void draw(SpriteBatch batch)
+    {
+        tb.draw(batch);
+    }
+
+    public enum SIDE
+    {
+        LEFT, RIGHT
+    }
+}
diff --git a/core/src/com/mygdx/game/bodies/TextureBody.java b/core/src/com/mygdx/game/bodies/TextureBody.java
index 9f08850..e430d05 100644
--- a/core/src/com/mygdx/game/bodies/TextureBody.java
+++ b/core/src/com/mygdx/game/bodies/TextureBody.java
@@ -27,6 +27,6 @@ public class TextureBody extends Texture
 
     public void draw(SpriteBatch batch)
     {
-        batch.draw(this, body.getPosition().x, body.getPosition().y, width, height);
+        batch.draw(this, body.getPosition().x - width/2f, body.getPosition().y - height/2f, width, height);
     }
 }
-- 
GitLab