diff --git a/android/assets/level_001.txt b/android/assets/level_001.txt new file mode 100644 index 0000000000000000000000000000000000000000..5b22a2a8e78cf859ad4d487f61af67a1e1f653cb --- /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 0000000000000000000000000000000000000000..5b22a2a8e78cf859ad4d487f61af67a1e1f653cb --- /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 0000000000000000000000000000000000000000..c6e9bb705aefdf5f489f1eac5f56b39ae634a8b4 --- /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 0000000000000000000000000000000000000000..e9d8337c9a5867850ed7666e59fbe3f51704ccbf --- /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 0000000000000000000000000000000000000000..585d301c877efde13bb5f16ed71ec7719dcfeb78 --- /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 0000000000000000000000000000000000000000..c7fa14912892520a7f7eda370202304bb6009646 --- /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 2508bd8cfe62608949ef9d56ae9de1f4a1c3c279..0f40fa5c393f746e119a257fe288b80b8fad796f 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 6a205a76c45c92877509fd763580502193f4b28c..d98e8ee78db86a232fe65893b5dc154241b793df 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; }