From 27e2ac2f966b3f1c4860409326927ea241bf2cd7 Mon Sep 17 00:00:00 2001 From: timeo <timeo.jacquier@hotmail.com> Date: Tue, 7 Dec 2021 22:35:33 +0100 Subject: [PATCH] =?UTF-8?q?d=C3=A9but=20lecture=20fichier=20niveau=20+=20c?= =?UTF-8?q?lass=20pour=20g=C3=A9n=C3=A9rer=20les=20platforms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/assets/level_001.txt | 14 +++++++ assets/level_001.txt | 14 +++++++ core/src/body/Joyau.java | 4 ++ core/src/body/Panneau.java | 4 ++ core/src/body/Platform.java | 57 +++++++++++++++++++++++++++ core/src/body/Water.java | 37 +++++++++++++++++ core/src/etat/Play.java | 72 ++++++++++++++++++++++++++++++++-- core/src/handlers/B2DVars.java | 1 + 8 files changed, 199 insertions(+), 4 deletions(-) create mode 100644 android/assets/level_001.txt create mode 100644 assets/level_001.txt create mode 100644 core/src/body/Joyau.java create mode 100644 core/src/body/Panneau.java create mode 100644 core/src/body/Platform.java create mode 100644 core/src/body/Water.java diff --git a/android/assets/level_001.txt b/android/assets/level_001.txt new file mode 100644 index 0000000..5b22a2a --- /dev/null +++ b/android/assets/level_001.txt @@ -0,0 +1,14 @@ +16 12 60 +VV121VVVVVV1VVVV +VVVVVVVVVVVVVVVZ +VJLVVV1VVVVJL1VD +VVVVVVVVJLVVV1VD +VVVVJLVVVVVVV1VD +ZVVVVVVVVVVVVVVD +JKKLVVVVVJKLVVVD +VVVVVVVVVVVVVV2D +CVVVJKLVVVVVVVAB +FPVVVVVVVV1VVVDE +BBBCVVVVABCVVVDE +EEEFWWWWDEFWWWDE +Back.png diff --git a/assets/level_001.txt b/assets/level_001.txt new file mode 100644 index 0000000..5b22a2a --- /dev/null +++ b/assets/level_001.txt @@ -0,0 +1,14 @@ +16 12 60 +VV121VVVVVV1VVVV +VVVVVVVVVVVVVVVZ +VJLVVV1VVVVJL1VD +VVVVVVVVJLVVV1VD +VVVVJLVVVVVVV1VD +ZVVVVVVVVVVVVVVD +JKKLVVVVVJKLVVVD +VVVVVVVVVVVVVV2D +CVVVJKLVVVVVVVAB +FPVVVVVVVV1VVVDE +BBBCVVVVABCVVVDE +EEEFWWWWDEFWWWDE +Back.png diff --git a/core/src/body/Joyau.java b/core/src/body/Joyau.java new file mode 100644 index 0000000..c6e9bb7 --- /dev/null +++ b/core/src/body/Joyau.java @@ -0,0 +1,4 @@ +package body; + +public class Joyau { +} diff --git a/core/src/body/Panneau.java b/core/src/body/Panneau.java new file mode 100644 index 0000000..e9d8337 --- /dev/null +++ b/core/src/body/Panneau.java @@ -0,0 +1,4 @@ +package body; + +public class Panneau { +} diff --git a/core/src/body/Platform.java b/core/src/body/Platform.java new file mode 100644 index 0000000..585d301 --- /dev/null +++ b/core/src/body/Platform.java @@ -0,0 +1,57 @@ +package body; + +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.FixtureDef; +import com.badlogic.gdx.physics.box2d.PolygonShape; +import com.badlogic.gdx.physics.box2d.World; + +public class Platform { + PolygonShape shapeStruct; + Vector2[] ptsStruct; + public Platform(int x, int y, String type, World world){ + BodyDef bodyDef = new BodyDef(); + bodyDef.type = BodyDef.BodyType.StaticBody; + bodyDef.position.set(x, y); + + Body structBody = world.createBody(bodyDef); + + FixtureDef fixtureDefStruct = new FixtureDef(); + shapeStruct = new PolygonShape(); + + + if (type.equals("rectangle")) { + ptsStruct = new Vector2[]{}; + + shapeStruct.set(ptsStruct); + } + + if (type.equals("carre")){ + ptsStruct = new Vector2[]{}; + shapeStruct.set(ptsStruct); + } + + if (type.equals("bord_gauche")){ + ptsStruct = new Vector2[]{}; + shapeStruct.set(ptsStruct); + } + + if (type.equals("bord_droit")){ + ptsStruct = new Vector2[]{}; + shapeStruct.set(ptsStruct); + } + + fixtureDefStruct.shape = shapeStruct; + fixtureDefStruct.restitution = 0.6f; + fixtureDefStruct.density = 1f; + fixtureDefStruct.friction = 0.25f; + + + structBody.createFixture(fixtureDefStruct).setUserData("platform"); + shapeStruct.dispose(); + + } +} + + diff --git a/core/src/body/Water.java b/core/src/body/Water.java new file mode 100644 index 0000000..c7fa149 --- /dev/null +++ b/core/src/body/Water.java @@ -0,0 +1,37 @@ +package body; + +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.FixtureDef; +import com.badlogic.gdx.physics.box2d.PolygonShape; +import com.badlogic.gdx.physics.box2d.World; + +public class Water { + + PolygonShape shapeStruct; + Vector2[] ptsStruct; + + public Water(int x, int y, World world){ + + BodyDef bodyDef = new BodyDef(); + bodyDef.type = BodyDef.BodyType.StaticBody; + bodyDef.position.set(x, y); + + Body structBody = world.createBody(bodyDef); + + FixtureDef fixtureDefStruct = new FixtureDef(); + shapeStruct = new PolygonShape(); + + ptsStruct = new Vector2[]{}; + shapeStruct.set(ptsStruct); + + fixtureDefStruct.shape = shapeStruct; + fixtureDefStruct.isSensor = true; //traversable + + + structBody.createFixture(fixtureDefStruct); + shapeStruct.dispose(); + } +} + diff --git a/core/src/etat/Play.java b/core/src/etat/Play.java index 2508bd8..0f40fa5 100644 --- a/core/src/etat/Play.java +++ b/core/src/etat/Play.java @@ -2,10 +2,12 @@ package etat; import static handlers.B2DVars.PPM; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; @@ -14,6 +16,8 @@ import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.mygdx.game.PlatVenture; +import body.Platform; +import body.Water; import handlers.ContactListenerPerso; import handlers.GameStateManager; @@ -21,6 +25,9 @@ public class Play extends GameState { private World world; private Box2DDebugRenderer b2dr; + private int largeur; + private int hauteur; + private int temps; private OrthographicCamera b2dCam; @@ -31,16 +38,17 @@ public class Play extends GameState { b2dr = new Box2DDebugRenderer(); BodyDef bdef = new BodyDef(); - bdef.position.set(80/PPM, 60/PPM); + bdef.position.set(55/PPM, 6/PPM); bdef.type = BodyDef.BodyType.StaticBody; Body body = world.createBody(bdef); + Vector2[] pts = new Vector2[]{new Vector2(20/PPM, 65/PPM), new Vector2(30/PPM, 65/PPM), new Vector2(30/PPM, 55/PPM), new Vector2(20/PPM, 55/PPM)}; PolygonShape shape = new PolygonShape(); - shape.setAsBox(50/PPM, 5/PPM); + shape.set(pts); FixtureDef fdef = new FixtureDef(); fdef.shape = shape; - body.createFixture(fdef); + body.createFixture(fdef).setUserData("platform"); bdef.position.set(80/PPM, 100/PPM); @@ -51,7 +59,9 @@ public class Play extends GameState { fdef = new FixtureDef(); fdef.shape = shape; - body.createFixture(fdef); + body.createFixture(fdef).setUserData("perso"); + + createWorld("assets/level_001.txt"); //Init b2dCam b2dCam = new OrthographicCamera(); @@ -66,6 +76,7 @@ public class Play extends GameState { public void update(float dt) { //dt => delta time + handleInput(); /*TODO remettre à 1 quand j'aurai bien compris, on a pas besoin d'autant de précisions */ world.step(dt, 6, 2); @@ -83,5 +94,58 @@ public class Play extends GameState { @Override public void dispose() { + } + + private void createWorld(String path){ + FileHandle handle = Gdx.files.local(path); + String text = handle.readString(); + String[] ligne = text.split("\\r?\\n"); + String[] premiereLigne = ligne[0].split(" "); + largeur = Integer.parseInt(premiereLigne[0]); + hauteur = Integer.parseInt(premiereLigne[1]); + temps = Integer.parseInt(premiereLigne[2]); + + for (int i = 1; i < hauteur+1; i++){ + for (int j = 0; j < largeur; j++){ + char current = ligne[i].charAt(j); + System.out.print(current); + /*switch (current){ + case 'J': + new Platform(j, i, "bord_gauche", world); + break; + case 'K': + new Platform(j, i, "rectangle", world); + break; + case 'L': + new Platform(j, i, "bord_droit", world); + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + new Platform(j, i, "carre", world); + break; + case 'W': + new Water(j, i, world); + break; + case 'Z': + //new Panneau(j, i, FabriqueUnite.getUnite(), world); + break; + case '1': + case '2': + //new Joyau(j, i, FabriqueUnite.getUnite(), world); + break; + + }*/ + } + System.out.println(); + } + + } } diff --git a/core/src/handlers/B2DVars.java b/core/src/handlers/B2DVars.java index 6a205a7..d98e8ee 100644 --- a/core/src/handlers/B2DVars.java +++ b/core/src/handlers/B2DVars.java @@ -3,4 +3,5 @@ package handlers; public class B2DVars { public static final float PPM = 100; + public static final float originY = 60; } -- GitLab