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