From 8246803386aa5fdc9309830f17ad01a415d2fc2f Mon Sep 17 00:00:00 2001 From: timeo <timeo.jacquier@gmail.com> Date: Thu, 9 Dec 2021 09:48:18 +0100 Subject: [PATCH] mort dans l'eau --- core/src/body/Water.java | 9 ++++++--- core/src/etat/Play.java | 17 +++++++++++++++++ core/src/handlers/ContactListenerPerso.java | 11 +++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/core/src/body/Water.java b/core/src/body/Water.java index c7fa149..ddd9a8a 100644 --- a/core/src/body/Water.java +++ b/core/src/body/Water.java @@ -1,5 +1,7 @@ package body; +import static handlers.B2DVars.PPM; + import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; @@ -12,7 +14,8 @@ public class Water { PolygonShape shapeStruct; Vector2[] ptsStruct; - public Water(int x, int y, World world){ + /*TODO Rajouter des box en dessous pour éviter au perso de se casser la gueule*/ + public Water(float x, float y, World world){ BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyDef.BodyType.StaticBody; @@ -23,14 +26,14 @@ public class Water { FixtureDef fixtureDefStruct = new FixtureDef(); shapeStruct = new PolygonShape(); - ptsStruct = new Vector2[]{}; + ptsStruct = new Vector2[]{new Vector2(0, 0), new Vector2(10/PPM, 0), new Vector2(10/PPM, 10/PPM), new Vector2(0, 10/PPM)}; shapeStruct.set(ptsStruct); fixtureDefStruct.shape = shapeStruct; fixtureDefStruct.isSensor = true; //traversable - structBody.createFixture(fixtureDefStruct); + structBody.createFixture(fixtureDefStruct).setUserData("eau"); shapeStruct.dispose(); } } diff --git a/core/src/etat/Play.java b/core/src/etat/Play.java index 08734e3..8c4565e 100644 --- a/core/src/etat/Play.java +++ b/core/src/etat/Play.java @@ -19,6 +19,7 @@ import com.mygdx.game.PlatVenture; import body.Joyau; import body.Panneau; import body.Platform; +import body.Water; import handlers.ContactListenerPerso; import handlers.GameStateManager; import handlers.InputPerso; @@ -98,6 +99,10 @@ public class Play extends GameState { } } + if (cl.isTouchWater()){ + death(dt); + } + if (isChangingLevel){ changeLevel(dt); } @@ -180,6 +185,8 @@ public class Play extends GameState { break; case 'Z': new Panneau((j*10)/PPM, ((hauteur-i) * 10)/PPM, world); + case 'W': + new Water((j*10)/PPM, ((hauteur-i) * 10)/PPM, world); } } @@ -234,9 +241,11 @@ public class Play extends GameState { if (totalTimeSinceAction > 2){ player.setLinearVelocity(0, 0); player.setTransform(15/PPM, 20/PPM, 0); + score = 0; // reset du score totalTimeSinceAction = 0; } else{ totalTimeSinceAction += dt; + player.setLinearVelocity(0, 0); } } @@ -247,13 +256,21 @@ public class Play extends GameState { private void changeLevel(float dt){ if (totalTimeSinceAction > 2) { + // Destruction de tout les body Array<Body> bodies = new Array<>(); world.getBodies(bodies); for (int i = 0; i < bodies.size; i++) { if (!world.isLocked()) world.destroyBody(bodies.get(i)); } + level++; // Incrémente le level + loadLevel(level); + createPlayer(); + player.setLinearVelocity(0, 0); // annule la vitesse linéaire du personnage + System.out.println("changing level"); isChangingLevel = false; + + totalTimeSinceAction = 0; } else{ totalTimeSinceAction += dt; diff --git a/core/src/handlers/ContactListenerPerso.java b/core/src/handlers/ContactListenerPerso.java index 3b0a199..bfeed3f 100644 --- a/core/src/handlers/ContactListenerPerso.java +++ b/core/src/handlers/ContactListenerPerso.java @@ -14,6 +14,7 @@ public class ContactListenerPerso implements ContactListener { Array<Body> bodyToRemove = new Array<Body>(); private int score = 0; private boolean triggerEndLevel = false; + private boolean touchWater = false; /** * Appeler quand 2 fixtures rentre en collision @@ -42,6 +43,12 @@ public class ContactListenerPerso implements ContactListener { } } + if (fa.getUserData() != null && fa.getUserData().equals("eau")){ + touchWater = true; + }else{ + touchWater = false; + } + } /** @@ -100,4 +107,8 @@ public class ContactListenerPerso implements ContactListener { public boolean isTriggerEndLevel() { return triggerEndLevel; } + + public boolean isTouchWater() { + return touchWater; + } } -- GitLab