diff --git a/src/gameplay/frames/Frame.java b/src/gameplay/frames/Frame.java index 07d5700..7a94eb9 100644 --- a/src/gameplay/frames/Frame.java +++ b/src/gameplay/frames/Frame.java @@ -25,7 +25,7 @@ public class Frame { private boolean moveCancellable; private boolean isDashCancellable; private boolean lastFrameOfHit; - private boolean isInverted; + /** * an int of 4 that determines the texture wrap for the frame */ @@ -165,10 +165,6 @@ public class Frame { this.lastFrameOfHit = lastFrameOfHit; } - public boolean getIsInverted(){ - return this.isInverted; - } - //Inverts all hitboxes of the frame horizontally. Used if the character looks to the left instead of the right public void invertHitBoxes() { for(Passive_HitBox p: this.passHitBox) {p.reverseHorizontally();} @@ -176,17 +172,14 @@ public class Frame { for(Passive_throw_HitBox p: this.passThrowHitBox) {p.reverseHorizontally();} for(Active_throw_Hitbox p: this.actThrowHitBox) {p.reverseHorizontally();} this.pushHitBox.reverseHorizontally(); - isInverted = true; } - public void clone(Frame f) { //TODO le clonage ne fonctionne pas certain paramètre renvoie toujours le pointeur vers un objet + public void clone(Frame f) { this.setMove_y(f.getMove_y()); this.setMove_x(f.getMove_x()); - this.setPassHitBox(f.getPassHitBox()); - this.setActHitBox(f.getActHitBox()); - this.setPassThrowHitBox(f.getPassThrowHitBox()); - this.setActThrowHitBox(f.getActThrowHitBox()); - this.setPushHitBox(f.getPushHitBox()); + this.cloneArray(f); //Il faut cloner individuellement chaque hitbox des differentes listes pour ne pas garder les pointeurs + Push_HitBox phb = f.getPushHitBox(); + this.setPushHitBox(new Push_HitBox(phb.getPosX(), phb.getPosY(), phb.getSize_x(), phb.getSize_y())); this.normalCancellable = f.isNormalCancellable(); this.specialCancellable = f.isSpecialCancellable(); this.jumpCancellable = f.jumpCancellable; @@ -196,6 +189,25 @@ public class Frame { this.setSpriteWrap(f.sprite[0], f.sprite[1], f.sprite[2], f.sprite[3]); } + private void cloneArray(Frame f){ + for (Passive_HitBox hb : f.getPassHitBox()){ + Passive_HitBox nhb = new Passive_HitBox(hb.getPosX(), hb.getPosY(), hb.getSize_x(), hb.getSize_y()); + this.passHitBox.add(nhb); + } + for (Passive_throw_HitBox hb : f.getPassThrowHitBox()){ + Passive_throw_HitBox nhb = new Passive_throw_HitBox(hb.getPosX(), hb.getPosY(), hb.getSize_x(), hb.getSize_y()); + this.passThrowHitBox.add(nhb); + } + for (Active_HitBox hb : f.getActHitBox()){ + Active_HitBox nhb = new Active_HitBox(hb.getPosX(), hb.getPosY(), hb.getSize_x(), hb.getSize_y()); + this.actHitBox.add(nhb); + } + for (Active_throw_Hitbox hb : f.getActThrowHitBox()){ + Active_throw_Hitbox nhb = new Active_throw_Hitbox(hb.getPosX(), hb.getPosY(), hb.getSize_x(), hb.getSize_y()); + this.actThrowHitBox.add(nhb); + } + } + /** * sets the coordinates on the spritesheet for the texture for that frame * @param x coordinate of the lef tside diff --git a/src/gameplay/match/match.java b/src/gameplay/match/match.java index 7a80f74..b0112d7 100644 --- a/src/gameplay/match/match.java +++ b/src/gameplay/match/match.java @@ -319,13 +319,6 @@ public class match { p2.removeFirstAttackPart(); } - //Si la frame d'avant est inversé il faut la "nettoyer" pour le prochaine utilisation - if (p1.getCurrentframe().getIsInverted()){ - p1.getCurrentframe().invertHitBoxes(); - } if (p2.getCurrentframe().getIsInverted()){ - p2.getCurrentframe().invertHitBoxes(); - - } nextFrame(p1,inputsP1); nextFrame(p2,inputsP2); @@ -343,11 +336,10 @@ public class match { objP2.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3]); objP2.translate(new Vector3f(p2.getPosX() - oldPosXp2,p2.getPosY()-oldPosYp2,0)); -// Frame nf = new Frame(); //TODO dans l'état le clonage ne fonctionne pas -// nf.clone(p2.getCurrentframe()); -// nf.invertHitBoxes(); -// p2.setCurrentFrame(nf); - f.invertHitBoxes(); + Frame nf = new Frame(); + nf.clone(p2.getCurrentframe()); + nf.invertHitBoxes(); + p2.setCurrentFrame(nf); objP2.flipTextureWrapH(); } else { @@ -360,11 +352,10 @@ public class match { objP2.setTextureWrap(p2f.getSprite()[0], p2f.getSprite()[1], p2f.getSprite()[2], p2f.getSprite()[3]); objP2.translate(new Vector3f(p2.getPosX()-oldPosXp2,p2.getPosY()-oldPosYp2,0)); -// Frame nf = new Frame(); -// nf.clone(p1.getCurrentframe()); -// nf.invertHitBoxes(); -// p1.setCurrentFrame(nf); - p1f.invertHitBoxes(); + Frame nf = new Frame(); + nf.clone(p1.getCurrentframe()); + nf.invertHitBoxes(); + p1.setCurrentFrame(nf); objP1.flipTextureWrapH(); }