Clonage réparé on skip toujours la première frame d'une suite pour l'inversion...

This commit is contained in:
Antoine 2021-06-20 18:46:36 +02:00
parent c1a696ae1c
commit e6605bec94
2 changed files with 32 additions and 29 deletions

View File

@ -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

View File

@ -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();
}